cinder-2014.1.5/0000775000567000056700000000000012540643114014350 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/babel.cfg0000664000567000056700000000002112540642603016071 0ustar jenkinsjenkins00000000000000[python: **.py] cinder-2014.1.5/.mailmap0000664000567000056700000000760112540642606016002 0ustar jenkinsjenkins00000000000000# Format is: # # cinder-2014.1.5/.coveragerc0000664000567000056700000000016312540642603016473 0ustar jenkinsjenkins00000000000000[run] branch = True source = cinder omit = cinder/tests/*,cinder/openstack/common/* [report] ignore-errors = True cinder-2014.1.5/bin/0000775000567000056700000000000012540643114015120 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/bin/cinder-all0000775000567000056700000000502512540642606017067 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 OpenStack, LLC # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Starter script for All cinder services. This script attempts to start all the cinder services in one process. Each service is started in its own greenthread. Please note that exceptions and sys.exit() on the starting of a service are logged and the script will continue attempting to launch the rest of the services. """ import eventlet eventlet.monkey_patch() import os import sys from oslo.config import cfg possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(possible_topdir, "cinder", "__init__.py")): sys.path.insert(0, possible_topdir) from cinder.openstack.common import gettextutils gettextutils.install('cinder', lazy=False) # Need to register global_opts from cinder.common import config # noqa from cinder.openstack.common import log as logging from cinder import service from cinder import utils from cinder import version CONF = cfg.CONF if __name__ == '__main__': CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") LOG = logging.getLogger('cinder.all') utils.monkey_patch() launcher = service.process_launcher() # cinder-api try: server = service.WSGIService('osapi_volume') launcher.launch_service(server, workers=server.workers or 1) except (Exception, SystemExit): LOG.exception(_('Failed to load osapi_volume')) for binary in ['cinder-volume', 'cinder-scheduler', 'cinder-backup']: try: launcher.launch_service(service.Service.create(binary=binary)) except (Exception, SystemExit): LOG.exception(_('Failed to load %s'), binary) launcher.wait() cinder-2014.1.5/bin/cinder-volume0000775000567000056700000000520712540642606017630 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Starter script for Cinder Volume.""" import eventlet import os if os.name == 'nt': # eventlet monkey patching the os module causes subprocess.Popen to fail # on Windows when using pipes due to missing non-blocking IO support. eventlet.monkey_patch(os=False) else: eventlet.monkey_patch() import sys from oslo.config import cfg # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(possible_topdir, 'cinder', '__init__.py')): sys.path.insert(0, possible_topdir) from cinder.openstack.common import gettextutils gettextutils.install('cinder') # Need to register global_opts from cinder.common import config # noqa from cinder.openstack.common import log as logging from cinder import service from cinder import utils from cinder import version host_opt = cfg.StrOpt('host', help='Backend override of host value.') CONF = cfg.CONF if __name__ == '__main__': CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") utils.monkey_patch() launcher = service.get_launcher() if CONF.enabled_backends: for backend in CONF.enabled_backends: CONF.register_opts([host_opt], group=backend) backend_host = getattr(CONF, backend).host host = "%s@%s" % (backend_host or CONF.host, backend) server = service.Service.create(host=host, service_name=backend) launcher.launch_service(server) else: server = service.Service.create(binary='cinder-volume') launcher.launch_service(server) launcher.wait() cinder-2014.1.5/bin/cinder-api0000775000567000056700000000351712540642606017074 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Starter script for Cinder OS API.""" import eventlet eventlet.monkey_patch() import os import sys from oslo.config import cfg possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(possible_topdir, "cinder", "__init__.py")): sys.path.insert(0, possible_topdir) from cinder.openstack.common import gettextutils gettextutils.install('cinder', lazy=False) # Need to register global_opts from cinder.common import config # noqa from cinder.openstack.common import log as logging from cinder import rpc from cinder import service from cinder import utils from cinder import version CONF = cfg.CONF if __name__ == '__main__': CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") utils.monkey_patch() rpc.init(CONF) launcher = service.process_launcher() server = service.WSGIService('osapi_volume') launcher.launch_service(server, workers=server.workers or 1) launcher.wait() cinder-2014.1.5/bin/cinder-volume-usage-audit0000775000567000056700000002660612540642606022044 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Cron script to generate usage notifications for volumes existing during the audit period. Together with the notifications generated by volumes create/delete/resize, over that time period, this allows an external system consuming usage notification feeds to calculate volume usage for each tenant. Time periods are specified as 'hour', 'month', 'day' or 'year' hour = previous hour. If run at 9:07am, will generate usage for 8-9am. month = previous month. If the script is run April 1, it will generate usages for March 1 through March 31. day = previous day. if run on July 4th, it generates usages for July 3rd. year = previous year. If run on Jan 1, it generates usages for Jan 1 through Dec 31 of the previous year. """ from __future__ import print_function from datetime import datetime import os import sys import traceback from oslo.config import cfg # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'cinder', '__init__.py')): sys.path.insert(0, POSSIBLE_TOPDIR) from cinder.openstack.common import gettextutils gettextutils.install('cinder') from cinder import context from cinder import db from cinder.openstack.common import log as logging from cinder import rpc from cinder import utils from cinder import version import cinder.volume.utils CONF = cfg.CONF script_opts = [ cfg.StrOpt('start_time', default=None, help="If this option is specified then the start time " "specified is used instead of the start time of the " "last completed audit period."), cfg.StrOpt('end_time', default=None, help="If this option is specified then the end time " "specified is used instead of the end time of the " "last completed audit period."), cfg.BoolOpt('send_actions', default=False, help="Send the volume and snapshot create and delete " "notifications generated in the specified period."), ] CONF.register_cli_opts(script_opts) if __name__ == '__main__': admin_context = context.get_admin_context() CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") LOG = logging.getLogger("cinder") rpc.init(CONF) begin, end = utils.last_completed_audit_period() if CONF.start_time: begin = datetime.strptime(CONF.start_time, "%Y-%m-%d %H:%M:%S") if CONF.end_time: end = datetime.strptime(CONF.end_time, "%Y-%m-%d %H:%M:%S") if not end > begin: msg = _("The end time (%(end)s) must be after the start " "time (%(start)s).") % {'start': begin, 'end': end} print(msg) LOG.error(msg) sys.exit(-1) print(_("Starting volume usage audit")) msg = _("Creating usages for %(begin_period)s until %(end_period)s") print(msg % {"begin_period": str(begin), "end_period": str(end)}) extra_info = { 'audit_period_beginning': str(begin), 'audit_period_ending': str(end), } volumes = db.volume_get_active_by_window(admin_context, begin, end) print(_("Found %d volumes") % len(volumes)) for volume_ref in volumes: try: LOG.debug(_("Send exists notification for " "<%(extra_info)s>") % {'volume_id': volume_ref.id, 'project_id': volume_ref.project_id, 'extra_info': extra_info}) cinder.volume.utils.notify_about_volume_usage( admin_context, volume_ref, 'exists', extra_usage_info=extra_info) except Exception as e: LOG.error(_("Failed to send exists notification for volume %s.") % volume_ref.id) print(traceback.format_exc(e)) if (CONF.send_actions and volume_ref.created_at > begin and volume_ref.created_at < end): try: local_extra_info = { 'audit_period_beginning': str(volume_ref.created_at), 'audit_period_ending': str(volume_ref.created_at), } LOG.debug(_("Send create notification for " " " " <%(extra_info)s>") % {'volume_id': volume_ref.id, 'project_id': volume_ref.project_id, 'extra_info': local_extra_info}) cinder.volume.utils.notify_about_volume_usage( admin_context, volume_ref, 'create.start', extra_usage_info=local_extra_info) cinder.volume.utils.notify_about_volume_usage( admin_context, volume_ref, 'create.end', extra_usage_info=local_extra_info) except Exception as e: LOG.error(_("Failed to send create notification for " "volume %s.") % volume_ref.id) print(traceback.format_exc(e)) if (CONF.send_actions and volume_ref.deleted_at and volume_ref.deleted_at > begin and volume_ref.deleted_at < end): try: local_extra_info = { 'audit_period_beginning': str(volume_ref.deleted_at), 'audit_period_ending': str(volume_ref.deleted_at), } LOG.debug(_("Send delete notification for " " " " <%(extra_info)s>") % {'volume_id': volume_ref.id, 'project_id': volume_ref.project_id, 'extra_info': local_extra_info}) cinder.volume.utils.notify_about_volume_usage( admin_context, volume_ref, 'delete.start', extra_usage_info=local_extra_info) cinder.volume.utils.notify_about_volume_usage( admin_context, volume_ref, 'delete.end', extra_usage_info=local_extra_info) except Exception as e: LOG.error(_("Failed to send delete notification for volume " "%s.") % volume_ref.id) print(traceback.format_exc(e)) snapshots = db.snapshot_get_active_by_window(admin_context, begin, end) print(_("Found %d snapshots") % len(snapshots)) for snapshot_ref in snapshots: try: LOG.debug(_("Send notification for " " <%(extra_info)s>") % {'snapshot_id': snapshot_ref.id, 'project_id': snapshot_ref.project_id, 'extra_info': extra_info}) cinder.volume.utils.notify_about_snapshot_usage(admin_context, snapshot_ref, 'exists', extra_info) except Exception as e: LOG.error(_("Failed to send exists notification for snapshot %s.") % snapshot_ref.id) print(traceback.format_exc(e)) if (CONF.send_actions and snapshot_ref.created_at > begin and snapshot_ref.created_at < end): try: local_extra_info = { 'audit_period_beginning': str(snapshot_ref.created_at), 'audit_period_ending': str(snapshot_ref.created_at), } LOG.debug(_("Send create notification for " " " " <%(extra_info)s>") % {'snapshot_id': snapshot_ref.id, 'project_id': snapshot_ref.project_id, 'extra_info': local_extra_info}) cinder.volume.utils.notify_about_snapshot_usage( admin_context, snapshot_ref, 'create.start', extra_usage_info=local_extra_info) cinder.volume.utils.notify_about_snapshot_usage( admin_context, snapshot_ref, 'create.end', extra_usage_info=local_extra_info) except Exception as e: LOG.error(_("Failed to send create notification for snapshot " "%s.") % snapshot_ref.id) print(traceback.format_exc(e)) if (CONF.send_actions and snapshot_ref.deleted_at and snapshot_ref.deleted_at > begin and snapshot_ref.deleted_at < end): try: local_extra_info = { 'audit_period_beginning': str(snapshot_ref.deleted_at), 'audit_period_ending': str(snapshot_ref.deleted_at), } LOG.debug(_("Send delete notification for " " " " <%(extra_info)s>") % {'snapshot_id': snapshot_ref.id, 'project_id': snapshot_ref.project_id, 'extra_info': local_extra_info}) cinder.volume.utils.notify_about_snapshot_usage( admin_context, snapshot_ref, 'delete.start', extra_usage_info=local_extra_info) cinder.volume.utils.notify_about_snapshot_usage( admin_context, snapshot_ref, 'delete.end', extra_usage_info=local_extra_info) except Exception as e: LOG.error(_("Failed to send delete notification for snapshot " "%s.") % snapshot_ref.id) print(traceback.format_exc(e)) print(_("Volume usage audit completed")) cinder-2014.1.5/bin/cinder-scheduler0000775000567000056700000000356212540642606020301 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Starter script for Cinder Scheduler.""" import eventlet eventlet.monkey_patch() import os import sys from oslo.config import cfg # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(possible_topdir, 'cinder', '__init__.py')): sys.path.insert(0, possible_topdir) from cinder.openstack.common import gettextutils gettextutils.install('cinder') # Need to register global_opts from cinder.common import config # noqa from cinder.openstack.common import log as logging from cinder import service from cinder import utils from cinder import version CONF = cfg.CONF if __name__ == '__main__': CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") utils.monkey_patch() server = service.Service.create(binary='cinder-scheduler') service.serve(server) service.wait() cinder-2014.1.5/bin/cinder-manage0000775000567000056700000004541212540642606017553 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. # Interactive shell based on Django: # # Copyright (c) 2005, the Lawrence Journal-World # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of Django nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ CLI interface for cinder management. """ from __future__ import print_function import os import sys from oslo.config import cfg from oslo import messaging # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'cinder', '__init__.py')): sys.path.insert(0, POSSIBLE_TOPDIR) from cinder.openstack.common import gettextutils gettextutils.install('cinder') # Need to register global_opts from cinder.common import config # noqa from cinder import context from cinder import db from cinder.db import migration from cinder.openstack.common import log as logging from cinder.openstack.common import uuidutils from cinder import rpc from cinder import utils from cinder import version CONF = cfg.CONF # Decorators for actions def args(*args, **kwargs): def _decorator(func): func.__dict__.setdefault('args', []).insert(0, (args, kwargs)) return func return _decorator def param2id(object_id): """Helper function to convert various id types to internal id. args: [object_id], e.g. 'vol-0000000a' or 'volume-0000000a' or '10' """ if uuidutils.is_uuid_like(object_id): return object_id elif '-' in object_id: # FIXME(ja): mapping occurs in nova? pass else: try: return int(object_id) except ValueError: return object_id class ShellCommands(object): def bpython(self): """Runs a bpython shell. Falls back to Ipython/python shell if unavailable """ self.run('bpython') def ipython(self): """Runs an Ipython shell. Falls back to Python shell if unavailable """ self.run('ipython') def python(self): """Runs a python shell. Falls back to Python shell if unavailable """ self.run('python') @args('--shell', dest="shell", metavar='', help='Python shell') def run(self, shell=None): """Runs a Python interactive interpreter.""" if not shell: shell = 'bpython' if shell == 'bpython': try: import bpython bpython.embed() except ImportError: shell = 'ipython' if shell == 'ipython': try: import IPython # Explicitly pass an empty list as arguments, because # otherwise IPython would use sys.argv from this script. shell = IPython.Shell.IPShell(argv=[]) shell.mainloop() except ImportError: shell = 'python' if shell == 'python': import code try: # Try activating rlcompleter, because it's handy. import readline except ImportError: pass else: # We don't have to wrap the following import in a 'try', # because we already know 'readline' was imported successfully. import rlcompleter # noqa readline.parse_and_bind("tab:complete") code.interact() @args('--path', required=True, help='Script path') def script(self, path): """Runs the script from the specified path with flags set properly. arguments: path """ exec(compile(open(path).read(), path, 'exec'), locals(), globals()) def _db_error(caught_exception): print('%s' % caught_exception) print(_("The above error may show that the database has not " "been created.\nPlease create a database using " "'cinder-manage db sync' before running this command.")) exit(1) class HostCommands(object): """List hosts.""" @args('zone', nargs='?', default=None, help='Availability Zone (default: %(default)s)') def list(self, zone=None): """Show a list of all physical hosts. Filter by zone. args: [zone] """ print(_("%(host)-25s\t%(zone)-15s") % {'host': 'host', 'zone': 'zone'}) ctxt = context.get_admin_context() services = db.service_get_all(ctxt) if zone: services = [s for s in services if s['availability_zone'] == zone] hosts = [] for srv in services: if not [h for h in hosts if h['host'] == srv['host']]: hosts.append(srv) for h in hosts: print(_("%(host)-25s\t%(availability_zone)-15s") % {'host': h['host'], 'availability_zone': h['availability_zone']}) class DbCommands(object): """Class for managing the database.""" def __init__(self): pass @args('version', nargs='?', default=None, help='Database version') def sync(self, version=None): """Sync the database up to the most recent version.""" return migration.db_sync(version) def version(self): """Print the current database version.""" print(migration.db_version()) class VersionCommands(object): """Class for exposing the codebase version.""" def __init__(self): pass def list(self): print(version.version_string()) def __call__(self): self.list() class VolumeCommands(object): """Methods for dealing with a cloud in an odd state.""" def __init__(self, *args, **kwargs): super(VolumeCommands, self).__init__(*args, **kwargs) rpc.init(CONF) target = messaging.Target(topic=CONF.volume_topic) self.client = rpc.get_client(target) @args('volume_id', help='Volume ID to be deleted') def delete(self, volume_id): """Delete a volume, bypassing the check that it must be available. """ ctxt = context.get_admin_context() volume = db.volume_get(ctxt, param2id(volume_id)) host = volume['host'] if not host: print(_("Volume not yet assigned to host.")) print(_("Deleting volume from database and skipping rpc.")) db.volume_destroy(ctxt, param2id(volume_id)) return if volume['status'] == 'in-use': print(_("Volume is in-use.")) print(_("Detach volume from instance and then try again.")) return cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, "delete_volume", volume_id=volume['id']) @args('volume_id', help='Volume ID to be reattached') def reattach(self, volume_id): """Re-attach a volume that has previously been attached to an instance. Typically called after a compute host has been rebooted. """ ctxt = context.get_admin_context() volume = db.volume_get(ctxt, param2id(volume_id)) if not volume['instance_id']: print(_("volume is not attached to an instance")) return instance = db.instance_get(ctxt, volume['instance_id']) host = instance['host'] cctxt = self.client.prepare(topic=CONF.compute_topic, server=host) cctxt.cast(ctxt, "attach_volume", instance_id=instance['id'], volume_id=volume['id'], mountpoint=volume['mountpoint']) @args('--currenthost', required=True, help='Existing volume host name') @args('--newhost', required=True, help='New volume host name') def update_host(self, currenthost, newhost): """Modify the host name asscoiated with a volume. Particularly to recover from cases where one has moved their Cinder Volume node, or modfied their backend_name in a multi-backend config. """ ctxt = context.get_admin_context() volumes = db.volume_get_all_by_host(ctxt, currenthost) for v in volumes: db.volume_update(ctxt, v['id'], {'host': newhost}) class ConfigCommands(object): """Class for exposing the flags defined by flag_file(s).""" def __init__(self): pass @args('param', nargs='?', default=None, help='Configuration parameter to display (default: %(default)s)') def list(self, param=None): """List parameters configured for cinder. Lists all parameters configured for cinder unless an optional argument is specified. If the parameter is specified we only print the requested parameter. If the parameter is not found an appropriate error is produced by .get*(). """ param = param and param.strip() if param: print('%s = %s' % (param, CONF.get(param))) else: for key, value in CONF.iteritems(): print('%s = %s' % (key, value)) class GetLogCommands(object): """Get logging information.""" def errors(self): """Get all of the errors from the log files.""" error_found = 0 if CONF.log_dir: logs = [x for x in os.listdir(CONF.log_dir) if x.endswith('.log')] for file in logs: log_file = os.path.join(CONF.log_dir, file) lines = [line.strip() for line in open(log_file, "r")] lines.reverse() print_name = 0 for index, line in enumerate(lines): if line.find(" ERROR ") > 0: error_found += 1 if print_name == 0: print(log_file + ":-") print_name = 1 print(_("Line %(dis)d : %(line)s") % {'dis': len(lines) - index, 'line': line}) if error_found == 0: print(_("No errors in logfiles!")) @args('num_entries', nargs='?', type=int, default=10, help='Number of entries to list (default: %(default)d)') def syslog(self, num_entries=10): """Get of the cinder syslog events.""" entries = int(num_entries) count = 0 log_file = '' if os.path.exists('/var/log/syslog'): log_file = '/var/log/syslog' elif os.path.exists('/var/log/messages'): log_file = '/var/log/messages' else: print(_("Unable to find system log file!")) sys.exit(1) lines = [line.strip() for line in open(log_file, "r")] lines.reverse() print(_("Last %s cinder syslog entries:-") % (entries)) for line in lines: if line.find("cinder") > 0: count += 1 print(_("%s") % (line)) if count == entries: break if count == 0: print(_("No cinder entries in syslog!")) class BackupCommands(object): """Methods for managing backups.""" def list(self): """List all backups (including ones in progress) and the host on which the backup operation is running. """ ctxt = context.get_admin_context() backups = db.backup_get_all(ctxt) hdr = "%-32s\t%-32s\t%-32s\t%-24s\t%-24s\t%-12s\t%-12s\t%-12s\t%-12s" print(hdr % (_('ID'), _('User ID'), _('Project ID'), _('Host'), _('Name'), _('Container'), _('Status'), _('Size'), _('Object Count'))) res = "%-32s\t%-32s\t%-32s\t%-24s\t%-24s\t%-12s\t%-12s\t%-12d\t%-12d" for backup in backups: object_count = 0 if backup['object_count'] is not None: object_count = backup['object_count'] print(res % (backup['id'], backup['user_id'], backup['project_id'], backup['host'], backup['display_name'], backup['container'], backup['status'], backup['size'], object_count)) class ServiceCommands(object): """Methods for managing services.""" def list(self): """Show a list of all cinder services.""" ctxt = context.get_admin_context() services = db.service_get_all(ctxt) print_format = "%-16s %-36s %-16s %-10s %-5s %-10s" print(print_format % (_('Binary'), _('Host'), _('Zone'), _('Status'), _('State'), _('Updated At'))) for svc in services: alive = utils.service_is_up(svc) art = ":-)" if alive else "XXX" status = 'enabled' if svc['disabled']: status = 'disabled' print(print_format % (svc['binary'], svc['host'].partition('.')[0], svc['availability_zone'], status, art, svc['updated_at'])) CATEGORIES = { 'backup': BackupCommands, 'config': ConfigCommands, 'db': DbCommands, 'host': HostCommands, 'logs': GetLogCommands, 'service': ServiceCommands, 'shell': ShellCommands, 'version': VersionCommands, 'volume': VolumeCommands, } def methods_of(obj): """Get all callable methods of an object that don't start with underscore returns a list of tuples of the form (method_name, method) """ result = [] for i in dir(obj): if callable(getattr(obj, i)) and not i.startswith('_'): result.append((i, getattr(obj, i))) return result def add_command_parsers(subparsers): for category in CATEGORIES: command_object = CATEGORIES[category]() parser = subparsers.add_parser(category) parser.set_defaults(command_object=command_object) category_subparsers = parser.add_subparsers(dest='action') for (action, action_fn) in methods_of(command_object): parser = category_subparsers.add_parser(action) action_kwargs = [] for args, kwargs in getattr(action_fn, 'args', []): parser.add_argument(*args, **kwargs) parser.set_defaults(action_fn=action_fn) parser.set_defaults(action_kwargs=action_kwargs) category_opt = cfg.SubCommandOpt('category', title='Command categories', handler=add_command_parsers) def get_arg_string(args): arg = None if args[0] == '-': # (Note)zhiteng: args starts with FLAGS.oparser.prefix_chars # is optional args. Notice that cfg module takes care of # actual ArgParser so prefix_chars is always '-'. if args[1] == '-': # This is long optional arg arg = args[2:] else: arg = args[3:] else: arg = args return arg def fetch_func_args(func): fn_args = [] for args, kwargs in getattr(func, 'args', []): arg = get_arg_string(args[0]) fn_args.append(getattr(CONF.category, arg)) return fn_args def main(): """Parse options and call the appropriate class/method.""" CONF.register_cli_opt(category_opt) script_name = sys.argv[0] if len(sys.argv) < 2: print(_("\nOpenStack Cinder version: %(version)s\n") % {'version': version.version_string()}) print(script_name + " category action []") print(_("Available categories:")) for category in CATEGORIES: print(_("\t%s") % category) sys.exit(2) try: CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") except cfg.ConfigFilesNotFoundError: cfgfile = CONF.config_file[-1] if CONF.config_file else None if cfgfile and not os.access(cfgfile, os.R_OK): st = os.stat(cfgfile) print(_("Could not read %s. Re-running with sudo") % cfgfile) try: os.execvp('sudo', ['sudo', '-u', '#%s' % st.st_uid] + sys.argv) except Exception: print(_('sudo failed, continuing as if nothing happened')) print(_('Please re-run cinder-manage as root.')) sys.exit(2) fn = CONF.category.action_fn fn_args = fetch_func_args(fn) fn(*fn_args) if __name__ == '__main__': main() cinder-2014.1.5/bin/cinder-rtstool0000775000567000056700000001471012540642606020026 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # vim: et tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2012 - 2013 Red Hat, Inc. # All Rights Reserved. # # 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. import gettext import re import sys import rtslib gettext.install('cinder-rtstool', unicode=1) class RtstoolError(Exception): pass class RtstoolImportError(RtstoolError): pass def create(backing_device, name, userid, password, initiator_iqns=None): try: rtsroot = rtslib.root.RTSRoot() except rtslib.utils.RTSLibError: print(_('Ensure that configfs is mounted at /sys/kernel/config.')) raise # Look to see if BlockStorageObject already exists for x in rtsroot.storage_objects: if x.dump()['name'] == name: # Already exists, use this one return so_new = rtslib.BlockStorageObject(name=name, dev=backing_device) target_new = rtslib.Target(rtslib.FabricModule('iscsi'), name, 'create') tpg_new = rtslib.TPG(target_new, mode='create') tpg_new.set_attribute('authentication', '1') lun_new = rtslib.LUN(tpg_new, storage_object=so_new) initiator_name = None name_file = '/etc/iscsi/initiatorname.iscsi' try: with open(name_file, 'r') as f: for line in f: m = re.match('InitiatorName=(.+)', line) if m != None: initiator_name = m.group(1) break except IOError: raise RtstoolError(_('Could not open %s') % name_file) if initiator_name == None: raise RtstoolError(_('Could not read InitiatorName from %s') % name_file) acl_new = rtslib.NodeACL(tpg_new, initiator_name, mode='create') acl_new.chap_userid = userid acl_new.chap_password = password rtslib.MappedLUN(acl_new, lun_new.lun, lun_new.lun) if initiator_iqns: initiator_iqns = initiator_iqns.strip(' ') for i in initiator_iqns.split(','): acl_new = rtslib.NodeACL(tpg_new, i, mode='create') acl_new.chap_userid = userid acl_new.chap_password = password rtslib.MappedLUN(acl_new, lun_new.lun, lun_new.lun) tpg_new.enable = 1 try: rtslib.NetworkPortal(tpg_new, '0.0.0.0', 3260, mode='any') except rtslib.utils.RTSLibError: print(_('Error creating NetworkPortal: ensure port 3260 ' 'is not in use by another service.')) raise try: rtslib.NetworkPortal(tpg_new, '::0', 3260, mode='any') except rtslib.utils.RTSLibError: # TODO(emh): Binding to IPv6 fails sometimes -- let pass for now. pass def add_initiator(target_iqn, initiator_iqn, userid, password): try: rtsroot = rtslib.root.RTSRoot() except rtslib.utils.RTSLibError: print(_('Ensure that configfs is mounted at /sys/kernel/config.')) raise # Look for the target target = None for t in rtsroot.targets: if t.dump()['wwn'] == target_iqn: target = t break if target == None: raise RtstoolError(_('Could not find target %s') % target_iqn) tpg = target.tpgs.next() # get the first one for acl in tpg.dump()['node_acls']: # See if this ACL configuration already exists if acl['node_wwn'] == initiator_iqn: # No further action required return acl_new = rtslib.NodeACL(tpg, initiator_iqn, mode='create') acl_new.chap_userid = userid acl_new.chap_password = password rtslib.MappedLUN(acl_new, 0, tpg_lun=0) def get_targets(): rtsroot = rtslib.root.RTSRoot() for x in rtsroot.targets: print(x.dump()['wwn']) def delete(iqn): rtsroot = rtslib.root.RTSRoot() for x in rtsroot.targets: if x.dump()['wwn'] == iqn: x.delete() break for x in rtsroot.storage_objects: if x.dump()['name'] == iqn: x.delete() break def verify_rtslib(): for member in ['BlockStorageObject', 'FabricModule', 'LUN', 'MappedLUN', 'NetworkPortal', 'NodeACL', 'root', 'Target', 'TPG']: if not hasattr(rtslib, member): raise RtstoolImportError(_("rtslib is missing member %s: " "You may need a newer python-rtslib.") % member) def usage(): print("Usage:") print(sys.argv[0] + " create [device] [name] [userid] [password]" + " ") print(sys.argv[0] + " add-initiator [target_iqn] [userid] [password] [initiator_iqn]") print(sys.argv[0] + " get-targets") print(sys.argv[0] + " delete [iqn]") print(sys.argv[0] + " verify") sys.exit(1) def main(argv=None): if argv is None: argv = sys.argv if len(argv) < 2: usage() if argv[1] == 'create': if len(argv) < 6: usage() if len(argv) > 7: usage() backing_device = argv[2] name = argv[3] userid = argv[4] password = argv[5] initiator_iqns = None if len(argv) > 6: initiator_iqns = argv[6] create(backing_device, name, userid, password, initiator_iqns) elif argv[1] == 'add-initiator': if len(argv) < 6: usage() target_iqn = argv[2] userid = argv[3] password = argv[4] initiator_iqn = argv[5] add_initiator(target_iqn, initiator_iqn, userid, password) elif argv[1] == 'get-targets': get_targets() elif argv[1] == 'delete': if len(argv) < 3: usage() iqn = argv[2] delete(iqn) elif argv[1] == 'verify': # This is used to verify that this script can be called by cinder, # and that rtslib is new enough to work. verify_rtslib() return 0 else: usage() return 0 if __name__ == '__main__': sys.exit(main()) cinder-2014.1.5/bin/cinder-backup0000775000567000056700000000345512540642606017571 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """Starter script for Cinder Volume Backup.""" import os import sys import eventlet eventlet.monkey_patch() from oslo.config import cfg # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(possible_topdir, 'cinder', '__init__.py')): sys.path.insert(0, possible_topdir) from cinder.openstack.common import gettextutils gettextutils.install('cinder') # Need to register global_opts from cinder.common import config # noqa from cinder.openstack.common import log as logging from cinder import service from cinder import utils from cinder import version CONF = cfg.CONF if __name__ == '__main__': CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") utils.monkey_patch() server = service.Service.create(binary='cinder-backup') service.serve(server) service.wait() cinder-2014.1.5/bin/cinder-rpc-zmq-receiver0000775000567000056700000000317612540642606021517 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2011 OpenStack Foundation # # 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. import eventlet eventlet.monkey_patch() import contextlib import os import sys # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'cinder', '__init__.py')): sys.path.insert(0, POSSIBLE_TOPDIR) from oslo.config import cfg from cinder.openstack.common import log as logging from cinder.openstack.common import rpc from cinder.openstack.common.rpc import impl_zmq CONF = cfg.CONF CONF.register_opts(rpc.rpc_opts) CONF.register_opts(impl_zmq.zmq_opts) def main(): CONF(sys.argv[1:], project='cinder') logging.setup("cinder") with contextlib.closing(impl_zmq.ZmqProxy(CONF)) as reactor: reactor.consume_in_thread() reactor.wait() if __name__ == '__main__': main() cinder-2014.1.5/bin/cinder-clear-rabbit-queues0000775000567000056700000000450112540642606022151 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Admin/debug script to wipe rabbitMQ (AMQP) queues cinder uses. This can be used if you need to change durable options on queues, or to wipe all messages in the queue system if things are in a serious bad way. """ import os import sys from oslo.config import cfg # If ../cinder/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'cinder', '__init__.py')): sys.path.insert(0, POSSIBLE_TOPDIR) from cinder.openstack.common import gettextutils gettextutils.install('cinder') # Need to register global_opts from cinder.common import config # noqa from cinder.openstack.common import log as logging from cinder.openstack.common import rpc from cinder import version delete_exchange_opt = \ cfg.BoolOpt('delete_exchange', default=False, help='delete cinder exchange too.') CONF = cfg.CONF CONF.register_cli_opt(delete_exchange_opt) def delete_exchange(exch): conn = rpc.create_connection() x = conn.get_channel() x.exchange_delete(exch) def delete_queues(queues): conn = rpc.create_connection() x = conn.get_channel() for q in queues: x.queue_delete(q) if __name__ == '__main__': args = CONF(sys.argv[1:], project='cinder', version=version.version_string()) logging.setup("cinder") delete_queues(args[1:]) if CONF.delete_exchange: delete_exchange(CONF.control_exchange) cinder-2014.1.5/requirements.txt0000664000567000056700000000132512540642606017642 0ustar jenkinsjenkins00000000000000pbr>=0.6,<1.0 amqplib>=0.6.1 anyjson>=0.3.3,<=0.3.3 argparse Babel>=1.3,<=1.3 eventlet>=0.13.0,<0.16.0 greenlet>=0.3.2,<=0.4.5 iso8601>=0.1.9,<=0.1.10 kombu>=2.5.0,<=3.0.7 lxml>=2.3,<=3.4.2 netaddr>=0.7.6,<=0.7.14 oslo.config>=1.2.0,<1.5 oslo.messaging>=1.3.0,<1.5 oslo.rootwrap<1.4 paramiko>=1.9.0,<=1.15.2 Paste PasteDeploy>=1.5.0,<=1.5.2 python-glanceclient>=0.9.0,!=0.14.0,<=0.14.2 python-keystoneclient>=0.7.0,<0.12.0 python-novaclient>=2.17.0,<2.21 python-swiftclient>=1.6,<=2.3.1 requests>=1.1,<=2.6.0 Routes>=1.12.3,!=2.0 taskflow>=0.1.3,<0.2 rtslib-fb>=2.1.39 six>=1.6.0,<=1.9.0 SQLAlchemy>=0.7.8,!=0.9.5,<=0.9.99 sqlalchemy-migrate>=0.8.2,!=0.8.4,<=0.9.1 stevedore>=0.14 suds==0.4 WebOb>=1.2.3,<=1.4 wsgiref>=0.1.2 cinder-2014.1.5/PKG-INFO0000664000567000056700000000310312540643114015442 0ustar jenkinsjenkins00000000000000Metadata-Version: 1.1 Name: cinder Version: 2014.1.5 Summary: OpenStack Block Storage Home-page: http://www.openstack.org/ Author: OpenStack Author-email: openstack-dev@lists.openstack.org License: UNKNOWN Description: The Choose Your Own Adventure README for Cinder =============================================== You have come across a storage service for an open cloud computing service. It has identified itself as "Cinder." It was abstracted from the Nova project. To monitor it from a distance: follow `@openstack `_ on twitter. To tame it for use in your own cloud: read http://docs.openstack.org To study its anatomy: read http://cinder.openstack.org To dissect it in detail: visit http://github.com/openstack/cinder To taunt it with its weaknesses: use http://bugs.launchpad.net/cinder To watch it: http://jenkins.openstack.org To hack at it: read `HACKING.rst `_ Platform: UNKNOWN Classifier: Environment :: OpenStack Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 2.6 cinder-2014.1.5/README.rst0000664000567000056700000000136312540642606016047 0ustar jenkinsjenkins00000000000000The Choose Your Own Adventure README for Cinder =============================================== You have come across a storage service for an open cloud computing service. It has identified itself as "Cinder." It was abstracted from the Nova project. To monitor it from a distance: follow `@openstack `_ on twitter. To tame it for use in your own cloud: read http://docs.openstack.org To study its anatomy: read http://cinder.openstack.org To dissect it in detail: visit http://github.com/openstack/cinder To taunt it with its weaknesses: use http://bugs.launchpad.net/cinder To watch it: http://jenkins.openstack.org To hack at it: read `HACKING.rst `_ cinder-2014.1.5/ChangeLog0000664000567000056700000024616512540643113016137 0ustar jenkinsjenkins00000000000000CHANGES ======= 2014.1.5 -------- * Disallow backing files when uploading volumes to image * Updated from global requirements * Updated from global requirements * Updated from global requirements * Deal with PEP-0476 certificate chaining checking * Ignore HTTP_PROXY during test requests * Bump stable/icehouse next version to 2014.1.5 2014.1.4 -------- * Updated from global requirements * Updated from global requirements * Catch ImageNotFound exception when deleting rbd volume * NetApp E-series: Do not log passwords in requests * Fixes HostTestCase failures due to slow test run * NetApp 7mode NFS driver doesn't honor netapp_vfiler option * Raise exception if invalid IP is specified * Fix NetApp AutoSupport Shortcomings * Remove check_uptodate.sh check from tox.ini * Eventlet green threads not released back to pool * Removes unecessary call to rbd.Image * Ensure rbd connect exception is properly caught * NetApp fix attach fail for already mapped volume * NetApp fix for controller preferred path * fixing the iSER transport protocol when using LVMISERDriver * Cinder api service doesn't handle SIGHUP properly * Updated from global requirements * Sync latest strutils from oslo-incubator for mask_password fix * NetApp fix for default host type in eseries * NetApp fix eseries concurrent vol map failure * Fix possible race condition for accept transfer * Sync process utils from oslo * Fix NetAppDirectCmodeNfsDriver._find_shares() * Bump stable/icehouse next version to 2014.1.4 2014.1.3 -------- * Refuse invalid qcow2 backing files * Fixes terminate_connection live migration issue * NetApp NFS: Do not reference dst_img_local before assignment * Sync latest process and str utils from oslo * Fix KeyError exception in NetApp CDOT iscsi driver volume create * Don't clear _mounted_shares list in remoteFS while updating * Update cinder.conf.sample * Updated from global requirements * Block sqlalchemy-migrate 0.9.2 * Mock glance client object in version unit tests * VMware: Disable suds caching * Honor volume:get policy * Prevent tenant viewing volumes owned by another * Fix performance issues with brocade zone driver * Cache snapshots in request for extension * Bump stable/icehouse next version to 2014.1.3 * volume_image_metadata missing from volume list * Add retry_on_deadlock to db update methods * Add fix for reservation index to icehouse * vmware: Force chunked transfer for upload-to-image 2014.1.2 -------- * Fix solidfire accept_transfer * Fixes HP LeftHand driver with Paramiko 1.13.0 * Set python hash seed to 0 in tox.ini * Get updated model info on volume transfer * Updated from global requirements * Ensure flushing of IO prior to removing FC device * Don't leave snapshots on the floor * Retry lvremove with ignore_suspended_devices * Remove second get call to list/show volumes * Add cinder-manage cmd to update host column * Fix host option isn't set when using multiple backend * Add the -f option back to lvremove * Updated from global requirements * Update requirements.txt to disallow alpha libs * Allow host config to be overriden in backend * Storwize/SVC driver detach volume failed * Bump stable/icehouse next version to 2014.1.2 * Fix handling multiple WWPNs on preferred FC node 2014.1.1 -------- * Update cinder.conf * vmware: Fix problems with VIM API retry logic * Updated from global requirements * Specify lld in tgt config backends * Properly initialize rpc in cinder-volume-usage-audit * Fix retyping volume that has volume type None * Storwize/SVC driver crashes when check volume copy status * Fix solaris_execute in SolarisISCSIDriver * Fix wrong exception reference * Ensure that lun_id is an int * Correct metadata ordering issue in tests * GET details REST API next link missing 'details' * Fallback to None on missing Glance image attrs * Keep volume available if retype fails due to quota * Fixes cinder error state volume delete on Windows * Re-raise exceptions in upload-to-image * GlusterFS: Delete active snapshot file on volume delete * Add exception catch if Storwize/SVC driver failed when retyping * Disable oslo.messaging debug logs * Opening stable/icehouse * Adjust sample config for keystoneclient 0.8.0 release 2014.1 ------ * driver.create/remove_export() require elevated ctx * Check for silent failure of tgtadm remove 2014.1.rc2 ---------- * Updated from global requirements * Append nas_opts to IBMNAS_NFSDriver configuration * Change iogrp property when retyping for Storwize/SVC * Adds ionice command permutations to rootwrap filters * _translate_from_glance() can cause an unnecessary HTTP request * Allow deprecated volume update keys in v2 * GlusterFS: Delete volume-.info file when volume is deleted * Fixes cinder volume delete on Windows * Fix Jenkins translation jobs * Fixes cinder volume attach on Windows 2014.1.rc1 ---------- * Imported Translations from Transifex * Changes to correct name of missing NetApp license * NetApp cmode nfs: Fix QOS extra spec * NetApp cmode iscsi: Fix QOS extra spec * Fixes a problem in attach volume in EMC driver * Update config generator from OSLO * Pass the mirrorlog option as two arguments * Netapp iscsi: allow snapshots with unspecified block range * Serialize the notification payload * Updated from global requirements * Adds xiv_chap to xiv/ds8k driver configuration * vmware: Use SessionIsActive to find stale session * init_host should be called before RPC consumer is created * Add RequestContextSerializer for rpc notifications * Allow NetApp iSCSI driver to sub-clone large volumes * Can't force-create snapshot by an non-exist error volume * Simplify test force delete snapshot unit test * resolve KeyError for IBM Storwize/SVC driver * Remove unused method from NetApp iscsi driver * vmware: Remove pbm_default_policy config option * VMware: Implement vmdk extend_volume * Fix create_export/remove_export in driver.py * Imported Translations from Transifex * Ensure name is utf-8 when deleting rbd vol or snap * Use six.moves.urllib.parse instead of urlparse * Use the error_out_volume from flow common instead * Revert "Re-enable lazy translation" * Sync latest Oslo code for imageutils * Don't send untextified exc to webob * Imported Translations from Transifex * Updated from global requirements * Use debug level logging during unit tests * Sync log.py from oslo-incubator * Fixed some FCZM unit tests hacking issues * Add missing config values for vmwware_vmdk test * cinder-rtstool imports a not existing module * get volumes with limit and filters does not work * Fixes cinder-volume service startup on Windows * Fixed nova VM live migration issue with 3PAR * Adding domain to context * Switch over to oslosphinx * Add libffi-dev to list of packages to install in dev env * VMware: Take the volume size from the user input * Fix exception message of CoraidESMConfigureError * vmware: Mark VMware ESX vmdk driver as deprecated * Fixes ssh-injection error while using chap authentication * Generate config samples for oslo.messaging * Add conversion types in some strings * Port to oslo.messaging * Updated from global requirements * get volumes API does not handle limit=0 * EMC SMI-S delete snapshot unit test takes too long * 3PAR: Support extend volume based on snapshot * Fixed spelling error - accomodate to accommodate * GPFS unit tests: increased coverage, uses mock * Clean Up EMC VNX Direct Driver in Cinder * gpfs driver: fix logging problems * Convert cinder utils tests to use mock * Include next link when default limit is reached * Re-enable lazy translation * Sync latest Oslo config code for i18n * Fix HP LeftHand Performance issue with AO * NetApp implementation for copy offload in clustered nfs driver 2014.1.b3 --------- * Remove str() from LOG.* and exceptions * Storwize volume manage/unmanage support * Volume manage/unmanage support * Add user defined extra capabilities * remove _check_container_exists from Swift backup driver * Add initiator_target_map for IBM Storwize/SVC * Fix HP LeftHand migration with snapshots * Updated from global requirements * Fix docstring ordering * Typo corrections for test files in cinder * vmware: PBM wsdl file configuration * vmware: default global pbm policy configuration * vmware: check datastore availability during create * vmware: Storage policy based volume placement * Add EMC VNX Direct Driver in Cinder * gpfs volume driver backup file access fixes * Check if snapshot is deleted cleanly * Restrict rootwrap find filter for IBM NAS and GPFS * Add initiator target map in EMC SMI-S FC driver * GlusterFS: Set permissions on qcow2 snapshot files * Make EMC SMI-S driver unit tests faster * change time.sleep to use loopingcall * Change RBD delete failure log level to warn * Updated from global requirements * Update Oslo wiki link in README * Add versioning output for the FC Zone Manager * Fix volume stats with multiple LeftHand clusters * Export and import backup service metadata * Don't clear host_state_map when scheduling * Add volume metadata backup suport to swift driver * Add optional ionice to volume clearing process * Quota delete operation in cinder * Restrict rootwrap find filter for NetAppNFS driver * GlusterFS: Increase snapshot delete job timeout to two hours * Segment LUN clones in NetApp iSCSI * updating testing readme with more current information * Remove unused variable * Python 3: replace "im_self" by "__self__" * Update FibreChannel Zone Manager config * Change warning message in NetApp driver for vsadmin creds * 3PAR: Fix extend volume GiB to MiB * TSM backup driver changes to support file backup * Fix silly error in comment * 3PAR: Create volume from snapshot with larger size * Fix free_capacity reporting in SolidFire driver * Fix test_delete_should_not_.. to assert something * Replace assertEqual(None, *) with assertIsNone in tests * Replace tearDown with addCleanup * Use six.StringIO instead of StringIO.StringIO * Implement retype in IBM GPFS Driver and refactor * 3PAR: Delete missing snapshot stuck in error_del * Added 3par initiator target map for FCZM * Fix race in test_delete_backup * Driver for IBM SONAS and Storwize V7000 Unified * Fix webob.exc.HTTPForbidden parameter miss * Add snapshot related data to limits api * Storwize/SVC: Change volume copy task to async * Fix FC connection handling in the storwize driver * Sync log.py from oslo * Replace httplib.HTTPSConnection in unittests * Add support for FC zone lifecycle management * Give a way to save why a service has been disabled * Remove old driver mapping deprecation * 3PAR: Backend assisted volume migrate * Add HP MSA Fiber Channel driver * Ensure return for db api functions * HP LeftHand Backend assisted volume migrate * Add support for qos_specs feature to 3PAR drivers * Add x-openstack-request-id to cinder responses * Update 3PAR drivers to pass cert test * Remove unused function * Use len instead of for-loop to get the end index * Ensures NetApp iSCSI driver correctly compares int values for size * Sync request_id, request_utils for cinder * IBM XIV and DS8000 Driver reorganizing (IBM dir) * Sync oslo imageutils, strutils to cinder * GPFS: Implement volume backup and restore * Fix missing package dependency for requests * test_volume unittest fails if ran only this module * Fix invalid facilities documented in rootwrap.conf * Use six.moves cStringIO instead of cStringIO * NetApp api fix structure conversion methods * Add support for backing up volume metadata * Imported Translations from Transifex * Replace assertEqual(None, *) with assertIsNone in tests * Add encrypted flag to volumes * Implement retype in HP LeftHand driver * Cast the quota set values to integer before checking their validity * Remove rabbit_notifier (Sync notifier with oslo d6e1ba7) * Remove dependent module py3kcompat * Add EMC SMI-S FC Driver in Cinder * Fix wrong example of "nova_endpoint_template" * NetApp eseries iscsi driver implementation * Update gpfs driver volume creation process * Deactivate LV before removing * VMware: changing volumeops tests from mox to mock * Remove unused exception * Add searchDepth when getClusterInfo called * Check type argument on create from source and snap * Rename Openstack to OpenStack * Removes use of timeutils.set_time_override * Removed unused context in _extend_snapshot method * Remove unused methods * Storwize/SVC: Check wwpn not None * Changes to cast variable as integer as XML API fails * Ceph backup driver tidyup * Move create_, remove_ and ensure_export from drivers * New HP LeftHand array iSCSI driver * GlusterFS: Fix create/restore backup * Allow operators to customize max header size * Fixup persistence file not found on tgt remove * Remove tox locale overrides * Add method for unit tests to set logging level * Brick support for pNFS * Storwize/SVC: Fix races in host-related functions * Fix cinder-backup volume restore with ceph driver * Dont set error_extending status on API extend call * Fix misspellings in cinder * Fixes cinder failed to create/restore a backup with NFS driver * Brick fix BrickException message formatting * lvm: unhandled exception when migrating volume * Implement retype in SolidFire driver * Validate the quota in the API layer for volume extend * Rename self.tgtadm to self.target_helper * Fix LVM migrate_volume tests * Brick connector fix for GlusterFS * Updated from global requirements * vmware: intermittent failure in test_vmware_vmdk * RBD unit test improvements * Move clear_volume back to it's own method * Don't use shred for volume_clear=zero * Nexenta iSCSI driver: fixed volume_migration * Move clear_volume method to volume.utils * Add update support to volume type encryption * LVM: log thin pool name and size upon creation * Remove create_export from volume create * vmdk: To add missing time unit in driver option * Update SolidFire Driver to use cinder's units * Update cinder.conf.sample for new keystone client * LVM: remove redundant casts to float * On create_volume flow get rid of host parameter * Imported Translations from Transifex * Allow spaces in host names in the storwize driver * Remove a catching exception during delete_volume * Remove SSH code from 3PAR drivers * Remove unused task from manager create_volume flow * Add support for special char in volume metadata * Brick LVM: Handle space info as numeric types * Set a sane default for state_path * Fixes incorrect key in dictionary * Stop volume_type_encryption creation when in use * Revert initialize_connection changes * Convert ceph backup unit tests from mox to mock * VolumeManager: initialize even if a volume can't be found * Add create_iscsi_target stub to TargetAdmin * 3PAR iSCSI volumes attach to single nsp * Extra_spec containing '/' can't be deleted * LVM: Robustify skipactivation detection * Make sure report_interval is less than service_down_time * Redundant check in os-migrate_volume_completion * Updated error messages for volume clone * Imported Translations from Transifex * Updated from global requirements * Fix up the way we do iqn variable in unit test * Catch new iscsi exception * Delete volume transfer in volume_destroy function * Create structure of flows' packages * Fix docstring and remove unused variable * GlusterFS: Fix deadlock in volume clone * Enable multi-process for API service * Sync RPC module from Oslo * Sync common modules from Oslo * Sync py3kcompat, sslutils, versionutils from Oslo * Sync gettextutils from Oslo * Storwize driver cleanup * Add support for retype in Storwize/SVC driver * Add notifier events to cinder volume rename, reset-state 2014.1.b2 --------- * Convert RBD unit tests to use mock instead of mox * Fixed inconsistency in iqn * Update HACKING.rst with regard to mock usage * Remove unused method 'is_key_value_present()' * Remove unused config options * Remove unused exceptions * Do not show quota of removed volume types in Default Quotas panel * Fix up calculating space info for mirrored volumes * Rename __init__.py to create_volume.py * Use oslo.rootwrap library instead of local copy * Fix UnboundLocalError in TgtAdm.update_iscsi_target * Update host on driver retype * Remove unused variable in restore_backup method * Ensure hostnames are converted to IP for comparison * Add Backup Service to 'cinder-all' script * Remove env from rootwrap filter * Allow user to specify audit period * Fix exception log msg in attach volume method * Fix import log_handler error with publish_errors set * Use a mirrored mirror log * Added missing accept_transfer to FC * Register EMC config options globally * Fix os.getlogin() problem with no tty * Updates for version list to show correct references * Fix cross-import bug in cinder.db.sqlalchemy.api * Pull Bug #1263122 fix for service module from Oslo * Pull latest scheduler change from Oslo * Use loopingcall from openstack-common * Use a *args pass-in instead of a list one * Remove unused variable in os-extend api * GlusterFS: Synchronize additional operations * Move driver initialization check into the method * Update cinder.conf.sample for keystoneclient change * Transfer creation doesn't support 'name' via xml * Change default policy for volume_extension:volume_tenant_attribute * Print driver exception on retype * Drop Chance/SimpleScheduler Implementation * Fix sqlalchemy bug in transfer_get_all_by_project * Fix sheepdog copy_image_to_volume method * NFS/GlusterFS: Skip incorrectly formatted shares * Remove unused message from iogrp_data setup * Remove legacy config option 'connection_type' * Modify default prefix for solidfire account * Add time_type dictionary to test_migrations * 3PAR: Raise Ex when del snapshot with depend vol * Add bool_type dictionary to test_migrations * Hiding postgresql password in connection string * Fixed a problem in iSCSI multipath * Fix the invalid argument of webob.exc.HTTPBadRequest * Add ability to modify volume type * Fix downgrade in 002_quota_class.py for MySQL * Removed deprecated config option hp3par_domain * Fix Brick LVM test command parsing * Update V2 API to return detailed volume information on create * LVM: Fix "intialized" typo in warning msg * Imported Translations from Transifex * removed unused context in check_*** methods * add 'force' verification in _volume_upload_image * Raise max header size to accommodate large tokens * LVM: update iscsi target on volume attach * LVM: Activate Thin Pool LV upon initialization * GlusterFS: Use correct base argument when deleting attached snaps * Switch to Oslo's config generator * Removed copyright from empty files * Remove unused fake_flags * Replace Simple/Chance Scheduler with FilterScheduler * Reduce the redundant variable declarations * Imported Translations from Transifex * Remove vim header * Redundant size check in volume restore api * Add AllocatedCapacityWeigher * Imported Translations from Transifex * Adding helpful URL links to README.rst and HACKING.rst * Handle terminate_connection() exception in volume manager * Empty files shouldn't contain copyright nor license * Bugfix missing foreign key removal for mysql * Fix spelling errors * Imported Translations from Transifex * Add additional metadata as key-value pairs in 3PAR * Handle initialize_connection() exception in volume manager * Output Strings of bin/*.py should support i18n * Add qos_specs support to solidfire driver * Service launcher method docstring corrected * Fix QoS information in initialize_connection() result * Fix and enable gating on F401 * Only reverify backing lun when create backing lun * Set volume_dd_blocksize configurable on per-driver basis * Add exception logging if flow creation fails * Remove dynamic default on sf_account_prefix * make delete recovery messages debug level * Remove unused code from volume manager (reset_stats) * Pylint fixes for GlusterFS driver * Pylint fixes for Brick iSCSI/LVM * 3PAR FC: add ability to add WWNs to host * Imported Translations from Transifex * Adjust import order according to PEP8 imports rule * Do not clone non-raw images in rbd backend * Adds unit tests for drivers.rbd.RBDImageIOWrapper * [Netapp/Nexenta] Move registration of config options * Fix and enable gating on H402 * LVM: Activate source snap LV when cloning from volume * Remove test that was no longer used for long * make help text more meaningful for cinder docs * Switch create volume commands to Taskflow 0.1.1 * Use mock for scheduler tests * Remove LANG=C from rootwrap invocations * Add the driver name to get stats log output * Remove hashbang (#!) at beginning of python modules * Fix KeyError while generating a WSGI response * Updated from global requirements * Lazy log the fixed_key warnings * Add disabled_reason field to services table * Catch TypeError when new_size is None on extend * Sync matchmaker_ring.py from oslo-incubator * Add RBD test for volume not existing during delete * Sync rpc fix from oslo-incubator * Returns thin pool free space calculated from actual usage * Brick LVM: Set C locale when gathering PV info * LVM migration: Check if name is equal to dest_vg * Convert lvm_mirrors to int * LVM migrate: Use keywords for the brick instance * LVM: Create thin pools of adequate size * GlusterFS: Remove glusterfs_disk_util option * Catch ImageBusy exception when deleting rbd volume * Adds lock for create from vol/snap to avoid race conditions * Fix docstring for snapshot_metadata controller * Fixes case insensitive for resp body * VMDK:Using host mount info for datastore selection * Fixes case insensitive for resp body 2014.1.b1 --------- * All API controllers inherit from wsgi.Controller * delete.start/delete.end notification for hostless * Fix typo/misspelled words * Update hacking to hacking>=0.8.0,<0.9 * Add more logging to migrate_volume_completion * Use model_query() in db.*****_destroy * Change method name to test_get_volume_stats * Adjust RBD delete log level * Bump to sqlalchemy-migrate 0.8.2 * Add unit tests for volume reserve and unreserve * Don't stop volume service for failed re-export operations * GlusterFS: Complete snapshot_delete when info doesn't exist * Fix typo in cinder * Imported Translations from Transifex * Add attach/detach notifications * Removes dublicated assert from test_migrations.py * Use assertAlmostEqual instead of failUnlessAlmostEqual in unit tests * Fixing check order for empty body in get_body() * Updates .gitignore * Remove unused import and CinderNode sqlalchemy model * Fix suppressed exceptions for migration downgrade * Fix the wrong verification for 'readonly' * Parse out '@' in volume['host'] to do discovery * Add volume migration code to Nexenta iSCSI volume driver * Handle NotFound exception in snapshots API code * Add chance weigher to scheduler * Redundant body validation for volume_upload_image * Imported Translations from Transifex * Fix Storwize terminate_connection with no host * Fix _update_volume_stats typos * Remove the redundant judgment for 'restore' * Make volume_glance_metadata_create compat with DB2 * GlusterFS: Set correct permissions for volume file created via clone * GlusterFS: Ensure Cinder can write to shares * The param 'readonly' is incorrect checked * Fix docstring for Snapshot model * Make sure report_interval is less than service_down_time * Ensure 'status' in update_snapshot_status * Update openstack/common/periodic_task * Initialize and terminate connection raise 500 err * Fix docstring for _migrate_volume_completion * Migrate volume should check para "host" in request * Continue to delete volumes that DNE in rbd backend * Pull latest service module from Oslo * Add greenthread.sleep() to parent wait() * Fix ./run_tests.sh -V --virtual-env-name * Pass the size when fetching image in xenapi driver * Remove unused code in test_admin_actions.py * Add support for extend volume in GPFS vol driver * Remove dead code from test_get_volume_stats() * Remove suffixes from LVM brick test vgs output * Subclass vendor specific exceptions * Don't do glance v2 calls when config is set to v1 * LVM: Activate source LV before cloning from it * Add default quota class into DB during migration * To fix test_get_dss_rp in test_vmware_vmdk.py * Fix typo in cinder.volume.API * NetApp fix for vsadmin role failure for ssc * Create snapshot throws 500 Internal Error * Fixes inappropriate error message * NetApp fix free space as zero during 1st vol stats update * Add valid check and unit tests on quota class * GlusterFS: Synchronize operations that manipulate qcow2 data * Check only our VG name when testing if VG exists * Update quota-set throw 500 error * Using HttpNfcLease to transfer vmdk files * Adds extend volume to Dell EqualLogic Driver * Remove the use of common.uuidutils.gen_uuid * Imported Translations from Transifex * Do not allow bad keys while updating quota * Use cached volumes in REST API extensions * Enable object caching in cinder REST API requests * Nexenta iSCSI driver: extend volume stats of _update_volume_stats * Fail when image is bigger than the volume * Update URL for global HACKING document and remove duplicate section * Retrieve volume image metadata using single query * Add call to retrieve image metadata for volumes in bulk * Do not remove volume silently if GPFS is unmounted * Report zero capacity if GPFS is unmounted * Nexenta NFS driver refactoring * RequestContext initialization failed in cinder * Nexenta: Remove snapshot after volume-clone deletion * Don't use deprecated module commands * Remove dup of LVMISCSIDriver in LVMISERDriver * Remove duplication of ISCSIDriver in ISERDriver * Support volume_readonly_update using XML format * Fix typo in test_check_ssh_injection_on error test * Remove lvm-thin pool_size config option * Examine if GPFS is mounted before writing data * Imported Translations from Transifex * Remove unused db calls to fetch original metadata * replace u\2013 char with dash * Sync log from oslo * Add tests for LVM -cow clearing * clean up numeric expressions in test * Fixes typo in method name _notify_voloume_type_error * Allow spaces in quoted SSH command arguments * Use pipe between ceph backup diff export/import * Imported Translations from Transifex * Add missing space to num_iser_scan_tries text * Add cinder.db.migration.db_initial_version() * remove rundundant lockfile requirement * Imported Translations from Transifex * Revert "Brick connector fix for NFS drivers" * Update my mailmap * GlusterFS: set correct filename when cloning volume * Handle NotFound exceptions in API * Unit test fails in pbuilder environment * Updated from global requirements * Check if dir exists before calling listdir * Rename "rtstool" to "cinder-rtstool", add dep * Downgrade target create failure mesg to warning * Nexenta iSCSI driver: Refactor create_cloned_volume * VMware: Registering vmdk opts in global space * Brick connector revised fix for NFS drivers * Nexenta drivers ignore "does not exist" exception * Add openstack/common/crypto from OSLO * Fix volume transfer href issue * Remove duplication of brick.iscsi in brick.iser * Drop auth_token configs for api-paste.ini * NetApp unit test fail fix for http_proxy * Revert "remove cinder-rtstool because of rtslib dep" * Let GPFS driver to rename snapshot with root permission * Imported Translations from Transifex * NetApp fix for 7mode iscsi volume stats * Brick connector fix for NFS drivers * NetApp fix ssc volume filtering inconsistency * Updated from global requirements * NetApp fix mirrored stats * NetApp fix for compression and dedup stats * Fix generate conf script can't handle multistropt * Add auth_token settings to cinder.conf.sample * Add extend_volume for Huawei drivers * Update openstack/common/notifier * Imported Translations from Transifex * Apply six for metaclass * Provide gettext _ in missing locations * Nexenta NFS driver: caching for appliance volroot * Cinder extension to add used resources in absolute limits * Fix Huawei HVS driver AttributeError * Storwize: Fix iogrp availability check * Imported Translations from Transifex * Uses oslo.imageutils * Don't zero out thin provisioned LV's on delete * Fix lvm.extend_volume to pass Gig suffix * Nexenta NFS volume driver folder auto sharing * FK lookup failures during migration * Initialize shares variables for RemoteFsDriver(s) * Fix indentation errors in drivers * Imported Translations from Transifex * Fix Huawei drivers to support other host OSs * Fix all occurences of H404 Hacking warning * Imported Translations from Transifex * VMware: Fixed upload-to-image for available volume * Refactor Nexenta iSCSI driver * Remove unused 'initiator' imports * Fix tests to work in debug mode * Updated from global requirements * Remove whitespace from cfg options * Remove option count from sample configuration * improves lvm version parsing for customised builds * Fix typo in cinder.volume.drivers.nexenta.__init__ * Remove obsolete redhat-eventlet.patch * long flashcopy operation may block volume service * Support Huawei driver upgrade from grizzly to havana * Imported Translations from Transifex * VMware: Disallow snapshot of attached volume * Clean up comparison assertions * Utilizes assertIsNone and assertIsNotNone * Nexenta volume drivers: refactor NexentaJSONProxy * remove unused methods in driver.Scheduler * Imported Translations from Transifex * Nexenta iSCSI driver fix _lu_exists * Ignore H803 from Hacking * Drop conf_key_mgr warning message! * VMware: Re-create session for RetrievePropertiesEx * use cinder utils.get_root_helper * Provide user with more information on quota fail * Cleanup and more tests for db.api methods * Fix broken solidfire create-snapshot * Clean CONF out of brick iser * Open Icehouse development * Imported Translations from Transifex * Add key manager implementation with static key * Remove need for CONF acces in brick iscsi * Quotas roll back failure of create volume task * Remove incorrect class in cinder.conf.sample * Fixes incorrect class path in logging_sample.conf * Storwize SVC driver hostname can't start with number * After commiting quota we should avoid certain reverts * Remove CONF from brick remotefs * Pass through args and kwargs in brick connectors * Clean CONF out of brick initiator * Update Babel from Openstack Requirements * Disable lazy translation * Improve gpfs config flag help text readability * Check for backing lun on iscsi target create * usedevelop in tox * Fixes ceph backup import errors * Add XML response tests for qos specs manage ext * v2 api - return bootable attr value on volume list * Fixes backup with multiple volume backend * Dont retry if target creation succeeds * VMware ESX: Fixes vol clone & clone from snapshot * Create volume revert fails for non admin user * VMware: Usng RetrvProprtisEx & does multi ESX scan * Fix XML serializer for QoS Specs extension * Fix Huawei HVS driver attaching volume error * Add debug logging for targets * Add support for querying the quotas usage * Validate force_host_copy API param for migration * Imported Translations from Transifex * Update OpenStack Style Commandments link * Set vol driver initialized before deleting volumes * Add error logs for Huawei driver * Clean CONF out of brick exception * Fix translation of CinderExceptions in REST API * Allow upgrade from Grizzly with ThinLVMVolumeDriver * Use module units for some drivers * Get host group id when Huawei driver initializing * Fix mandatory and optional args for create_volume * Pass correct args to vol_rpc create_volume calls * Fix processutils.execute errors on windows * Sync gettextutils from oslo * LVM volume_clear: error on unexpected inputs * Revert "Fix volume_rpcapi calls for chance/simple scheds" * Fix finish_volume_migration() on SQLAlchemy 0.8.x * VMware: Handles no datastores case * Fixes some typos in cinder * Update rootwrap with code from oslo * Specific /usr/local/bin/hus-cmd rootwrap filter * Allow v2 Volume API to create volume with type name * Imported Translations from Transifex * Fix volume_rpcapi calls for chance/simple scheds * Require assisted_volume_snapshots from novaclient * Fix over-indent in compute/nova * Add sg_scan filter to rootwrap * Add extend to reference LVM driver * Fix issues with failed lvremove * GlusterFS: Copy snap from correct source file * GlusterFS: Use image_utils for qemu-img calls * Remove default root_helper of sudo for remotefs * Add a retry to create_iscsi_target for LVM * Fix HP3PAR iSCSI path connection * Added mapper for update_all on snapshot_metadata * Add volume metadata to v2 * Enforce driver is initialized * Added mapper for snapshot_metadata * Fix type change in bootable setting of volume view * Add logging to prior to raising exceptions * GPFS Driver missing clone depth limit for snapshots * remove VolumeNotFoundForInstance class * Sync gettextutils from oslo * Use built-in print() instead of print statement * Fixes vol restore discard final bytes unzeroed * Fixes call GlanceConnectionFailed in invalid ARG * Fixes call VolumeNotFound in the invalid argument * Soft delete tmp migration volume * Fix __init__ methods of brick initiator connectors * Fix secure delete for thick LVM snapshots * assertEquals is deprecated, use assertEqual * Storwize/SVC: Optional CHAP authentication * Fix huawei driver test issues * fix wrong desciption of monkey_patch config * Allow display_name for v2 snapshot-update * Pass down root_helper in more cases * Set rootwrap_config path to rootwrap.conf * Do not use qemu-img --backing-chain or --output=json * VMware driver: Fix for invalid datastore selection * Fixes ceph volume restore to larger image than source * Imported Translations from Transifex * nms.folder.create_with_opts not supported on Nexenta 3.1.4.2 * Use $state_path/conversion for image_conversion_dir default * Improves the parsing way of ssh returns * Fixes the use of exception.InvalidInput with the wrong arguments * Remove unused exceptions * Fix client connection leaks in HP3PAR drivers * Add default_availability_zone configuration option to cinder * Imported Translations from Transifex * Turn db model object into a primitive object to avoid error * Catch generic exceptions * Add delete support for volume type encryption * Adds Dell EqualLogic volume driver for Cinder * Fixing UnicodeEncodeError against volume creating function * Fix deleting qos specs key * Move novaclient to requirements.txt * fix missing unit in log message * Add check for qemu-img to image_utils fetch_to_raw * Changed header from LLC to Foundation based on trademark policies * Fixed erroneous force full copy in ceph backup driver * Call to_primitive on volumes.rpcapi.create_volume * Fix typo in cinder.tests.test_create_volume_flow * Fix Qos Specs association corner case * Fixes pep8 violation in nova * Fix bug in Nexenta NFS driver _do_create_volume * Restrict Volume type deletion with volumes assoc * Replace assertEquals with assertEqual - 2/2 * Check cinder-backup service before "backing-up" * Do not attempt vg.update on uninitialized vg * Replace assertEquals with assertEqual - 1/2 * Add support for LocalConnector type in brick * Remove unused/redundant methods in cinder/test.py * Fix error casting value to float in lvm.py * Fixes misuse of assertTrue in test scripts * Utilizes assertIsNotNone * Utilize assertIsInstance * Remove deprecated assert_() usage * Fix brick remotefs dependency on cinder * Remove quota fetch race condition * Synchronize extend_volume methods in 3PAR drivers * Added copy-on-write support for all RBD cloning 2013.2.b3 --------- * fix log string in conversion type * VMDK copy_image_to_volume and copy_volume_to_image * Validate VV Set exists in 3PAR drivers * This adds a README to brick * Fix tuple usage error * Fixes brick Nova pep8 violation for lvm.py * fix inconsistent i18n log message * QEMU-assisted-snapshots for GlusterFS volumes * Add view builder to QoS specs API extension * Add features to Zadara Storage Cinder driver * Use tempfile and cleanup in windows unit test * Adds Nexenta NFS driver * Set vg_thin_pool to pool name instead of pool_path * Fixes cinder-volume service startup on Windows * extract 'limits.' to constant for ratelimiting logic * Send notifications when extending volume * Fix errors in volume usage audit script * New update_snapshot_status API * Add volume driver for Huawei HVS storage system * Increase test coverage for cinder.utils * Add Fibre Channel drivers for Huawei storage systems * Refactor huawei Dorado array iSCSI driver * Refactor Huawei iSCSI driver * Enable gating on F811 * Add support for Havana missing features in Windows driver * Add venv wrapper for check_uptodate.sh * Clone volume with right size with SolidFire * Fixes bug to allow for encrypted volume deletion * Sync rpc fix from oslo-incubator * Move comment back to right place * copy_image_to_volume for Nexenta volume driver * Fix pep8 violation in backup * Utilizes assertIn and assertNotIn * Implements APIs for VMDK driver * Remove _create_volume function from several tests * Don't need to init testr explicitly * Add missing LH SAN driver features for Havana * Multi storage backend support for Nexenta driver * Fix typo in bin/cinder-volume-usage-audit * Remove unused methods from cinder.utils * Increase test coverage for cinder.image.image_utils * Add kwargs to create_volume in tests/utils.py * Update the version for the FC and iSCSI driver * Pass MB size on copy_volume_data call copy_volume * Adding Read-Only volume attaching support to Cinder * Add NFS/GlusterFS support to brick library * Pass db into driver as constructor's parameter * Modified 3PAR drives to support 3parclient 2.0.0 * Move create_volume flow to a subfolder * Import order cleanup * Migrate manage script needs import of db session module * Migration for attached volumes * Add optimized volume migration to Storwize/SVC * Fix quota update validation for non-int types * Imported Translations from Transifex * Removes exception instance creation on execute() * Fix except in lvm.py * Add automated check of conf sample * Remove deprecated code from Nexenta Exception class * Sync up with global requirements * Extend volume for GlusterFS * Offline snapshots for GlusterFS volumes * Ensure that qpid connection is closed (from oslo) * Imported Translations from Transifex * Test WWNs with basestring * Imported Translations from Transifex * Remove print statement in db api test * Ignore stmf target must be offline exception * Sync execute() related exceptions with oslo * The DB migration shouldn't populate types table * Use a new rest client for every Coraid ESM command * Remove unused methods from LVM driver * Storwize/SVC: allow setting of I/O group * Implement QoS support for volumes * Move the frequently injection task to the base folder * Move root task class to base file * Backup driver for IBM Tivoli Storage manager (TSM) * Dont crash service if sf cluster isnt available * 3PAR driver add missing domain check on QOS cmd * Remove unused methods from cinder.utils * Refactor cinder/tests/test_volume.py * Unified Volume Driver for IBM XIV and IBM DS8K * Adds brick helpers to cinder utils * Fix python 3 pep8 errors for print * Fix incorrect msgstr's to avoid translation errors * GPFS use clone_image for creating volumes * 3PAR driver terminate connection host validation * Re-enable a lot of cinder scheduler tests * emit warning while running flake8 without virtual env * Set bootable flag for volume cloned from image * Remove unused methods from cinder.utils * Clean up the sqlalchemy migrate manage.py script * Allow to delete a volume in error_extending status * Update Brick to use executor * flake8 H202 error in test_image_utils.py * Removes ssh_execute in utils.py * Fix volume_glance_metadata deletion * Use system locale when Accept-Language header is not provided * Generic backup_volume and restore_backup functions * Relax policy so owner can access encryption info * Fix Fibre Channel attach for single WWN * Make the SolidFire driver api port configurable * Add accept_transfer to solidfire driver * Added need info to accept_transfer * Allow volume create from source unless in error status * Avoid serializing CinderExceptions before they are translated * Add root_helper param to get_connector_properties * Standardize on ID for log messages * Reduce hidden effects of sqlalchemy objects * Removed need for domain in 3PAR drivers * Allow Cinder to call Nova client * Use FakeLoopingCall instead of the real one * Fix some pylint error in Coraid Driver * Storwize/SVC: More error logging * Remove strcmp_const_time * Refactor LVM driver to use Brick VG utility * Added missing import * Fixes SSH injection threat in 3PAR driver * Implement missing Coraid Driver functionality for Havana * Increase test coverage brick/initiator/connector * Fix SSH injection threat in 3PAR driver * refactor/unify driver version strings * Refactor Nexenta driver * Update Nexenta ISCSI volume driver authors * Extract ISCSI tries option into connector module * Externalize error messages in the v2 API * Add more asserts to the limiter unit tests to test the RateLimit * Replace os.unlink with delete_if_exists * No need to declare the exception conf * Add support for encrypted volumes * Add tests for cinder/brick/initiator/connector * Tidy up the SSH call to avoid injection attacks for HP's driver * Raise exception when Glance metadata not found * Interprete scoped key as nested tags * Adding the -online option to the 3PAR clone * Fixes some unseen flake8 violations * Fixes volume clone from volume * Fixes docstring formats in connector.py * Fixes files with wrong bitmode * Add unit tests for cinder/api/contrib/quotas * remove Brick deps on cinder.exception * Remove Brick iser dependency on cinder * Fix handling ImageUnacceptable in create_volume * Use native methods for list manipulation * Fix signature of _create_volume() in ThinLVMVolumeDriver * Add H233 to ignores in tox.ini * Imported Translations from Transifex * Add support for volume cloning to Nexenta driver * Fix ratelimiting * GPFS support for various volume attributes * Upgrade Scality driver to match minimum features * Ignore purge_props for v2 Glance api and fix upload * Add support for API message localization * 3PAR drivers creating incorrect comment data * Imported Translations from Transifex * Use utils.safe_minidom_parse_string in extensions * Move resource usage sync functions to db backend * Imported Translations from Transifex * Refactoring of create_volume to use taskflow * Add minimum features in HDS driver (for Havana & Icehouse) * Ignore stmf target must be offline exception * Added glance_request_timeout config option * Set lock_path in tests * 3PAR volumes created from snaps failed to attach * Add test for brick.local_dev.lvm * Imported Translations from Transifex * Remove Brick's iscsi dependency on cinder * Remove locals() from iser * Move volume_clear and clear_size opts up to driver * Imported Translations from Transifex * Set the concurrent connections on the 3PAR array * Create key manager interface * Remove usage of obsolete oslo.exception * Fixes create rbd volume from image v1 glance api * Imported Translations from Transifex * Remove Storage Manager from cinder-manage * Remove cinder.exception from Brick * Add bin directory to flake8 when not in venv * Add support for volume extension to Nexenta Systems volume driver * GPFS Verify min release level for mmclone command * Sync gettextutils from oslo * Add eclipse project files to .gitignore * Remove unnecessary metadata from the 3PAR drivers * Adding support for iSER transport protocol * NetApp fix clone image compatibility issue with ssc * Set bootable flag for volume serializer * Fix chown fail for nfs file without necessary permission * Add new persona value in the 3PAR driver * Update driver version to 1.1 * Fix NetApp iscsi drivers for cinder backup * Fix pep8 and pylint violation in Nexenta volume driver * Test tools barfs on reusage of 'id' attribute * Ignore "volume does not exist error" * Call get_session() only when necessary * Fix volume_create()/snapshot_create() DB methods * Execute DB API methods in a single transaction * Improve DB API test coverage * Fix check for mount.nfs helper installation * Imported Translations from Transifex * Remove xen storage manager tables * Remove unused migration_* methods from db api * Factorize code between nfs.py and glusterfs.py * NetApp fix create vol different size than snapshot * LVM / Block Device Drivers: Fix duplicated flags * tox.ini: Change sitepackages to False * Tidy up the SSH call to avoid injection attacks in storwize_svc * NetApp check for 7 mode controller version * Storwize/SVC: Use reserved percentage from conf * Imported Translations from Transifex * Pop out 'offset' and 'limit' before use for filter * Imported Translations from Transifex * Fix running of migrations tests by Jenkins gate * Update to latest oslo rootwrap * Make unicode-to-utf8 conversion universal in ceph backup driver * Add more info to delete error message * Update references with new Mailing List location * Allow connect by FC-only or iSCSI-only systems * NetApp NFS efficient clone_image impl * Removed the dep on cinder.utils * Fix the multi-backend storge issue for ZMQ * NetApp storage service feature support * Imported Translations from Transifex * Create volume from snapshot must be in the same AZ as snapshot * Using volume name property instead of using template and id * Fix unit suffix and add no_suffix option * GPFS stub calls to truncate and dd in unit tests * Storwize/SVC: Use VolumeDriver's copy vol<->image * Implements extend volume feature in HP 3PAR driver * use encode('utf8') instead of str() * Imported Translations from Transifex * Migration for detached volumes with no snaps * Fix cinder error for deprecated Netapp drivers * get_snapshot should populate the snapshot metadata * Adding driver minimum features and volume stats to dev doc * Update RBD driver to be compliant with HACKING * GPFS convert glance image to raw only when needed * Fix oslo.config.cfg.NoSuchOptError when running individual tests * Fixes RBD driver docstring format issues * fix name 'update_volume_status' to 'update_volume_stats' * use 'exc_info=1' instead of import traceback * Fix further Hacking 0.6.x warnings * Add create & attach times to SolidFire attributes * Implement extend volume for Storwize/SVC * Cleanup README.rst * Fix volumes search by metadata * Add test for volume status check when extending * 3PAR Driver modifications to support QOS * Make Storwize/SVC tests work without simulator * Revert hardening of Storwize/SVC SSH commands * Clone_image method added image_id as parameter * Added incremental backup support to Ceph backup driver * Sync gettextutils from oslo * Imported Translations from Transifex * Fix duplicate config options * Move copy_volume function to volume/utils.py * Fixes default value of use_default_quota_class * Imported Translations from Transifex * Delete snapshot metadata when snapshot is deleted * Tidy up the SSH call to avoid injection attacks in storwize_svc * Fix extend_volume error handling * Fixes race condition in LVMVolumeDriver create_cloned_volume method * Checks the volume_clear flag and just return if it is none 2013.2.b2 --------- * Fixes Opt type of use_multipath_for_image_xfer * Fixes Opt types in cinder/backup/drivers/ceph.py * Fix indent in cincer/volume/configuration.py * Implement validate_connector for Storwize/SVC * Fix error when QuotaUsage.updated_at is NULL * Rename SolidFire driver for consistency * Add Brick Fibre Channel attach/detach support * Increase timeout period for clone volume * Be sure to check deleted types on quota update * CoraidDriver: Allow volumes in error state to be deleted * Adds multiple iSCSI port support to 3PAR * Implement extend volume functionality in Sheepdog * Mark methods used in class only with prefix "_" * Add te field user_id into the volume detailed information * Catch additional connect fail cases * Clean up Huawei tmp files from tests * Add flag argument to 'cinder-manage config list' * Imported Translations from Transifex * Add generic block device driver * Use base ISCSI driver to fulfill some driver requirements * Cleanup and make HACKING.rst DRYer * Clone_image should return dict of vol properties, clone status * Update requirements from openstack/requirements * Refactor SSHPool.get() to use Pool.get() * Enable zero the snapshot when delete snapshot in LVMVolumeDriver * Fixes ceph-backup failure if original volume deleted * Implement extend volume functionality in Rbd * Handle errors raised by extend_volume * Minor reorg for (array resource usage and backend options naming) * Check enabled backup service before rpc request * Fixed Ceph backup librbd segfault * Add support to import images into sheepdog volumes * Add tests for cinder/api/urlmap.py * remove improper assert usage * Enable setting blocksize on volumes * cinder.api: Replace 'locals()' with explicit values * Update upper bound of keystoneclient version * Fix missing volume_name_template flag * Change check-detach to reject more states * Implement extend volume functionality in SolidFire * Add unit tests for cinder/api/versions * Make String column creation compatible with SQLAlchemy 0.8 * Remove suds requirement * Add support for storing volumes on GPFS * Consist terminate_connection function signature * SolidFire API RequestID is useless * Add ability to specify SolidFire API version * Refactor reschedule in exception handling of volume manager * Don't pass 'session' arg to public DB API methods * Add interface class for backup drivers * Prevent wrongly privilege escalation of a context * Move brick initiator tests to brick subdirectory * Fix extent size issue when creating thin pool * Sync install_venv_common from oslo * Fix a few Sphinx warnings * Ignore files created by Sphinx build * Use oslo.sphinx and remove local copy of doc theme * Add unit tests for cinder/api/contrib/volume_actions * Scheduler should not select down volume managers * Add check for snapshot to Brick LVM * Fix typo 'Flase' -> 'False' * Rename cinder.flags to cinder.common.config * Add execute wrapper to brick LVM code * Imported Translations from Transifex * CoraidDriver: Create_volume_from_snapshot of a different size * Make os-services API extension consistent * Imported Translations from Transifex * Removes 3PAR domain option from cinder config file * Skip brick_initiator test in virtual environments * Added Cinder volume backup to Ceph support * Handle ECONNREFUSED exception in SolidFire driver * Add os-availability-zone extension * Run flake8 also on cinder/*/openstack * Imported Translations from Transifex * Quotas by Volume Type * xenapi: implement xenserver image to volume * Save some more image attributes to volume_glance_metadata * Fix check_for_setup_error for sheepdog driver * Add Brick iSCSI attach/detach * Added volume backup and restore to Ceph RBD driver * Fix service alive information in os-services extension * Calculate count for customized dd blocksize * Content-length missing in put_object * Replace glance_metadata check with bootable column * Imported Translations from Transifex * Avoid winning the useless use of cat award * Fix up trivial H103 license check mismatches * Register used CONF entries in cinder.api.common.py * Fix and enable gating on H401 * Do not raise NEW exceptions * cinder.[brick,db,image] Replace 'locals()' * Update kombu requirement * Remove usage of locals() for formatting from cinder.tests.* * Adds create_from_volume test cases * Use list comprehensions when possible * NetApp:iSCSI drivers reserved percent need to change to 0 * Add support for swift user/key authentication * Refactor the backup method of SwiftBackupService * Imported Translations from Transifex * NetApp unified driver implementation * Add _create_volume to ThinLVMVolumeDriver * Add the project name into CinderKeystoneContext * Add build directory to flake8 ignore dirs * Add missing extend volume test (rpcapi) * fix error class path in logging sample * Modify check for volume-type-id to a get w/default * Don't perform retry_execute in certain cases * Adding host attaching support to Cinder * Update attach status when instance id invalid * Fix and enable gating on H403 * Use Python 3.x compatible except construct * cinder.backup: Replace 'locals()' with explicit values * cinder/.: replace 'locals()' with explicit values * Editable default quota support for cinder * Imported Translations from Transifex * Use common.processutils.execute * Remove usage of locals() for formatting from cinder.volume.* * cinder.schedule: Replace 'locals()' with explicit values * Imported Translations from Transifex * Remove the 'migrate' option from cinder-manage * Use Python 3.x compatible octal numbers * Use Python 3.x compatible except: construct * Update and add notifiers in create volume * Imported Translations from Transifex * Fix up the test framework * Raise an error if iSCSI is not supported * Remove usage of locals() for formatting from cinder.api.* * Implement capability to extend existing volume * Replace utils.to_bytes() with strutils.to_bytes() * Flatten Volume from Snapshot * Imported Translations from Transifex * Replace FLAGS with cfg.CONF in volume * Replace FLAGS with cfg.CONF in other modules, unless tests * Elevate volume/snap "is busy" log message for volume/snap_delete * Imported Translations from Transifex * Fixes 3PAR drivers terminate_connection issue * Added policy check for backup operations * Update to the latest stevedore * Fix various Sphinx warnings * Fix some unittest cases failed on osx * Fix the after subscription size checks * Re-set default sql_connection and sqlite_db * Remove explicit distribute depend * Add missing exception from volume/api.py * Allow disabling ssl compression for glance client * Add availability zone checking in the api service * Add missing attributes to xml deserializer for volume request * Integrate oslo's periodic tasks * Fix LVM logging error * Remove direct call to utils.execute * Add policy checking for transfer create/accept * Replace FLAGS with cfg.CONF in tests * Replace FLAGS with cfg.CONF in api * Start using Pyflakes * Add the iscsi device check and exception processing * Minor Logic bug in NFS Driver * Imported Translations from Transifex * Fix 'undefined symbol conn' error * NFS drivers don't honor vm size with volume from an image * Add missing tests for backup_* methods * Replace functions in utils with oslo.fileutils * Remove E12 errors from tox.ini Flake ignores * Unset all stubs before running other cleanups * Fix config registration in cinder volume drivers * Elevate acceptors context on accept reserve udpate * Removing service_* options from authtoken * Add call to vol driver when accepting a transfer * Imported Translations from Transifex * Implement DB migration for volume transfer BP * Replace FLAGS with cfg.CONF in db * Add missing tests for iscsi_* methods * Log iSCSI target output on error * Re-write of the cinder-manage man page * Replace FLAGS with cfg.CONF in scheduler * python3: Introduce py33 to tox.ini * Fix AttributeError typo * Fix path for pylint Gate * Fixed method db.api.reservation_expire * Handle IPv6 specifid glance servers gracefully * HDS Cinder Driver. Rev #1 * Imported Translations from Transifex * Add error reporting to generate_sample.sh on import failure * Updating HACKING to disallow the use of locals() * Prevent force delete if the volume is attached * InvalidUUID can not be raised * Fix incorrect authorization rule in quota contrib api * Rename requires files to standard names * rbd: simplify configuration and use librbd and librados * Update 3PAR driver session management * Fix typos * Add testrepository to git ignores * Fix incorrect copyright * Add missing tests for cinder.db.api.quota_ * Return 404 from delete of extra spec if not found * Fix incorrect status for volume clone from image * Imported Translations from Transifex * Support for NFS shares with spaces in path * Fixes 3PAR Host already exists error * Ensure that pbr>=0.5.10 is installed * Add missing tests for cinder.db.api * Remove execute permissions from test files * Migrate to Oslo DB code 2013.2.b1 --------- * Catch and report errors from copy image to volume * test_glance.py: Stub out _get_member_model as well * rbd: send ceph monitor addresses with connection info * Don't set signing_dir by default * Remove cinder_emc_config.xml.sample * Update cloned volumes QoS settings * Fix 'Inheritance-based rule deprecated' log warning * Added '%' before snapshot variable * Hack run_tests.sh to work with single tests again * Imported Translations from Transifex * Don't throw ValueError for invalid volume id * ModifyVolume attributes on Clone * Improve "service is down or disabled" warning message * Add "_" builtin method for config generation * Replace custom skip_ methods * Migrate base test class to testtools * Fix ownership transfer when cloning with SolidFire * Make NFS share selection more intelligent * Add common Oslo DB code to the source tree * Add the service_state into test_schedule_happy_day * Implement scheduler hints for API v2 * Update log.py and jsonutils.py from oslo-incubator * Added a test for bad limit param * Added test for nonnumerical limit param * Raise VolumeNotFound with correct volume_id * Removes a broken link from the sidebar of Sphinx built pages * Imported Translations from Transifex * Support mount options for NFS/GlusterFS volumes * Hide v1/v2 version entities in API when disabled * Allow flake8 to run in venv * Imported Translations from Transifex * Imported Translations from Transifex * Convert to oslo strutils.bool_from_string * Update import of strutils from oslo * Add thin provisioning support checks * Update/Publish volume service updates on delete * RemoteFsDriver: copy_image_to_volume and copy_volume_to_image * Imported Translations from Transifex * solidfire: Make sure src_uuid is passed correctly * Implement cloned volume for the RBD driver * Add .coveragerc to show proper coverage statistics. As in other openstack projects * NetApp server tunneling fix * Move iscsi helpers to brick directory * Fix up hacking ignores a bit * Hide lock_prefix argument using synchronized_with_prefix() * Storwize/SVC: fix attach bug for live migration * Deprecating old dot path locations for Folsom configs * solidfire: Add ability to override account prefix * Fixes an get_volume_stats reporting issue * Increased unit test code coverage * Create an LVM utility to use for local storage * Add CINDER_LOCALEDIR env variable * Remove gettext.install() from cinder/__init__.py * Use flake8 and hacking * Use pbr instead of openstack.common.setup * Change the type of "free_capacity_gb" to be float * Set default values for NFS/GlusterFS share_config files * Add missing spaces to iscsi_iotype help * Adds notifiers to both volumeTypes and volumeTypeExtraSpecs * Fix missing spaces in Huawei Logging * Add pylint-based lintstack test to tox environment * Remove outdated cinder test doc * Implement copy_image_to_volume and copy_volume_to_image on nfs backends * Update import of oslo's processutils * Fix ability to add custom volume_backend_name * Add db client packages to dev env setup doc * Check that volume is at least minDisk size * Remove old_name from kwargs when using IET helper * Copy the RHEL6 eventlet workaround from Oslo * Remove setuptools-git as run time dependency * Fix LHN driver to allow backend name configuration * Deleting a backup removed the backup record from database * Remove _path_exists method * Encode username and password in config file * Clear volumes stuck in 'downloading' * Fixes 3PAR FC driver synchronization * Avoid using whitespace in test_safe_parse_xml * Add stats reporting to Nexenta Driver * Remove duplicate method definition * iscsi: Add ability to specify or autodetect block vs fileio * Rename duplicate test method * Update to latest copy of OSLO incubator * Cinder wasn't filtering the backups returned to backup list API * cinder volume service keeps retrying even code exception * Add missing space to "volumes already consumed" message * Add capabilities reporting to ThinLVM driver * NetApp: Fix failing NetApp tests * Use VERSION var for volume_stats version (Gluster/NFS) * Add parsing to extra-specs key check * Use a SSH pool to manage SSH connection * Remove Flags usage from cinder.volume.driver * new cinder.conf.sample and fix extract_opts.py * fix default config option types * Fix incompatible Storwize/SVC commands * Fix backup manager formatting error * Add service list functionality cinder-manage * Clean up attach/detach tests * Reformat openstack-common.conf * Sync with oslo-incubator copy of setup.py * Don't hard code AUTH_ into the swift backup url * Remove update_volume_status log message from NFS driver * Implement get_volume_stats for GlusterFS driver * Fixed a volume creation re-schedule error * Allow deletion of backups where the service is None * Fix cinder-manage backup list to work with uuids * leave re-scheduled volume status to creating * Prevent create volume from snapshot with bad size * Add du to rootwrap filters * Change format of some judgments * Remove InvalidPortRange exception * Add availability_zone to the volume and snapshot notifications * Throw InvalidSnapshot for failed snap delete * remove deprecated assert_unicode sqlalchemy attribute * Fix IBM copyright strings * REST session validity not checked in get_volume_info * Enforce exclusive options snapshot-id, source-volid and image-id * Add snapshot events to the cinder notification * getLogger should be called after logging is configured * Mark sql_connection with secret flag * Sync lockutils from oslo-incubator stable/grizzly * Remove unused tools/rfc.sh * Add the volume and snapshot gigabytes together * Force deletes using tgt to workaround bug 1159948 * Fixed shared gigabytes quota resource * CoraidDriver: support users that are not admin * Fix quota updating when admin deletes common user's volume * Last driver sync for Folsom and Grizzly * Fix bug with 3PAR host entry in wrong domain * Snapshot reservation sync calls wrong resource * Fetch volume_types by uuid and not by name in v2 * Use the local configuration in the nfs drivers * Fixed attach volume for EMC SMI-S iSCSI driver * Extend param2id() to work with uuids * Clean up started volume services in tests * CoraidDriver: do not call login from __init__ * CoraidDriver: typo in _login exception handler * Fixes Cinder REST API /volumes issue * Add missing processutils for impl_zmq in oslo rpc * Update Cinder's latest copy of OSLO grizzly stable * Remove the log spam generated by the NetApp driver unit tests * Speedup solidfire unit tests * Updates to OSAPI sizelimit middleware * Use OpenStack common project requires * Rename cinder-rtstool to rtstool * Make dd block size user configurable * remove cinder-rtstool because of rtslib dep * Add snapshots to the volume usage audit report * CoraidDriver: retrive volume info (improvement) * Remove AGPL rtslib pkg from pip-requires * Fix Storwize/SVC LUN allocation with holes * Remove references to FLAGS from volume/manager.py * Allow snapshot_delete for NFS/GlusterFS drivers * Pull Oslo log fix to enable root logger initialization * Clean up exec_dirs prefix from rootwrap conf * Fix typo in persona valid values * Use self.configuration to support the multi-backend case 2013.1.rc1 ---------- * Bump version for Grizzly RC1 cut * Count Snapshots towards volume/gigabyte quotas * Fix 3PAR driver hiding existing host error * Switch all uses of 422 response code to 400 * Implement get_volume_stats in NFS driver * cinder-manage does not print any version information * Fix ISCSIDriver rescan * Compression/tier capabilities for Storwize/SVC * Fixes dettach volumes in Windows cinder plugin * Fix _migrate_up in test_migrations * Switch to final 1.1.0 oslo.config release * Adds a flag to set glance api version to call * Storwize/SVC driver fix for multibackend scenario * Fix bad request response code on extra_specs create * Fix bugs for Huawei driver * Do not use prefix to lookup host in Storwize/SVC * update error log arguements in filter scheduler * Update oslo rpc libraries * Remove/update unused log arguements in manager * Removing flags in RBD in favor of configuration * LIO iSCSI initiator ACL auto-config * Fix a few bugs for LeftHand Grizzly * Update tox.ini to support RHEL 6.x * Fix volume capacity reporting * Pull newly merged Olso update for 'is' operator * Use nose and openstack nose plugin * Exit run_tests with the result code of the test runner * Mark configuration option netapp_password secret * Add get_volume_stats in the sheepdog driver * Switch to oslo.config * Fix calling setUp() method of superclass from tearDown method * Fix 3PAR drivers to work in multi-backend mode * Fixed copy image to volume and clone volume * Fixes issues found in /os-hosts API * Fix Storwize/SVC storage_protocol reporting * sync oslo changes for setup / version * swift backup service checks version during restore * Add some useful log to filter scheduler * Elevate context for delete volume with no host * Improved fail_reason for cinder-backup swift connection errors * Convert from using FLAGS directly in SF driver * Improve logging for volume operations via manager * Only use iscsi_helper config option if using LVMISCSIDriver * Fix query filter in volume_get_active_by_window() * Changed to INFO level logging for main cinder-backup operations * NetApp: Clean up lock file left behind by unit tests * NetApp: Fix race condition in 7-mode iSCSI driver with DFM * update install_venv_common to handle bootstrapping * allow run_tests.sh to report why it failed * Remove compat cfg wrapper * XenAPINFS: Fix Volume always uploaded as vhd/ovf * Fixed cinder-backup start errors seen with devstack * Cinder devref doc cleanups * Fix various exception paths 2013.1.g3 --------- * Implement metadata options for snapshots * Skip timestamp check if 'capabilities' is none * Fix stale volume list for NetApp 7-mode ISCSI driver * Implement a basic backup-volume-to-swift service * Better error handling around volume delete * Moved cinder_emc_config.xml.sample to emc folder * Uses tempdir module to create/delete xml file * Add HUAWEI volume driver in Cinder * XenAPINFS: Create volume from image (generic) * Bump the oslo-config version to address issues * Ensure volume exists before deleting * Add LIO configuration for iSCSI initiators * rbd: implement get_volume_stats() * Handle maxclonepervolume/node limits in SF driver * Use oslo-config-2013.1b3 * Fix syntax error in cinder-volume-usage-audit * HP 3PAR Fibre Channel Driver and iSCSI Updates * Fibre Channel base class for Cinder drivers * Update cinder-manage to use FLAGS.log_dir * Add a safe_minidom_parse_string function * Add a volume driver in Cinder for Scality SOFS * Fix create volume from image * XenAPINFS: fix capacity reporting * Update Storwize/SVC driver for Grizzly * Set rootwrap_config in cinder.conf sample * Skip tests if cinder is not installed * Fix undef function call in test_migrations for py26 * Fix PEP8 violation (again) * Update cinder-volume to enable multi volume support * Install rtslib when installing cinder * Sync latest cfg and log from oslo-incubator * Handle 'infinite' and 'unknown' capacity in CapacityWeigher * Add get_cluster_stats to SolidFire driver * NetApp: Fix for snapshot not deleted in error state * NetApp bug fix for multibackend scenario * Adding support for Coraid AoE SANs Appliances * Add an update option to run_tests.sh * Update EMC SMI-S Driver * Add LIO iSCSI backend support using python-rtslib * Add GlusterFS volume driver * Create a RemoteFsDriver class * Fix ordering of function args * Add an ID to temporary volume snapshot object * Allow create_volume() to retry when exception happened * Fixes the provisioning on selected volumes for NetApp 7 mode * rbd: update volume<->image copying * Fix PEP8 violation * Update snapshot rest api to be consistent with volumes * change display_description to description in volumes * v2 volume/snapshot create will correctly give a 202 response * add postgresql opportunistic testing * make test_databases instance variable * Move create_cloned_volume() to LVMVolumeDriver * Update to latest oslo-version code * Allow disabling of long-lived SSH connections * Don't require importing paramiko for error * Allow for specifying nfs mount options * rework migration 004 testing with real data * Allow tools/install_venv_common.py to be run from within the source directory * add data injection on migrations * sync database connect changes from nova * XenAPINFS: Copy volume to glance * XenAPINFS: Copy image from glance * Fix inability to delete volumes in error state for NetApp driver * Copy glance_image_metadata when cloning volumes * Add volume_glance_metadata to volume.api.get * Import Oslo's common rootwrap to Cinder * Mark password config options with secret * Fixes 'not in' operator usage * Skip tests if cinder is not installed * Fix provider_location column add for PSQL * Update 3PAR driver * Fix the generalized copy_image_to_volume operation * import tools/flakes from oslo * Add unit tests for ISCSIDriver._do_iscsi_discovery and ISCSIDriver._get_iscsi_properties * Fixes "is not" usage * Pull cfg module from Oslo and update cinder-manage accordingly * Set source volume to "in use" during clone * Update some Oslo Packages * Fix typo in cinder/db/api.py * Replace CRLF with unix-style "LF" * Allow volume back-end to report 'infinite' or 'unknown' as capacity * Wrap SolidFire size parameter in int * Use install_venv_common.py from oslo * Update osapi_volume_extension default * Generic iSCSI copy volume<->image * Implement LVM thin provisioning support * Check for installed cinder in filter tests * Fix hosts extension and enable its tests * Check for non-default volume name template * Get updated vol status in volume.api.reserve * Update EMC SMI-S iSCSI Driver * Clean up QTree when deleting volume on NetApp storage box * Fix NFS volume creation * Improve error message for missing NFS share config * ensure zeros are written out when clearing volumes * Fix error for extra specs update with empty body * Clean up IPV6 config checks in test_wsgi * Add capability to update volume metadata * Fix sheepdog volume creation * Add LUN# to provider_location in Nexenta driver * Check for configured IPV6 before running tests * New cinder.conf.sample format * Move iscsi flags back to driver.py * Snapshot support for XenAPINFS * support a configurable volume wiping method * Relax various version constraints * Support for SSL in wsgi.Server * Enhance wsgi to listen on ipv6 address * Factor out LVM code * Implement filter scheduler * Revert "Implement filter scheduler" * Update SolidFire Volume driver grizzly-2 --------- * Provide HP 3PAR array iSCSI driver * Fix CinderClient exception name in EMCISCSIDriver * Enable cinder exception format checking in tests * Update exceptions to pass correct kwargs * Add option to make exception format errors fatal * Implement filter scheduler * Use tempdir for lock_path in tests * Upgrade WebOb to 1.2.3 * Make WebOb version specification more flexible * Fix cmds clearing in TargetAdminTestCase * Add missing library * use deleted = False, not 0 for update * Implement ability to Clone volumes in Cinder * Add pyflakes * Adds synchronization to attach volume * Add EMC Volume Driver in Cinder * Added extra-spec key scoping to the 3PAR drivers * Adding marker, pagination, sort key and sort direction to v2 api * Fix typo in image_utils tempfile handling * Make the NetAppISCSIDriver._is_clone_done() method able to handle empty responses. Add unit tests to exercise this case * Make sure we don't double remove tmp on exception * Add service mgmt extension * Added the lockutils, fileutils, gettextutils * Fixes a Windows volume driver bug on disk export * Moving host admin extension with other extensions * Allow the lvm backed drivers to use mirrrors * CHAP support for IBM Storwize/SVC driver * Remove instance quota re-sync code * Add image metadata API extension * Raise NotImplemented for drivers that don't support images * Add *.swp to gitignore * Support glance servers over https * Add commands used by NFS volume driver to rootwrap * Changing display_name to name in v2 api * Make summary and detail view consistent with other projects * creating separate v1 and v2 stubs and general fakes * Make copy_to_volume a bit more useful * Delete type call in api needs update to use ID * Convert volume_type id from int to uuid * Fixes the 3PAR drivers CPG validation * Rename Config osapi_compute_link_prefix to osapi_volume_base_URL * Fix exception when size is None * Ensure request_spec can be serialized * attaching volumes will set instance_uuid instantly * Revert changes to monkey_patch * Improve provider_location cleanup code for RBD * Fix import order to make it alphabetical * Fix None being passed into as_int() * Use auth_token middleware from keystoneclient * Provide i18n to those messages without _() * Revert "use O_DIRECT when copying from /dev/zero too" * Make pep8 checks a bit stricter * Unpin lxml requirements * use O_DIRECT when copying from /dev/zero too * Add CONTRIBUTING file * Add the persistency to the volume created by iscsi IET grizzly-1 --------- * adding copy of v1 as v2 * Moving contrib to cinder.api * Moving api v1 implementation into v1 directory * Switching api to use base extension manager * moving all middleware code in cinder.api.middleware * Moving common api code into cinder.api * Cleaning up volume driver paths * Add volume bootable information to api response * Add XenAPINFSDriver * Add db table for Glance Metadata * Remove redundant db.volume_update() in volume manager create_volume() * Pin pep8 1.3.3 * Removes the xensm driver * Pass in correct volume_ref to create_from_snapshot * NetApp direct to filer drivers for iscsi and nfs * Add hosts extension to Cinder * Remove unused python-daemon dependency * Make tox.ini run pep8/hacking checks on bin * Various pep8/HACKING fixes for Cinder * Volume RPC API Versioning * Remove gen_uuid() * Remove obsolete use_local_volumes * Import order cleanup per HACKING * Remove unused volume API method - remove_from_compute() * Scheduler API clean up and refactor * Remove dm_setup(remove) call in volume_delete * Add ability to disable secure volume delete * Remove the zeroing out of the volume altogether * Add 'create_volume' to scheduler RPC API * Fix run_tests.sh ambiguous usage msg and behaviour for -x option * Add admin only action for force detach * Changes bit mode of zadara.py to 644 * Port openstack-common/uuidutils to Cinder * Fix 401 from auth_token middleware * Splitting out volume drivers in driver.py * Minor optimization in create_volume in HpSanISCSIDriver * Adding a SSH Connection Pool * Fixes 3par driver methods that were double locking * Return volume type name on volume create * pin sqlalchemy to the 0.7 series * Add VolumeTenantAttribute API extension * Log the body of an /action * Detect and fix issues caused by vol ID migration * Split out drivers in san.py * Add VolumeHostAttribute API extension * Add default volume type flag * Fix typo so setting volume_tmp_dir works * Rollback for resources during volume creation failure * Allow the user to update a volume's metadata * Add the generation of the username and password for iSCSI target * Update HACKING.rst and related changes from Nova/PEP8 * Add trove classifiers for PyPI * Ensure device node exists before wiping during volume deletion * Update volume and snapshot status on delete * Drop unused quota_usage db methods * Drop duplicate sqlalchemy db api methods * Change output strings to i18ned * Adds support for Windows 2012 Storage Server blueprint windows2012driver https://blueprints.launchpad.net/cinder/+spec/windows2012driver * Update common * Fix incorrect class path for legacycinder formatter in logging_sample.conf * Error message references incorrect variable * Loosen anyjson dependency to avoid clash with ceilometer * Configuration Options clean up * Fix typo in policy documentation * Add snapshot force delete admin action * Mock out sleep in some retry tests * Use policy based rule to define context.is_admin * Sync openstack common and add policy * Fix typo in sample configuration file * Update distribute version in test requires * Revert explicit usage of tgt-adm --conf option * Fixes remove_export for IetAdm * Add missing entries in setup, fix up pip-requires * Fix NetAppCmodeISCSIDriver._get_lun_handle() method * Remove unused code: check_for_export * Return 400 if create volume snapshot force parameter is invalid * Fix cinder-volume-usage-audit * Sync with nova change I135ed85a * Remove cinder gating hack * Set the default availability zone back to nova * Add lun number (0) to model_update in HpSanDriver * Fixes to the SolarisISCSI Driver * Stop double logging to the console * Restore SIGPIPE default action for subprocesses * Replace builtin hash with MD5 to solve 32/64-bit issues * Correct IetAdm remove_iscsi_target * Add nova migrate_version check to cinder import * Bump version to 2013.1 * Clean up db.volume_create() * Fix volume deletion when device mapper is used * Update quota when deleting volume that failed to be scheduled * Sync a change to rpc from openstack-common * Add a resume delete on volume manager startup * Improve entity validation in volumes APIs * Add entity body validation helper * Should've added super().tearDown() in test_iscsi * Fixes bug 1050135 * Fix FLAGS.volumes_dir help message * Use tmpdir and avoid leaving test files behind * Sync log format changes from openstack-common * Update rpc from openstack-common * Add volume quota in volume/api.py and olume/manager.py * Fixes bug 1049446 * Revert "Don't zero out snapshot volume on snapshot_delete" * Add update to volume and snapshot controllers * Nail the pip requirement at 1.1 * Clean up .gitignore * Prevent from bug #1008866 is reverted * rename nova.pot => cinder.pot, nova.po => cinder.po * Don't zero out snapshot volume on snapshot_delete * Recent changes to SolidFire API changed iqn format * Remove unused utils.wrap_exception * Sync notifier changes from openstack-common * Clean up some codes about compute in VolumeTestCase * Remove unused db api * Typo nova => cinder * Remove vpn_ping function in cinder/utils.py * Update SolidFire driver to reflect IQN changes * Rename test_nova_rootwrap.py to test_cinder_rootwrap.py * Fixes potential bugs found by pylint * Handle missing 'provider_location' in rm_export * Specify the conf file when creating a volume * avoid the buffer cache when copying volumes * Fix Typo in LOG.error * Remove dependencies for netaddr * Filter volumes and snapshots by query string * Remove null_kernel option * Remove default_schedule_zone * Remove memcached_servers config option * Regenerate cinder.conf.sample * Sync improvements to config file generator tools * Sync misc changes from openstack-common * Sync zmq changes from openstack-common * Sync cfg changes from openstack-common * Fix xml metadata for volumes api in cinder * Fix bug where image size is incorrectly rejected * Several hacking compliance fixes * Remove Cheetah from pip-requires * Update dev docs * Quick pass at implementing the basics for cinder dev docs * Remove the N/A compute related stuff * Clean up the architecture a bit to only show cinder related * Remove various modules form TOC's that aren't applicable * Typo fix: nova => cinder * Move newly created NFS exceptions to standard location in exception.py Addresses bug 1037619 * Add admin actions extension * Removed unnecessary call to ensure_export * Add cinder- prefix to all binaries * Make size optional when creating a volume from a snap * Fix creation of iscsi targets * Spelling: Persistant=>Persistent * Implement volume quota support in Cinder * Remove unused return values and commented out code from NFS driver * Remove unused flags * Fix PEP8 issues * Fix incorrect tgt-admin call in create_iscsi_target * Add 'detaching' to volume status * Typo fix in cinder: existant => existent * Make glance image service check base exception classes * Fix PEP8 issues * Remove unused exceptions from cinder/exception.py * Add nosehtmloutput as a test dependency * Migrate volume related quota info in db migration * Use event.listen() instead of deprecated listeners kwarg * Add declare for xiv driver in fake_flags * Remove logging in volume tests * Call driver for attach/detach_volume * Fix spelling typos * Remove unused function folsom-3 -------- * blueprint zadara-volume-driver * Adding the volume notifications to cinder * add ability to clone images * Update SolidFire volume driver * Add proper support for deprecation messages * Remove utils.deprecated functions * Move volume size validation to api layer * Map internal exceptions in the nova style * Add driver for using files on a generic NFS server as virtual block devices Add NetApp-specific NFS virtual block driver * Implements bp migrate-nova-volumes-to-cinder * add get_location method for images * rbd: implement create_volume_from_snapshot * Replace deprecated client with python-glanceclient * Remove unused imports * Fix check_for_export() in non-exporting drivers * Adds new volume API extensions * Driver for IBM XIV storage * Fake requests in tests should be to v1 * Add C-mode driver for NetApp * storwize-svc: improved test coverage and fixes * Use setuptools-git * Add iscsiadm path for qauntal * Create unique volumes_dir for testing * Remove redundant 'availability_zone' config options * Straight port of the NetApp driver updates from nova-volume to cinder * Use volume driver specific execeptions * Admin users should be restricted from seeing all snapshots by default * Use openstack.common.notifier * Admin users should be restricted from seeing all volumes by default * Deprecate root_helper in favor of rootwrap_config * Send 'create volume from snapshot' to the proper host * Add persistent volumes for tgtd * Scheduler-clean-up * Include AUTHORS file in MANIFEST.in * Add authors for IBM Storwize and SVC driver * Driver for IBM Storwize and SVC storage * Remove unused instance_name_template flag * Allow XML payload for volume creation * Include volume_metadata with object on vol create * Trim volume type representation * Port nova-rootwrap changes to cinder-rootwrap * Don't do PEP8 test for openstack-common code * Cleanup unused code in servce.py * Use openstack.common.setup * utils module is still being used by cinder-volume service * Remove unused fake memcache client * Remove unused check_snapshots_enabled * Use openstack.common.log for logging * Don't create volumes if an incorrect size was given * Use rpc from openstack-common * Add missing gettextutils from openstack-common * Use save_and_reraise_exception() from common * Use openstack.common.cfg.CONF * Remove cinder.log usage from cinder.rpc * Remove cinder.context dependency from cinder.rpc * Localize rpc options to rpc code * Add version to scheduler rpc API * Sync cfg and iniparser from openstack-common * Use cfg's new global CONF object * Make use of openstack.common.jsonutils * Sync with latest version of openstack.common.cfg * Convert Cinder to use openstack-common jsonutils * Add missing ack to impl_qpid * Move queue_get_for() from db to rpc * Add base support for rpc API versioning * Make kombu support optional for running unit tests * Stop using cinder.exception from cinder.rpc * Remove unused synchronization decorator * Remove 'cinder-manage config convert' * Use cfg's new behavior of reset() clearing overrides * Remove unused enabled_apis flag * Remove some unused helper scripts * Remove unused wrap_errors decorator * Remove unused get_{id,version}_from_href() * Remove unused metadata serialization * Remove unused raise_http_conflict_for_instance_invalid_state() * Remove unused OverLimitFault * Remove old flagfile support * Misused and not used config options * Pass 'cinder' project into ConfigOpts * Sync to newer openstack.common.cfg * Convert Cinder to use openstack-common timeutils * Do not duplicate nova docs in cinder * Remove unused db api methods * Create single initial Cinder DB migration file * Updated HpSanISCSIDriver to use initialize/terminate methods folsom-2 -------- * Pruned Authors file to active contributors (from nova-volumes * Move nova-manage.rst to cinder-manage.rst * Add action extensions to support nova integration * Revert "Add action extensions to support nova integration." * Fix volume['id'] from integer to string * Add action extensions to support nova integration * Set pep8 version to 1.1 in test_requires * Fix topics so that the do not collide with nova * Fix up coverage and jenkins test running * Remove instance Foreign Key in volumes table, replace with instance_uuid * Align the tox.ini file * Removed cinder/api/openstack/compute and moved the relevant pieces under cinder/api/openstack/volume. Fixes bug 994177 * Initial fork out of Nova cinder-2014.1.5/LICENSE0000664000567000056700000002363712540642603015372 0ustar jenkinsjenkins00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. cinder-2014.1.5/cinder/0000775000567000056700000000000012540643114015614 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/backup/0000775000567000056700000000000012540643114017061 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/backup/driver.py0000664000567000056700000002625112540642606020741 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Deutsche Telekom AG # All Rights Reserved. # # 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. """Base class for all backup drivers.""" from cinder.db import base from cinder import exception from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from oslo.config import cfg service_opts = [ cfg.IntOpt('backup_metadata_version', default=1, help='Backup metadata version to be used when backing up ' 'volume metadata. If this number is bumped, make sure the ' 'service doing the restore supports the new version.') ] CONF = cfg.CONF CONF.register_opts(service_opts) LOG = logging.getLogger(__name__) class BackupMetadataAPI(base.Base): TYPE_TAG_VOL_BASE_META = 'volume-base-metadata' TYPE_TAG_VOL_META = 'volume-metadata' TYPE_TAG_VOL_GLANCE_META = 'volume-glance-metadata' def __init__(self, context, db_driver=None): super(BackupMetadataAPI, self).__init__(db_driver) self.context = context @staticmethod def _is_serializable(value): """Returns True if value is serializable.""" try: jsonutils.dumps(value) except TypeError: LOG.info(_("Value with type=%s is not serializable") % type(value)) return False return True def _save_vol_base_meta(self, container, volume_id): """Save base volume metadata to container. This will fetch all fields from the db Volume object for volume_id and save them in the provided container dictionary. """ type_tag = self.TYPE_TAG_VOL_BASE_META LOG.debug(_("Getting metadata type '%s'") % type_tag) meta = self.db.volume_get(self.context, volume_id) if meta: container[type_tag] = {} for key, value in meta: # Exclude fields that are "not JSON serializable" if not self._is_serializable(value): LOG.info(_("Unable to serialize field '%s' - excluding " "from backup") % (key)) continue container[type_tag][key] = value LOG.debug(_("Completed fetching metadata type '%s'") % type_tag) else: LOG.debug(_("No metadata type '%s' available") % type_tag) def _save_vol_meta(self, container, volume_id): """Save volume metadata to container. This will fetch all fields from the db VolumeMetadata object for volume_id and save them in the provided container dictionary. """ type_tag = self.TYPE_TAG_VOL_META LOG.debug(_("Getting metadata type '%s'") % type_tag) meta = self.db.volume_metadata_get(self.context, volume_id) if meta: container[type_tag] = {} for entry in meta: # Exclude fields that are "not JSON serializable" if not self._is_serializable(meta[entry]): LOG.info(_("Unable to serialize field '%s' - excluding " "from backup") % (entry)) continue container[type_tag][entry] = meta[entry] LOG.debug(_("Completed fetching metadata type '%s'") % type_tag) else: LOG.debug(_("No metadata type '%s' available") % type_tag) def _save_vol_glance_meta(self, container, volume_id): """Save volume Glance metadata to container. This will fetch all fields from the db VolumeGlanceMetadata object for volume_id and save them in the provided container dictionary. """ type_tag = self.TYPE_TAG_VOL_GLANCE_META LOG.debug(_("Getting metadata type '%s'") % type_tag) try: meta = self.db.volume_glance_metadata_get(self.context, volume_id) if meta: container[type_tag] = {} for entry in meta: # Exclude fields that are "not JSON serializable" if not self._is_serializable(entry.value): LOG.info(_("Unable to serialize field '%s' - " "excluding from backup") % (entry)) continue container[type_tag][entry.key] = entry.value LOG.debug(_("Completed fetching metadata type '%s'") % type_tag) except exception.GlanceMetadataNotFound: LOG.debug(_("No metadata type '%s' available") % type_tag) @staticmethod def _filter(metadata, fields): """Returns set of metadata restricted to required fields. If fields is empty list, the full set is returned. """ if fields == []: return metadata subset = {} for field in fields: if field in metadata: subset[field] = metadata[field] else: LOG.debug(_("Excluding field '%s'") % (field)) return subset def _restore_vol_base_meta(self, metadata, volume_id, fields): """Restore values to Volume object for provided fields.""" LOG.debug(_("Restoring volume base metadata")) # Only set the display_name if it was not None since the # restore action will have set a name which is more useful than # None. key = 'display_name' if key in fields and key in metadata and metadata[key] is None: fields = [f for f in fields if f != key] metadata = self._filter(metadata, fields) self.db.volume_update(self.context, volume_id, metadata) def _restore_vol_meta(self, metadata, volume_id, fields): """Restore values to VolumeMetadata object for provided fields.""" LOG.debug(_("Restoring volume metadata")) metadata = self._filter(metadata, fields) self.db.volume_metadata_update(self.context, volume_id, metadata, True) def _restore_vol_glance_meta(self, metadata, volume_id, fields): """Restore values to VolumeGlanceMetadata object for provided fields. First delete any existing metadata then save new values. """ LOG.debug(_("Restoring volume glance metadata")) metadata = self._filter(metadata, fields) self.db.volume_glance_metadata_delete_by_volume(self.context, volume_id) for key, value in metadata.items(): self.db.volume_glance_metadata_create(self.context, volume_id, key, value) # Now mark the volume as bootable self.db.volume_update(self.context, volume_id, {'bootable': True}) def _v1_restore_factory(self): """All metadata is backed up but we selectively restore. Returns a dictionary of the form: {: (, )} Empty field list indicates that all backed up fields should be restored. """ return {self.TYPE_TAG_VOL_BASE_META: (self._restore_vol_base_meta, ['display_name', 'display_description']), self.TYPE_TAG_VOL_META: (self._restore_vol_meta, []), self.TYPE_TAG_VOL_GLANCE_META: (self._restore_vol_glance_meta, [])} def get(self, volume_id): """Get volume metadata. Returns a json-encoded dict containing all metadata and the restore version i.e. the version used to decide what actually gets restored from this container when doing a backup restore. """ container = {'version': CONF.backup_metadata_version} self._save_vol_base_meta(container, volume_id) self._save_vol_meta(container, volume_id) self._save_vol_glance_meta(container, volume_id) if container: return jsonutils.dumps(container) else: return None def put(self, volume_id, json_metadata): """Restore volume metadata to a volume. The json container should contain a version that is supported here. """ meta_container = jsonutils.loads(json_metadata) version = meta_container['version'] if version == 1: factory = self._v1_restore_factory() else: msg = (_("Unsupported backup metadata version (%s)") % (version)) raise exception.BackupMetadataUnsupportedVersion(msg) for type in factory: func = factory[type][0] fields = factory[type][1] if type in meta_container: func(meta_container[type], volume_id, fields) else: msg = _("No metadata of type '%s' to restore") % (type) LOG.debug(msg) class BackupDriver(base.Base): def __init__(self, context, db_driver=None): super(BackupDriver, self).__init__(db_driver) self.context = context self.backup_meta_api = BackupMetadataAPI(context, db_driver) def get_metadata(self, volume_id): return self.backup_meta_api.get(volume_id) def put_metadata(self, volume_id, json_metadata): self.backup_meta_api.put(volume_id, json_metadata) def backup(self, backup, volume_file, backup_metadata=False): """Start a backup of a specified volume.""" raise NotImplementedError() def restore(self, backup, volume_id, volume_file): """Restore a saved backup.""" raise NotImplementedError() def delete(self, backup): """Delete a saved backup.""" raise NotImplementedError() def export_record(self, backup): """Export backup record. Default backup driver implementation. Serialize the backup record describing the backup into a string. :param backup: backup entry to export :returns backup_url - a string describing the backup record """ retval = jsonutils.dumps(backup) return retval.encode("base64") def import_record(self, backup_url): """Import and verify backup record. Default backup driver implementation. De-serialize the backup record into a dictionary, so we can update the database. :param backup_url: driver specific backup record string :returns dictionary object with database updates """ return jsonutils.loads(backup_url.decode("base64")) def verify(self, backup): """Verify that the backup exists on the backend. Verify that the backup is OK, possibly following an import record operation. :param backup: backup id of the backup to verify :raises: InvalidBackup, NotImplementedError """ raise NotImplementedError() cinder-2014.1.5/cinder/backup/manager.py0000664000567000056700000006440612540642606021064 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Backup manager manages volume backups. Volume Backups are full copies of persistent volumes stored in a backup store e.g. an object store or any other backup store if and when support is added. They are usable without the original object being available. A volume backup can be restored to the original volume it was created from or any other available volume with a minimum size of the original volume. Volume backups can be created, restored, deleted and listed. **Related Flags** :backup_topic: What :mod:`rpc` topic to listen to (default: `cinder-backup`). :backup_manager: The module name of a class derived from :class:`manager.Manager` (default: :class:`cinder.backup.manager.Manager`). """ from oslo.config import cfg from oslo import messaging from cinder.backup import rpcapi as backup_rpcapi from cinder import context from cinder import exception from cinder import manager from cinder.openstack.common import excutils from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder import utils LOG = logging.getLogger(__name__) backup_manager_opts = [ cfg.StrOpt('backup_driver', default='cinder.backup.drivers.swift', help='Driver to use for backups.', deprecated_name='backup_service'), ] # This map doesn't need to be extended in the future since it's only # for old backup services mapper = {'cinder.backup.services.swift': 'cinder.backup.drivers.swift', 'cinder.backup.services.ceph': 'cinder.backup.drivers.ceph'} CONF = cfg.CONF CONF.register_opts(backup_manager_opts) class BackupManager(manager.SchedulerDependentManager): """Manages backup of block storage devices.""" RPC_API_VERSION = '1.0' target = messaging.Target(version=RPC_API_VERSION) def __init__(self, service_name=None, *args, **kwargs): self.service = importutils.import_module(self.driver_name) self.az = CONF.storage_availability_zone self.volume_managers = {} self._setup_volume_drivers() self.backup_rpcapi = backup_rpcapi.BackupAPI() super(BackupManager, self).__init__(service_name='backup', *args, **kwargs) @property def driver_name(self): """This function maps old backup services to backup drivers.""" return self._map_service_to_driver(CONF.backup_driver) def _map_service_to_driver(self, service): """Maps services to drivers.""" if service in mapper: return mapper[service] return service @property def driver(self): return self._get_driver() def _get_volume_backend(self, host=None, allow_null_host=False): if host is None: if not allow_null_host: msg = _("NULL host not allowed for volume backend lookup.") raise exception.BackupFailedToGetVolumeBackend(msg) else: LOG.debug(_("Checking hostname '%s' for backend info.") % (host)) part = host.partition('@') if (part[1] == '@') and (part[2] != ''): backend = part[2] LOG.debug("Got backend '%s'." % (backend)) return backend LOG.info(_("Backend not found in hostname (%s) so using default.") % (host)) if 'default' not in self.volume_managers: # For multi-backend we just pick the top of the list. return self.volume_managers.keys()[0] return 'default' def _get_manager(self, backend): LOG.debug(_("Manager requested for volume_backend '%s'.") % (backend)) if backend is None: LOG.debug(_("Fetching default backend.")) backend = self._get_volume_backend(allow_null_host=True) if backend not in self.volume_managers: msg = (_("Volume manager for backend '%s' does not exist.") % (backend)) raise exception.BackupFailedToGetVolumeBackend(msg) return self.volume_managers[backend] def _get_driver(self, backend=None): LOG.debug(_("Driver requested for volume_backend '%s'.") % (backend)) if backend is None: LOG.debug(_("Fetching default backend.")) backend = self._get_volume_backend(allow_null_host=True) mgr = self._get_manager(backend) mgr.driver.db = self.db return mgr.driver def _setup_volume_drivers(self): if CONF.enabled_backends: for backend in CONF.enabled_backends: host = "%s@%s" % (CONF.host, backend) mgr = importutils.import_object(CONF.volume_manager, host=host, service_name=backend) config = mgr.configuration backend_name = config.safe_get('volume_backend_name') LOG.debug(_("Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s).") % {'backend': backend, 'host': host, 'backend_name': backend_name}) self.volume_managers[backend] = mgr else: default = importutils.import_object(CONF.volume_manager) LOG.debug(_("Registering default backend %s.") % (default)) self.volume_managers['default'] = default def _init_volume_driver(self, ctxt, driver): LOG.info(_("Starting volume driver %(driver_name)s (%(version)s).") % {'driver_name': driver.__class__.__name__, 'version': driver.get_version()}) try: driver.do_setup(ctxt) driver.check_for_setup_error() except Exception as ex: LOG.error(_("Error encountered during initialization of driver: " "%(name)s.") % {'name': driver.__class__.__name__}) LOG.exception(ex) # we don't want to continue since we failed # to initialize the driver correctly. return driver.set_initialized() def init_host(self): """Do any initialization that needs to be run if this is a standalone service. """ ctxt = context.get_admin_context() for mgr in self.volume_managers.itervalues(): self._init_volume_driver(ctxt, mgr.driver) LOG.info(_("Cleaning up incomplete backup operations.")) volumes = self.db.volume_get_all_by_host(ctxt, self.host) for volume in volumes: backend = self._get_volume_backend(host=volume['host']) if volume['status'] == 'backing-up': LOG.info(_('Resetting volume %s to available ' '(was backing-up).') % volume['id']) mgr = self._get_manager(backend) mgr.detach_volume(ctxt, volume['id']) if volume['status'] == 'restoring-backup': LOG.info(_('Resetting volume %s to error_restoring ' '(was restoring-backup).') % volume['id']) mgr = self._get_manager(backend) mgr.detach_volume(ctxt, volume['id']) self.db.volume_update(ctxt, volume['id'], {'status': 'error_restoring'}) # TODO(smulcahy) implement full resume of backup and restore # operations on restart (rather than simply resetting) backups = self.db.backup_get_all_by_host(ctxt, self.host) for backup in backups: if backup['status'] == 'creating': LOG.info(_('Resetting backup %s to error (was creating).') % backup['id']) err = 'incomplete backup reset on manager restart' self.db.backup_update(ctxt, backup['id'], {'status': 'error', 'fail_reason': err}) if backup['status'] == 'restoring': LOG.info(_('Resetting backup %s to available (was restoring).') % backup['id']) self.db.backup_update(ctxt, backup['id'], {'status': 'available'}) if backup['status'] == 'deleting': LOG.info(_('Resuming delete on backup: %s.') % backup['id']) self.delete_backup(ctxt, backup['id']) def create_backup(self, context, backup_id): """Create volume backups using configured backup service.""" backup = self.db.backup_get(context, backup_id) volume_id = backup['volume_id'] volume = self.db.volume_get(context, volume_id) LOG.info(_('Create backup started, backup: %(backup_id)s ' 'volume: %(volume_id)s.') % {'backup_id': backup_id, 'volume_id': volume_id}) backend = self._get_volume_backend(host=volume['host']) self.db.backup_update(context, backup_id, {'host': self.host, 'service': self.driver_name}) expected_status = 'backing-up' actual_status = volume['status'] if actual_status != expected_status: err = _('Create backup aborted, expected volume status ' '%(expected_status)s but got %(actual_status)s.') % { 'expected_status': expected_status, 'actual_status': actual_status, } self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': err}) raise exception.InvalidVolume(reason=err) expected_status = 'creating' actual_status = backup['status'] if actual_status != expected_status: err = _('Create backup aborted, expected backup status ' '%(expected_status)s but got %(actual_status)s.') % { 'expected_status': expected_status, 'actual_status': actual_status, } self.db.volume_update(context, volume_id, {'status': 'available'}) self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': err}) raise exception.InvalidBackup(reason=err) try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught, # the volume status will be set back to available and # the backup status to 'error' utils.require_driver_initialized(self.driver) backup_service = self.service.get_backup_driver(context) self._get_driver(backend).backup_volume(context, backup, backup_service) except Exception as err: with excutils.save_and_reraise_exception(): self.db.volume_update(context, volume_id, {'status': 'available'}) self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': unicode(err)}) self.db.volume_update(context, volume_id, {'status': 'available'}) self.db.backup_update(context, backup_id, {'status': 'available', 'size': volume['size'], 'availability_zone': self.az}) LOG.info(_('Create backup finished. backup: %s.'), backup_id) def restore_backup(self, context, backup_id, volume_id): """Restore volume backups from configured backup service.""" LOG.info(_('Restore backup started, backup: %(backup_id)s ' 'volume: %(volume_id)s.') % {'backup_id': backup_id, 'volume_id': volume_id}) backup = self.db.backup_get(context, backup_id) volume = self.db.volume_get(context, volume_id) backend = self._get_volume_backend(host=volume['host']) self.db.backup_update(context, backup_id, {'host': self.host}) expected_status = 'restoring-backup' actual_status = volume['status'] if actual_status != expected_status: err = (_('Restore backup aborted, expected volume status ' '%(expected_status)s but got %(actual_status)s.') % {'expected_status': expected_status, 'actual_status': actual_status}) self.db.backup_update(context, backup_id, {'status': 'available'}) raise exception.InvalidVolume(reason=err) expected_status = 'restoring' actual_status = backup['status'] if actual_status != expected_status: err = (_('Restore backup aborted: expected backup status ' '%(expected_status)s but got %(actual_status)s.') % {'expected_status': expected_status, 'actual_status': actual_status}) self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': err}) self.db.volume_update(context, volume_id, {'status': 'error'}) raise exception.InvalidBackup(reason=err) if volume['size'] > backup['size']: LOG.warn('Volume: %s, size: %d is larger than backup: %s, ' 'size: %d, continuing with restore.', volume['id'], volume['size'], backup['id'], backup['size']) backup_service = self._map_service_to_driver(backup['service']) configured_service = self.driver_name if backup_service != configured_service: err = _('Restore backup aborted, the backup service currently' ' configured [%(configured_service)s] is not the' ' backup service that was used to create this' ' backup [%(backup_service)s].') % { 'configured_service': configured_service, 'backup_service': backup_service, } self.db.backup_update(context, backup_id, {'status': 'available'}) self.db.volume_update(context, volume_id, {'status': 'error'}) raise exception.InvalidBackup(reason=err) try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught, # the volume status will be set back to available and # the backup status to 'error' utils.require_driver_initialized(self.driver) backup_service = self.service.get_backup_driver(context) self._get_driver(backend).restore_backup(context, backup, volume, backup_service) except Exception: with excutils.save_and_reraise_exception(): self.db.volume_update(context, volume_id, {'status': 'error_restoring'}) self.db.backup_update(context, backup_id, {'status': 'available'}) self.db.volume_update(context, volume_id, {'status': 'available'}) self.db.backup_update(context, backup_id, {'status': 'available'}) LOG.info(_('Restore backup finished, backup %(backup_id)s restored' ' to volume %(volume_id)s.') % {'backup_id': backup_id, 'volume_id': volume_id}) def delete_backup(self, context, backup_id): """Delete volume backup from configured backup service.""" try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the backup status updated. Fail early since there # are no other status to change but backup's utils.require_driver_initialized(self.driver) except exception.DriverNotInitialized as err: with excutils.save_and_reraise_exception(): self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': unicode(err)}) LOG.info(_('Delete backup started, backup: %s.'), backup_id) backup = self.db.backup_get(context, backup_id) self.db.backup_update(context, backup_id, {'host': self.host}) expected_status = 'deleting' actual_status = backup['status'] if actual_status != expected_status: err = _('Delete_backup aborted, expected backup status ' '%(expected_status)s but got %(actual_status)s.') % { 'expected_status': expected_status, 'actual_status': actual_status, } self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': err}) raise exception.InvalidBackup(reason=err) backup_service = self._map_service_to_driver(backup['service']) if backup_service is not None: configured_service = self.driver_name if backup_service != configured_service: err = _('Delete backup aborted, the backup service currently' ' configured [%(configured_service)s] is not the' ' backup service that was used to create this' ' backup [%(backup_service)s].') % { 'configured_service': configured_service, 'backup_service': backup_service, } self.db.backup_update(context, backup_id, {'status': 'error'}) raise exception.InvalidBackup(reason=err) try: backup_service = self.service.get_backup_driver(context) backup_service.delete(backup) except Exception as err: with excutils.save_and_reraise_exception(): self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': unicode(err)}) context = context.elevated() self.db.backup_destroy(context, backup_id) LOG.info(_('Delete backup finished, backup %s deleted.'), backup_id) def export_record(self, context, backup_id): """Export all volume backup metadata details to allow clean import. Export backup metadata so it could be re-imported into the database without any prerequisite in the backup database. :param context: running context :param backup_id: backup id to export :returns: backup_record - a description of how to import the backup :returns: contains 'backup_url' - how to import the backup, and :returns: 'backup_service' describing the needed driver. :raises: InvalidBackup """ LOG.info(_('Export record started, backup: %s.'), backup_id) backup = self.db.backup_get(context, backup_id) expected_status = 'available' actual_status = backup['status'] if actual_status != expected_status: err = (_('Export backup aborted, expected backup status ' '%(expected_status)s but got %(actual_status)s.') % {'expected_status': expected_status, 'actual_status': actual_status}) raise exception.InvalidBackup(reason=err) backup_record = {} backup_record['backup_service'] = backup['service'] backup_service = self._map_service_to_driver(backup['service']) configured_service = self.driver_name if backup_service != configured_service: err = (_('Export record aborted, the backup service currently' ' configured [%(configured_service)s] is not the' ' backup service that was used to create this' ' backup [%(backup_service)s].') % {'configured_service': configured_service, 'backup_service': backup_service}) raise exception.InvalidBackup(reason=err) # Call driver to create backup description string try: utils.require_driver_initialized(self.driver) backup_service = self.service.get_backup_driver(context) backup_url = backup_service.export_record(backup) backup_record['backup_url'] = backup_url except Exception as err: msg = unicode(err) raise exception.InvalidBackup(reason=msg) LOG.info(_('Export record finished, backup %s exported.'), backup_id) return backup_record def import_record(self, context, backup_id, backup_service, backup_url, backup_hosts): """Import all volume backup metadata details to the backup db. :param context: running context :param backup_id: The new backup id for the import :param backup_service: The needed backup driver for import :param backup_url: An identifier string to locate the backup :param backup_hosts: Potential hosts to execute the import :raises: InvalidBackup :raises: ServiceNotFound """ LOG.info(_('Import record started, backup_url: %s.'), backup_url) # Can we import this backup? if (backup_service != self.driver_name): # No, are there additional potential backup hosts in the list? if len(backup_hosts) > 0: # try the next host on the list, maybe he can import first_host = backup_hosts.pop() self.backup_rpcapi.import_record(context, first_host, backup_id, backup_service, backup_url, backup_hosts) else: # empty list - we are the last host on the list, fail err = _('Import record failed, cannot find backup ' 'service to perform the import. Request service ' '%(service)s') % {'service': backup_service} self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': err}) raise exception.ServiceNotFound(service_id=backup_service) else: # Yes... try: utils.require_driver_initialized(self.driver) backup_service = self.service.get_backup_driver(context) backup_options = backup_service.import_record(backup_url) except Exception as err: msg = unicode(err) self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': msg}) raise exception.InvalidBackup(reason=msg) required_import_options = ['display_name', 'display_description', 'container', 'size', 'service_metadata', 'service', 'object_count'] backup_update = {} backup_update['status'] = 'available' backup_update['service'] = self.driver_name backup_update['availability_zone'] = self.az backup_update['host'] = self.host for entry in required_import_options: if entry not in backup_options: msg = (_('Backup metadata received from driver for ' 'import is missing %s.'), entry) self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': msg}) raise exception.InvalidBackup(reason=msg) backup_update[entry] = backup_options[entry] # Update the database self.db.backup_update(context, backup_id, backup_update) # Verify backup try: backup_service.verify(backup_id) except NotImplementedError: LOG.warn(_('Backup service %(service)s does not support ' 'verify. Backup id %(id)s is not verified. ' 'Skipping verify.') % {'service': self.driver_name, 'id': backup_id}) except exception.InvalidBackup as err: with excutils.save_and_reraise_exception(): self.db.backup_update(context, backup_id, {'status': 'error', 'fail_reason': unicode(err)}) LOG.info(_('Import record id %s metadata from driver ' 'finished.') % backup_id) cinder-2014.1.5/cinder/backup/__init__.py0000664000567000056700000000172412540642606021203 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # Importing full names to not pollute the namespace and cause possible # collisions with use of 'from cinder.backup import ' elsewhere. from cinder.common import config import cinder.openstack.common.importutils CONF = config.CONF API = cinder.openstack.common.importutils.import_class(CONF.backup_api_class) cinder-2014.1.5/cinder/backup/api.py0000664000567000056700000002540012540642606020212 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Handles all requests relating to the volume backups service. """ from eventlet import greenthread from oslo.config import cfg from cinder.backup import rpcapi as backup_rpcapi from cinder import context from cinder.db import base from cinder import exception from cinder.openstack.common import log as logging from cinder import utils import cinder.policy import cinder.volume CONF = cfg.CONF LOG = logging.getLogger(__name__) def check_policy(context, action): target = { 'project_id': context.project_id, 'user_id': context.user_id, } _action = 'backup:%s' % action cinder.policy.enforce(context, _action, target) class API(base.Base): """API for interacting with the volume backup manager.""" def __init__(self, db_driver=None): self.backup_rpcapi = backup_rpcapi.BackupAPI() self.volume_api = cinder.volume.API() super(API, self).__init__(db_driver) def get(self, context, backup_id): check_policy(context, 'get') rv = self.db.backup_get(context, backup_id) return dict(rv.iteritems()) def delete(self, context, backup_id): """Make the RPC call to delete a volume backup.""" check_policy(context, 'delete') backup = self.get(context, backup_id) if backup['status'] not in ['available', 'error']: msg = _('Backup status must be available or error') raise exception.InvalidBackup(reason=msg) self.db.backup_update(context, backup_id, {'status': 'deleting'}) self.backup_rpcapi.delete_backup(context, backup['host'], backup['id']) # TODO(moorehef): Add support for search_opts, discarded atm def get_all(self, context, search_opts=None): if search_opts is None: search_opts = {} check_policy(context, 'get_all') if context.is_admin: backups = self.db.backup_get_all(context) else: backups = self.db.backup_get_all_by_project(context, context.project_id) return backups def _is_backup_service_enabled(self, volume, volume_host): """Check if there is a backup service available.""" topic = CONF.backup_topic ctxt = context.get_admin_context() services = self.db.service_get_all_by_topic(ctxt, topic) for srv in services: if (srv['availability_zone'] == volume['availability_zone'] and srv['host'] == volume_host and not srv['disabled'] and utils.service_is_up(srv)): return True return False def _list_backup_services(self): """List all enabled backup services. :returns: list -- hosts for services that are enabled for backup. """ topic = CONF.backup_topic ctxt = context.get_admin_context() services = self.db.service_get_all_by_topic(ctxt, topic) return [srv['host'] for srv in services if not srv['disabled']] def create(self, context, name, description, volume_id, container, availability_zone=None): """Make the RPC call to create a volume backup.""" check_policy(context, 'create') volume = self.volume_api.get(context, volume_id) if volume['status'] != "available": msg = _('Volume to be backed up must be available') raise exception.InvalidVolume(reason=msg) volume_host = volume['host'].partition('@')[0] if not self._is_backup_service_enabled(volume, volume_host): raise exception.ServiceNotFound(service_id='cinder-backup') self.db.volume_update(context, volume_id, {'status': 'backing-up'}) options = {'user_id': context.user_id, 'project_id': context.project_id, 'display_name': name, 'display_description': description, 'volume_id': volume_id, 'status': 'creating', 'container': container, 'size': volume['size'], 'host': volume_host, } backup = self.db.backup_create(context, options) #TODO(DuncanT): In future, when we have a generic local attach, # this can go via the scheduler, which enables # better load balancing and isolation of services self.backup_rpcapi.create_backup(context, backup['host'], backup['id'], volume_id) return backup def restore(self, context, backup_id, volume_id=None): """Make the RPC call to restore a volume backup.""" check_policy(context, 'restore') backup = self.get(context, backup_id) if backup['status'] != 'available': msg = _('Backup status must be available') raise exception.InvalidBackup(reason=msg) size = backup['size'] if size is None: msg = _('Backup to be restored has invalid size') raise exception.InvalidBackup(reason=msg) # Create a volume if none specified. If a volume is specified check # it is large enough for the backup if volume_id is None: name = 'restore_backup_%s' % backup_id description = 'auto-created_from_restore_from_backup' LOG.audit(_("Creating volume of %(size)s GB for restore of " "backup %(backup_id)s"), {'size': size, 'backup_id': backup_id}, context=context) volume = self.volume_api.create(context, size, name, description) volume_id = volume['id'] while True: volume = self.volume_api.get(context, volume_id) if volume['status'] != 'creating': break greenthread.sleep(1) else: volume = self.volume_api.get(context, volume_id) if volume['status'] != "available": msg = _('Volume to be restored to must be available') raise exception.InvalidVolume(reason=msg) LOG.debug('Checking backup size %s against volume size %s', size, volume['size']) if size > volume['size']: msg = (_('volume size %(volume_size)d is too small to restore ' 'backup of size %(size)d.') % {'volume_size': volume['size'], 'size': size}) raise exception.InvalidVolume(reason=msg) LOG.audit(_("Overwriting volume %(volume_id)s with restore of " "backup %(backup_id)s"), {'volume_id': volume_id, 'backup_id': backup_id}, context=context) # Setting the status here rather than setting at start and unrolling # for each error condition, it should be a very small window self.db.backup_update(context, backup_id, {'status': 'restoring'}) self.db.volume_update(context, volume_id, {'status': 'restoring-backup'}) self.backup_rpcapi.restore_backup(context, backup['host'], backup['id'], volume_id) d = {'backup_id': backup_id, 'volume_id': volume_id, } return d def export_record(self, context, backup_id): """Make the RPC call to export a volume backup. Call backup manager to execute backup export. :param context: running context :param backup_id: backup id to export :returns: dictionary -- a description of how to import the backup :returns: contains 'backup_url' and 'backup_service' :raises: InvalidBackup """ check_policy(context, 'backup-export') backup = self.get(context, backup_id) if backup['status'] != 'available': msg = (_('Backup status must be available and not %s.') % backup['status']) raise exception.InvalidBackup(reason=msg) LOG.debug("Calling RPCAPI with context: " "%(ctx)s, host: %(host)s, backup: %(id)s.", {'ctx': context, 'host': backup['host'], 'id': backup['id']}) export_data = self.backup_rpcapi.export_record(context, backup['host'], backup['id']) return export_data def import_record(self, context, backup_service, backup_url): """Make the RPC call to import a volume backup. :param context: running context :param backup_service: backup service name :param backup_url: backup description to be used by the backup driver :raises: InvalidBackup :raises: ServiceNotFound """ check_policy(context, 'backup-import') # NOTE(ronenkat): since we don't have a backup-scheduler # we need to find a host that support the backup service # that was used to create the backup. # We send it to the first backup service host, and the backup manager # on that host will forward it to other hosts on the hosts list if it # cannot support correct service itself. hosts = self._list_backup_services() if len(hosts) == 0: raise exception.ServiceNotFound(service_id=backup_service) options = {'user_id': context.user_id, 'project_id': context.project_id, 'volume_id': '0000-0000-0000-0000', 'status': 'creating', } backup = self.db.backup_create(context, options) first_host = hosts.pop() self.backup_rpcapi.import_record(context, first_host, backup['id'], backup_service, backup_url, hosts) return backup cinder-2014.1.5/cinder/backup/rpcapi.py0000664000567000056700000000620512540642606020721 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Client side of the volume backup RPC API. """ from oslo.config import cfg from oslo import messaging from cinder.openstack.common import log as logging from cinder import rpc CONF = cfg.CONF LOG = logging.getLogger(__name__) class BackupAPI(object): """Client side of the volume rpc API. API version history: 1.0 - Initial version. """ BASE_RPC_API_VERSION = '1.0' def __init__(self): super(BackupAPI, self).__init__() target = messaging.Target(topic=CONF.backup_topic, version=self.BASE_RPC_API_VERSION) self.client = rpc.get_client(target, '1.0') def create_backup(self, ctxt, host, backup_id, volume_id): LOG.debug("create_backup in rpcapi backup_id %s", backup_id) cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'create_backup', backup_id=backup_id) def restore_backup(self, ctxt, host, backup_id, volume_id): LOG.debug("restore_backup in rpcapi backup_id %s", backup_id) cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'restore_backup', backup_id=backup_id, volume_id=volume_id) def delete_backup(self, ctxt, host, backup_id): LOG.debug("delete_backup rpcapi backup_id %s", backup_id) cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'delete_backup', backup_id=backup_id) def export_record(self, ctxt, host, backup_id): LOG.debug("export_record in rpcapi backup_id %(id)s " "on host %(host)s.", {'id': backup_id, 'host': host}) cctxt = self.client.prepare(server=host) return cctxt.call(ctxt, 'export_record', backup_id=backup_id) def import_record(self, ctxt, host, backup_id, backup_service, backup_url, backup_hosts): LOG.debug("import_record rpcapi backup id %(id)s " "on host %(host)s " "for backup_url %(url)s." % {'id': backup_id, 'host': host, 'url': backup_url}) cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'import_record', backup_id=backup_id, backup_service=backup_service, backup_url=backup_url, backup_hosts=backup_hosts) cinder-2014.1.5/cinder/backup/drivers/0000775000567000056700000000000012540643114020537 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/backup/drivers/swift.py0000664000567000056700000005431312540642606022260 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """Implementation of a backup service that uses Swift as the backend **Related Flags** :backup_swift_url: The URL of the Swift endpoint (default: localhost:8080). :backup_swift_object_size: The size in bytes of the Swift objects used for volume backups (default: 52428800). :backup_swift_retry_attempts: The number of retries to make for Swift operations (default: 10). :backup_swift_retry_backoff: The backoff time in seconds between retrying failed Swift operations (default: 10). :backup_compression_algorithm: Compression algorithm to use for volume backups. Supported options are: None (to disable), zlib and bz2 (default: zlib) """ import hashlib import json import os import six import socket import eventlet from oslo.config import cfg from cinder.backup.driver import BackupDriver from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import units from swiftclient import client as swift LOG = logging.getLogger(__name__) swiftbackup_service_opts = [ cfg.StrOpt('backup_swift_url', default='http://localhost:8080/v1/AUTH_', help='The URL of the Swift endpoint'), cfg.StrOpt('backup_swift_auth', default='per_user', help='Swift authentication mechanism'), cfg.StrOpt('backup_swift_user', default=None, help='Swift user name'), cfg.StrOpt('backup_swift_key', default=None, help='Swift key for authentication'), cfg.StrOpt('backup_swift_container', default='volumebackups', help='The default Swift container to use'), cfg.IntOpt('backup_swift_object_size', default=52428800, help='The size in bytes of Swift backup objects'), cfg.IntOpt('backup_swift_retry_attempts', default=3, help='The number of retries to make for Swift operations'), cfg.IntOpt('backup_swift_retry_backoff', default=2, help='The backoff time in seconds between Swift retries'), cfg.StrOpt('backup_compression_algorithm', default='zlib', help='Compression algorithm (None to disable)'), ] CONF = cfg.CONF CONF.register_opts(swiftbackup_service_opts) class SwiftBackupDriver(BackupDriver): """Provides backup, restore and delete of backup objects within Swift.""" DRIVER_VERSION = '1.0.0' DRIVER_VERSION_MAPPING = {'1.0.0': '_restore_v1'} def _get_compressor(self, algorithm): try: if algorithm.lower() in ('none', 'off', 'no'): return None elif algorithm.lower() in ('zlib', 'gzip'): import zlib as compressor return compressor elif algorithm.lower() in ('bz2', 'bzip2'): import bz2 as compressor return compressor except ImportError: pass err = _('unsupported compression algorithm: %s') % algorithm raise ValueError(unicode(err)) def __init__(self, context, db_driver=None): super(SwiftBackupDriver, self).__init__(context, db_driver) self.swift_url = '%s%s' % (CONF.backup_swift_url, self.context.project_id) self.az = CONF.storage_availability_zone self.data_block_size_bytes = CONF.backup_swift_object_size self.swift_attempts = CONF.backup_swift_retry_attempts self.swift_backoff = CONF.backup_swift_retry_backoff self.compressor = \ self._get_compressor(CONF.backup_compression_algorithm) LOG.debug('Connect to %s in "%s" mode' % (CONF.backup_swift_url, CONF.backup_swift_auth)) if CONF.backup_swift_auth == 'single_user': if CONF.backup_swift_user is None: LOG.error(_("single_user auth mode enabled, " "but %(param)s not set") % {'param': 'backup_swift_user'}) raise exception.ParameterNotFound(param='backup_swift_user') self.conn = swift.Connection(authurl=CONF.backup_swift_url, user=CONF.backup_swift_user, key=CONF.backup_swift_key, retries=self.swift_attempts, starting_backoff=self.swift_backoff) else: self.conn = swift.Connection(retries=self.swift_attempts, preauthurl=self.swift_url, preauthtoken=self.context.auth_token, starting_backoff=self.swift_backoff) def _create_container(self, context, backup): backup_id = backup['id'] container = backup['container'] LOG.debug(_('_create_container started, container: %(container)s,' 'backup: %(backup_id)s') % {'container': container, 'backup_id': backup_id}) if container is None: container = CONF.backup_swift_container self.db.backup_update(context, backup_id, {'container': container}) # NOTE(gfidente): accordingly to the Object Storage API reference, we # do not need to check if a container already exists, container PUT # requests are idempotent and a code of 202 (Accepted) is returned when # the container already existed. self.conn.put_container(container) return container def _generate_swift_object_name_prefix(self, backup): az = 'az_%s' % self.az backup_name = '%s_backup_%s' % (az, backup['id']) volume = 'volume_%s' % (backup['volume_id']) timestamp = timeutils.strtime(fmt="%Y%m%d%H%M%S") prefix = volume + '/' + timestamp + '/' + backup_name LOG.debug(_('_generate_swift_object_name_prefix: %s') % prefix) return prefix def _generate_object_names(self, backup): prefix = backup['service_metadata'] swift_objects = self.conn.get_container(backup['container'], prefix=prefix, full_listing=True)[1] swift_object_names = [swift_obj['name'] for swift_obj in swift_objects] LOG.debug(_('generated object list: %s') % swift_object_names) return swift_object_names def _metadata_filename(self, backup): swift_object_name = backup['service_metadata'] filename = '%s_metadata' % swift_object_name return filename def _write_metadata(self, backup, volume_id, container, object_list, volume_meta): filename = self._metadata_filename(backup) LOG.debug(_('_write_metadata started, container name: %(container)s,' ' metadata filename: %(filename)s') % {'container': container, 'filename': filename}) metadata = {} metadata['version'] = self.DRIVER_VERSION metadata['backup_id'] = backup['id'] metadata['volume_id'] = volume_id metadata['backup_name'] = backup['display_name'] metadata['backup_description'] = backup['display_description'] metadata['created_at'] = str(backup['created_at']) metadata['objects'] = object_list metadata['volume_meta'] = volume_meta metadata_json = json.dumps(metadata, sort_keys=True, indent=2) reader = six.StringIO(metadata_json) etag = self.conn.put_object(container, filename, reader, content_length=reader.len) md5 = hashlib.md5(metadata_json).hexdigest() if etag != md5: err = _('error writing metadata file to swift, MD5 of metadata' ' file in swift [%(etag)s] is not the same as MD5 of ' 'metadata file sent to swift [%(md5)s]') % {'etag': etag, 'md5': md5} raise exception.InvalidBackup(reason=err) LOG.debug(_('_write_metadata finished')) def _read_metadata(self, backup): container = backup['container'] filename = self._metadata_filename(backup) LOG.debug(_('_read_metadata started, container name: %(container)s, ' 'metadata filename: %(filename)s') % {'container': container, 'filename': filename}) (resp, body) = self.conn.get_object(container, filename) metadata = json.loads(body) LOG.debug(_('_read_metadata finished (%s)') % metadata) return metadata def _prepare_backup(self, backup): """Prepare the backup process and return the backup metadata.""" backup_id = backup['id'] volume_id = backup['volume_id'] volume = self.db.volume_get(self.context, volume_id) if volume['size'] <= 0: err = _('volume size %d is invalid.') % volume['size'] raise exception.InvalidVolume(reason=err) try: container = self._create_container(self.context, backup) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) object_prefix = self._generate_swift_object_name_prefix(backup) backup['service_metadata'] = object_prefix self.db.backup_update(self.context, backup_id, {'service_metadata': object_prefix}) volume_size_bytes = volume['size'] * units.GiB availability_zone = self.az LOG.debug(_('starting backup of volume: %(volume_id)s to swift,' ' volume size: %(volume_size_bytes)d, swift object names' ' prefix %(object_prefix)s, availability zone:' ' %(availability_zone)s') % { 'volume_id': volume_id, 'volume_size_bytes': volume_size_bytes, 'object_prefix': object_prefix, 'availability_zone': availability_zone, }) object_meta = {'id': 1, 'list': [], 'prefix': object_prefix, 'volume_meta': None} return object_meta, container def _backup_chunk(self, backup, container, data, data_offset, object_meta): """Backup data chunk based on the object metadata and offset.""" object_prefix = object_meta['prefix'] object_list = object_meta['list'] object_id = object_meta['id'] object_name = '%s-%05d' % (object_prefix, object_id) obj = {} obj[object_name] = {} obj[object_name]['offset'] = data_offset obj[object_name]['length'] = len(data) LOG.debug(_('reading chunk of data from volume')) if self.compressor is not None: algorithm = CONF.backup_compression_algorithm.lower() obj[object_name]['compression'] = algorithm data_size_bytes = len(data) data = self.compressor.compress(data) comp_size_bytes = len(data) LOG.debug(_('compressed %(data_size_bytes)d bytes of data ' 'to %(comp_size_bytes)d bytes using ' '%(algorithm)s') % { 'data_size_bytes': data_size_bytes, 'comp_size_bytes': comp_size_bytes, 'algorithm': algorithm, }) else: LOG.debug(_('not compressing data')) obj[object_name]['compression'] = 'none' reader = six.StringIO(data) LOG.debug(_('About to put_object')) try: etag = self.conn.put_object(container, object_name, reader, content_length=len(data)) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) LOG.debug(_('swift MD5 for %(object_name)s: %(etag)s') % {'object_name': object_name, 'etag': etag, }) md5 = hashlib.md5(data).hexdigest() obj[object_name]['md5'] = md5 LOG.debug(_('backup MD5 for %(object_name)s: %(md5)s') % {'object_name': object_name, 'md5': md5}) if etag != md5: err = _('error writing object to swift, MD5 of object in ' 'swift %(etag)s is not the same as MD5 of object sent ' 'to swift %(md5)s') % {'etag': etag, 'md5': md5} raise exception.InvalidBackup(reason=err) object_list.append(obj) object_id += 1 object_meta['list'] = object_list object_meta['id'] = object_id LOG.debug(_('Calling eventlet.sleep(0)')) eventlet.sleep(0) def _finalize_backup(self, backup, container, object_meta): """Finalize the backup by updating its metadata on Swift.""" object_list = object_meta['list'] object_id = object_meta['id'] volume_meta = object_meta['volume_meta'] try: self._write_metadata(backup, backup['volume_id'], container, object_list, volume_meta) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) self.db.backup_update(self.context, backup['id'], {'object_count': object_id}) LOG.debug(_('backup %s finished.') % backup['id']) def _backup_metadata(self, backup, object_meta): """Backup volume metadata. NOTE(dosaboy): the metadata we are backing up is obtained from a versioned api so we should not alter it in any way here. We must also be sure that the service that will perform the restore is compatible with version used. """ json_meta = self.get_metadata(backup['volume_id']) if not json_meta: LOG.debug("No volume metadata to backup") return object_meta["volume_meta"] = json_meta def backup(self, backup, volume_file, backup_metadata=True): """Backup the given volume to Swift.""" object_meta, container = self._prepare_backup(backup) while True: data = volume_file.read(self.data_block_size_bytes) data_offset = volume_file.tell() if data == '': break self._backup_chunk(backup, container, data, data_offset, object_meta) if backup_metadata: try: self._backup_metadata(backup, object_meta) except Exception as err: LOG.exception(_("Backup volume metadata to swift failed: %s") % six.text_type(err)) self.delete(backup) raise self._finalize_backup(backup, container, object_meta) def _restore_v1(self, backup, volume_id, metadata, volume_file): """Restore a v1 swift volume backup from swift.""" backup_id = backup['id'] LOG.debug(_('v1 swift volume backup restore of %s started'), backup_id) container = backup['container'] metadata_objects = metadata['objects'] metadata_object_names = sum((obj.keys() for obj in metadata_objects), []) LOG.debug(_('metadata_object_names = %s') % metadata_object_names) prune_list = [self._metadata_filename(backup)] swift_object_names = [swift_object_name for swift_object_name in self._generate_object_names(backup) if swift_object_name not in prune_list] if sorted(swift_object_names) != sorted(metadata_object_names): err = _('restore_backup aborted, actual swift object list in ' 'swift does not match object list stored in metadata') raise exception.InvalidBackup(reason=err) for metadata_object in metadata_objects: object_name = metadata_object.keys()[0] LOG.debug(_('restoring object from swift. backup: %(backup_id)s, ' 'container: %(container)s, swift object name: ' '%(object_name)s, volume: %(volume_id)s') % { 'backup_id': backup_id, 'container': container, 'object_name': object_name, 'volume_id': volume_id, }) try: (resp, body) = self.conn.get_object(container, object_name) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) compression_algorithm = metadata_object[object_name]['compression'] decompressor = self._get_compressor(compression_algorithm) if decompressor is not None: LOG.debug(_('decompressing data using %s algorithm') % compression_algorithm) decompressed = decompressor.decompress(body) volume_file.write(decompressed) else: volume_file.write(body) # force flush every write to avoid long blocking write on close volume_file.flush() # Be tolerant to IO implementations that do not support fileno() try: fileno = volume_file.fileno() except IOError: LOG.info("volume_file does not support fileno() so skipping " "fsync()") else: os.fsync(fileno) # Restoring a backup to a volume can take some time. Yield so other # threads can run, allowing for among other things the service # status to be updated eventlet.sleep(0) LOG.debug(_('v1 swift volume backup restore of %s finished'), backup_id) def restore(self, backup, volume_id, volume_file): """Restore the given volume backup from swift.""" backup_id = backup['id'] container = backup['container'] object_prefix = backup['service_metadata'] LOG.debug(_('starting restore of backup %(object_prefix)s from swift' ' container: %(container)s, to volume %(volume_id)s, ' 'backup: %(backup_id)s') % { 'object_prefix': object_prefix, 'container': container, 'volume_id': volume_id, 'backup_id': backup_id, }) try: metadata = self._read_metadata(backup) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) metadata_version = metadata['version'] LOG.debug(_('Restoring swift backup version %s'), metadata_version) try: restore_func = getattr(self, self.DRIVER_VERSION_MAPPING.get( metadata_version)) except TypeError: err = (_('No support to restore swift backup version %s') % metadata_version) raise exception.InvalidBackup(reason=err) restore_func(backup, volume_id, metadata, volume_file) volume_meta = metadata.get('volume_meta', None) try: if volume_meta: self.put_metadata(volume_id, volume_meta) else: LOG.debug("No volume metadata in this backup") except exception.BackupMetadataUnsupportedVersion: msg = _("Metadata restore failed due to incompatible version") LOG.error(msg) raise exception.BackupOperationError(msg) LOG.debug(_('restore %(backup_id)s to %(volume_id)s finished.') % {'backup_id': backup_id, 'volume_id': volume_id}) def delete(self, backup): """Delete the given backup from swift.""" container = backup['container'] LOG.debug('delete started, backup: %s, container: %s, prefix: %s', backup['id'], container, backup['service_metadata']) if container is not None: swift_object_names = [] try: swift_object_names = self._generate_object_names(backup) except Exception: LOG.warn(_('swift error while listing objects, continuing' ' with delete')) for swift_object_name in swift_object_names: try: self.conn.delete_object(container, swift_object_name) except socket.error as err: raise exception.SwiftConnectionFailed(reason=err) except Exception: LOG.warn(_('swift error while deleting object %s, ' 'continuing with delete') % swift_object_name) else: LOG.debug(_('deleted swift object: %(swift_object_name)s' ' in container: %(container)s') % { 'swift_object_name': swift_object_name, 'container': container }) # Deleting a backup's objects from swift can take some time. # Yield so other threads can run eventlet.sleep(0) LOG.debug(_('delete %s finished') % backup['id']) def get_backup_driver(context): return SwiftBackupDriver(context) cinder-2014.1.5/cinder/backup/drivers/__init__.py0000664000567000056700000000000012540642603022640 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/backup/drivers/tsm.py0000664000567000056700000005105312540642606021725 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp # All Rights Reserved. # # 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. """Backup driver for IBM Tivoli Storage Manager (TSM). Implementation of a backup service that uses IBM Tivoli Storage Manager (TSM) as the backend. The driver uses TSM command line dsmc utility to run the backup and restore operations. This version supports backup of block devices, e.g, FC, iSCSI, local as well as regular files. A prerequisite for using the IBM TSM backup service is configuring the Cinder host for using TSM. """ import json import os import stat from oslo.config import cfg from cinder.backup.driver import BackupDriver from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import utils LOG = logging.getLogger(__name__) tsm_opts = [ cfg.StrOpt('backup_tsm_volume_prefix', default='backup', help='Volume prefix for the backup id when backing up to TSM'), cfg.StrOpt('backup_tsm_password', default='password', help='TSM password for the running username'), cfg.BoolOpt('backup_tsm_compression', default=True, help='Enable or Disable compression for backups'), ] CONF = cfg.CONF CONF.register_opts(tsm_opts) VALID_BACKUP_MODES = ['image', 'file'] def _get_backup_metadata(backup, operation): """Return metadata persisted with backup object.""" svc_metadata = backup['service_metadata'] try: svc_dict = json.loads(svc_metadata) backup_path = svc_dict.get('backup_path') backup_mode = svc_dict.get('backup_mode') except TypeError: # for backwards compatibility vol_prefix = CONF.backup_tsm_volume_prefix backup_id = backup['id'] backup_path = utils.make_dev_path('%s-%s' % (vol_prefix, backup_id)) backup_mode = 'image' if backup_mode not in VALID_BACKUP_MODES: volume_id = backup['volume_id'] backup_id = backup['id'] err = (_('%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. ' 'Backup object has unexpected mode. Image or file ' 'backups supported, actual mode is %(vol_mode)s.') % {'op': operation, 'bck_id': backup_id, 'vol_id': volume_id, 'vol_mode': backup_mode}) LOG.error(err) raise exception.InvalidBackup(reason=err) return backup_path, backup_mode def _image_mode(backup_mode): """True if backup is image type.""" return backup_mode == 'image' def _make_link(volume_path, backup_path, vol_id): """Create a hard link for the volume block device. The IBM TSM client performs an image backup on a block device. The name of the block device is the backup prefix plus the backup id :param volume_path: real device path name for volume :param backup_path: path name TSM will use as volume to backup :param vol_id: id of volume to backup (for reporting) :raises: InvalidBackup """ try: utils.execute('ln', volume_path, backup_path, run_as_root=True, check_exit_code=True) except processutils.ProcessExecutionError as exc: err = (_('backup: %(vol_id)s failed to create device hardlink ' 'from %(vpath)s to %(bpath)s.\n' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': vol_id, 'vpath': volume_path, 'bpath': backup_path, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) def _create_unique_device_link(backup_id, volume_path, volume_id, bckup_mode): """Create a consistent hardlink for the volume block device. Create a consistent hardlink using the backup id so TSM will be able to backup and restore to the same block device. :param backup_id: the backup id :param volume_path: real path of the backup/restore device :param volume_id: Volume id for backup or as restore target :param bckup_mode: TSM backup mode, either 'image' or 'file' :raises: InvalidBackup :returns str -- hardlink path of the volume block device """ if _image_mode(bckup_mode): hardlink_path = utils.make_dev_path('%s-%s' % (CONF.backup_tsm_volume_prefix, backup_id)) else: dir, volname = os.path.split(volume_path) hardlink_path = ('%s/%s-%s' % (dir, CONF.backup_tsm_volume_prefix, backup_id)) _make_link(volume_path, hardlink_path, volume_id) return hardlink_path def _check_dsmc_output(output, check_attrs, exact_match=True): """Check dsmc command line utility output. Parse the output of the dsmc command and make sure that a given attribute is present, and that it has the proper value. TSM attribute has the format of "text : value". :param output: TSM output to parse :param check_attrs: text to identify in the output :param exact_match: if True, the check will pass only if the parsed value is equal to the value specified in check_attrs. If false, the check will pass if the parsed value is greater than or equal to the value specified in check_attrs. This is needed because for file backups, the parent directories may also be included the first a volume is backed up. :returns bool -- indicate if requited output attribute found in output """ parsed_attrs = {} for line in output.split('\n'): # parse TSM output: look for "msg : value key, sep, val = line.partition(':') if sep is not None and key is not None and len(val.strip()) > 0: parsed_attrs[key] = val.strip() for ckey, cval in check_attrs.iteritems(): if ckey not in parsed_attrs: return False elif exact_match and parsed_attrs[ckey] != cval: return False elif not exact_match and int(parsed_attrs[ckey]) < int(cval): return False return True def _get_volume_realpath(volume_file, volume_id): """Get the real path for the volume block device. If the volume is not a block device or a regular file issue an InvalidBackup exception. :param volume_file: file object representing the volume :param volume_id: Volume id for backup or as restore target :raises: InvalidBackup :returns str -- real path of volume device :returns str -- backup mode to be used """ try: # Get real path volume_path = os.path.realpath(volume_file.name) # Verify that path is a block device volume_mode = os.stat(volume_path).st_mode if stat.S_ISBLK(volume_mode): backup_mode = 'image' elif stat.S_ISREG(volume_mode): backup_mode = 'file' else: err = (_('backup: %(vol_id)s failed. ' '%(path)s is unexpected file type. Block or regular ' 'files supported, actual file mode is %(vol_mode)s.') % {'vol_id': volume_id, 'path': volume_path, 'vol_mode': volume_mode}) LOG.error(err) raise exception.InvalidBackup(reason=err) except AttributeError: err = (_('backup: %(vol_id)s failed. Cannot obtain real path ' 'to volume at %(path)s.') % {'vol_id': volume_id, 'path': volume_file}) LOG.error(err) raise exception.InvalidBackup(reason=err) except OSError: err = (_('backup: %(vol_id)s failed. ' '%(path)s is not a file.') % {'vol_id': volume_id, 'path': volume_path}) LOG.error(err) raise exception.InvalidBackup(reason=err) return volume_path, backup_mode def _cleanup_device_hardlink(hardlink_path, volume_path, volume_id): """Remove the hardlink for the volume block device. :param hardlink_path: hardlink to the volume block device :param volume_path: real path of the backup/restore device :param volume_id: Volume id for backup or as restore target """ try: utils.execute('rm', '-f', hardlink_path, run_as_root=True) except processutils.ProcessExecutionError as exc: err = (_('backup: %(vol_id)s failed to remove backup hardlink' ' from %(vpath)s to %(bpath)s.\n' 'stdout: %(out)s\n stderr: %(err)s.') % {'vol_id': volume_id, 'vpath': volume_path, 'bpath': hardlink_path, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) class TSMBackupDriver(BackupDriver): """Provides backup, restore and delete of volumes backup for TSM.""" DRIVER_VERSION = '1.0.0' def __init__(self, context, db_driver=None): super(TSMBackupDriver, self).__init__(context, db_driver) self.tsm_password = CONF.backup_tsm_password self.volume_prefix = CONF.backup_tsm_volume_prefix def _do_backup(self, backup_path, vol_id, backup_mode): """Perform the actual backup operation. :param backup_path: volume path :param vol_id: volume id :param backup_mode: file mode of source volume; 'image' or 'file' :raises: InvalidBackup """ backup_attrs = {'Total number of objects backed up': '1'} compr_flag = 'yes' if CONF.backup_tsm_compression else 'no' backup_cmd = ['dsmc', 'backup'] if _image_mode(backup_mode): backup_cmd.append('image') backup_cmd.extend(['-quiet', '-compression=%s' % compr_flag, '-password=%s' % self.tsm_password, backup_path]) out, err = utils.execute(*backup_cmd, run_as_root=True, check_exit_code=False) success = _check_dsmc_output(out, backup_attrs, exact_match=False) if not success: err = (_('backup: %(vol_id)s failed to obtain backup ' 'success notification from server.\n' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': vol_id, 'out': out, 'err': err}) LOG.error(err) raise exception.InvalidBackup(reason=err) def _do_restore(self, backup_path, restore_path, vol_id, backup_mode): """Perform the actual restore operation. :param backup_path: the path the backup was created from, this identifes the backup to tsm :param restore_path: volume path to restore into :param vol_id: volume id :param backup_mode: mode used to create the backup ('image' or 'file') :raises: InvalidBackup """ restore_attrs = {'Total number of objects restored': '1'} restore_cmd = ['dsmc', 'restore'] if _image_mode(backup_mode): restore_cmd.append('image') restore_cmd.append('-noprompt') # suppress prompt else: restore_cmd.append('-replace=yes') # suppress prompt restore_cmd.extend(['-quiet', '-password=%s' % self.tsm_password, backup_path]) if restore_path != backup_path: restore_cmd.append(restore_path) out, err = utils.execute(*restore_cmd, run_as_root=True, check_exit_code=False) success = _check_dsmc_output(out, restore_attrs) if not success: err = (_('restore: %(vol_id)s failed.\n' 'stdout: %(out)s\n stderr: %(err)s.') % {'vol_id': vol_id, 'out': out, 'err': err}) LOG.error(err) raise exception.InvalidBackup(reason=err) def backup(self, backup, volume_file, backup_metadata=False): """Backup the given volume to TSM. TSM performs a backup of a volume. The volume_file is used to determine the path of the block device that TSM will back-up. :param backup: backup information for volume :param volume_file: file object representing the volume :param backup_metadata: whether or not to backup volume metadata :raises InvalidBackup """ # TODO(dosaboy): this needs implementing (see backup.drivers.ceph for # an example) if backup_metadata: msg = _("Volume metadata backup requested but this driver does " "not yet support this feature.") raise exception.InvalidBackup(reason=msg) backup_id = backup['id'] volume_id = backup['volume_id'] volume_path, backup_mode = _get_volume_realpath(volume_file, volume_id) LOG.debug(_('Starting backup of volume: %(volume_id)s to TSM,' ' volume path: %(volume_path)s, mode: %(mode)s.') % {'volume_id': volume_id, 'volume_path': volume_path, 'mode': backup_mode}) backup_path = _create_unique_device_link(backup_id, volume_path, volume_id, backup_mode) service_metadata = {'backup_mode': backup_mode, 'backup_path': backup_path} self.db.backup_update(self.context, backup_id, {'service_metadata': json.dumps(service_metadata)}) try: self._do_backup(backup_path, volume_id, backup_mode) except processutils.ProcessExecutionError as exc: err = (_('backup: %(vol_id)s failed to run dsmc ' 'on %(bpath)s.\n' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'bpath': backup_path, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) except exception.Error as exc: err = (_('backup: %(vol_id)s failed to run dsmc ' 'due to invalid arguments ' 'on %(bpath)s.\n' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'bpath': backup_path, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) finally: _cleanup_device_hardlink(backup_path, volume_path, volume_id) LOG.debug(_('Backup %s finished.') % backup_id) def restore(self, backup, volume_id, volume_file): """Restore the given volume backup from TSM server. :param backup: backup information for volume :param volume_id: volume id :param volume_file: file object representing the volume :raises InvalidBackup """ backup_id = backup['id'] # backup_path is the path that was originally backed up. backup_path, backup_mode = _get_backup_metadata(backup, 'restore') LOG.debug(_('Starting restore of backup from TSM ' 'to volume %(volume_id)s, ' 'backup: %(backup_id)s, ' 'mode: %(mode)s.') % {'volume_id': volume_id, 'backup_id': backup_id, 'mode': backup_mode}) # volume_path is the path to restore into. This may # be different than the original volume. volume_path, unused = _get_volume_realpath(volume_file, volume_id) restore_path = _create_unique_device_link(backup_id, volume_path, volume_id, backup_mode) try: self._do_restore(backup_path, restore_path, volume_id, backup_mode) except processutils.ProcessExecutionError as exc: err = (_('restore: %(vol_id)s failed to run dsmc ' 'on %(bpath)s.\n' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'bpath': restore_path, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) except exception.Error as exc: err = (_('restore: %(vol_id)s failed to run dsmc ' 'due to invalid arguments ' 'on %(bpath)s.\n' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'bpath': restore_path, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) finally: _cleanup_device_hardlink(restore_path, volume_path, volume_id) LOG.debug(_('Restore %(backup_id)s to %(volume_id)s finished.') % {'backup_id': backup_id, 'volume_id': volume_id}) def delete(self, backup): """Delete the given backup from TSM server. :param backup: backup information for volume :raises InvalidBackup """ delete_attrs = {'Total number of objects deleted': '1'} delete_path, backup_mode = _get_backup_metadata(backup, 'restore') volume_id = backup['volume_id'] LOG.debug(_('Delete started for backup: %(backup)s, mode: %(mode)s.'), {'backup': backup['id'], 'mode': backup_mode}) try: out, err = utils.execute('dsmc', 'delete', 'backup', '-quiet', '-noprompt', '-objtype=%s' % backup_mode, '-password=%s' % self.tsm_password, delete_path, run_as_root=True, check_exit_code=False) except processutils.ProcessExecutionError as exc: err = (_('delete: %(vol_id)s failed to run dsmc with ' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) except exception.Error as exc: err = (_('delete: %(vol_id)s failed to run dsmc ' 'due to invalid arguments with ' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'out': exc.stdout, 'err': exc.stderr}) LOG.error(err) raise exception.InvalidBackup(reason=err) success = _check_dsmc_output(out, delete_attrs) if not success: # log error if tsm cannot delete the backup object # but do not raise exception so that cinder backup # object can be removed. err = (_('delete: %(vol_id)s failed with ' 'stdout: %(out)s\n stderr: %(err)s') % {'vol_id': volume_id, 'out': out, 'err': err}) LOG.error(err) LOG.debug(_('Delete %s finished.') % backup['id']) def get_backup_driver(context): return TSMBackupDriver(context) cinder-2014.1.5/cinder/backup/drivers/ceph.py0000664000567000056700000013455512540642606022052 0ustar jenkinsjenkins00000000000000# Copyright 2013 Canonical Ltd. # All Rights Reserved. # # 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. """Ceph Backup Service Implementation. This driver supports backing up volumes of any type to a Ceph object store. It is also capable of detecting whether the volume to be backed up is a Ceph RBD volume and, if so, attempts to perform incremental/differential backups. Support is also included for the following in the case of a source volume being a Ceph RBD volume: * backing up within the same Ceph pool (not recommended) * backing up between different Ceph pools * backing up between different Ceph clusters At the time of writing, differential backup support in Ceph/librbd was quite new so this driver accounts for this by first attempting differential backup and falling back to full backup/copy if the former fails. It is recommended that you upgrade to Ceph Dumpling (>= v0.67) or above to get the best results. If incremental backups are used, multiple backups of the same volume are stored as snapshots so that minimal space is consumed in the object store and restoring the volume takes a far reduced amount of time compared to a full copy. Note that Cinder supports restoring to a new volume or the original volume the backup was taken from. For the latter case, a full copy is enforced since this was deemed the safest action to take. It is therefore recommended to always restore to a new volume (default). """ import eventlet import fcntl import os import re import subprocess import time from oslo.config import cfg from cinder.backup.driver import BackupDriver from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import units from cinder import utils import cinder.volume.drivers.rbd as rbd_driver try: import rados import rbd except ImportError: rados = None rbd = None LOG = logging.getLogger(__name__) service_opts = [ cfg.StrOpt('backup_ceph_conf', default='/etc/ceph/ceph.conf', help='Ceph configuration file to use.'), cfg.StrOpt('backup_ceph_user', default='cinder', help='The Ceph user to connect with. Default here is to use ' 'the same user as for Cinder volumes. If not using cephx ' 'this should be set to None.'), cfg.IntOpt('backup_ceph_chunk_size', default=(units.MiB * 128), help='The chunk size, in bytes, that a backup is broken into ' 'before transfer to the Ceph object store.'), cfg.StrOpt('backup_ceph_pool', default='backups', help='The Ceph pool where volume backups are stored.'), cfg.IntOpt('backup_ceph_stripe_unit', default=0, help='RBD stripe unit to use when creating a backup image.'), cfg.IntOpt('backup_ceph_stripe_count', default=0, help='RBD stripe count to use when creating a backup image.'), cfg.BoolOpt('restore_discard_excess_bytes', default=True, help='If True, always discard excess bytes when restoring ' 'volumes i.e. pad with zeroes.') ] CONF = cfg.CONF CONF.register_opts(service_opts) class VolumeMetadataBackup(object): def __init__(self, client, backup_id): self._client = client self._backup_id = backup_id @property def name(self): return strutils.safe_encode("backup.%s.meta" % (self._backup_id)) @property def exists(self): meta_obj = rados.Object(self._client.ioctx, self.name) return self._exists(meta_obj) def _exists(self, obj): try: obj.stat() except rados.ObjectNotFound: return False else: return True def set(self, json_meta): """Write JSON metadata to a new object. This should only be called once per backup. Raises VolumeMetadataBackupExists if the object already exists. """ meta_obj = rados.Object(self._client.ioctx, self.name) if self._exists(meta_obj): msg = _("Metadata backup object '%s' already exists") % (self.name) raise exception.VolumeMetadataBackupExists(msg) meta_obj.write(json_meta) def get(self): """Get metadata backup object. Returns None if the object does not exist. """ meta_obj = rados.Object(self._client.ioctx, self.name) if not self._exists(meta_obj): msg = _("Metadata backup object %s does not exist") % (self.name) LOG.debug(msg) return None return meta_obj.read() def remove_if_exists(self): meta_obj = rados.Object(self._client.ioctx, self.name) try: meta_obj.remove() except rados.ObjectNotFound: msg = (_("Metadata backup object '%s' not found - ignoring") % (self.name)) LOG.debug(msg) class CephBackupDriver(BackupDriver): """Backup Cinder volumes to Ceph Object Store. This class enables backing up Cinder volumes to a Ceph object store. Backups may be stored in their own pool or even cluster. Store location is defined by the Ceph conf file and service config options supplied. If the source volume is itself an RBD volume, the backup will be performed using incremental differential backups which *should* give a performance gain. """ def __init__(self, context, db_driver=None, execute=None): super(CephBackupDriver, self).__init__(context, db_driver) self.rbd = rbd self.rados = rados self.chunk_size = CONF.backup_ceph_chunk_size self._execute = execute or utils.execute if self._supports_stripingv2: self.rbd_stripe_unit = CONF.backup_ceph_stripe_unit self.rbd_stripe_count = CONF.backup_ceph_stripe_count else: LOG.info(_("RBD striping not supported - ignoring configuration " "settings for rbd striping")) self.rbd_stripe_count = 0 self.rbd_stripe_unit = 0 self._ceph_backup_user = strutils.safe_encode(CONF.backup_ceph_user) self._ceph_backup_pool = strutils.safe_encode(CONF.backup_ceph_pool) self._ceph_backup_conf = strutils.safe_encode(CONF.backup_ceph_conf) def _validate_string_args(self, *args): """Ensure all args are non-None and non-empty.""" return all(args) def _ceph_args(self, user, conf=None, pool=None): """Create default ceph args for executing rbd commands. If no --conf is provided, rbd will look in the default locations e.g. /etc/ceph/ceph.conf """ # Make sure user arg is valid since rbd command may not fail if # invalid/no user provided, resulting in unexpected behaviour. if not self._validate_string_args(user): raise exception.BackupInvalidCephArgs(_("invalid user '%s'") % (user)) args = ['--id', user] if conf: args.extend(['--conf', conf]) if pool: args.extend(['--pool', pool]) return args @property def _supports_layering(self): """Determine if copy-on-write is supported by our version of librbd.""" return hasattr(self.rbd, 'RBD_FEATURE_LAYERING') @property def _supports_stripingv2(self): """Determine if striping is supported by our version of librbd.""" return hasattr(self.rbd, 'RBD_FEATURE_STRIPINGV2') def _get_rbd_support(self): """Determine RBD features supported by our version of librbd.""" old_format = True features = 0 if self._supports_layering: old_format = False features |= self.rbd.RBD_FEATURE_LAYERING if self._supports_stripingv2: old_format = False features |= self.rbd.RBD_FEATURE_STRIPINGV2 return (old_format, features) def _connect_to_rados(self, pool=None): """Establish connection to the backup Ceph cluster.""" client = self.rados.Rados(rados_id=self._ceph_backup_user, conffile=self._ceph_backup_conf) try: client.connect() pool_to_open = strutils.safe_encode(pool or self._ceph_backup_pool) ioctx = client.open_ioctx(pool_to_open) return client, ioctx except self.rados.Error: # shutdown cannot raise an exception client.shutdown() raise def _disconnect_from_rados(self, client, ioctx): """Terminate connection with the backup Ceph cluster.""" # closing an ioctx cannot raise an exception ioctx.close() client.shutdown() def _get_backup_base_name(self, volume_id, backup_id=None, diff_format=False): """Return name of base image used for backup. Incremental backups use a new base name so we support old and new style format. """ # Ensure no unicode if diff_format: return strutils.safe_encode("volume-%s.backup.base" % (volume_id)) else: if backup_id is None: msg = _("Backup id required") raise exception.InvalidParameterValue(msg) return strutils.safe_encode("volume-%s.backup.%s" % (volume_id, backup_id)) def _discard_bytes(self, volume, offset, length): """Trim length bytes from offset. If the volume is an rbd do a discard() otherwise assume it is a file and pad with zeroes. """ if length: LOG.debug(_("Discarding %(length)s bytes from offset %(offset)s") % {'length': length, 'offset': offset}) if self._file_is_rbd(volume): volume.rbd_image.discard(offset, length) else: zeroes = '\0' * length chunks = int(length / self.chunk_size) for chunk in xrange(0, chunks): LOG.debug(_("Writing zeroes chunk %d") % (chunk)) volume.write(zeroes) volume.flush() # yield to any other pending backups eventlet.sleep(0) rem = int(length % self.chunk_size) if rem: zeroes = '\0' * rem volume.write(zeroes) volume.flush() def _transfer_data(self, src, src_name, dest, dest_name, length): """Transfer data between files (Python IO objects).""" LOG.debug(_("Transferring data between '%(src)s' and '%(dest)s'") % {'src': src_name, 'dest': dest_name}) chunks = int(length / self.chunk_size) LOG.debug(_("%(chunks)s chunks of %(bytes)s bytes to be transferred") % {'chunks': chunks, 'bytes': self.chunk_size}) for chunk in xrange(0, chunks): before = time.time() data = src.read(self.chunk_size) # If we have reach end of source, discard any extraneous bytes from # destination volume if trim is enabled and stop writing. if data == '': if CONF.restore_discard_excess_bytes: self._discard_bytes(dest, dest.tell(), length - dest.tell()) return dest.write(data) dest.flush() delta = (time.time() - before) rate = (self.chunk_size / delta) / 1024 LOG.debug((_("Transferred chunk %(chunk)s of %(chunks)s " "(%(rate)dK/s)") % {'chunk': chunk + 1, 'chunks': chunks, 'rate': rate})) # yield to any other pending backups eventlet.sleep(0) rem = int(length % self.chunk_size) if rem: LOG.debug(_("Transferring remaining %s bytes") % (rem)) data = src.read(rem) if data == '': if CONF.restore_discard_excess_bytes: self._discard_bytes(dest, dest.tell(), rem) else: dest.write(data) dest.flush() # yield to any other pending backups eventlet.sleep(0) def _create_base_image(self, name, size, rados_client): """Create a base backup image. This will be the base image used for storing differential exports. """ LOG.debug(_("Creating base image '%s'") % (name)) old_format, features = self._get_rbd_support() self.rbd.RBD().create(ioctx=rados_client.ioctx, name=name, size=size, old_format=old_format, features=features, stripe_unit=self.rbd_stripe_unit, stripe_count=self.rbd_stripe_count) def _delete_backup_snapshot(self, rados_client, base_name, backup_id): """Delete snapshot associated with this backup if one exists. A backup should have at most ONE associated snapshot. This is required before attempting to delete the base image. The snapshot on the original volume can be left as it will be purged when the volume is deleted. Returns tuple(deleted_snap_name, num_of_remaining_snaps). """ remaining_snaps = 0 base_rbd = self.rbd.Image(rados_client.ioctx, base_name) try: snap_name = self._get_backup_snap_name(base_rbd, base_name, backup_id) if snap_name: LOG.debug(_("Deleting backup snapshot='%s'") % (snap_name)) base_rbd.remove_snap(snap_name) else: LOG.debug(_("No backup snapshot to delete")) # Now check whether any snapshots remain on the base image backup_snaps = self.get_backup_snaps(base_rbd) if backup_snaps: remaining_snaps = len(backup_snaps) finally: base_rbd.close() return snap_name, remaining_snaps def _try_delete_base_image(self, backup_id, volume_id, base_name=None): """Try to delete backup RBD image. If the rbd image is a base image for incremental backups, it may have snapshots. Delete the snapshot associated with backup_id and if the image has no more snapshots, delete it. Otherwise return. If no base name is provided try normal (full) format then diff format image name. If a base name is provided but does not exist, ImageNotFound will be raised. If the image is busy, a number of retries will be performed if ImageBusy is received, after which the exception will be propagated to the caller. """ retries = 3 delay = 5 try_diff_format = False if base_name is None: try_diff_format = True base_name = self._get_backup_base_name(volume_id, backup_id) LOG.debug(_("Trying diff format name format basename='%s'") % (base_name)) with rbd_driver.RADOSClient(self) as client: rbd_exists, base_name = \ self._rbd_image_exists(base_name, volume_id, client, try_diff_format=try_diff_format) if not rbd_exists: raise self.rbd.ImageNotFound(_("image %s not found") % (base_name)) while retries >= 0: # First delete associated snapshot from base image (if exists) snap, rem = self._delete_backup_snapshot(client, base_name, backup_id) if rem: msg = (_("Base image still has %s snapshots so skipping " "base image delete") % (rem)) LOG.info(msg) return LOG.info(_("Deleting base image='%s'") % (base_name)) # Delete base if no more snapshots try: self.rbd.RBD().remove(client.ioctx, base_name) except self.rbd.ImageBusy as exc: # Allow a retry if the image is busy if retries > 0: LOG.info((_("Image busy, retrying %(retries)s " "more time(s) in %(delay)ss") % {'retries': retries, 'delay': delay})) eventlet.sleep(delay) else: LOG.error(_("Max retries reached - raising error")) raise exc else: LOG.debug(_("Base backup image='%s' deleted)") % (base_name)) retries = 0 finally: retries -= 1 # Since we have deleted the base image we can delete the source # volume backup snapshot. src_name = strutils.safe_encode(volume_id) if src_name in self.rbd.RBD().list(client.ioctx): LOG.debug(_("Deleting source snapshot '%s'") % snap) src_rbd = self.rbd.Image(client.ioctx, src_name) try: src_rbd.remove_snap(snap) finally: src_rbd.close() def _piped_execute(self, cmd1, cmd2): """Pipe output of cmd1 into cmd2.""" LOG.debug("Piping cmd1='%s' into..." % (' '.join(cmd1))) LOG.debug("cmd2='%s'" % (' '.join(cmd2))) try: p1 = subprocess.Popen(cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError as e: LOG.error("Pipe1 failed - %s " % unicode(e)) raise # NOTE(dosaboy): ensure that the pipe is blocking. This is to work # around the case where evenlet.green.subprocess is used which seems to # use a non-blocking pipe. flags = fcntl.fcntl(p1.stdout, fcntl.F_GETFL) & (~os.O_NONBLOCK) fcntl.fcntl(p1.stdout, fcntl.F_SETFL, flags) try: p2 = subprocess.Popen(cmd2, stdin=p1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError as e: LOG.error("Pipe2 failed - %s " % unicode(e)) raise p1.stdout.close() stdout, stderr = p2.communicate() return p2.returncode, stderr def _rbd_diff_transfer(self, src_name, src_pool, dest_name, dest_pool, src_user, src_conf, dest_user, dest_conf, src_snap=None, from_snap=None): """Copy only extents changed between two points. If no snapshot is provided, the diff extents will be all those changed since the rbd volume/base was created, otherwise it will be those changed since the snapshot was created. """ LOG.debug(_("Performing differential transfer from '%(src)s' to " "'%(dest)s'") % {'src': src_name, 'dest': dest_name}) # NOTE(dosaboy): Need to be tolerant of clusters/clients that do # not support these operations since at the time of writing they # were very new. src_ceph_args = self._ceph_args(src_user, src_conf, pool=src_pool) dest_ceph_args = self._ceph_args(dest_user, dest_conf, pool=dest_pool) cmd1 = ['rbd', 'export-diff'] + src_ceph_args if from_snap is not None: cmd1.extend(['--from-snap', from_snap]) if src_snap: path = strutils.safe_encode("%s/%s@%s" % (src_pool, src_name, src_snap)) else: path = strutils.safe_encode("%s/%s" % (src_pool, src_name)) cmd1.extend([path, '-']) cmd2 = ['rbd', 'import-diff'] + dest_ceph_args rbd_path = strutils.safe_encode("%s/%s" % (dest_pool, dest_name)) cmd2.extend(['-', rbd_path]) ret, stderr = self._piped_execute(cmd1, cmd2) if ret: msg = (_("RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)") % ({'ret': ret, 'stderr': stderr})) LOG.info(msg) raise exception.BackupRBDOperationFailed(msg) def _rbd_image_exists(self, name, volume_id, client, try_diff_format=False): """Return tuple (exists, name).""" rbds = self.rbd.RBD().list(client.ioctx) if name not in rbds: msg = _("Image '%s' not found - trying diff format name") % (name) LOG.debug(msg) if try_diff_format: name = self._get_backup_base_name(volume_id, diff_format=True) if name not in rbds: msg = _("Diff format image '%s' not found") % (name) LOG.debug(msg) return False, name else: return False, name return True, name def _snap_exists(self, base_name, snap_name, client): """Return True if snapshot exists in base image.""" base_rbd = self.rbd.Image(client.ioctx, base_name, read_only=True) try: snaps = base_rbd.list_snaps() finally: base_rbd.close() if snaps is None: return False for snap in snaps: if snap['name'] == snap_name: return True return False def _backup_rbd(self, backup_id, volume_id, volume_file, volume_name, length): """Create a incremental backup from an RBD image.""" rbd_user = volume_file.rbd_user rbd_pool = volume_file.rbd_pool rbd_conf = volume_file.rbd_conf source_rbd_image = volume_file.rbd_image # Identify our --from-snap point (if one exists) from_snap = self._get_most_recent_snap(source_rbd_image) LOG.debug(_("Using --from-snap '%s'") % from_snap) base_name = self._get_backup_base_name(volume_id, diff_format=True) image_created = False with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: # If from_snap does not exist at the destination (and the # destination exists), this implies a previous backup has failed. # In this case we will force a full backup. # # TODO(dosaboy): find a way to repair the broken backup # if base_name not in self.rbd.RBD().list(ioctx=client.ioctx): # If a from_snap is defined but the base does not exist, we # ignore it since it is stale and waiting to be cleaned up. if from_snap: LOG.debug(_("Source snapshot '%s' is stale so deleting") % (from_snap)) source_rbd_image.remove_snap(from_snap) from_snap = None # Create new base image self._create_base_image(base_name, length, client) image_created = True else: # If a from_snap is defined but does not exist in the back base # then we cannot proceed (see above) if not self._snap_exists(base_name, from_snap, client): errmsg = (_("Snapshot='%(snap)s' does not exist in base " "image='%(base)s' - aborting incremental " "backup") % {'snap': from_snap, 'base': base_name}) LOG.info(errmsg) # Raise this exception so that caller can try another # approach raise exception.BackupRBDOperationFailed(errmsg) # Snapshot source volume so that we have a new point-in-time new_snap = self._get_new_snap_name(backup_id) LOG.debug(_("Creating backup snapshot='%s'") % (new_snap)) source_rbd_image.create_snap(new_snap) # Attempt differential backup. If this fails, perhaps because librbd # or Ceph cluster version does not support it, do a full backup # instead. # # TODO(dosaboy): find a way to determine if the operation is supported # rather than brute force approach. try: before = time.time() self._rbd_diff_transfer(volume_name, rbd_pool, base_name, self._ceph_backup_pool, src_user=rbd_user, src_conf=rbd_conf, dest_user=self._ceph_backup_user, dest_conf=self._ceph_backup_conf, src_snap=new_snap, from_snap=from_snap) LOG.debug(_("Differential backup transfer completed in %.4fs") % (time.time() - before)) # We don't need the previous snapshot (if there was one) anymore so # delete it. if from_snap: source_rbd_image.remove_snap(from_snap) except exception.BackupRBDOperationFailed: LOG.debug(_("Differential backup transfer failed")) # Clean up if image was created as part of this operation if image_created: self._try_delete_base_image(backup_id, volume_id, base_name=base_name) # Delete snapshot LOG.debug(_("Deleting backup snapshot='%s'") % (new_snap)) source_rbd_image.remove_snap(new_snap) # Re-raise the exception so that caller can try another approach raise def _file_is_rbd(self, volume_file): """Returns True if the volume_file is actually an RBD image.""" return hasattr(volume_file, 'rbd_image') def _full_backup(self, backup_id, volume_id, src_volume, src_name, length): """Perform a full backup of src volume. First creates a base backup image in our backup location then performs an chunked copy of all data from source volume to a new backup rbd image. """ backup_name = self._get_backup_base_name(volume_id, backup_id) with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: # First create base backup image old_format, features = self._get_rbd_support() LOG.debug(_("Creating base image='%s'") % (backup_name)) self.rbd.RBD().create(ioctx=client.ioctx, name=backup_name, size=length, old_format=old_format, features=features, stripe_unit=self.rbd_stripe_unit, stripe_count=self.rbd_stripe_count) LOG.debug(_("Copying data")) dest_rbd = self.rbd.Image(client.ioctx, backup_name) try: rbd_meta = rbd_driver.RBDImageMetadata(dest_rbd, self._ceph_backup_pool, self._ceph_backup_user, self._ceph_backup_conf) rbd_fd = rbd_driver.RBDImageIOWrapper(rbd_meta) self._transfer_data(src_volume, src_name, rbd_fd, backup_name, length) finally: dest_rbd.close() @staticmethod def backup_snapshot_name_pattern(): """Returns the pattern used to match backup snapshots. It is essential that snapshots created for purposes other than backups do not have this name format. """ return r"^backup\.([a-z0-9\-]+?)\.snap\.(.+)$" @classmethod def get_backup_snaps(cls, rbd_image, sort=False): """Get all backup snapshots for the given rbd image. NOTE: this call is made public since these snapshots must be deleted before the base volume can be deleted. """ snaps = rbd_image.list_snaps() backup_snaps = [] for snap in snaps: search_key = cls.backup_snapshot_name_pattern() result = re.search(search_key, snap['name']) if result: backup_snaps.append({'name': result.group(0), 'backup_id': result.group(1), 'timestamp': result.group(2)}) if sort: # Sort into ascending order of timestamp backup_snaps.sort(key=lambda x: x['timestamp'], reverse=True) return backup_snaps def _get_new_snap_name(self, backup_id): return strutils.safe_encode("backup.%s.snap.%s" % (backup_id, time.time())) def _get_backup_snap_name(self, rbd_image, name, backup_id): """Return the name of the snapshot associated with backup_id. The rbd image provided must be the base image used for an incremental backup. A backup is only allowed ONE associated snapshot. If more are found, exception.BackupOperationError is raised. """ snaps = self.get_backup_snaps(rbd_image) LOG.debug(_("Looking for snapshot of backup base '%s'") % (name)) if not snaps: LOG.debug(_("Backup base '%s' has no snapshots") % (name)) return None snaps = [snap['name'] for snap in snaps if snap['backup_id'] == backup_id] if not snaps: LOG.debug(_("Backup '%s' has no snapshot") % (backup_id)) return None if len(snaps) > 1: msg = (_("Backup should only have one snapshot but instead has %s") % (len(snaps))) LOG.error(msg) raise exception.BackupOperationError(msg) LOG.debug(_("Found snapshot '%s'") % (snaps[0])) return snaps[0] def _get_most_recent_snap(self, rbd_image): """Get the most recent backup snapshot of the provided image. Returns name of most recent backup snapshot or None if there are no backup snapshots. """ backup_snaps = self.get_backup_snaps(rbd_image, sort=True) if not backup_snaps: return None return backup_snaps[0]['name'] def _get_volume_size_gb(self, volume): """Return the size in gigabytes of the given volume. Raises exception.InvalidParameterValue if volume size is 0. """ if int(volume['size']) == 0: errmsg = _("Need non-zero volume size") raise exception.InvalidParameterValue(errmsg) return int(volume['size']) * units.GiB def _backup_metadata(self, backup): """Backup volume metadata. NOTE(dosaboy): the metadata we are backing up is obtained from a versioned api so we should not alter it in any way here. We must also be sure that the service that will perform the restore is compatible with version used. """ json_meta = self.get_metadata(backup['volume_id']) if not json_meta: LOG.debug("No volume metadata to backup") return LOG.debug("Backing up volume metadata") try: with rbd_driver.RADOSClient(self) as client: vol_meta_backup = VolumeMetadataBackup(client, backup['id']) vol_meta_backup.set(json_meta) except exception.VolumeMetadataBackupExists as e: msg = (_("Failed to backup volume metadata - %s") % (e)) raise exception.BackupOperationError(msg) def backup(self, backup, volume_file, backup_metadata=True): """Backup volume and metadata (if available) to Ceph object store. If the source volume is an RBD we will attempt to do an incremental/differential backup, otherwise a full copy is performed. If this fails we will attempt to fall back to full copy. """ backup_id = backup['id'] volume = self.db.volume_get(self.context, backup['volume_id']) volume_id = volume['id'] volume_name = volume['name'] LOG.debug(_("Starting backup of volume='%s'") % volume_name) # Ensure we are at the beginning of the volume volume_file.seek(0) length = self._get_volume_size_gb(volume) do_full_backup = False if self._file_is_rbd(volume_file): # If volume an RBD, attempt incremental backup. try: self._backup_rbd(backup_id, volume_id, volume_file, volume_name, length) except exception.BackupRBDOperationFailed: LOG.debug(_("Forcing full backup")) do_full_backup = True else: do_full_backup = True if do_full_backup: self._full_backup(backup_id, volume_id, volume_file, volume_name, length) self.db.backup_update(self.context, backup_id, {'container': self._ceph_backup_pool}) if backup_metadata: try: self._backup_metadata(backup) except exception.BackupOperationError: # Cleanup. self.delete(backup) raise LOG.debug(_("Backup '%s' finished.") % (backup_id)) def _full_restore(self, backup_id, volume_id, dest_file, dest_name, length, src_snap=None): """Restore volume using full copy i.e. all extents. This will result in all extents being copied from source to destination. """ with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: # If a source snapshot is provided we assume the base is diff # format. if src_snap: diff_format = True else: diff_format = False backup_name = self._get_backup_base_name(volume_id, backup_id=backup_id, diff_format=diff_format) # Retrieve backup volume src_rbd = self.rbd.Image(client.ioctx, backup_name, snapshot=src_snap, read_only=True) try: rbd_meta = rbd_driver.RBDImageMetadata(src_rbd, self._ceph_backup_pool, self._ceph_backup_user, self._ceph_backup_conf) rbd_fd = rbd_driver.RBDImageIOWrapper(rbd_meta) self._transfer_data(rbd_fd, backup_name, dest_file, dest_name, length) finally: src_rbd.close() def _check_restore_vol_size(self, backup_base, restore_vol, restore_length, src_pool): """Ensure that the restore volume is the correct size. If the restore volume was bigger than the backup, the diff restore will shrink it to the size of the original backup so we need to post-process and resize it back to its expected size. """ with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: adjust_size = 0 base_image = self.rbd.Image(client.ioctx, strutils.safe_encode(backup_base), read_only=True) try: if restore_length != base_image.size(): adjust_size = restore_length finally: base_image.close() if adjust_size: with rbd_driver.RADOSClient(self, src_pool) as client: dest_image = self.rbd.Image(client.ioctx, strutils.safe_encode(restore_vol)) try: LOG.debug(_("Adjusting restore vol size")) dest_image.resize(adjust_size) finally: dest_image.close() def _diff_restore_rbd(self, base_name, restore_file, restore_name, restore_point, restore_length): """Attempt restore rbd volume from backup using diff transfer.""" rbd_user = restore_file.rbd_user rbd_pool = restore_file.rbd_pool rbd_conf = restore_file.rbd_conf LOG.debug(_("Attempting incremental restore from base='%(base)s' " "snap='%(snap)s'") % {'base': base_name, 'snap': restore_point}) before = time.time() try: self._rbd_diff_transfer(base_name, self._ceph_backup_pool, restore_name, rbd_pool, src_user=self._ceph_backup_user, src_conf=self._ceph_backup_conf, dest_user=rbd_user, dest_conf=rbd_conf, src_snap=restore_point) except exception.BackupRBDOperationFailed: LOG.exception(_("Differential restore failed, trying full " "restore")) raise # If the volume we are restoring to is larger than the backup volume, # we will need to resize it after the diff import since import-diff # appears to shrink the target rbd volume to the size of the original # backup volume. self._check_restore_vol_size(base_name, restore_name, restore_length, rbd_pool) LOG.debug(_("Restore transfer completed in %.4fs") % (time.time() - before)) def _num_backup_snaps(self, backup_base_name): """Return the number of snapshots that exist on the base image.""" with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: base_rbd = self.rbd.Image(client.ioctx, backup_base_name, read_only=True) try: snaps = self.get_backup_snaps(base_rbd) finally: base_rbd.close() if snaps: return len(snaps) else: return 0 def _get_restore_point(self, base_name, backup_id): """Get restore point snapshot name for incremental backup. If the backup was not incremental (determined by the fact that the base has no snapshots/restore points), None is returned. Otherwise, the restore point associated with backup_id is returned. """ with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: base_rbd = self.rbd.Image(client.ioctx, base_name, read_only=True) try: restore_point = self._get_backup_snap_name(base_rbd, base_name, backup_id) finally: base_rbd.close() return restore_point def _rbd_has_extents(self, rbd_volume): """Check whether the given rbd volume has extents. Return True if has extents, otherwise False. """ extents = [] def iter_cb(offset, length, exists): if exists: extents.append(length) rbd_volume.diff_iterate(0, rbd_volume.size(), None, iter_cb) if extents: LOG.debug(_("RBD has %s extents") % (sum(extents))) return True return False def _diff_restore_allowed(self, base_name, backup, volume, volume_file, rados_client): """Determine whether a differential restore is possible/allowed. In order for a differential restore to be performed we need: * destination volume must be RBD * destination volume must have zero extents * backup base image must exist * backup must have a restore point Returns True if differential restore is allowed, False otherwise. """ not_allowed = (False, None) if self._file_is_rbd(volume_file): # NOTE(dosaboy): base_name here must be diff format. rbd_exists, base_name = self._rbd_image_exists(base_name, backup['volume_id'], rados_client) if not rbd_exists: return not_allowed # Get the restore point. If no restore point is found, we assume # that the backup was not performed using diff/incremental methods # so we enforce full copy. restore_point = self._get_restore_point(base_name, backup['id']) # If the volume we are restoring to is the volume the backup was # made from, force a full restore since a diff will not work in # this case. if volume['id'] == backup['volume_id']: msg = _("Destination volume is same as backup source volume - " "forcing full copy") LOG.debug(msg) return False, restore_point if restore_point: # If the destination volume has extents we cannot allow a diff # restore. if self._rbd_has_extents(volume_file.rbd_image): # We return the restore point so that a full copy is done # from snapshot. LOG.debug(_("Destination has extents - forcing full copy")) return False, restore_point return True, restore_point else: LOG.info(_("No restore point found for backup='%s', forcing " "full copy") % (backup['id'])) return not_allowed def _restore_volume(self, backup, volume, volume_file): """Restore volume from backup using diff transfer if possible. Attempts a differential restore and reverts to full copy if diff fails. """ volume_name = volume['name'] backup_id = backup['id'] backup_volume_id = backup['volume_id'] length = int(volume['size']) * units.GiB base_name = self._get_backup_base_name(backup['volume_id'], diff_format=True) with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client: diff_allowed, restore_point = \ self._diff_restore_allowed(base_name, backup, volume, volume_file, client) do_full_restore = True if diff_allowed: # Attempt diff try: self._diff_restore_rbd(base_name, volume_file, volume_name, restore_point, length) do_full_restore = False except exception.BackupRBDOperationFailed: LOG.debug(_("Forcing full restore")) if do_full_restore: # Otherwise full copy self._full_restore(backup_id, backup_volume_id, volume_file, volume_name, length, src_snap=restore_point) def _restore_metadata(self, backup, volume_id): """Restore volume metadata from backup. If this backup has associated metadata, save it to the restore target otherwise do nothing. """ try: with rbd_driver.RADOSClient(self) as client: meta_bak = VolumeMetadataBackup(client, backup['id']) meta = meta_bak.get() if meta is not None: self.put_metadata(volume_id, meta) else: LOG.debug(_("Volume has no backed up metadata")) except exception.BackupMetadataUnsupportedVersion: msg = _("Metadata restore failed due to incompatible version") LOG.error(msg) raise exception.BackupOperationError(msg) def restore(self, backup, volume_id, volume_file): """Restore volume from backup in Ceph object store. If volume metadata is available this will also be restored. """ target_volume = self.db.volume_get(self.context, volume_id) LOG.debug(_('Starting restore from Ceph backup=%(src)s to ' 'volume=%(dest)s') % {'src': backup['id'], 'dest': target_volume['name']}) try: self._restore_volume(backup, target_volume, volume_file) # Be tolerant of IO implementations that do not support fileno() try: fileno = volume_file.fileno() except IOError: LOG.debug(_("Volume_file does not support fileno() so " "skipping fsync()")) else: os.fsync(fileno) self._restore_metadata(backup, volume_id) LOG.debug(_('Restore finished successfully.')) except exception.BackupOperationError as e: LOG.error(_('Restore finished with error - %s') % (e)) raise def delete(self, backup): """Delete the given backup from Ceph object store.""" backup_id = backup['id'] LOG.debug(_('Delete started for backup=%s') % backup['id']) delete_failed = False try: self._try_delete_base_image(backup['id'], backup['volume_id']) except self.rbd.ImageNotFound: msg = _("RBD image not found but continuing anyway so that we can " "attempt to delete metadata backup and db entry can be " "removed") LOG.warning(msg) delete_failed = True with rbd_driver.RADOSClient(self) as client: VolumeMetadataBackup(client, backup['id']).remove_if_exists() if delete_failed: LOG.info(_("Delete '%s' finished with warning") % (backup_id)) else: LOG.debug(_("Delete '%s' finished") % (backup_id)) def get_backup_driver(context): return CephBackupDriver(context) cinder-2014.1.5/cinder/db/0000775000567000056700000000000012540643114016201 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/base.py0000664000567000056700000000250012540642606017467 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Base class for classes that need modular database access.""" from oslo.config import cfg from cinder.openstack.common import importutils db_driver_opt = cfg.StrOpt('db_driver', default='cinder.db', help='driver to use for database access') CONF = cfg.CONF CONF.register_opt(db_driver_opt) class Base(object): """DB driver is injected in the init method.""" def __init__(self, db_driver=None): if not db_driver: db_driver = CONF.db_driver self.db = importutils.import_module(db_driver) # pylint: disable=C0103 cinder-2014.1.5/cinder/db/sqlalchemy/0000775000567000056700000000000012540643114020343 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/0000775000567000056700000000000012540643114023020 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/migrate.cfg0000664000567000056700000000173512540642603025141 0ustar jenkinsjenkins00000000000000[db_settings] # Used to identify which repository this database is versioned under. # You can use the name of your project. repository_id=cinder # The name of the database table used to track the schema version. # This name shouldn't already be used by your project. # If this is changed once a database is under version control, you'll need to # change the table name in each database too. version_table=migrate_version # When committing a change script, Migrate will attempt to generate the # sql for all supported databases; normally, if one of them fails - probably # because you don't have that database installed - it is ignored and the # commit continues, perhaps ending successfully. # Databases in this list MUST compile successfully during a commit, or the # entire commit will fail. List the databases your application will actually # be using to ensure your updates to that database work properly. # This must be a list; example: ['postgres','sqlite'] required_dbs=[] cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/0000775000567000056700000000000012540643114024670 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/013_sqlite_downgrade.sql0000664000567000056700000000301612540642606031334 0ustar jenkinsjenkins00000000000000BEGIN TRANSACTION; CREATE TABLE volumes_v12 ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, ec2_id INTEGER, user_id VARCHAR(255), project_id VARCHAR(255), snapshot_id VARCHAR(36), host VARCHAR(255), size INTEGER, availability_zone VARCHAR(255), instance_uuid VARCHAR(36), mountpoint VARCHAR(255), attach_time VARCHAR(255), status VARCHAR(255), attach_status VARCHAR(255), scheduled_at DATETIME, launched_at DATETIME, terminated_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(255), provider_auth VARCHAR(255), volume_type_id VARCHAR(36), source_volid VARCHAR(36), bootable BOOLEAN, attached_host VARCHAR(255), PRIMARY KEY (id) ); INSERT INTO volumes_v12 SELECT created_at, updated_at, deleted_at, deleted, id, ec2_id, user_id, project_id, snapshot_id, host, size, availability_zone, instance_uuid, mountpoint, attach_time, status, attach_status, scheduled_at, launched_at, terminated_at, display_name, display_description, provider_location, provider_auth, volume_type_id, source_volid, bootable, attached_host FROM volumes; DROP TABLE volumes; ALTER TABLE volumes_v12 RENAME TO volumes; COMMIT; cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py0000664000567000056700000001365212540642606030155 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from migrate import ForeignKeyConstraint from sqlalchemy import Boolean, Column, DateTime from sqlalchemy import MetaData, Integer, String, Table, ForeignKey from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine # New table quota_classes = Table('quota_classes', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', Integer(), primary_key=True), Column('class_name', String(length=255), index=True), Column('resource', String(length=255)), Column('hard_limit', Integer(), nullable=True), mysql_engine='InnoDB', mysql_charset='utf8', ) try: quota_classes.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(quota_classes)) raise quota_usages = Table('quota_usages', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', Integer(), primary_key=True), Column('project_id', String(length=255), index=True), Column('resource', String(length=255)), Column('in_use', Integer(), nullable=False), Column('reserved', Integer(), nullable=False), Column('until_refresh', Integer(), nullable=True), mysql_engine='InnoDB', mysql_charset='utf8', ) try: quota_usages.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(quota_usages)) raise reservations = Table('reservations', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', Integer(), primary_key=True), Column('uuid', String(length=36), nullable=False), Column('usage_id', Integer(), ForeignKey('quota_usages.id'), nullable=False), Column('project_id', String(length=255), index=True), Column('resource', String(length=255)), Column('delta', Integer(), nullable=False), Column('expire', DateTime(timezone=False)), mysql_engine='InnoDB', mysql_charset='utf8', ) try: reservations.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(reservations)) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine if migrate_engine.name == 'mysql': # NOTE(jsbryant): MySQL Cannot drop the quota_usages table # until the foreign key reservations_ibfk_1 is removed. We # remove the foreign key first, and then we drop the table. table = Table('reservations', meta, autoload=True) ref_table = Table('reservations', meta, autoload=True) params = {'columns': [table.c['usage_id']], 'refcolumns': [ref_table.c['id']], 'name': 'reservations_ibfk_1'} try: fkey = ForeignKeyConstraint(**params) fkey.drop() except Exception: LOG.error(_("Dropping foreign key reservations_ibfk_1 failed.")) quota_classes = Table('quota_classes', meta, autoload=True) try: quota_classes.drop() except Exception: LOG.error(_("quota_classes table not dropped")) raise quota_usages = Table('quota_usages', meta, autoload=True) try: quota_usages.drop() except Exception: LOG.error(_("quota_usages table not dropped")) raise reservations = Table('reservations', meta, autoload=True) try: reservations.drop() except Exception: LOG.error(_("reservations table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/019_add_migration_status.py0000664000567000056700000000233712540642603032046 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. from sqlalchemy import String, Column, MetaData, Table def upgrade(migrate_engine): """Add migration_status column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) migration_status = Column('migration_status', String(255)) volumes.create_column(migration_status) def downgrade(migrate_engine): """Remove migration_status column from volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) migration_status = volumes.columns.migration_status volumes.drop_column(migration_status) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py0000664000567000056700000000613612540642606032471 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import datetime from cinder.openstack.common import log as logging from oslo.config import cfg from sqlalchemy import MetaData, Table # Get default values via config. The defaults will either # come from the default values set in the quota option # configuration or via cinder.conf if the user has configured # default values for quotas there. CONF = cfg.CONF CONF.import_opt('quota_volumes', 'cinder.quota') CONF.import_opt('quota_snapshots', 'cinder.quota') CONF.import_opt('quota_gigabytes', 'cinder.quota') LOG = logging.getLogger(__name__) CLASS_NAME = 'default' CREATED_AT = datetime.datetime.now() def upgrade(migrate_engine): """Add default quota class data into DB.""" meta = MetaData() meta.bind = migrate_engine quota_classes = Table('quota_classes', meta, autoload=True) rows = quota_classes.count().\ where(quota_classes.c.class_name == 'default').execute().scalar() # Do not add entries if there are already 'default' entries. We don't # want to write over something the user added. if rows: LOG.info(_("Found existing 'default' entries in the quota_classes " "table. Skipping insertion of default values.")) return try: #Set default volumes qci = quota_classes.insert() qci.execute({'created_at': CREATED_AT, 'class_name': CLASS_NAME, 'resource': 'volumes', 'hard_limit': CONF.quota_volumes, 'deleted': False, }) #Set default snapshots qci.execute({'created_at': CREATED_AT, 'class_name': CLASS_NAME, 'resource': 'snapshots', 'hard_limit': CONF.quota_snapshots, 'deleted': False, }) #Set default gigabytes qci.execute({'created_at': CREATED_AT, 'class_name': CLASS_NAME, 'resource': 'gigabytes', 'hard_limit': CONF.quota_gigabytes, 'deleted': False, }) LOG.info(_("Added default quota class data into the DB.")) except Exception: LOG.error(_("Default quota class data not inserted into the DB.")) raise def downgrade(migrate_engine): """Don't delete the 'default' entries at downgrade time. We don't know if the user had default entries when we started. If they did, we wouldn't want to remove them. So, the safest thing to do is just leave the 'default' entries at downgrade time. """ pass cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/014_sqlite_downgrade.sql0000664000567000056700000000311512540642606031335 0ustar jenkinsjenkins00000000000000BEGIN TRANSACTION; CREATE TABLE volumes_v13 ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, ec2_id INTEGER, user_id VARCHAR(255), project_id VARCHAR(255), snapshot_id VARCHAR(36), host VARCHAR(255), size INTEGER, availability_zone VARCHAR(255), instance_uuid VARCHAR(36), attached_host VARCHAR(255), mountpoint VARCHAR(255), attach_time VARCHAR(255), status VARCHAR(255), attach_status VARCHAR(255), scheduled_at DATETIME, launched_at DATETIME, terminated_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(255), provider_auth VARCHAR(255), volume_type_id VARCHAR(36), source_volid VARCHAR(36), bootable BOOLEAN, provider_geometry VARCHAR(255), PRIMARY KEY (id) ); INSERT INTO volumes_v13 SELECT created_at, updated_at, deleted_at, deleted, id, ec2_id, user_id, project_id, snapshot_id, host, size, availability_zone, instance_uuid, attached_host, mountpoint, attach_time, status, attach_status, scheduled_at, launched_at, terminated_at, display_name, display_description, provider_location, provider_auth, volume_type_id, source_volid, bootable, provider_geometry FROM volumes; DROP TABLE volumes; ALTER TABLE volumes_v13 RENAME TO volumes; COMMIT; cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/007_add_volume_snapshot_fk.py0000664000567000056700000000240512540642603032351 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import MetaData, Table from migrate.changeset.constraint import ForeignKeyConstraint def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine snapshots = Table('snapshots', meta, autoload=True) volumes = Table('volumes', meta, autoload=True) ForeignKeyConstraint( columns=[snapshots.c.volume_id], refcolumns=[volumes.c.id]).create() def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine snapshots = Table('snapshots', meta, autoload=True) volumes = Table('volumes', meta, autoload=True) ForeignKeyConstraint( columns=[snapshots.c.volume_id], refcolumns=[volumes.c.id]).drop() cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py0000664000567000056700000000373312540642606032211 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Boolean, Column, DateTime, Integer from sqlalchemy import MetaData, String, Table from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) TABLE_NAME = 'migrations' def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine table = Table(TABLE_NAME, meta, autoload=True) try: table.drop() except Exception: LOG.error(_("migrations table not dropped")) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine table = Table( TABLE_NAME, meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('source_compute', String(length=255)), Column('dest_compute', String(length=255)), Column('dest_host', String(length=255)), Column('old_instance_type_id', Integer), Column('new_instance_type_id', Integer), Column('instance_uuid', String(length=255), nullable=True), Column('status', String(length=255)), mysql_engine='InnoDB', mysql_charset='utf8' ) try: table.create() except Exception: LOG.error(_("Table |%s| not created"), repr(table)) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/004_volume_type_to_uuid.py0000664000567000056700000001241012540642606031730 0ustar jenkinsjenkins00000000000000# 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. import uuid from cinder.openstack.common import log as logging from migrate import ForeignKeyConstraint from sqlalchemy import Integer, MetaData, String, Table LOG = logging.getLogger(__name__) def upgrade(migrate_engine): """Convert volume_type_id to UUID.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) volume_types = Table('volume_types', meta, autoload=True) extra_specs = Table('volume_type_extra_specs', meta, autoload=True) fkey_remove_list = [volumes.c.volume_type_id, volume_types.c.id, extra_specs.c.volume_type_id] for column in fkey_remove_list: fkeys = list(column.foreign_keys) if fkeys: fkey_name = fkeys[0].constraint.name fkey = ForeignKeyConstraint(columns=[column], refcolumns=[volume_types.c.id], name=fkey_name) try: fkey.drop() except Exception: if migrate_engine.url.get_dialect().name.startswith('sqlite'): pass else: raise volumes.c.volume_type_id.alter(String(36)) volume_types.c.id.alter(String(36)) extra_specs.c.volume_type_id.alter(String(36)) vtype_list = list(volume_types.select().execute()) for t in vtype_list: new_id = str(uuid.uuid4()) volumes.update().\ where(volumes.c.volume_type_id == t['id']).\ values(volume_type_id=new_id).execute() extra_specs.update().\ where(extra_specs.c.volume_type_id == t['id']).\ values(volume_type_id=new_id).execute() volume_types.update().\ where(volume_types.c.id == t['id']).\ values(id=new_id).execute() for column in fkey_remove_list: fkeys = list(column.foreign_keys) if fkeys: fkey_name = fkeys[0].constraint.name fkey = ForeignKeyConstraint(columns=[column], refcolumns=[volume_types.c.id], name=fkey_name) try: fkey.create() LOG.info('Created foreign key %s' % fkey_name) except Exception: if migrate_engine.url.get_dialect().name.startswith('sqlite'): pass else: raise def downgrade(migrate_engine): """Convert volume_type from UUID back to int.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) volume_types = Table('volume_types', meta, autoload=True) extra_specs = Table('volume_type_extra_specs', meta, autoload=True) fkey_remove_list = [volumes.c.volume_type_id, volume_types.c.id, extra_specs.c.volume_type_id] for column in fkey_remove_list: fkeys = list(column.foreign_keys) if fkeys: fkey_name = fkeys[0].constraint.name fkey = ForeignKeyConstraint(columns=[column], refcolumns=[volume_types.c.id], name=fkey_name) try: fkey.drop() except Exception: if migrate_engine.url.get_dialect().name.startswith('sqlite'): pass else: raise vtype_list = list(volume_types.select().execute()) new_id = 1 for t in vtype_list: volumes.update().\ where(volumes.c.volume_type_id == t['id']).\ values(volume_type_id=new_id).execute() extra_specs.update().\ where(extra_specs.c.volume_type_id == t['id']).\ values(volume_type_id=new_id).execute() volume_types.update().\ where(volume_types.c.id == t['id']).\ values(id=new_id).execute() new_id += 1 volumes.c.volume_type_id.alter(Integer) volume_types.c.id.alter(Integer) extra_specs.c.volume_type_id.alter(Integer) for column in fkey_remove_list: fkeys = list(column.foreign_keys) if fkeys: fkey_name = fkeys[0].constraint.name fkey = ForeignKeyConstraint(columns=[column], refcolumns=[volume_types.c.id], name=fkey_name) try: fkey.create() LOG.info('Created foreign key %s' % fkey_name) except Exception: if migrate_engine.url.get_dialect().name.startswith('sqlite'): pass else: raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/011_add_bootable_column.py0000664000567000056700000000300112540642606031576 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Boolean, Column, MetaData, Table def upgrade(migrate_engine): """Add bootable column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) bootable = Column('bootable', Boolean) volumes.create_column(bootable) volumes.update().values(bootable=False).execute() glance_metadata = Table('volume_glance_metadata', meta, autoload=True) glance_items = list(glance_metadata.select().execute()) for item in glance_items: volumes.update().\ where(volumes.c.id == item['volume_id']).\ values(bootable=True).execute() def downgrade(migrate_engine): """Remove bootable column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) bootable = volumes.columns.bootable #bootable = Column('bootable', Boolean) volumes.drop_column(bootable) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/014_add_name_id.py0000664000567000056700000000226312540642603030037 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import String, Column, MetaData, Table def upgrade(migrate_engine): """Add _name_id column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) _name_id = Column('_name_id', String(36)) volumes.create_column(_name_id) volumes.update().values(_name_id=None).execute() def downgrade(migrate_engine): """Remove _name_id column from volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) _name_id = volumes.columns._name_id volumes.drop_column(_name_id) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py0000664000567000056700000000677212540642606030462 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 eBay Inc. # Copyright (C) 2013 OpenStack Foundation # All Rights Reserved. # # 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. from sqlalchemy import Boolean, Column, DateTime from sqlalchemy import ForeignKey, MetaData, String, Table from migrate import ForeignKeyConstraint from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): """Add volume_type_rate_limit table.""" meta = MetaData() meta.bind = migrate_engine quality_of_service_specs = Table( 'quality_of_service_specs', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', String(36), primary_key=True, nullable=False), Column('specs_id', String(36), ForeignKey('quality_of_service_specs.id')), Column('key', String(255)), Column('value', String(255)), mysql_engine='InnoDB', mysql_charset='utf8' ) try: quality_of_service_specs.create() except Exception: LOG.error(_("Table quality_of_service_specs not created!")) raise volume_types = Table('volume_types', meta, autoload=True) qos_specs_id = Column('qos_specs_id', String(36), ForeignKey('quality_of_service_specs.id')) try: volume_types.create_column(qos_specs_id) volume_types.update().values(qos_specs_id=None).execute() except Exception: LOG.error(_("Added qos_specs_id column to volume type table failed.")) raise def downgrade(migrate_engine): """Remove volume_type_rate_limit table.""" meta = MetaData() meta.bind = migrate_engine qos_specs = Table('quality_of_service_specs', meta, autoload=True) if migrate_engine.name == 'mysql': # NOTE(alanmeadows): MySQL Cannot drop column qos_specs_id # until the foreign key volumes_types_ibfk_1 is removed. We # remove the foreign key first, and then we drop the column. table = Table('volume_types', meta, autoload=True) ref_table = Table('volume_types', meta, autoload=True) params = {'columns': [table.c['qos_specs_id']], 'refcolumns': [ref_table.c['id']], 'name': 'volume_types_ibfk_1'} try: fkey = ForeignKeyConstraint(**params) fkey.drop() except Exception: LOG.error(_("Dropping foreign key volume_types_ibfk_1 failed")) volume_types = Table('volume_types', meta, autoload=True) qos_specs_id = Column('qos_specs_id', String(36)) try: volume_types.drop_column(qos_specs_id) except Exception: LOG.error(_("Dropping qos_specs_id column failed.")) raise try: qos_specs.drop() except Exception: LOG.error(_("Dropping quality_of_service_specs table failed.")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py0000664000567000056700000000457312540642606027724 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. from sqlalchemy import Boolean, Column, DateTime from sqlalchemy import MetaData, Integer, String, Table from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine # New table backups = Table( 'backups', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', String(36), primary_key=True, nullable=False), Column('volume_id', String(36), nullable=False), Column('user_id', String(length=255)), Column('project_id', String(length=255)), Column('host', String(length=255)), Column('availability_zone', String(length=255)), Column('display_name', String(length=255)), Column('display_description', String(length=255)), Column('container', String(length=255)), Column('status', String(length=255)), Column('fail_reason', String(length=255)), Column('service_metadata', String(length=255)), Column('service', String(length=255)), Column('size', Integer()), Column('object_count', Integer()), mysql_engine='InnoDB' ) try: backups.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(backups)) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine backups = Table('backups', meta, autoload=True) try: backups.drop() except Exception: LOG.error(_("backups table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/012_add_attach_host_column.py0000664000567000056700000000237112540642603032317 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Column from sqlalchemy import MetaData, String, Table def upgrade(migrate_engine): """Add attach host column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) attached_host = Column('attached_host', String(255)) volumes.create_column(attached_host) volumes.update().values(attached_host=None).execute() def downgrade(migrate_engine): """Remove attach host column from volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) attached_host = Column('attached_host', String(255)) volumes.drop_column(attached_host) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/013_add_provider_geometry_column.py0000664000567000056700000000244112540642603033562 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Column from sqlalchemy import MetaData, String, Table def upgrade(migrate_engine): """Add provider_geometry column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) provider_geometry = Column('provider_geometry', String(255)) volumes.create_column(provider_geometry) volumes.update().values(provider_geometry=None).execute() def downgrade(migrate_engine): """Remove provider_geometry column from volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) provider_geometry = Column('provider_geometry', String(255)) volumes.drop_column(provider_geometry) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/007_sqlite_downgrade.sql0000664000567000056700000000140412540642606031336 0ustar jenkinsjenkins00000000000000-- As sqlite does not support the DROP FOREIGN KEY, we need to create -- the table, and move all the data to it. BEGIN TRANSACTION; CREATE TABLE snapshots_v6 ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, volume_id VARCHAR(36) NOT NULL, user_id VARCHAR(255), project_id VARCHAR(255), status VARCHAR(255), progress VARCHAR(255), volume_size INTEGER, scheduled_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(255), PRIMARY KEY (id), CHECK (deleted IN (0, 1)) ); INSERT INTO snapshots_v6 SELECT * FROM snapshots; DROP TABLE snapshots; ALTER TABLE snapshots_v6 RENAME TO snapshots; COMMIT; cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py0000664000567000056700000000645212540642606030641 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # 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. from sqlalchemy import Boolean, Column, DateTime, ForeignKey from sqlalchemy import Integer, MetaData, String, Table from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine sm_backend_config = Table('sm_backend_config', meta, autoload=True) sm_flavors = Table('sm_flavors', meta, autoload=True) sm_volume = Table('sm_volume', meta, autoload=True) tables = [sm_volume, sm_backend_config, sm_flavors] for table in tables: try: table.drop() except Exception: LOG.exception(_('Exception while dropping table %s.'), repr(table)) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine Table('volumes', meta, autoload=True) sm_backend_config = Table( 'sm_backend_config', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('flavor_id', Integer, ForeignKey('sm_flavors.id'), nullable=False), Column('sr_uuid', String(length=255)), Column('sr_type', String(length=255)), Column('config_params', String(length=2047)), mysql_engine='InnoDB', mysql_charset='utf8' ) sm_flavors = Table( 'sm_flavors', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('label', String(length=255)), Column('description', String(length=255)), mysql_engine='InnoDB', mysql_charset='utf8' ) sm_volume = Table( 'sm_volume', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', String(length=36), ForeignKey('volumes.id'), primary_key=True, nullable=False), Column('backend_id', Integer, ForeignKey('sm_backend_config.id'), nullable=False), Column('vdi_uuid', String(length=255)), mysql_engine='InnoDB', mysql_charset='utf8' ) tables = [sm_flavors, sm_backend_config, sm_volume] for table in tables: try: table.create() except Exception: LOG.exception(_('Exception while creating table %s.'), repr(table)) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py0000664000567000056700000000401712540642606031617 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Boolean, Column, DateTime from sqlalchemy import MetaData, String, Table, ForeignKey from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) # New table transfers = Table( 'transfers', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean), Column('id', String(36), primary_key=True, nullable=False), Column('volume_id', String(length=36), ForeignKey('volumes.id'), nullable=False), Column('display_name', String(length=255)), Column('salt', String(length=255)), Column('crypt_hash', String(length=255)), Column('expires_at', DateTime(timezone=False)), mysql_engine='InnoDB', mysql_charset='utf8' ) try: transfers.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(transfers)) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine transfers = Table('transfers', meta, autoload=True) try: transfers.drop() except Exception: LOG.error(_("transfers table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/__init__.py0000664000567000056700000000000012540642603026771 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/012_sqlite_downgrade.sql0000664000567000056700000000272712540642606031343 0ustar jenkinsjenkins00000000000000BEGIN TRANSACTION; CREATE TABLE volumes_v11 ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, ec2_id INTEGER, user_id VARCHAR(255), project_id VARCHAR(255), snapshot_id VARCHAR(36), host VARCHAR(255), size INTEGER, availability_zone VARCHAR(255), instance_uuid VARCHAR(36), mountpoint VARCHAR(255), attach_time VARCHAR(255), status VARCHAR(255), attach_status VARCHAR(255), scheduled_at DATETIME, launched_at DATETIME, terminated_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(255), provider_auth VARCHAR(255), volume_type_id VARCHAR(36), source_volid VARCHAR(36), bootable BOOLEAN, PRIMARY KEY (id) ); INSERT INTO volumes_v11 SELECT created_at, updated_at, deleted_at, deleted, id, ec2_id, user_id, project_id, snapshot_id, host, size, availability_zone, instance_uuid, mountpoint, attach_time, status, attach_status, scheduled_at, launched_at, terminated_at, display_name, display_description, provider_location, provider_auth, volume_type_id, source_volid, bootable FROM volumes; DROP TABLE volumes; ALTER TABLE volumes_v11 RENAME TO volumes; COMMIT; cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/005_add_source_volume_column.py0000664000567000056700000000251712540642606032714 0ustar jenkinsjenkins00000000000000# 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. from cinder.openstack.common import log as logging from sqlalchemy import Column from sqlalchemy import MetaData, String, Table LOG = logging.getLogger(__name__) def upgrade(migrate_engine): """Add source volume id column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) source_volid = Column('source_volid', String(36)) volumes.create_column(source_volid) volumes.update().values(source_volid=None).execute() def downgrade(migrate_engine): """Remove source volume id column to volumes.""" meta = MetaData() meta.bind = migrate_engine volumes = Table('volumes', meta, autoload=True) source_volid = Column('source_volid', String(36)) volumes.drop_column(source_volid) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/005_sqlite_downgrade.sql0000664000567000056700000000557312540642606031347 0ustar jenkinsjenkins00000000000000BEGIN TRANSACTION; CREATE TEMPORARY TABLE volumes_backup ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, ec2_id VARCHAR(255), user_id VARCHAR(255), project_id VARCHAR(255), host VARCHAR(255), size INTEGER, availability_zone VARCHAR(255), instance_uuid VARCHAR(36), mountpoint VARCHAR(255), attach_time VARCHAR(255), status VARCHAR(255), attach_status VARCHAR(255), scheduled_at DATETIME, launched_at DATETIME, terminated_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(256), provider_auth VARCHAR(256), snapshot_id VARCHAR(36), volume_type_id VARCHAR(36), source_volid VARCHAR(36), PRIMARY KEY (id), CHECK (deleted IN (0, 1)) ); INSERT INTO volumes_backup SELECT created_at, updated_at, deleted_at, deleted, id, ec2_id, user_id, project_id, host, size, availability_zone, instance_uuid, mountpoint, attach_time, status, attach_status, scheduled_at, launched_at, terminated_at, display_name, display_description, provider_location, provider_auth, snapshot_id, volume_type_id, source_volid FROM volumes; DROP TABLE volumes; CREATE TABLE volumes ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, ec2_id VARCHAR(255), user_id VARCHAR(255), project_id VARCHAR(255), host VARCHAR(255), size INTEGER, availability_zone VARCHAR(255), instance_uuid VARCHAR(36), mountpoint VARCHAR(255), attach_time VARCHAR(255), status VARCHAR(255), attach_status VARCHAR(255), scheduled_at DATETIME, launched_at DATETIME, terminated_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(256), provider_auth VARCHAR(256), snapshot_id VARCHAR(36), volume_type_id VARCHAR(36), PRIMARY KEY (id), CHECK (deleted IN (0, 1)) ); INSERT INTO volumes SELECT created_at, updated_at, deleted_at, deleted, id, ec2_id, user_id, project_id, host, size, availability_zone, instance_uuid, mountpoint, attach_time, status, attach_status, scheduled_at, launched_at, terminated_at, display_name, display_description, provider_location, provider_auth, snapshot_id, volume_type_id FROM volumes_backup; DROP TABLE volumes_backup; COMMIT; cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py0000664000567000056700000000365512540642606033326 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Boolean, Column, DateTime from sqlalchemy import Integer, MetaData, String, Table, ForeignKey from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine snapshots = Table('snapshots', meta, autoload=True) # New table snapshot_metadata = Table( 'snapshot_metadata', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('snapshot_id', String(length=36), ForeignKey('snapshots.id'), nullable=False), Column('key', String(length=255)), Column('value', String(length=255)), mysql_engine='InnoDB' ) try: snapshot_metadata.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(snapshot_metadata)) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine snapshot_metadata = Table('snapshot_metadata', meta, autoload=True) try: snapshot_metadata.drop() except Exception: LOG.error(_("snapshot_metadata table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/011_sqlite_downgrade.sql0000664000567000056700000000265712540642606031344 0ustar jenkinsjenkins00000000000000BEGIN TRANSACTION; CREATE TABLE volumes_v10 ( created_at DATETIME, updated_at DATETIME, deleted_at DATETIME, deleted BOOLEAN, id VARCHAR(36) NOT NULL, ec2_id INTEGER, user_id VARCHAR(255), project_id VARCHAR(255), snapshot_id VARCHAR(36), host VARCHAR(255), size INTEGER, availability_zone VARCHAR(255), instance_uuid VARCHAR(36), mountpoint VARCHAR(255), attach_time VARCHAR(255), status VARCHAR(255), attach_status VARCHAR(255), scheduled_at DATETIME, launched_at DATETIME, terminated_at DATETIME, display_name VARCHAR(255), display_description VARCHAR(255), provider_location VARCHAR(255), provider_auth VARCHAR(255), volume_type_id VARCHAR(36), source_volid VARCHAR(36), PRIMARY KEY (id) ); INSERT INTO volumes_v10 SELECT created_at, updated_at, deleted_at, deleted, id, ec2_id, user_id, project_id, snapshot_id, host, size, availability_zone, instance_uuid, mountpoint, attach_time, status, attach_status, scheduled_at, launched_at, terminated_at, display_name, display_description, provider_location, provider_auth, volume_type_id, source_volid FROM volumes; DROP TABLE volumes; ALTER TABLE volumes_v10 RENAME TO volumes; COMMIT; cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py0000664000567000056700000000526612540642606030733 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from sqlalchemy import Column, DateTime, Text, Boolean from sqlalchemy import MetaData, Integer, String, Table, ForeignKey from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine # Just for the ForeignKey and column creation to succeed, these are not the # actual definitions of tables . # volumes = Table('volumes', meta, Column('id', Integer(), primary_key=True, nullable=False), mysql_engine='InnoDB') snapshots = Table('snapshots', meta, Column('id', Integer(), primary_key=True, nullable=False), mysql_engine='InnoDB') # Create new table volume_glance_metadata = Table( 'volume_glance_metadata', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', Integer(), primary_key=True, nullable=False), Column('volume_id', String(length=36), ForeignKey('volumes.id')), Column('snapshot_id', String(length=36), ForeignKey('snapshots.id')), Column('key', String(255)), Column('value', Text), mysql_engine='InnoDB' ) try: volume_glance_metadata.create() except Exception: LOG.exception(_("Exception while creating table " "'volume_glance_metadata'")) meta.drop_all(tables=[volume_glance_metadata]) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine volume_glance_metadata = Table('volume_glance_metadata', meta, autoload=True) try: volume_glance_metadata.drop() except Exception: LOG.error(_("volume_glance_metadata table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/022_add_reason_column_to_service.py0000664000567000056700000000205212540642603033524 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. from sqlalchemy import Column, MetaData, String, Table def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine services = Table('services', meta, autoload=True) reason = Column('disabled_reason', String(255)) services.create_column(reason) def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine services = Table('services', meta, autoload=True) services.drop_column('disabled_reason') cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py0000664000567000056700000002273512540642606030127 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from sqlalchemy import Boolean, Column, DateTime, ForeignKey from sqlalchemy import Integer, MetaData, String, Table from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine migrations = Table( 'migrations', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('source_compute', String(length=255)), Column('dest_compute', String(length=255)), Column('dest_host', String(length=255)), Column('status', String(length=255)), Column('instance_uuid', String(length=255)), Column('old_instance_type_id', Integer), Column('new_instance_type_id', Integer), mysql_engine='InnoDB' ) services = Table( 'services', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('host', String(length=255)), Column('binary', String(length=255)), Column('topic', String(length=255)), Column('report_count', Integer, nullable=False), Column('disabled', Boolean), Column('availability_zone', String(length=255)), mysql_engine='InnoDB' ) sm_flavors = Table( 'sm_flavors', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('label', String(length=255)), Column('description', String(length=255)), mysql_engine='InnoDB' ) sm_backend_config = Table( 'sm_backend_config', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('flavor_id', Integer, ForeignKey('sm_flavors.id'), nullable=False), Column('sr_uuid', String(length=255)), Column('sr_type', String(length=255)), Column('config_params', String(length=2047)), mysql_engine='InnoDB' ) sm_volume = Table( 'sm_volume', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', String(length=36), ForeignKey('volumes.id'), primary_key=True, nullable=False), Column('backend_id', Integer, ForeignKey('sm_backend_config.id'), nullable=False), Column('vdi_uuid', String(length=255)), mysql_engine='InnoDB' ) snapshots = Table( 'snapshots', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', String(length=36), primary_key=True, nullable=False), Column('volume_id', String(length=36), nullable=False), Column('user_id', String(length=255)), Column('project_id', String(length=255)), Column('status', String(length=255)), Column('progress', String(length=255)), Column('volume_size', Integer), Column('scheduled_at', DateTime), Column('display_name', String(length=255)), Column('display_description', String(length=255)), mysql_engine='InnoDB' ) volume_types = Table( 'volume_types', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('name', String(length=255)), mysql_engine='InnoDB' ) volume_metadata = Table( 'volume_metadata', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('volume_id', String(length=36), ForeignKey('volumes.id'), nullable=False), Column('key', String(length=255)), Column('value', String(length=255)), mysql_engine='InnoDB' ) volume_type_extra_specs = Table( 'volume_type_extra_specs', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('volume_type_id', Integer, ForeignKey('volume_types.id'), nullable=False), Column('key', String(length=255)), Column('value', String(length=255)), mysql_engine='InnoDB' ) volumes = Table( 'volumes', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', String(length=36), primary_key=True, nullable=False), Column('ec2_id', String(length=255)), Column('user_id', String(length=255)), Column('project_id', String(length=255)), Column('host', String(length=255)), Column('size', Integer), Column('availability_zone', String(length=255)), Column('instance_uuid', String(length=36)), Column('mountpoint', String(length=255)), Column('attach_time', String(length=255)), Column('status', String(length=255)), Column('attach_status', String(length=255)), Column('scheduled_at', DateTime), Column('launched_at', DateTime), Column('terminated_at', DateTime), Column('display_name', String(length=255)), Column('display_description', String(length=255)), Column('provider_location', String(length=256)), Column('provider_auth', String(length=256)), Column('snapshot_id', String(length=36)), Column('volume_type_id', Integer), mysql_engine='InnoDB' ) quotas = Table( 'quotas', meta, Column('id', Integer, primary_key=True, nullable=False), Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('project_id', String(length=255)), Column('resource', String(length=255), nullable=False), Column('hard_limit', Integer), mysql_engine='InnoDB' ) iscsi_targets = Table( 'iscsi_targets', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('target_num', Integer), Column('host', String(length=255)), Column('volume_id', String(length=36), ForeignKey('volumes.id'), nullable=True), mysql_engine='InnoDB' ) # create all tables # Take care on create order for those with FK dependencies tables = [sm_flavors, sm_backend_config, snapshots, volume_types, volumes, iscsi_targets, migrations, quotas, services, sm_volume, volume_metadata, volume_type_extra_specs] for table in tables: try: table.create() except Exception: LOG.info(repr(table)) LOG.exception(_('Exception while creating table.')) raise if migrate_engine.name == "mysql": tables = ["sm_flavors", "sm_backend_config", "snapshots", "volume_types", "volumes", "iscsi_targets", "migrate_version", "migrations", "quotas", "services", "sm_volume", "volume_metadata", "volume_type_extra_specs"] sql = "SET foreign_key_checks = 0;" for table in tables: sql += "ALTER TABLE %s CONVERT TO CHARACTER SET utf8;" % table sql += "SET foreign_key_checks = 1;" sql += "ALTER DATABASE %s DEFAULT CHARACTER SET utf8;" \ % migrate_engine.url.database sql += "ALTER TABLE %s Engine=InnoDB;" % table migrate_engine.execute(sql) def downgrade(migrate_engine): LOG.exception(_('Downgrade from initial Cinder install is unsupported.')) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py0000664000567000056700000001011112540642606033237 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. from sqlalchemy import Column, ForeignKey, MetaData, Table from sqlalchemy import Boolean, DateTime, Integer, String from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData(bind=migrate_engine) # encryption key UUID -- must be stored per volume volumes = Table('volumes', meta, autoload=True) encryption_key = Column('encryption_key_id', String(36)) try: volumes.create_column(encryption_key) except Exception: LOG.error(_("Column |%s| not created!"), repr(encryption_key)) raise # encryption key UUID and volume type id -- must be stored per snapshot snapshots = Table('snapshots', meta, autoload=True) encryption_key = Column('encryption_key_id', String(36)) try: snapshots.create_column(encryption_key) except Exception: LOG.error(_("Column |%s| not created!"), repr(encryption_key)) raise volume_type = Column('volume_type_id', String(36)) try: snapshots.create_column(volume_type) except Exception: LOG.error(_("Column |%s| not created!"), repr(volume_type)) raise volume_types = Table('volume_types', meta, autoload=True) # encryption types associated with particular volume type encryption = Table( 'encryption', meta, Column('created_at', DateTime(timezone=False)), Column('updated_at', DateTime(timezone=False)), Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('cipher', String(length=255)), Column('control_location', String(length=255), nullable=False), Column('key_size', Integer), Column('provider', String(length=255), nullable=False), # NOTE(joel-coffman): The volume_type_id must be unique or else the # referenced volume type becomes ambiguous. That is, specifying the # volume type is not sufficient to identify a particular encryption # scheme unless each volume type is associated with at most one # encryption scheme. Column('volume_type_id', String(length=36), ForeignKey(volume_types.c.id), primary_key=True, nullable=False), mysql_engine='InnoDB', mysql_charset='utf8' ) try: encryption.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(encryption)) raise def downgrade(migrate_engine): meta = MetaData(bind=migrate_engine) # drop encryption key UUID for volumes volumes = Table('volumes', meta, autoload=True) try: volumes.c.encryption_key_id.drop() except Exception: LOG.error(_("encryption_key_id column not dropped from volumes")) raise # drop encryption key UUID and volume type id for snapshots snapshots = Table('snapshots', meta, autoload=True) try: snapshots.c.encryption_key_id.drop() except Exception: LOG.error(_("encryption_key_id column not dropped from snapshots")) raise try: snapshots.c.volume_type_id.drop() except Exception: LOG.error(_("volume_type_id column not dropped from snapshots")) raise # drop encryption types table encryption = Table('encryption', meta, autoload=True) try: encryption.drop() except Exception: LOG.error(_("encryption table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/006_snapshots_add_provider_location.py0000664000567000056700000000230012540642603034260 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Column from sqlalchemy import MetaData, String, Table def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine snapshots = Table('snapshots', meta, autoload=True) provider_location = Column('provider_location', String(255)) snapshots.create_column(provider_location) snapshots.update().values(provider_location=None).execute() def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine snapshots = Table('snapshots', meta, autoload=True) provider_location = snapshots.columns.provider_location snapshots.drop_column(provider_location) cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py0000664000567000056700000000375412540642606034137 0ustar jenkinsjenkins00000000000000# 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. from sqlalchemy import Boolean, Column, DateTime from sqlalchemy import Integer, MetaData, String, Table, ForeignKey from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def upgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine _volumes = Table('volumes', meta, autoload=True) # New table volume_admin_metadata = Table( 'volume_admin_metadata', meta, Column('created_at', DateTime), Column('updated_at', DateTime), Column('deleted_at', DateTime), Column('deleted', Boolean), Column('id', Integer, primary_key=True, nullable=False), Column('volume_id', String(length=36), ForeignKey('volumes.id'), nullable=False), Column('key', String(length=255)), Column('value', String(length=255)), mysql_engine='InnoDB', mysql_charset='utf8' ) try: volume_admin_metadata.create() except Exception: LOG.error(_("Table |%s| not created!"), repr(volume_admin_metadata)) raise def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine volume_admin_metadata = Table('volume_admin_metadata', meta, autoload=True) try: volume_admin_metadata.drop() except Exception: LOG.error(_("volume_admin_metadata table not dropped")) raise cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/README0000664000567000056700000000015312540642603023701 0ustar jenkinsjenkins00000000000000This is a database migration repository. More information at http://code.google.com/p/sqlalchemy-migrate/ cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/__init__.py0000664000567000056700000000000012540642603025121 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/sqlalchemy/migrate_repo/manage.py0000775000567000056700000000214512540642606024634 0ustar jenkinsjenkins00000000000000#!/usr/bin/env python # Copyright 2013 OpenStack Foundation # # 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. import os from oslo.config import cfg from cinder.openstack.common import gettextutils gettextutils.install('cinder', lazy=False) from cinder.db.sqlalchemy import migrate_repo from cinder import version from migrate.versioning.shell import main CONF = cfg.CONF if __name__ == '__main__': CONF([], project='cinder', version=version.version_string()) main(debug='False', url=CONF.database.connection, repository=os.path.abspath(os.path.dirname(migrate_repo.__file__))) cinder-2014.1.5/cinder/db/sqlalchemy/models.py0000664000567000056700000004125412540642606022213 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # # 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. """ SQLAlchemy models for cinder data. """ from sqlalchemy import Column, Integer, String, Text, schema from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import ForeignKey, DateTime, Boolean from sqlalchemy.orm import relationship, backref from oslo.config import cfg from cinder.openstack.common.db.sqlalchemy import models from cinder.openstack.common import timeutils CONF = cfg.CONF BASE = declarative_base() class CinderBase(models.TimestampMixin, models.ModelBase): """Base class for Cinder Models.""" __table_args__ = {'mysql_engine': 'InnoDB'} # TODO(rpodolyaka): reuse models.SoftDeleteMixin in the next stage # of implementing of BP db-cleanup deleted_at = Column(DateTime) deleted = Column(Boolean, default=False) metadata = None def delete(self, session=None): """Delete this object.""" self.deleted = True self.deleted_at = timeutils.utcnow() self.save(session=session) class Service(BASE, CinderBase): """Represents a running service on a host.""" __tablename__ = 'services' id = Column(Integer, primary_key=True) host = Column(String(255)) # , ForeignKey('hosts.id')) binary = Column(String(255)) topic = Column(String(255)) report_count = Column(Integer, nullable=False, default=0) disabled = Column(Boolean, default=False) availability_zone = Column(String(255), default='cinder') disabled_reason = Column(String(255)) class Volume(BASE, CinderBase): """Represents a block storage device that can be attached to a vm.""" __tablename__ = 'volumes' id = Column(String(36), primary_key=True) _name_id = Column(String(36)) # Don't access/modify this directly! @property def name_id(self): return self.id if not self._name_id else self._name_id @name_id.setter def name_id(self, value): self._name_id = value @property def name(self): return CONF.volume_name_template % self.name_id ec2_id = Column(Integer) user_id = Column(String(255)) project_id = Column(String(255)) snapshot_id = Column(String(36)) host = Column(String(255)) # , ForeignKey('hosts.id')) size = Column(Integer) availability_zone = Column(String(255)) # TODO(vish): foreign key? instance_uuid = Column(String(36)) attached_host = Column(String(255)) mountpoint = Column(String(255)) attach_time = Column(String(255)) # TODO(vish): datetime status = Column(String(255)) # TODO(vish): enum? attach_status = Column(String(255)) # TODO(vish): enum migration_status = Column(String(255)) scheduled_at = Column(DateTime) launched_at = Column(DateTime) terminated_at = Column(DateTime) display_name = Column(String(255)) display_description = Column(String(255)) provider_location = Column(String(255)) provider_auth = Column(String(255)) provider_geometry = Column(String(255)) volume_type_id = Column(String(36)) source_volid = Column(String(36)) encryption_key_id = Column(String(36)) deleted = Column(Boolean, default=False) bootable = Column(Boolean, default=False) class VolumeMetadata(BASE, CinderBase): """Represents a metadata key/value pair for a volume.""" __tablename__ = 'volume_metadata' id = Column(Integer, primary_key=True) key = Column(String(255)) value = Column(String(255)) volume_id = Column(String(36), ForeignKey('volumes.id'), nullable=False) volume = relationship(Volume, backref="volume_metadata", foreign_keys=volume_id, primaryjoin='and_(' 'VolumeMetadata.volume_id == Volume.id,' 'VolumeMetadata.deleted == False)') class VolumeAdminMetadata(BASE, CinderBase): """Represents a administrator metadata key/value pair for a volume.""" __tablename__ = 'volume_admin_metadata' id = Column(Integer, primary_key=True) key = Column(String(255)) value = Column(String(255)) volume_id = Column(String(36), ForeignKey('volumes.id'), nullable=False) volume = relationship(Volume, backref="volume_admin_metadata", foreign_keys=volume_id, primaryjoin='and_(' 'VolumeAdminMetadata.volume_id == Volume.id,' 'VolumeAdminMetadata.deleted == False)') class VolumeTypes(BASE, CinderBase): """Represent possible volume_types of volumes offered.""" __tablename__ = "volume_types" id = Column(String(36), primary_key=True) name = Column(String(255)) # A reference to qos_specs entity qos_specs_id = Column(String(36), ForeignKey('quality_of_service_specs.id')) volumes = relationship(Volume, backref=backref('volume_type', uselist=False), foreign_keys=id, primaryjoin='and_(' 'Volume.volume_type_id == VolumeTypes.id, ' 'VolumeTypes.deleted == False)') class VolumeTypeExtraSpecs(BASE, CinderBase): """Represents additional specs as key/value pairs for a volume_type.""" __tablename__ = 'volume_type_extra_specs' id = Column(Integer, primary_key=True) key = Column(String(255)) value = Column(String(255)) volume_type_id = Column(String(36), ForeignKey('volume_types.id'), nullable=False) volume_type = relationship( VolumeTypes, backref="extra_specs", foreign_keys=volume_type_id, primaryjoin='and_(' 'VolumeTypeExtraSpecs.volume_type_id == VolumeTypes.id,' 'VolumeTypeExtraSpecs.deleted == False)' ) class QualityOfServiceSpecs(BASE, CinderBase): """Represents QoS specs as key/value pairs. QoS specs is standalone entity that can be associated/disassociated with volume types (one to many relation). Adjacency list relationship pattern is used in this model in order to represent following hierarchical data with in flat table, e.g, following structure qos-specs-1 'Rate-Limit' | +------> consumer = 'front-end' +------> total_bytes_sec = 1048576 +------> total_iops_sec = 500 qos-specs-2 'QoS_Level1' | +------> consumer = 'back-end' +------> max-iops = 1000 +------> min-iops = 200 is represented by: id specs_id key value ------ -------- ------------- ----- UUID-1 NULL QoSSpec_Name Rate-Limit UUID-2 UUID-1 consumer front-end UUID-3 UUID-1 total_bytes_sec 1048576 UUID-4 UUID-1 total_iops_sec 500 UUID-5 NULL QoSSpec_Name QoS_Level1 UUID-6 UUID-5 consumer back-end UUID-7 UUID-5 max-iops 1000 UUID-8 UUID-5 min-iops 200 """ __tablename__ = 'quality_of_service_specs' id = Column(String(36), primary_key=True) specs_id = Column(String(36), ForeignKey(id)) key = Column(String(255)) value = Column(String(255)) specs = relationship( "QualityOfServiceSpecs", cascade="all, delete-orphan", backref=backref("qos_spec", remote_side=id), ) vol_types = relationship( VolumeTypes, backref=backref('qos_specs'), foreign_keys=id, primaryjoin='and_(' 'or_(VolumeTypes.qos_specs_id == ' 'QualityOfServiceSpecs.id,' 'VolumeTypes.qos_specs_id == ' 'QualityOfServiceSpecs.specs_id),' 'QualityOfServiceSpecs.deleted == False)') class VolumeGlanceMetadata(BASE, CinderBase): """Glance metadata for a bootable volume.""" __tablename__ = 'volume_glance_metadata' id = Column(Integer, primary_key=True, nullable=False) volume_id = Column(String(36), ForeignKey('volumes.id')) snapshot_id = Column(String(36), ForeignKey('snapshots.id')) key = Column(String(255)) value = Column(Text) volume = relationship(Volume, backref="volume_glance_metadata", foreign_keys=volume_id, primaryjoin='and_(' 'VolumeGlanceMetadata.volume_id == Volume.id,' 'VolumeGlanceMetadata.deleted == False)') class Quota(BASE, CinderBase): """Represents a single quota override for a project. If there is no row for a given project id and resource, then the default for the quota class is used. If there is no row for a given quota class and resource, then the default for the deployment is used. If the row is present but the hard limit is Null, then the resource is unlimited. """ __tablename__ = 'quotas' id = Column(Integer, primary_key=True) project_id = Column(String(255), index=True) resource = Column(String(255)) hard_limit = Column(Integer, nullable=True) class QuotaClass(BASE, CinderBase): """Represents a single quota override for a quota class. If there is no row for a given quota class and resource, then the default for the deployment is used. If the row is present but the hard limit is Null, then the resource is unlimited. """ __tablename__ = 'quota_classes' id = Column(Integer, primary_key=True) class_name = Column(String(255), index=True) resource = Column(String(255)) hard_limit = Column(Integer, nullable=True) class QuotaUsage(BASE, CinderBase): """Represents the current usage for a given resource.""" __tablename__ = 'quota_usages' id = Column(Integer, primary_key=True) project_id = Column(String(255), index=True) resource = Column(String(255)) in_use = Column(Integer) reserved = Column(Integer) @property def total(self): return self.in_use + self.reserved until_refresh = Column(Integer, nullable=True) class Reservation(BASE, CinderBase): """Represents a resource reservation for quotas.""" __tablename__ = 'reservations' id = Column(Integer, primary_key=True) uuid = Column(String(36), nullable=False) usage_id = Column(Integer, ForeignKey('quota_usages.id'), nullable=False) project_id = Column(String(255), index=True) resource = Column(String(255)) delta = Column(Integer) expire = Column(DateTime, nullable=False) usage = relationship( "QuotaUsage", foreign_keys=usage_id, primaryjoin='and_(Reservation.usage_id == QuotaUsage.id,' 'QuotaUsage.deleted == 0)') class Snapshot(BASE, CinderBase): """Represents a snapshot of volume.""" __tablename__ = 'snapshots' id = Column(String(36), primary_key=True) @property def name(self): return CONF.snapshot_name_template % self.id @property def volume_name(self): return self.volume.name # pylint: disable=E1101 user_id = Column(String(255)) project_id = Column(String(255)) volume_id = Column(String(36)) status = Column(String(255)) progress = Column(String(255)) volume_size = Column(Integer) display_name = Column(String(255)) display_description = Column(String(255)) encryption_key_id = Column(String(36)) volume_type_id = Column(String(36)) provider_location = Column(String(255)) volume = relationship(Volume, backref="snapshots", foreign_keys=volume_id, primaryjoin='Snapshot.volume_id == Volume.id') class SnapshotMetadata(BASE, CinderBase): """Represents a metadata key/value pair for a snapshot.""" __tablename__ = 'snapshot_metadata' id = Column(Integer, primary_key=True) key = Column(String(255)) value = Column(String(255)) snapshot_id = Column(String(36), ForeignKey('snapshots.id'), nullable=False) snapshot = relationship(Snapshot, backref="snapshot_metadata", foreign_keys=snapshot_id, primaryjoin='and_(' 'SnapshotMetadata.snapshot_id == Snapshot.id,' 'SnapshotMetadata.deleted == False)') class IscsiTarget(BASE, CinderBase): """Represents an iscsi target for a given host.""" __tablename__ = 'iscsi_targets' __table_args__ = (schema.UniqueConstraint("target_num", "host"), {'mysql_engine': 'InnoDB'}) id = Column(Integer, primary_key=True) target_num = Column(Integer) host = Column(String(255)) volume_id = Column(String(36), ForeignKey('volumes.id'), nullable=True) volume = relationship(Volume, backref=backref('iscsi_target', uselist=False), foreign_keys=volume_id, primaryjoin='and_(IscsiTarget.volume_id==Volume.id,' 'IscsiTarget.deleted==False)') class Backup(BASE, CinderBase): """Represents a backup of a volume to Swift.""" __tablename__ = 'backups' id = Column(String(36), primary_key=True) @property def name(self): return CONF.backup_name_template % self.id user_id = Column(String(255), nullable=False) project_id = Column(String(255), nullable=False) volume_id = Column(String(36), nullable=False) host = Column(String(255)) availability_zone = Column(String(255)) display_name = Column(String(255)) display_description = Column(String(255)) container = Column(String(255)) status = Column(String(255)) fail_reason = Column(String(255)) service_metadata = Column(String(255)) service = Column(String(255)) size = Column(Integer) object_count = Column(Integer) class Encryption(BASE, CinderBase): """Represents encryption requirement for a volume type. Encryption here is a set of performance characteristics describing cipher, provider, and key_size for a certain volume type. """ __tablename__ = 'encryption' cipher = Column(String(255)) key_size = Column(Integer) provider = Column(String(255)) control_location = Column(String(255)) volume_type_id = Column(String(36), ForeignKey('volume_types.id'), primary_key=True) volume_type = relationship( VolumeTypes, backref="encryption", foreign_keys=volume_type_id, primaryjoin='and_(' 'Encryption.volume_type_id == VolumeTypes.id,' 'Encryption.deleted == False)' ) class Transfer(BASE, CinderBase): """Represents a volume transfer request.""" __tablename__ = 'transfers' id = Column(String(36), primary_key=True) volume_id = Column(String(36), ForeignKey('volumes.id')) display_name = Column(String(255)) salt = Column(String(255)) crypt_hash = Column(String(255)) expires_at = Column(DateTime) volume = relationship(Volume, backref="transfer", foreign_keys=volume_id, primaryjoin='and_(' 'Transfer.volume_id == Volume.id,' 'Transfer.deleted == False)') def register_models(): """Register Models and create metadata. Called from cinder.db.sqlalchemy.__init__ as part of loading the driver, it will never need to be called explicitly elsewhere unless the connection is lost and needs to be reestablished. """ from sqlalchemy import create_engine models = (Backup, Service, Volume, VolumeMetadata, VolumeAdminMetadata, SnapshotMetadata, Transfer, VolumeTypeExtraSpecs, VolumeTypes, VolumeGlanceMetadata, ) engine = create_engine(CONF.database.connection, echo=False) for model in models: model.metadata.create_all(engine) cinder-2014.1.5/cinder/db/sqlalchemy/__init__.py0000664000567000056700000000000012540642603022444 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/db/sqlalchemy/api.py0000664000567000056700000027463312540642606021512 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2014 IBM Corp. # All Rights Reserved. # # 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. """Implementation of SQLAlchemy backend.""" import functools import sys import time import uuid import warnings from oslo.config import cfg from sqlalchemy.exc import IntegrityError from sqlalchemy import or_ from sqlalchemy.orm import joinedload, joinedload_all from sqlalchemy.orm import RelationshipProperty from sqlalchemy.sql.expression import literal_column from sqlalchemy.sql import func from cinder.common import sqlalchemyutils from cinder.db.sqlalchemy import models from cinder import exception from cinder.openstack.common.db import exception as db_exc from cinder.openstack.common.db.sqlalchemy import session as db_session from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder.openstack.common import uuidutils CONF = cfg.CONF LOG = logging.getLogger(__name__) db_session.set_defaults(sql_connection='sqlite:///$state_path/$sqlite_db', sqlite_db='cinder.sqlite') get_engine = db_session.get_engine get_session = db_session.get_session _DEFAULT_QUOTA_NAME = 'default' def get_backend(): """The backend is this module itself.""" return sys.modules[__name__] def is_admin_context(context): """Indicates if the request context is an administrator.""" if not context: warnings.warn(_('Use of empty request context is deprecated'), DeprecationWarning) raise Exception('die') return context.is_admin def is_user_context(context): """Indicates if the request context is a normal user.""" if not context: return False if context.is_admin: return False if not context.user_id or not context.project_id: return False return True def authorize_project_context(context, project_id): """Ensures a request has permission to access the given project.""" if is_user_context(context): if not context.project_id: raise exception.NotAuthorized() elif context.project_id != project_id: raise exception.NotAuthorized() def authorize_user_context(context, user_id): """Ensures a request has permission to access the given user.""" if is_user_context(context): if not context.user_id: raise exception.NotAuthorized() elif context.user_id != user_id: raise exception.NotAuthorized() def authorize_quota_class_context(context, class_name): """Ensures a request has permission to access the given quota class.""" if is_user_context(context): if not context.quota_class: raise exception.NotAuthorized() elif context.quota_class != class_name: raise exception.NotAuthorized() def require_admin_context(f): """Decorator to require admin request context. The first argument to the wrapped function must be the context. """ def wrapper(*args, **kwargs): if not is_admin_context(args[0]): raise exception.AdminRequired() return f(*args, **kwargs) return wrapper def require_context(f): """Decorator to require *any* user or admin context. This does no authorization for user or project access matching, see :py:func:`authorize_project_context` and :py:func:`authorize_user_context`. The first argument to the wrapped function must be the context. """ def wrapper(*args, **kwargs): if not is_admin_context(args[0]) and not is_user_context(args[0]): raise exception.NotAuthorized() return f(*args, **kwargs) return wrapper def require_volume_exists(f): """Decorator to require the specified volume to exist. Requires the wrapped function to use context and volume_id as their first two arguments. """ def wrapper(context, volume_id, *args, **kwargs): volume_get(context, volume_id) return f(context, volume_id, *args, **kwargs) wrapper.__name__ = f.__name__ return wrapper def require_snapshot_exists(f): """Decorator to require the specified snapshot to exist. Requires the wrapped function to use context and snapshot_id as their first two arguments. """ def wrapper(context, snapshot_id, *args, **kwargs): snapshot_get(context, snapshot_id) return f(context, snapshot_id, *args, **kwargs) wrapper.__name__ = f.__name__ return wrapper def _retry_on_deadlock(f): """Decorator to retry a DB API call if Deadlock was received.""" @functools.wraps(f) def wrapped(*args, **kwargs): while True: try: return f(*args, **kwargs) except db_exc.DBDeadlock: LOG.warn(_("Deadlock detected when running " "'%(func_name)s': Retrying..."), dict(func_name=f.__name__)) # Retry! time.sleep(0.5) continue functools.update_wrapper(wrapped, f) return wrapped def model_query(context, *args, **kwargs): """Query helper that accounts for context's `read_deleted` field. :param context: context to query under :param session: if present, the session to use :param read_deleted: if present, overrides context's read_deleted field. :param project_only: if present and context is user-type, then restrict query to match the context's project_id. """ session = kwargs.get('session') or get_session() read_deleted = kwargs.get('read_deleted') or context.read_deleted project_only = kwargs.get('project_only') query = session.query(*args) if read_deleted == 'no': query = query.filter_by(deleted=False) elif read_deleted == 'yes': pass # omit the filter to include deleted and active elif read_deleted == 'only': query = query.filter_by(deleted=True) else: raise Exception( _("Unrecognized read_deleted value '%s'") % read_deleted) if project_only and is_user_context(context): query = query.filter_by(project_id=context.project_id) return query def _sync_volumes(context, project_id, session, volume_type_id=None, volume_type_name=None): (volumes, gigs) = _volume_data_get_for_project( context, project_id, volume_type_id=volume_type_id, session=session) key = 'volumes' if volume_type_name: key += '_' + volume_type_name return {key: volumes} def _sync_snapshots(context, project_id, session, volume_type_id=None, volume_type_name=None): (snapshots, gigs) = _snapshot_data_get_for_project( context, project_id, volume_type_id=volume_type_id, session=session) key = 'snapshots' if volume_type_name: key += '_' + volume_type_name return {key: snapshots} def _sync_gigabytes(context, project_id, session, volume_type_id=None, volume_type_name=None): (_junk, vol_gigs) = _volume_data_get_for_project( context, project_id, volume_type_id=volume_type_id, session=session) key = 'gigabytes' if volume_type_name: key += '_' + volume_type_name if CONF.no_snapshot_gb_quota: return {key: vol_gigs} (_junk, snap_gigs) = _snapshot_data_get_for_project( context, project_id, volume_type_id=volume_type_id, session=session) return {key: vol_gigs + snap_gigs} QUOTA_SYNC_FUNCTIONS = { '_sync_volumes': _sync_volumes, '_sync_snapshots': _sync_snapshots, '_sync_gigabytes': _sync_gigabytes, } ################### @require_admin_context def service_destroy(context, service_id): session = get_session() with session.begin(): service_ref = _service_get(context, service_id, session=session) service_ref.delete(session=session) @require_admin_context def _service_get(context, service_id, session=None): result = model_query( context, models.Service, session=session).\ filter_by(id=service_id).\ first() if not result: raise exception.ServiceNotFound(service_id=service_id) return result @require_admin_context def service_get(context, service_id): return _service_get(context, service_id) @require_admin_context def service_get_all(context, disabled=None): query = model_query(context, models.Service) if disabled is not None: query = query.filter_by(disabled=disabled) return query.all() @require_admin_context def service_get_all_by_topic(context, topic): return model_query( context, models.Service, read_deleted="no").\ filter_by(disabled=False).\ filter_by(topic=topic).\ all() @require_admin_context def service_get_by_host_and_topic(context, host, topic): result = model_query( context, models.Service, read_deleted="no").\ filter_by(disabled=False).\ filter_by(host=host).\ filter_by(topic=topic).\ first() if not result: raise exception.ServiceNotFound(service_id=None) return result @require_admin_context def service_get_all_by_host(context, host): return model_query( context, models.Service, read_deleted="no").\ filter_by(host=host).\ all() @require_admin_context def _service_get_all_topic_subquery(context, session, topic, subq, label): sort_value = getattr(subq.c, label) return model_query(context, models.Service, func.coalesce(sort_value, 0), session=session, read_deleted="no").\ filter_by(topic=topic).\ filter_by(disabled=False).\ outerjoin((subq, models.Service.host == subq.c.host)).\ order_by(sort_value).\ all() @require_admin_context def service_get_all_volume_sorted(context): session = get_session() with session.begin(): topic = CONF.volume_topic label = 'volume_gigabytes' subq = model_query(context, models.Volume.host, func.sum(models.Volume.size).label(label), session=session, read_deleted="no").\ group_by(models.Volume.host).\ subquery() return _service_get_all_topic_subquery(context, session, topic, subq, label) @require_admin_context def service_get_by_args(context, host, binary): result = model_query(context, models.Service).\ filter_by(host=host).\ filter_by(binary=binary).\ first() if not result: raise exception.HostBinaryNotFound(host=host, binary=binary) return result @require_admin_context def service_create(context, values): service_ref = models.Service() service_ref.update(values) if not CONF.enable_new_services: service_ref.disabled = True service_ref.save() return service_ref @require_admin_context def service_update(context, service_id, values): session = get_session() with session.begin(): service_ref = _service_get(context, service_id, session=session) service_ref.update(values) service_ref.save(session=session) ################### def _metadata_refs(metadata_dict, meta_class): metadata_refs = [] if metadata_dict: for k, v in metadata_dict.iteritems(): metadata_ref = meta_class() metadata_ref['key'] = k metadata_ref['value'] = v metadata_refs.append(metadata_ref) return metadata_refs def _dict_with_extra_specs(inst_type_query): """Convert type query result to dict with extra_spec and rate_limit. Takes a volume type query returned by sqlalchemy and returns it as a dictionary, converting the extra_specs entry from a list of dicts: 'extra_specs' : [{'key': 'k1', 'value': 'v1', ...}, ...] to a single dict: 'extra_specs' : {'k1': 'v1'} """ inst_type_dict = dict(inst_type_query) extra_specs = dict([(x['key'], x['value']) for x in inst_type_query['extra_specs']]) inst_type_dict['extra_specs'] = extra_specs return inst_type_dict ################### @require_admin_context def iscsi_target_count_by_host(context, host): return model_query(context, models.IscsiTarget).\ filter_by(host=host).\ count() @require_admin_context def iscsi_target_create_safe(context, values): iscsi_target_ref = models.IscsiTarget() for (key, value) in values.iteritems(): iscsi_target_ref[key] = value try: iscsi_target_ref.save() return iscsi_target_ref except IntegrityError: return None ################### @require_context def _quota_get(context, project_id, resource, session=None): result = model_query(context, models.Quota, session=session, read_deleted="no").\ filter_by(project_id=project_id).\ filter_by(resource=resource).\ first() if not result: raise exception.ProjectQuotaNotFound(project_id=project_id) return result @require_context def quota_get(context, project_id, resource): return _quota_get(context, project_id, resource) @require_context def quota_get_all_by_project(context, project_id): authorize_project_context(context, project_id) rows = model_query(context, models.Quota, read_deleted="no").\ filter_by(project_id=project_id).\ all() result = {'project_id': project_id} for row in rows: result[row.resource] = row.hard_limit return result @require_admin_context def quota_create(context, project_id, resource, limit): quota_ref = models.Quota() quota_ref.project_id = project_id quota_ref.resource = resource quota_ref.hard_limit = limit quota_ref.save() return quota_ref @require_admin_context def quota_update(context, project_id, resource, limit): session = get_session() with session.begin(): quota_ref = _quota_get(context, project_id, resource, session=session) quota_ref.hard_limit = limit quota_ref.save(session=session) @require_admin_context def quota_destroy(context, project_id, resource): session = get_session() with session.begin(): quota_ref = _quota_get(context, project_id, resource, session=session) quota_ref.delete(session=session) ################### @require_context def _quota_class_get(context, class_name, resource, session=None): result = model_query(context, models.QuotaClass, session=session, read_deleted="no").\ filter_by(class_name=class_name).\ filter_by(resource=resource).\ first() if not result: raise exception.QuotaClassNotFound(class_name=class_name) return result @require_context def quota_class_get(context, class_name, resource): return _quota_class_get(context, class_name, resource) def quota_class_get_default(context): rows = model_query(context, models.QuotaClass, read_deleted="no").\ filter_by(class_name=_DEFAULT_QUOTA_NAME).all() result = {'class_name': _DEFAULT_QUOTA_NAME} for row in rows: result[row.resource] = row.hard_limit return result @require_context def quota_class_get_all_by_name(context, class_name): authorize_quota_class_context(context, class_name) rows = model_query(context, models.QuotaClass, read_deleted="no").\ filter_by(class_name=class_name).\ all() result = {'class_name': class_name} for row in rows: result[row.resource] = row.hard_limit return result @require_admin_context def quota_class_create(context, class_name, resource, limit): quota_class_ref = models.QuotaClass() quota_class_ref.class_name = class_name quota_class_ref.resource = resource quota_class_ref.hard_limit = limit quota_class_ref.save() return quota_class_ref @require_admin_context def quota_class_update(context, class_name, resource, limit): session = get_session() with session.begin(): quota_class_ref = _quota_class_get(context, class_name, resource, session=session) quota_class_ref.hard_limit = limit quota_class_ref.save(session=session) @require_admin_context def quota_class_destroy(context, class_name, resource): session = get_session() with session.begin(): quota_class_ref = _quota_class_get(context, class_name, resource, session=session) quota_class_ref.delete(session=session) @require_admin_context def quota_class_destroy_all_by_name(context, class_name): session = get_session() with session.begin(): quota_classes = model_query(context, models.QuotaClass, session=session, read_deleted="no").\ filter_by(class_name=class_name).\ all() for quota_class_ref in quota_classes: quota_class_ref.delete(session=session) ################### @require_context def quota_usage_get(context, project_id, resource): result = model_query(context, models.QuotaUsage, read_deleted="no").\ filter_by(project_id=project_id).\ filter_by(resource=resource).\ first() if not result: raise exception.QuotaUsageNotFound(project_id=project_id) return result @require_context def quota_usage_get_all_by_project(context, project_id): authorize_project_context(context, project_id) rows = model_query(context, models.QuotaUsage, read_deleted="no").\ filter_by(project_id=project_id).\ all() result = {'project_id': project_id} for row in rows: result[row.resource] = dict(in_use=row.in_use, reserved=row.reserved) return result @require_admin_context def _quota_usage_create(context, project_id, resource, in_use, reserved, until_refresh, session=None): quota_usage_ref = models.QuotaUsage() quota_usage_ref.project_id = project_id quota_usage_ref.resource = resource quota_usage_ref.in_use = in_use quota_usage_ref.reserved = reserved quota_usage_ref.until_refresh = until_refresh quota_usage_ref.save(session=session) return quota_usage_ref ################### @require_context def _reservation_get(context, uuid, session=None): result = model_query(context, models.Reservation, session=session, read_deleted="no").\ filter_by(uuid=uuid).first() if not result: raise exception.ReservationNotFound(uuid=uuid) return result @require_context def reservation_get(context, uuid): return _reservation_get(context, uuid) @require_context def reservation_get_all_by_project(context, project_id): authorize_project_context(context, project_id) rows = model_query(context, models.Reservation, read_deleted="no").\ filter_by(project_id=project_id).all() result = {'project_id': project_id} for row in rows: result.setdefault(row.resource, {}) result[row.resource][row.uuid] = row.delta return result @require_admin_context def _reservation_create(context, uuid, usage, project_id, resource, delta, expire, session=None): reservation_ref = models.Reservation() reservation_ref.uuid = uuid reservation_ref.usage_id = usage['id'] reservation_ref.project_id = project_id reservation_ref.resource = resource reservation_ref.delta = delta reservation_ref.expire = expire reservation_ref.save(session=session) return reservation_ref @require_admin_context def reservation_create(context, uuid, usage, project_id, resource, delta, expire): return _reservation_create(context, uuid, usage, project_id, resource, delta, expire) @require_admin_context def reservation_destroy(context, uuid): session = get_session() with session.begin(): reservation_ref = _reservation_get(context, uuid, session=session) reservation_ref.delete(session=session) ################### # NOTE(johannes): The quota code uses SQL locking to ensure races don't # cause under or over counting of resources. To avoid deadlocks, this # code always acquires the lock on quota_usages before acquiring the lock # on reservations. def _get_quota_usages(context, session, project_id): # Broken out for testability rows = model_query(context, models.QuotaUsage, read_deleted="no", session=session).\ filter_by(project_id=project_id).\ with_lockmode('update').\ all() return dict((row.resource, row) for row in rows) @require_context @_retry_on_deadlock def quota_reserve(context, resources, quotas, deltas, expire, until_refresh, max_age, project_id=None): elevated = context.elevated() session = get_session() with session.begin(): if project_id is None: project_id = context.project_id # Get the current usages usages = _get_quota_usages(context, session, project_id) # Handle usage refresh work = set(deltas.keys()) while work: resource = work.pop() # Do we need to refresh the usage? refresh = False if resource not in usages: usages[resource] = _quota_usage_create(elevated, project_id, resource, 0, 0, until_refresh or None, session=session) refresh = True elif usages[resource].in_use < 0: # Negative in_use count indicates a desync, so try to # heal from that... refresh = True elif usages[resource].until_refresh is not None: usages[resource].until_refresh -= 1 if usages[resource].until_refresh <= 0: refresh = True elif max_age and usages[resource].updated_at is not None and ( (usages[resource].updated_at - timeutils.utcnow()).seconds >= max_age): refresh = True # OK, refresh the usage if refresh: # Grab the sync routine sync = QUOTA_SYNC_FUNCTIONS[resources[resource].sync] volume_type_id = getattr(resources[resource], 'volume_type_id', None) volume_type_name = getattr(resources[resource], 'volume_type_name', None) updates = sync(elevated, project_id, volume_type_id=volume_type_id, volume_type_name=volume_type_name, session=session) for res, in_use in updates.items(): # Make sure we have a destination for the usage! if res not in usages: usages[res] = _quota_usage_create( elevated, project_id, res, 0, 0, until_refresh or None, session=session ) # Update the usage usages[res].in_use = in_use usages[res].until_refresh = until_refresh or None # Because more than one resource may be refreshed # by the call to the sync routine, and we don't # want to double-sync, we make sure all refreshed # resources are dropped from the work set. work.discard(res) # NOTE(Vek): We make the assumption that the sync # routine actually refreshes the # resources that it is the sync routine # for. We don't check, because this is # a best-effort mechanism. # Check for deltas that would go negative unders = [r for r, delta in deltas.items() if delta < 0 and delta + usages[r].in_use < 0] # Now, let's check the quotas # NOTE(Vek): We're only concerned about positive increments. # If a project has gone over quota, we want them to # be able to reduce their usage without any # problems. overs = [r for r, delta in deltas.items() if quotas[r] >= 0 and delta >= 0 and quotas[r] < delta + usages[r].total] # NOTE(Vek): The quota check needs to be in the transaction, # but the transaction doesn't fail just because # we're over quota, so the OverQuota raise is # outside the transaction. If we did the raise # here, our usage updates would be discarded, but # they're not invalidated by being over-quota. # Create the reservations if not overs: reservations = [] for resource, delta in deltas.items(): reservation = _reservation_create(elevated, str(uuid.uuid4()), usages[resource], project_id, resource, delta, expire, session=session) reservations.append(reservation.uuid) # Also update the reserved quantity # NOTE(Vek): Again, we are only concerned here about # positive increments. Here, though, we're # worried about the following scenario: # # 1) User initiates resize down. # 2) User allocates a new instance. # 3) Resize down fails or is reverted. # 4) User is now over quota. # # To prevent this, we only update the # reserved value if the delta is positive. if delta > 0: usages[resource].reserved += delta # Apply updates to the usages table for usage_ref in usages.values(): usage_ref.save(session=session) if unders: LOG.warning(_("Change will make usage less than 0 for the following " "resources: %s") % unders) if overs: usages = dict((k, dict(in_use=v['in_use'], reserved=v['reserved'])) for k, v in usages.items()) raise exception.OverQuota(overs=sorted(overs), quotas=quotas, usages=usages) return reservations def _quota_reservations(session, context, reservations): """Return the relevant reservations.""" # Get the listed reservations return model_query(context, models.Reservation, read_deleted="no", session=session).\ filter(models.Reservation.uuid.in_(reservations)).\ with_lockmode('update').\ all() @require_context @_retry_on_deadlock def reservation_commit(context, reservations, project_id=None): session = get_session() with session.begin(): usages = _get_quota_usages(context, session, project_id) for reservation in _quota_reservations(session, context, reservations): usage = usages[reservation.resource] if reservation.delta >= 0: usage.reserved -= reservation.delta usage.in_use += reservation.delta reservation.delete(session=session) for usage in usages.values(): usage.save(session=session) @require_context @_retry_on_deadlock def reservation_rollback(context, reservations, project_id=None): session = get_session() with session.begin(): usages = _get_quota_usages(context, session, project_id) for reservation in _quota_reservations(session, context, reservations): usage = usages[reservation.resource] if reservation.delta >= 0: usage.reserved -= reservation.delta reservation.delete(session=session) for usage in usages.values(): usage.save(session=session) @require_admin_context @_retry_on_deadlock def quota_destroy_all_by_project(context, project_id): session = get_session() with session.begin(): quotas = model_query(context, models.Quota, session=session, read_deleted="no").\ filter_by(project_id=project_id).\ all() for quota_ref in quotas: quota_ref.delete(session=session) quota_usages = model_query(context, models.QuotaUsage, session=session, read_deleted="no").\ filter_by(project_id=project_id).\ all() for quota_usage_ref in quota_usages: quota_usage_ref.delete(session=session) reservations = model_query(context, models.Reservation, session=session, read_deleted="no").\ filter_by(project_id=project_id).\ all() for reservation_ref in reservations: reservation_ref.delete(session=session) @require_admin_context @_retry_on_deadlock def reservation_expire(context): session = get_session() with session.begin(): current_time = timeutils.utcnow() results = model_query(context, models.Reservation, session=session, read_deleted="no").\ filter(models.Reservation.expire < current_time).\ all() if results: for reservation in results: if reservation.delta >= 0: reservation.usage.reserved -= reservation.delta reservation.usage.save(session=session) reservation.delete(session=session) ################### @require_admin_context @_retry_on_deadlock def volume_allocate_iscsi_target(context, volume_id, host): session = get_session() with session.begin(): iscsi_target_ref = model_query(context, models.IscsiTarget, session=session, read_deleted="no").\ filter_by(volume=None).\ filter_by(host=host).\ with_lockmode('update').\ first() # NOTE(vish): if with_lockmode isn't supported, as in sqlite, # then this has concurrency issues if not iscsi_target_ref: raise exception.NoMoreTargets() iscsi_target_ref.volume_id = volume_id session.add(iscsi_target_ref) return iscsi_target_ref.target_num @require_admin_context def volume_attached(context, volume_id, instance_uuid, host_name, mountpoint): if instance_uuid and not uuidutils.is_uuid_like(instance_uuid): raise exception.InvalidUUID(uuid=instance_uuid) session = get_session() with session.begin(): volume_ref = _volume_get(context, volume_id, session=session) volume_ref['status'] = 'in-use' volume_ref['mountpoint'] = mountpoint volume_ref['attach_status'] = 'attached' volume_ref['instance_uuid'] = instance_uuid volume_ref['attached_host'] = host_name volume_ref.save(session=session) return volume_ref @require_context def volume_create(context, values): values['volume_metadata'] = _metadata_refs(values.get('metadata'), models.VolumeMetadata) if is_admin_context(context): values['volume_admin_metadata'] = \ _metadata_refs(values.get('admin_metadata'), models.VolumeAdminMetadata) elif values.get('volume_admin_metadata'): del values['volume_admin_metadata'] volume_ref = models.Volume() if not values.get('id'): values['id'] = str(uuid.uuid4()) volume_ref.update(values) session = get_session() with session.begin(): volume_ref.save(session=session) return _volume_get(context, values['id'], session=session) @require_admin_context def volume_data_get_for_host(context, host): result = model_query(context, func.count(models.Volume.id), func.sum(models.Volume.size), read_deleted="no").\ filter_by(host=host).\ first() # NOTE(vish): convert None to 0 return (result[0] or 0, result[1] or 0) @require_admin_context def _volume_data_get_for_project(context, project_id, volume_type_id=None, session=None): query = model_query(context, func.count(models.Volume.id), func.sum(models.Volume.size), read_deleted="no", session=session).\ filter_by(project_id=project_id) if volume_type_id: query = query.filter_by(volume_type_id=volume_type_id) result = query.first() # NOTE(vish): convert None to 0 return (result[0] or 0, result[1] or 0) @require_admin_context def volume_data_get_for_project(context, project_id, volume_type_id=None): return _volume_data_get_for_project(context, project_id, volume_type_id) @require_admin_context def finish_volume_migration(context, src_vol_id, dest_vol_id): """Copy almost all columns from dest to source.""" session = get_session() with session.begin(): src_volume_ref = _volume_get(context, src_vol_id, session=session) dest_volume_ref = _volume_get(context, dest_vol_id, session=session) # NOTE(rpodolyaka): we should copy only column values, while model # instances also have relationships attributes, which # should be ignored def is_column(inst, attr): return attr in inst.__class__.__table__.columns for key, value in dest_volume_ref.iteritems(): if key == 'id' or not is_column(dest_volume_ref, key): continue elif key == 'migration_status': value = None elif key == '_name_id': value = dest_volume_ref['_name_id'] or dest_volume_ref['id'] setattr(src_volume_ref, key, value) @require_admin_context @_retry_on_deadlock def volume_destroy(context, volume_id): session = get_session() now = timeutils.utcnow() with session.begin(): model_query(context, models.Volume, session=session).\ filter_by(id=volume_id).\ update({'status': 'deleted', 'deleted': True, 'deleted_at': now, 'updated_at': literal_column('updated_at')}) model_query(context, models.IscsiTarget, session=session).\ filter_by(volume_id=volume_id).\ update({'volume_id': None}) model_query(context, models.VolumeMetadata, session=session).\ filter_by(volume_id=volume_id).\ update({'deleted': True, 'deleted_at': now, 'updated_at': literal_column('updated_at')}) model_query(context, models.VolumeAdminMetadata, session=session).\ filter_by(volume_id=volume_id).\ update({'deleted': True, 'deleted_at': now, 'updated_at': literal_column('updated_at')}) model_query(context, models.Transfer, session=session).\ filter_by(volume_id=volume_id).\ update({'deleted': True, 'deleted_at': now, 'updated_at': literal_column('updated_at')}) @require_admin_context def volume_detached(context, volume_id): session = get_session() with session.begin(): volume_ref = _volume_get(context, volume_id, session=session) # Hide status update from user if we're performing a volume migration if not volume_ref['migration_status']: volume_ref['status'] = 'available' volume_ref['mountpoint'] = None volume_ref['attach_status'] = 'detached' volume_ref['instance_uuid'] = None volume_ref['attached_host'] = None volume_ref['attach_time'] = None volume_ref.save(session=session) @require_context def _volume_get_query(context, session=None, project_only=False): if is_admin_context(context): return model_query(context, models.Volume, session=session, project_only=project_only).\ options(joinedload('volume_metadata')).\ options(joinedload('volume_admin_metadata')).\ options(joinedload('volume_type')) else: return model_query(context, models.Volume, session=session, project_only=project_only).\ options(joinedload('volume_metadata')).\ options(joinedload('volume_type')) @require_context def _volume_get(context, volume_id, session=None): result = _volume_get_query(context, session=session, project_only=True).\ filter_by(id=volume_id).\ first() if not result: raise exception.VolumeNotFound(volume_id=volume_id) return result @require_context def volume_get(context, volume_id): return _volume_get(context, volume_id) @require_admin_context def volume_get_all(context, marker, limit, sort_key, sort_dir, filters=None): """Retrieves all volumes. :param context: context to query under :param marker: the last item of the previous page, used to determine the next page of results to return :param limit: maximum number of items to return :param sort_key: single attributes by which results should be sorted :param sort_dir: direction in which results should be sorted (asc, desc) :param filters: Filters for the query. A filter key/value of 'no_migration_targets'=True causes volumes with either a NULL 'migration_status' or a 'migration_status' that does not start with 'target:' to be retrieved. :returns: list of matching volumes """ session = get_session() with session.begin(): # Generate the query query = _generate_paginate_query(context, session, marker, limit, sort_key, sort_dir, filters) # No volumes would match, return empty list if query == None: return [] return query.all() @require_admin_context def volume_get_all_by_host(context, host): return _volume_get_query(context).filter_by(host=host).all() @require_admin_context def volume_get_all_by_instance_uuid(context, instance_uuid): result = model_query(context, models.Volume, read_deleted="no").\ options(joinedload('volume_metadata')).\ options(joinedload('volume_admin_metadata')).\ options(joinedload('volume_type')).\ filter_by(instance_uuid=instance_uuid).\ all() if not result: return [] return result @require_context def volume_get_all_by_project(context, project_id, marker, limit, sort_key, sort_dir, filters=None): """"Retrieves all volumes in a project. :param context: context to query under :param project_id: project for all volumes being retrieved :param marker: the last item of the previous page, used to determine the next page of results to return :param limit: maximum number of items to return :param sort_key: single attributes by which results should be sorted :param sort_dir: direction in which results should be sorted (asc, desc) :param filters: Filters for the query. A filter key/value of 'no_migration_targets'=True causes volumes with either a NULL 'migration_status' or a 'migration_status' that does not start with 'target:' to be retrieved. :returns: list of matching volumes """ session = get_session() with session.begin(): authorize_project_context(context, project_id) # Add in the project filter without modifying the given filters filters = filters.copy() if filters else {} filters['project_id'] = project_id # Generate the query query = _generate_paginate_query(context, session, marker, limit, sort_key, sort_dir, filters) # No volumes would match, return empty list if query == None: return [] return query.all() def _generate_paginate_query(context, session, marker, limit, sort_key, sort_dir, filters): """Generate the query to include the filters and the paginate options. Returns a query with sorting / pagination criteria added or None if the given filters will not yield any results. :param context: context to query under :param session: the session to use :param marker: the last item of the previous page; we returns the next results after this value. :param limit: maximum number of items to return :param sort_key: single attributes by which results should be sorted :param sort_dir: direction in which results should be sorted (asc, desc) :param filters: dictionary of filters; values that are lists, tuples, sets, or frozensets cause an 'IN' test to be performed, while exact matching ('==' operator) is used for other values :returns: updated query or None """ query = _volume_get_query(context, session=session) if filters: filters = filters.copy() # 'no_migration_targets' is unique, must be either NULL or # not start with 'target:' if ('no_migration_targets' in filters and filters['no_migration_targets'] == True): filters.pop('no_migration_targets') try: column_attr = getattr(models.Volume, 'migration_status') conditions = [column_attr == None, column_attr.op('NOT LIKE')('target:%')] query = query.filter(or_(*conditions)) except AttributeError: log_msg = _("'migration_status' column could not be found.") LOG.debug(log_msg) return None # Apply exact match filters for everything else, ensure that the # filter value exists on the model for key in filters.keys(): # metadata is unique, must be a dict if key == 'metadata': if not isinstance(filters[key], dict): log_msg = _("'metadata' filter value is not valid.") LOG.debug(log_msg) return None continue try: column_attr = getattr(models.Volume, key) # Do not allow relationship properties since those require # schema specific knowledge prop = getattr(column_attr, 'property') if isinstance(prop, RelationshipProperty): log_msg = (_("'%s' filter key is not valid, " "it maps to a relationship.")) % key LOG.debug(log_msg) return None except AttributeError: log_msg = _("'%s' filter key is not valid.") % key LOG.debug(log_msg) return None # Holds the simple exact matches filter_dict = {} # Iterate over all filters, special case the filter is necessary for key, value in filters.iteritems(): if key == 'metadata': # model.VolumeMetadata defines the backref to Volumes as # 'volume_metadata', use that column attribute key key = 'volume_metadata' column_attr = getattr(models.Volume, key) for k, v in value.iteritems(): query = query.filter(column_attr.any(key=k, value=v)) elif isinstance(value, (list, tuple, set, frozenset)): # Looking for values in a list; apply to query directly column_attr = getattr(models.Volume, key) query = query.filter(column_attr.in_(value)) else: # OK, simple exact match; save for later filter_dict[key] = value # Apply simple exact matches if filter_dict: query = query.filter_by(**filter_dict) marker_volume = None if marker is not None: marker_volume = _volume_get(context, marker, session) return sqlalchemyutils.paginate_query(query, models.Volume, limit, [sort_key, 'created_at', 'id'], marker=marker_volume, sort_dir=sort_dir) @require_admin_context def volume_get_iscsi_target_num(context, volume_id): result = model_query(context, models.IscsiTarget, read_deleted="yes").\ filter_by(volume_id=volume_id).\ first() if not result: raise exception.ISCSITargetNotFoundForVolume(volume_id=volume_id) return result.target_num @require_context def volume_update(context, volume_id, values): session = get_session() with session.begin(): metadata = values.get('metadata') if metadata is not None: _volume_user_metadata_update(context, volume_id, values.pop('metadata'), delete=True, session=session) admin_metadata = values.get('admin_metadata') if is_admin_context(context) and admin_metadata is not None: _volume_admin_metadata_update(context, volume_id, values.pop('admin_metadata'), delete=True, session=session) volume_ref = _volume_get(context, volume_id, session=session) volume_ref.update(values) volume_ref.save(session=session) return volume_ref #################### def _volume_x_metadata_get_query(context, volume_id, model, session=None): return model_query(context, model, session=session, read_deleted="no").\ filter_by(volume_id=volume_id) def _volume_x_metadata_get(context, volume_id, model, session=None): rows = _volume_x_metadata_get_query(context, volume_id, model, session=session).all() result = {} for row in rows: result[row['key']] = row['value'] return result def _volume_x_metadata_get_item(context, volume_id, key, model, notfound_exec, session=None): result = _volume_x_metadata_get_query(context, volume_id, model, session=session).\ filter_by(key=key).\ first() if not result: raise notfound_exec(metadata_key=key, volume_id=volume_id) return result def _volume_x_metadata_update(context, volume_id, metadata, delete, model, notfound_exec, session=None): if not session: session = get_session() with session.begin(subtransactions=True): # Set existing metadata to deleted if delete argument is True if delete: original_metadata = _volume_x_metadata_get(context, volume_id, model, session=session) for meta_key, meta_value in original_metadata.iteritems(): if meta_key not in metadata: meta_ref = _volume_x_metadata_get_item(context, volume_id, meta_key, model, notfound_exec, session=session) meta_ref.update({'deleted': True}) meta_ref.save(session=session) meta_ref = None # Now update all existing items with new values, or create new meta # objects for meta_key, meta_value in metadata.items(): # update the value whether it exists or not item = {"value": meta_value} try: meta_ref = _volume_x_metadata_get_item(context, volume_id, meta_key, model, notfound_exec, session=session) except notfound_exec: meta_ref = model() item.update({"key": meta_key, "volume_id": volume_id}) meta_ref.update(item) meta_ref.save(session=session) return _volume_x_metadata_get(context, volume_id, model) def _volume_user_metadata_get_query(context, volume_id, session=None): return _volume_x_metadata_get_query(context, volume_id, models.VolumeMetadata, session=session) @require_context @require_volume_exists def _volume_user_metadata_get(context, volume_id, session=None): return _volume_x_metadata_get(context, volume_id, models.VolumeMetadata, session=session) @require_context def _volume_user_metadata_get_item(context, volume_id, key, session=None): return _volume_x_metadata_get_item(context, volume_id, key, models.VolumeMetadata, exception.VolumeMetadataNotFound, session=session) @require_context @require_volume_exists def _volume_user_metadata_update(context, volume_id, metadata, delete, session=None): return _volume_x_metadata_update(context, volume_id, metadata, delete, models.VolumeMetadata, exception.VolumeMetadataNotFound, session=session) @require_context @require_volume_exists def volume_metadata_get_item(context, volume_id, key): return _volume_user_metadata_get_item(context, volume_id, key) @require_context @require_volume_exists def volume_metadata_get(context, volume_id): return _volume_user_metadata_get(context, volume_id) @require_context @require_volume_exists @_retry_on_deadlock def volume_metadata_delete(context, volume_id, key): _volume_user_metadata_get_query(context, volume_id).\ filter_by(key=key).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context @require_volume_exists @_retry_on_deadlock def volume_metadata_update(context, volume_id, metadata, delete): return _volume_user_metadata_update(context, volume_id, metadata, delete) ################### def _volume_admin_metadata_get_query(context, volume_id, session=None): return _volume_x_metadata_get_query(context, volume_id, models.VolumeAdminMetadata, session=session) @require_admin_context @require_volume_exists def _volume_admin_metadata_get(context, volume_id, session=None): return _volume_x_metadata_get(context, volume_id, models.VolumeAdminMetadata, session=session) @require_admin_context @require_volume_exists def _volume_admin_metadata_update(context, volume_id, metadata, delete, session=None): return _volume_x_metadata_update(context, volume_id, metadata, delete, models.VolumeAdminMetadata, exception.VolumeAdminMetadataNotFound, session=session) @require_admin_context @require_volume_exists def volume_admin_metadata_get(context, volume_id): return _volume_admin_metadata_get(context, volume_id) @require_admin_context @require_volume_exists @_retry_on_deadlock def volume_admin_metadata_delete(context, volume_id, key): _volume_admin_metadata_get_query(context, volume_id).\ filter_by(key=key).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_admin_context @require_volume_exists @_retry_on_deadlock def volume_admin_metadata_update(context, volume_id, metadata, delete): return _volume_admin_metadata_update(context, volume_id, metadata, delete) ################### @require_context def snapshot_create(context, values): values['snapshot_metadata'] = _metadata_refs(values.get('metadata'), models.SnapshotMetadata) snapshot_ref = models.Snapshot() if not values.get('id'): values['id'] = str(uuid.uuid4()) snapshot_ref.update(values) session = get_session() with session.begin(): snapshot_ref.save(session=session) return _snapshot_get(context, values['id'], session=session) @require_admin_context @_retry_on_deadlock def snapshot_destroy(context, snapshot_id): session = get_session() with session.begin(): model_query(context, models.Snapshot, session=session).\ filter_by(id=snapshot_id).\ update({'status': 'deleted', 'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) model_query(context, models.SnapshotMetadata, session=session).\ filter_by(snapshot_id=snapshot_id).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context def _snapshot_get(context, snapshot_id, session=None): result = model_query(context, models.Snapshot, session=session, project_only=True).\ options(joinedload('volume')).\ options(joinedload('snapshot_metadata')).\ filter_by(id=snapshot_id).\ first() if not result: raise exception.SnapshotNotFound(snapshot_id=snapshot_id) return result @require_context def snapshot_get(context, snapshot_id): return _snapshot_get(context, snapshot_id) @require_admin_context def snapshot_get_all(context): return model_query(context, models.Snapshot).\ options(joinedload('snapshot_metadata')).\ all() @require_context def snapshot_get_all_for_volume(context, volume_id): return model_query(context, models.Snapshot, read_deleted='no', project_only=True).\ filter_by(volume_id=volume_id).\ options(joinedload('snapshot_metadata')).\ all() @require_context def snapshot_get_all_by_project(context, project_id): authorize_project_context(context, project_id) return model_query(context, models.Snapshot).\ filter_by(project_id=project_id).\ options(joinedload('snapshot_metadata')).\ all() @require_context def _snapshot_data_get_for_project(context, project_id, volume_type_id=None, session=None): authorize_project_context(context, project_id) query = model_query(context, func.count(models.Snapshot.id), func.sum(models.Snapshot.volume_size), read_deleted="no", session=session).\ filter_by(project_id=project_id) if volume_type_id: query = query.join('volume').filter_by(volume_type_id=volume_type_id) result = query.first() # NOTE(vish): convert None to 0 return (result[0] or 0, result[1] or 0) @require_context def snapshot_data_get_for_project(context, project_id, volume_type_id=None): return _snapshot_data_get_for_project(context, project_id, volume_type_id) @require_context def snapshot_get_active_by_window(context, begin, end=None, project_id=None): """Return snapshots that were active during window.""" query = model_query(context, models.Snapshot, read_deleted="yes") query = query.filter(or_(models.Snapshot.deleted_at == None, models.Snapshot.deleted_at > begin)) query = query.options(joinedload(models.Snapshot.volume)) if end: query = query.filter(models.Snapshot.created_at < end) if project_id: query = query.filter_by(project_id=project_id) return query.all() @require_context def snapshot_update(context, snapshot_id, values): session = get_session() with session.begin(): snapshot_ref = _snapshot_get(context, snapshot_id, session=session) snapshot_ref.update(values) snapshot_ref.save(session=session) #################### def _snapshot_metadata_get_query(context, snapshot_id, session=None): return model_query(context, models.SnapshotMetadata, session=session, read_deleted="no").\ filter_by(snapshot_id=snapshot_id) @require_context @require_snapshot_exists def _snapshot_metadata_get(context, snapshot_id, session=None): rows = _snapshot_metadata_get_query(context, snapshot_id, session).all() result = {} for row in rows: result[row['key']] = row['value'] return result @require_context @require_snapshot_exists def snapshot_metadata_get(context, snapshot_id): return _snapshot_metadata_get(context, snapshot_id) @require_context @require_snapshot_exists @_retry_on_deadlock def snapshot_metadata_delete(context, snapshot_id, key): _snapshot_metadata_get_query(context, snapshot_id).\ filter_by(key=key).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context def _snapshot_metadata_get_item(context, snapshot_id, key, session=None): result = _snapshot_metadata_get_query(context, snapshot_id, session=session).\ filter_by(key=key).\ first() if not result: raise exception.SnapshotMetadataNotFound(metadata_key=key, snapshot_id=snapshot_id) return result @require_context @require_snapshot_exists @_retry_on_deadlock def snapshot_metadata_update(context, snapshot_id, metadata, delete): session = get_session() with session.begin(): # Set existing metadata to deleted if delete argument is True if delete: original_metadata = _snapshot_metadata_get(context, snapshot_id, session) for meta_key, meta_value in original_metadata.iteritems(): if meta_key not in metadata: meta_ref = _snapshot_metadata_get_item(context, snapshot_id, meta_key, session) meta_ref.update({'deleted': True}) meta_ref.save(session=session) meta_ref = None # Now update all existing items with new values, or create new meta # objects for meta_key, meta_value in metadata.items(): # update the value whether it exists or not item = {"value": meta_value} try: meta_ref = _snapshot_metadata_get_item(context, snapshot_id, meta_key, session) except exception.SnapshotMetadataNotFound as e: meta_ref = models.SnapshotMetadata() item.update({"key": meta_key, "snapshot_id": snapshot_id}) meta_ref.update(item) meta_ref.save(session=session) return snapshot_metadata_get(context, snapshot_id) ################### @require_admin_context def volume_type_create(context, values): """Create a new instance type. In order to pass in extra specs, the values dict should contain a 'extra_specs' key/value pair: {'extra_specs' : {'k1': 'v1', 'k2': 'v2', ...}} """ if not values.get('id'): values['id'] = str(uuid.uuid4()) session = get_session() with session.begin(): try: _volume_type_get_by_name(context, values['name'], session) raise exception.VolumeTypeExists(id=values['name']) except exception.VolumeTypeNotFoundByName: pass try: _volume_type_get(context, values['id'], session) raise exception.VolumeTypeExists(id=values['id']) except exception.VolumeTypeNotFound: pass try: values['extra_specs'] = _metadata_refs(values.get('extra_specs'), models.VolumeTypeExtraSpecs) volume_type_ref = models.VolumeTypes() volume_type_ref.update(values) volume_type_ref.save(session=session) except Exception as e: raise db_exc.DBError(e) return volume_type_ref @require_context def volume_type_get_all(context, inactive=False, filters=None): """Returns a dict describing all volume_types with name as key.""" filters = filters or {} read_deleted = "yes" if inactive else "no" rows = model_query(context, models.VolumeTypes, read_deleted=read_deleted).\ options(joinedload('extra_specs')).\ order_by("name").\ all() result = {} for row in rows: result[row['name']] = _dict_with_extra_specs(row) return result @require_context def _volume_type_get(context, id, session=None, inactive=False): read_deleted = "yes" if inactive else "no" result = model_query(context, models.VolumeTypes, session=session, read_deleted=read_deleted).\ options(joinedload('extra_specs')).\ filter_by(id=id).\ first() if not result: raise exception.VolumeTypeNotFound(volume_type_id=id) return _dict_with_extra_specs(result) @require_context def volume_type_get(context, id, inactive=False): """Return a dict describing specific volume_type.""" return _volume_type_get(context, id, None, inactive) @require_context def _volume_type_get_by_name(context, name, session=None): result = model_query(context, models.VolumeTypes, session=session).\ options(joinedload('extra_specs')).\ filter_by(name=name).\ first() if not result: raise exception.VolumeTypeNotFoundByName(volume_type_name=name) else: return _dict_with_extra_specs(result) @require_context def volume_type_get_by_name(context, name): """Return a dict describing specific volume_type.""" return _volume_type_get_by_name(context, name) @require_admin_context def volume_type_qos_associations_get(context, qos_specs_id, inactive=False): read_deleted = "yes" if inactive else "no" return model_query(context, models.VolumeTypes, read_deleted=read_deleted). \ filter_by(qos_specs_id=qos_specs_id).all() @require_admin_context def volume_type_qos_associate(context, type_id, qos_specs_id): session = get_session() with session.begin(): _volume_type_get(context, type_id, session) session.query(models.VolumeTypes). \ filter_by(id=type_id). \ update({'qos_specs_id': qos_specs_id, 'updated_at': timeutils.utcnow()}) @require_admin_context def volume_type_qos_disassociate(context, qos_specs_id, type_id): """Disassociate volume type from qos specs.""" session = get_session() with session.begin(): _volume_type_get(context, type_id, session) session.query(models.VolumeTypes). \ filter_by(id=type_id). \ filter_by(qos_specs_id=qos_specs_id). \ update({'qos_specs_id': None, 'updated_at': timeutils.utcnow()}) @require_admin_context def volume_type_qos_disassociate_all(context, qos_specs_id): """Disassociate all volume types associated with specified qos specs.""" session = get_session() with session.begin(): session.query(models.VolumeTypes). \ filter_by(qos_specs_id=qos_specs_id). \ update({'qos_specs_id': None, 'updated_at': timeutils.utcnow()}) @require_admin_context def volume_type_qos_specs_get(context, type_id): """Return all qos specs for given volume type. result looks like: { 'qos_specs': { 'id': 'qos-specs-id', 'name': 'qos_specs_name', 'consumer': 'Consumer', 'specs': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' } } } """ session = get_session() with session.begin(): _volume_type_get(context, type_id, session) row = session.query(models.VolumeTypes). \ options(joinedload('qos_specs')). \ filter_by(id=type_id). \ first() # row.qos_specs is a list of QualityOfServiceSpecs ref specs = _dict_with_qos_specs(row.qos_specs) if not specs: # turn empty list to None specs = None else: specs = specs[0] return {'qos_specs': specs} @require_admin_context @_retry_on_deadlock def volume_type_destroy(context, id): session = get_session() with session.begin(): _volume_type_get(context, id, session) results = model_query(context, models.Volume, session=session). \ filter_by(volume_type_id=id).all() if results: msg = _('VolumeType %s deletion failed, VolumeType in use.') % id LOG.error(msg) raise exception.VolumeTypeInUse(volume_type_id=id) model_query(context, models.VolumeTypes, session=session).\ filter_by(id=id).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) model_query(context, models.VolumeTypeExtraSpecs, session=session).\ filter_by(volume_type_id=id).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context def volume_get_active_by_window(context, begin, end=None, project_id=None): """Return volumes that were active during window.""" query = model_query(context, models.Volume, read_deleted="yes") query = query.filter(or_(models.Volume.deleted_at == None, models.Volume.deleted_at > begin)) if end: query = query.filter(models.Volume.created_at < end) if project_id: query = query.filter_by(project_id=project_id) return query.all() #################### def _volume_type_extra_specs_query(context, volume_type_id, session=None): return model_query(context, models.VolumeTypeExtraSpecs, session=session, read_deleted="no").\ filter_by(volume_type_id=volume_type_id) @require_context def volume_type_extra_specs_get(context, volume_type_id): rows = _volume_type_extra_specs_query(context, volume_type_id).\ all() result = {} for row in rows: result[row['key']] = row['value'] return result @require_context def volume_type_extra_specs_delete(context, volume_type_id, key): session = get_session() with session.begin(): _volume_type_extra_specs_get_item(context, volume_type_id, key, session) _volume_type_extra_specs_query(context, volume_type_id, session).\ filter_by(key=key).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context def _volume_type_extra_specs_get_item(context, volume_type_id, key, session=None): result = _volume_type_extra_specs_query( context, volume_type_id, session=session).\ filter_by(key=key).\ first() if not result: raise exception.VolumeTypeExtraSpecsNotFound( extra_specs_key=key, volume_type_id=volume_type_id) return result @require_context def volume_type_extra_specs_update_or_create(context, volume_type_id, specs): session = get_session() with session.begin(): spec_ref = None for key, value in specs.iteritems(): try: spec_ref = _volume_type_extra_specs_get_item( context, volume_type_id, key, session) except exception.VolumeTypeExtraSpecsNotFound as e: spec_ref = models.VolumeTypeExtraSpecs() spec_ref.update({"key": key, "value": value, "volume_type_id": volume_type_id, "deleted": False}) spec_ref.save(session=session) return specs #################### @require_admin_context def qos_specs_create(context, values): """Create a new QoS specs. :param values dictionary that contains specifications for QoS e.g. {'name': 'Name', 'qos_specs': { 'consumer': 'front-end', 'total_iops_sec': 1000, 'total_bytes_sec': 1024000 } } """ specs_id = str(uuid.uuid4()) session = get_session() with session.begin(): try: _qos_specs_get_by_name(context, values['name'], session) raise exception.QoSSpecsExists(specs_id=values['name']) except exception.QoSSpecsNotFound: pass try: # Insert a root entry for QoS specs specs_root = models.QualityOfServiceSpecs() root = dict(id=specs_id) # 'QoS_Specs_Name' is a internal reserved key to store # the name of QoS specs root['key'] = 'QoS_Specs_Name' root['value'] = values['name'] LOG.debug("DB qos_specs_create(): root %s", root) specs_root.update(root) specs_root.save(session=session) # Insert all specification entries for QoS specs for k, v in values['qos_specs'].iteritems(): item = dict(key=k, value=v, specs_id=specs_id) item['id'] = str(uuid.uuid4()) spec_entry = models.QualityOfServiceSpecs() spec_entry.update(item) spec_entry.save(session=session) except Exception as e: raise db_exc.DBError(e) return dict(id=specs_root.id, name=specs_root.value) @require_admin_context def _qos_specs_get_by_name(context, name, session=None, inactive=False): read_deleted = 'yes' if inactive else 'no' results = model_query(context, models.QualityOfServiceSpecs, read_deleted=read_deleted, session=session). \ filter_by(key='QoS_Specs_Name'). \ filter_by(value=name). \ options(joinedload('specs')).all() if not results: raise exception.QoSSpecsNotFound(specs_id=name) return results @require_admin_context def _qos_specs_get_ref(context, qos_specs_id, session=None, inactive=False): read_deleted = 'yes' if inactive else 'no' result = model_query(context, models.QualityOfServiceSpecs, read_deleted=read_deleted, session=session). \ filter_by(id=qos_specs_id). \ options(joinedload_all('specs')).all() if not result: raise exception.QoSSpecsNotFound(specs_id=qos_specs_id) return result def _dict_with_children_specs(specs): """Convert specs list to a dict.""" result = {} for spec in specs: # Skip deleted keys if not spec['deleted']: result.update({spec['key']: spec['value']}) return result def _dict_with_qos_specs(rows): """Convert qos specs query results to list. Qos specs query results are a list of quality_of_service_specs refs, some are root entry of a qos specs (key == 'QoS_Specs_Name') and the rest are children entry, a.k.a detailed specs for a qos specs. This function converts query results to a dict using spec name as key. """ result = [] for row in rows: if row['key'] == 'QoS_Specs_Name': member = {} member['name'] = row['value'] member.update(dict(id=row['id'])) if row.specs: spec_dict = _dict_with_children_specs(row.specs) member.update(dict(consumer=spec_dict['consumer'])) del spec_dict['consumer'] member.update(dict(specs=spec_dict)) result.append(member) return result @require_admin_context def qos_specs_get(context, qos_specs_id, inactive=False): rows = _qos_specs_get_ref(context, qos_specs_id, None, inactive) return _dict_with_qos_specs(rows)[0] @require_admin_context def qos_specs_get_all(context, inactive=False, filters=None): """Returns a list of all qos_specs. Results is like: [{ 'id': SPECS-UUID, 'name': 'qos_spec-1', 'consumer': 'back-end', 'specs': { 'key1': 'value1', 'key2': 'value2', ... } }, { 'id': SPECS-UUID, 'name': 'qos_spec-2', 'consumer': 'front-end', 'specs': { 'key1': 'value1', 'key2': 'value2', ... } }, ] """ filters = filters or {} #TODO(zhiteng) Add filters for 'consumer' read_deleted = "yes" if inactive else "no" rows = model_query(context, models.QualityOfServiceSpecs, read_deleted=read_deleted). \ options(joinedload_all('specs')).all() return _dict_with_qos_specs(rows) @require_admin_context def qos_specs_get_by_name(context, name, inactive=False): rows = _qos_specs_get_by_name(context, name, None, inactive) return _dict_with_qos_specs(rows)[0] @require_admin_context def qos_specs_associations_get(context, qos_specs_id): """Return all entities associated with specified qos specs. For now, the only entity that is possible to associate with a qos specs is volume type, so this is just a wrapper of volume_type_qos_associations_get(). But it's possible to extend qos specs association to other entities, such as volumes, sometime in future. """ # Raise QoSSpecsNotFound if no specs found _qos_specs_get_ref(context, qos_specs_id, None) return volume_type_qos_associations_get(context, qos_specs_id) @require_admin_context def qos_specs_associate(context, qos_specs_id, type_id): """Associate volume type from specified qos specs.""" return volume_type_qos_associate(context, type_id, qos_specs_id) @require_admin_context def qos_specs_disassociate(context, qos_specs_id, type_id): """Disassociate volume type from specified qos specs.""" return volume_type_qos_disassociate(context, qos_specs_id, type_id) @require_admin_context def qos_specs_disassociate_all(context, qos_specs_id): """Disassociate all entities associated with specified qos specs. For now, the only entity that is possible to associate with a qos specs is volume type, so this is just a wrapper of volume_type_qos_disassociate_all(). But it's possible to extend qos specs association to other entities, such as volumes, sometime in future. """ return volume_type_qos_disassociate_all(context, qos_specs_id) @require_admin_context def qos_specs_item_delete(context, qos_specs_id, key): session = get_session() with session.begin(): _qos_specs_get_item(context, qos_specs_id, key) session.query(models.QualityOfServiceSpecs). \ filter(models.QualityOfServiceSpecs.key == key). \ filter(models.QualityOfServiceSpecs.specs_id == qos_specs_id). \ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_admin_context def qos_specs_delete(context, qos_specs_id): session = get_session() with session.begin(): _qos_specs_get_ref(context, qos_specs_id, session) session.query(models.QualityOfServiceSpecs).\ filter(or_(models.QualityOfServiceSpecs.id == qos_specs_id, models.QualityOfServiceSpecs.specs_id == qos_specs_id)).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_admin_context def _qos_specs_get_item(context, qos_specs_id, key, session=None): result = model_query(context, models.QualityOfServiceSpecs, session=session). \ filter(models.QualityOfServiceSpecs.key == key). \ filter(models.QualityOfServiceSpecs.specs_id == qos_specs_id). \ first() if not result: raise exception.QoSSpecsKeyNotFound( specs_key=key, specs_id=qos_specs_id) return result @require_admin_context def qos_specs_update(context, qos_specs_id, specs): """Make updates to a existing qos specs. Perform add, update or delete key/values to a qos specs. """ session = get_session() with session.begin(): # make sure qos specs exists _qos_specs_get_ref(context, qos_specs_id, session) spec_ref = None for key in specs.keys(): try: spec_ref = _qos_specs_get_item( context, qos_specs_id, key, session) except exception.QoSSpecsKeyNotFound as e: spec_ref = models.QualityOfServiceSpecs() id = None if spec_ref.get('id', None): id = spec_ref['id'] else: id = str(uuid.uuid4()) value = dict(id=id, key=key, value=specs[key], specs_id=qos_specs_id, deleted=False) LOG.debug('qos_specs_update() value: %s' % value) spec_ref.update(value) spec_ref.save(session=session) return specs #################### @require_context def volume_type_encryption_get(context, volume_type_id, session=None): return model_query(context, models.Encryption, session=session, read_deleted="no").\ filter_by(volume_type_id=volume_type_id).first() @require_admin_context def volume_type_encryption_delete(context, volume_type_id): session = get_session() with session.begin(): encryption = volume_type_encryption_get(context, volume_type_id, session) encryption.update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_admin_context def volume_type_encryption_create(context, volume_type_id, values): session = get_session() with session.begin(): encryption = models.Encryption() if 'volume_type_id' not in values: values['volume_type_id'] = volume_type_id encryption.update(values) encryption.save(session=session) return encryption @require_admin_context def volume_type_encryption_update(context, volume_type_id, values): session = get_session() with session.begin(): encryption = volume_type_encryption_get(context, volume_type_id, session) if not encryption: raise exception.VolumeTypeEncryptionNotFound(type_id= volume_type_id) encryption.update(values) encryption.save(session=session) return encryption def volume_type_encryption_volume_get(context, volume_type_id, session=None): volume_list = _volume_get_query(context, session=session, project_only=False).\ filter_by(volume_type_id=volume_type_id).\ all() return volume_list #################### @require_context def volume_encryption_metadata_get(context, volume_id, session=None): """Return the encryption key id for a given volume.""" volume_ref = _volume_get(context, volume_id) encryption_ref = volume_type_encryption_get(context, volume_ref['volume_type_id']) return { 'encryption_key_id': volume_ref['encryption_key_id'], 'control_location': encryption_ref['control_location'], 'cipher': encryption_ref['cipher'], 'key_size': encryption_ref['key_size'], 'provider': encryption_ref['provider'], } #################### @require_context def _volume_glance_metadata_get_all(context, session=None): query = model_query(context, models.VolumeGlanceMetadata, session=session) if is_user_context(context): query = query.filter( models.Volume.id == models.VolumeGlanceMetadata.volume_id, models.Volume.project_id == context.project_id) return query.all() @require_context def volume_glance_metadata_get_all(context): """Return the Glance metadata for all volumes.""" return _volume_glance_metadata_get_all(context) @require_context @require_volume_exists def _volume_glance_metadata_get(context, volume_id, session=None): rows = model_query(context, models.VolumeGlanceMetadata, session=session).\ filter_by(volume_id=volume_id).\ filter_by(deleted=False).\ all() if not rows: raise exception.GlanceMetadataNotFound(id=volume_id) return rows @require_context @require_volume_exists def volume_glance_metadata_get(context, volume_id): """Return the Glance metadata for the specified volume.""" return _volume_glance_metadata_get(context, volume_id) @require_context @require_snapshot_exists def _volume_snapshot_glance_metadata_get(context, snapshot_id, session=None): rows = model_query(context, models.VolumeGlanceMetadata, session=session).\ filter_by(snapshot_id=snapshot_id).\ filter_by(deleted=False).\ all() if not rows: raise exception.GlanceMetadataNotFound(id=snapshot_id) return rows @require_context @require_snapshot_exists def volume_snapshot_glance_metadata_get(context, snapshot_id): """Return the Glance metadata for the specified snapshot.""" return _volume_snapshot_glance_metadata_get(context, snapshot_id) @require_context @require_volume_exists def volume_glance_metadata_create(context, volume_id, key, value): """Update the Glance metadata for a volume by adding a new key:value pair. This API does not support changing the value of a key once it has been created. """ session = get_session() with session.begin(): rows = session.query(models.VolumeGlanceMetadata).\ filter_by(volume_id=volume_id).\ filter_by(key=key).\ filter_by(deleted=False).all() if len(rows) > 0: raise exception.GlanceMetadataExists(key=key, volume_id=volume_id) vol_glance_metadata = models.VolumeGlanceMetadata() vol_glance_metadata.volume_id = volume_id vol_glance_metadata.key = key vol_glance_metadata.value = str(value) vol_glance_metadata.save(session=session) return @require_context @require_snapshot_exists def volume_glance_metadata_copy_to_snapshot(context, snapshot_id, volume_id): """Update the Glance metadata for a snapshot. This copies all of the key:value pairs from the originating volume, to ensure that a volume created from the snapshot will retain the original metadata. """ session = get_session() with session.begin(): metadata = _volume_glance_metadata_get(context, volume_id, session=session) for meta in metadata: vol_glance_metadata = models.VolumeGlanceMetadata() vol_glance_metadata.snapshot_id = snapshot_id vol_glance_metadata.key = meta['key'] vol_glance_metadata.value = meta['value'] vol_glance_metadata.save(session=session) @require_context @require_volume_exists def volume_glance_metadata_copy_from_volume_to_volume(context, src_volume_id, volume_id): """Update the Glance metadata for a volume. This copies all all of the key:value pairs from the originating volume, to ensure that a volume created from the volume (clone) will retain the original metadata. """ session = get_session() with session.begin(): metadata = _volume_glance_metadata_get(context, src_volume_id, session=session) for meta in metadata: vol_glance_metadata = models.VolumeGlanceMetadata() vol_glance_metadata.volume_id = volume_id vol_glance_metadata.key = meta['key'] vol_glance_metadata.value = meta['value'] vol_glance_metadata.save(session=session) @require_context @require_volume_exists def volume_glance_metadata_copy_to_volume(context, volume_id, snapshot_id): """Update the Glance metadata from a volume (created from a snapshot) by copying all of the key:value pairs from the originating snapshot. This is so that the Glance metadata from the original volume is retained. """ session = get_session() with session.begin(): metadata = _volume_snapshot_glance_metadata_get(context, snapshot_id, session=session) for meta in metadata: vol_glance_metadata = models.VolumeGlanceMetadata() vol_glance_metadata.volume_id = volume_id vol_glance_metadata.key = meta['key'] vol_glance_metadata.value = meta['value'] vol_glance_metadata.save(session=session) @require_context def volume_glance_metadata_delete_by_volume(context, volume_id): model_query(context, models.VolumeGlanceMetadata, read_deleted='no').\ filter_by(volume_id=volume_id).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context def volume_glance_metadata_delete_by_snapshot(context, snapshot_id): model_query(context, models.VolumeGlanceMetadata, read_deleted='no').\ filter_by(snapshot_id=snapshot_id).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) ############################### @require_context def backup_get(context, backup_id): result = model_query(context, models.Backup, project_only=True).\ filter_by(id=backup_id).\ first() if not result: raise exception.BackupNotFound(backup_id=backup_id) return result @require_admin_context def backup_get_all(context): return model_query(context, models.Backup).all() @require_admin_context def backup_get_all_by_host(context, host): return model_query(context, models.Backup).filter_by(host=host).all() @require_context def backup_get_all_by_project(context, project_id): authorize_project_context(context, project_id) return model_query(context, models.Backup).\ filter_by(project_id=project_id).all() @require_context def backup_create(context, values): backup = models.Backup() if not values.get('id'): values['id'] = str(uuid.uuid4()) backup.update(values) backup.save() return backup @require_context def backup_update(context, backup_id, values): session = get_session() with session.begin(): backup = model_query(context, models.Backup, session=session, read_deleted="yes").\ filter_by(id=backup_id).first() if not backup: raise exception.BackupNotFound( _("No backup with id %s") % backup_id) backup.update(values) backup.save(session=session) return backup @require_admin_context def backup_destroy(context, backup_id): model_query(context, models.Backup).\ filter_by(id=backup_id).\ update({'status': 'deleted', 'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) ############################### @require_context def _transfer_get(context, transfer_id, session=None): query = model_query(context, models.Transfer, session=session).\ filter_by(id=transfer_id) if not is_admin_context(context): volume = models.Volume query = query.filter(models.Transfer.volume_id == volume.id, volume.project_id == context.project_id) result = query.first() if not result: raise exception.TransferNotFound(transfer_id=transfer_id) return result @require_context def transfer_get(context, transfer_id): return _transfer_get(context, transfer_id) def _translate_transfers(transfers): results = [] for transfer in transfers: r = {} r['id'] = transfer['id'] r['volume_id'] = transfer['volume_id'] r['display_name'] = transfer['display_name'] r['created_at'] = transfer['created_at'] r['deleted'] = transfer['deleted'] results.append(r) return results @require_admin_context def transfer_get_all(context): results = model_query(context, models.Transfer).all() return _translate_transfers(results) @require_context def transfer_get_all_by_project(context, project_id): authorize_project_context(context, project_id) query = model_query(context, models.Transfer).\ filter(models.Volume.id == models.Transfer.volume_id, models.Volume.project_id == project_id) results = query.all() return _translate_transfers(results) @require_context def transfer_create(context, values): transfer = models.Transfer() if not values.get('id'): values['id'] = str(uuid.uuid4()) session = get_session() with session.begin(): volume_ref = _volume_get(context, values['volume_id'], session=session) if volume_ref['status'] != 'available': msg = _('Volume must be available') LOG.error(msg) raise exception.InvalidVolume(reason=msg) volume_ref['status'] = 'awaiting-transfer' transfer.update(values) transfer.save(session=session) volume_ref.update(volume_ref) volume_ref.save(session=session) return transfer @require_context @_retry_on_deadlock def transfer_destroy(context, transfer_id): session = get_session() with session.begin(): transfer_ref = _transfer_get(context, transfer_id, session=session) volume_ref = _volume_get(context, transfer_ref['volume_id'], session=session) # If the volume state is not 'awaiting-transfer' don't change it, but # we can still mark the transfer record as deleted. if volume_ref['status'] != 'awaiting-transfer': msg = _('Volume in unexpected state %s, ' 'expected awaiting-transfer') % volume_ref['status'] LOG.error(msg) else: volume_ref['status'] = 'available' volume_ref.update(volume_ref) volume_ref.save(session=session) model_query(context, models.Transfer, session=session).\ filter_by(id=transfer_id).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) @require_context def transfer_accept(context, transfer_id, user_id, project_id): session = get_session() with session.begin(): transfer_ref = _transfer_get(context, transfer_id, session) volume_id = transfer_ref['volume_id'] volume_ref = _volume_get(context, volume_id, session=session) if volume_ref['status'] != 'awaiting-transfer': volume_status = volume_ref['status'] msg = _('Transfer %(transfer_id)s: Volume id %(volume_id)s in ' 'unexpected state %(status)s, expected ' 'awaiting-transfer') % {'transfer_id': transfer_id, 'volume_id': volume_ref['id'], 'status': volume_ref['status']} LOG.error(msg) raise exception.InvalidVolume(reason=msg) volume_ref['status'] = 'available' volume_ref['user_id'] = user_id volume_ref['project_id'] = project_id volume_ref['updated_at'] = literal_column('updated_at') volume_ref.update(volume_ref) volume_ref.save(session=session) session.query(models.Transfer).\ filter_by(id=transfer_ref['id']).\ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) cinder-2014.1.5/cinder/db/sqlalchemy/migration.py0000664000567000056700000000700312540642606022713 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import os from migrate import exceptions as versioning_exceptions from migrate.versioning import api as versioning_api from migrate.versioning.repository import Repository import sqlalchemy from cinder.db.sqlalchemy.api import get_engine from cinder import exception INIT_VERSION = 000 _REPOSITORY = None def _ensure_reservations_index(migrate_engine): meta = sqlalchemy.MetaData() meta.bind = migrate_engine reservations = sqlalchemy.Table('reservations', meta, autoload=True) members = sorted(['deleted', 'expire']) for idx in reservations.indexes: if sorted(idx.columns.keys()) == members: return # Based on expire_reservations query # from: cinder/db/sqlalchemy/api.py index = sqlalchemy.Index('reservations_deleted_expire_idx', reservations.c.deleted, reservations.c.expire) index.create(migrate_engine) def db_sync(version=None): if version is not None: try: version = int(version) except ValueError: raise exception.Error(_("version should be an integer")) current_version = db_version() repository = _find_migrate_repo() migrate_engine = get_engine() if version is None or version > current_version: result = versioning_api.upgrade(migrate_engine, repository, version) else: result = versioning_api.downgrade(migrate_engine, repository, version) _ensure_reservations_index(migrate_engine) return result def db_version(): repository = _find_migrate_repo() try: return versioning_api.db_version(get_engine(), repository) except versioning_exceptions.DatabaseNotControlledError: # If we aren't version controlled we may already have the database # in the state from before we started version control, check for that # and set up version_control appropriately meta = sqlalchemy.MetaData() engine = get_engine() meta.reflect(bind=engine) tables = meta.tables if len(tables) == 0: db_version_control(INIT_VERSION) return versioning_api.db_version(get_engine(), repository) else: raise exception.Error(_("Upgrade DB using Essex release first.")) def db_initial_version(): return INIT_VERSION def db_version_control(version=None): repository = _find_migrate_repo() versioning_api.version_control(get_engine(), repository, version) return version def _find_migrate_repo(): """Get the path for the migrate repository.""" global _REPOSITORY path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'migrate_repo') assert os.path.exists(path) if _REPOSITORY is None: _REPOSITORY = Repository(path) return _REPOSITORY cinder-2014.1.5/cinder/db/__init__.py0000664000567000056700000000143212540642606020317 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ DB abstraction for Cinder """ from cinder.db.api import * cinder-2014.1.5/cinder/db/api.py0000664000567000056700000006475412540642606017351 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Defines interface for DB access. The underlying driver is loaded as a :class:`LazyPluggable`. Functions in this module are imported into the cinder.db namespace. Call these functions from cinder.db namespace, not the cinder.db.api namespace. All functions in this module return objects that implement a dictionary-like interface. Currently, many of these objects are sqlalchemy objects that implement a dictionary interface. However, a future goal is to have all of these objects be simple dictionaries. **Related Flags** :backend: string to lookup in the list of LazyPluggable backends. `sqlalchemy` is the only supported backend right now. :connection: string specifying the sqlalchemy connection to use, like: `sqlite:///var/lib/cinder/cinder.sqlite`. :enable_new_services: when adding a new service to the database, is it in the pool of available hardware (Default: True) """ from oslo.config import cfg from cinder.openstack.common.db import api as db_api db_opts = [ # TODO(rpodolyaka): this option is deprecated but still passed to # LazyPluggable class which doesn't support retrieving # of options put into groups. Nova's version of this # class supports this. Perhaps, we should put it to Oslo # and then reuse here. cfg.StrOpt('db_backend', default='sqlalchemy', help='The backend to use for db'), cfg.BoolOpt('enable_new_services', default=True, help='Services to be added to the available pool on create'), cfg.StrOpt('volume_name_template', default='volume-%s', help='Template string to be used to generate volume names'), cfg.StrOpt('snapshot_name_template', default='snapshot-%s', help='Template string to be used to generate snapshot names'), cfg.StrOpt('backup_name_template', default='backup-%s', help='Template string to be used to generate backup names'), ] CONF = cfg.CONF CONF.register_opts(db_opts) _BACKEND_MAPPING = {'sqlalchemy': 'cinder.db.sqlalchemy.api'} IMPL = db_api.DBAPI(backend_mapping=_BACKEND_MAPPING) ################### def service_destroy(context, service_id): """Destroy the service or raise if it does not exist.""" return IMPL.service_destroy(context, service_id) def service_get(context, service_id): """Get a service or raise if it does not exist.""" return IMPL.service_get(context, service_id) def service_get_by_host_and_topic(context, host, topic): """Get a service by host it's on and topic it listens to.""" return IMPL.service_get_by_host_and_topic(context, host, topic) def service_get_all(context, disabled=None): """Get all services.""" return IMPL.service_get_all(context, disabled) def service_get_all_by_topic(context, topic): """Get all services for a given topic.""" return IMPL.service_get_all_by_topic(context, topic) def service_get_all_by_host(context, host): """Get all services for a given host.""" return IMPL.service_get_all_by_host(context, host) def service_get_all_volume_sorted(context): """Get all volume services sorted by volume count. :returns: a list of (Service, volume_count) tuples. """ return IMPL.service_get_all_volume_sorted(context) def service_get_by_args(context, host, binary): """Get the state of an service by node name and binary.""" return IMPL.service_get_by_args(context, host, binary) def service_create(context, values): """Create a service from the values dictionary.""" return IMPL.service_create(context, values) def service_update(context, service_id, values): """Set the given properties on an service and update it. Raises NotFound if service does not exist. """ return IMPL.service_update(context, service_id, values) ################### def iscsi_target_count_by_host(context, host): """Return count of export devices.""" return IMPL.iscsi_target_count_by_host(context, host) def iscsi_target_create_safe(context, values): """Create an iscsi_target from the values dictionary. The device is not returned. If the create violates the unique constraints because the iscsi_target and host already exist, no exception is raised. """ return IMPL.iscsi_target_create_safe(context, values) ############### def volume_allocate_iscsi_target(context, volume_id, host): """Atomically allocate a free iscsi_target from the pool.""" return IMPL.volume_allocate_iscsi_target(context, volume_id, host) def volume_attached(context, volume_id, instance_id, host_name, mountpoint): """Ensure that a volume is set as attached.""" return IMPL.volume_attached(context, volume_id, instance_id, host_name, mountpoint) def volume_create(context, values): """Create a volume from the values dictionary.""" return IMPL.volume_create(context, values) def volume_data_get_for_host(context, host): """Get (volume_count, gigabytes) for project.""" return IMPL.volume_data_get_for_host(context, host) def volume_data_get_for_project(context, project_id): """Get (volume_count, gigabytes) for project.""" return IMPL.volume_data_get_for_project(context, project_id) def finish_volume_migration(context, src_vol_id, dest_vol_id): """Perform database updates upon completion of volume migration.""" return IMPL.finish_volume_migration(context, src_vol_id, dest_vol_id) def volume_destroy(context, volume_id): """Destroy the volume or raise if it does not exist.""" return IMPL.volume_destroy(context, volume_id) def volume_detached(context, volume_id): """Ensure that a volume is set as detached.""" return IMPL.volume_detached(context, volume_id) def volume_get(context, volume_id): """Get a volume or raise if it does not exist.""" return IMPL.volume_get(context, volume_id) def volume_get_all(context, marker, limit, sort_key, sort_dir, filters=None): """Get all volumes.""" return IMPL.volume_get_all(context, marker, limit, sort_key, sort_dir, filters=filters) def volume_get_all_by_host(context, host): """Get all volumes belonging to a host.""" return IMPL.volume_get_all_by_host(context, host) def volume_get_all_by_instance_uuid(context, instance_uuid): """Get all volumes belonging to a instance.""" return IMPL.volume_get_all_by_instance_uuid(context, instance_uuid) def volume_get_all_by_project(context, project_id, marker, limit, sort_key, sort_dir, filters=None): """Get all volumes belonging to a project.""" return IMPL.volume_get_all_by_project(context, project_id, marker, limit, sort_key, sort_dir, filters=filters) def volume_get_iscsi_target_num(context, volume_id): """Get the target num (tid) allocated to the volume.""" return IMPL.volume_get_iscsi_target_num(context, volume_id) def volume_update(context, volume_id, values): """Set the given properties on an volume and update it. Raises NotFound if volume does not exist. """ return IMPL.volume_update(context, volume_id, values) #################### def snapshot_create(context, values): """Create a snapshot from the values dictionary.""" return IMPL.snapshot_create(context, values) def snapshot_destroy(context, snapshot_id): """Destroy the snapshot or raise if it does not exist.""" return IMPL.snapshot_destroy(context, snapshot_id) def snapshot_get(context, snapshot_id): """Get a snapshot or raise if it does not exist.""" return IMPL.snapshot_get(context, snapshot_id) def snapshot_get_all(context): """Get all snapshots.""" return IMPL.snapshot_get_all(context) def snapshot_get_all_by_project(context, project_id): """Get all snapshots belonging to a project.""" return IMPL.snapshot_get_all_by_project(context, project_id) def snapshot_get_all_for_volume(context, volume_id): """Get all snapshots for a volume.""" return IMPL.snapshot_get_all_for_volume(context, volume_id) def snapshot_update(context, snapshot_id, values): """Set the given properties on an snapshot and update it. Raises NotFound if snapshot does not exist. """ return IMPL.snapshot_update(context, snapshot_id, values) def snapshot_data_get_for_project(context, project_id, volume_type_id=None): """Get count and gigabytes used for snapshots for specified project.""" return IMPL.snapshot_data_get_for_project(context, project_id, volume_type_id) def snapshot_get_active_by_window(context, begin, end=None, project_id=None): """Get all the snapshots inside the window. Specifying a project_id will filter for a certain project. """ return IMPL.snapshot_get_active_by_window(context, begin, end, project_id) #################### def snapshot_metadata_get(context, snapshot_id): """Get all metadata for a snapshot.""" return IMPL.snapshot_metadata_get(context, snapshot_id) def snapshot_metadata_delete(context, snapshot_id, key): """Delete the given metadata item.""" return IMPL.snapshot_metadata_delete(context, snapshot_id, key) def snapshot_metadata_update(context, snapshot_id, metadata, delete): """Update metadata if it exists, otherwise create it.""" return IMPL.snapshot_metadata_update(context, snapshot_id, metadata, delete) #################### def volume_metadata_get(context, volume_id): """Get all metadata for a volume.""" return IMPL.volume_metadata_get(context, volume_id) def volume_metadata_delete(context, volume_id, key): """Delete the given metadata item.""" return IMPL.volume_metadata_delete(context, volume_id, key) def volume_metadata_update(context, volume_id, metadata, delete): """Update metadata if it exists, otherwise create it.""" return IMPL.volume_metadata_update(context, volume_id, metadata, delete) ################## def volume_admin_metadata_get(context, volume_id): """Get all administration metadata for a volume.""" return IMPL.volume_admin_metadata_get(context, volume_id) def volume_admin_metadata_delete(context, volume_id, key): """Delete the given metadata item.""" return IMPL.volume_admin_metadata_delete(context, volume_id, key) def volume_admin_metadata_update(context, volume_id, metadata, delete): """Update metadata if it exists, otherwise create it.""" return IMPL.volume_admin_metadata_update(context, volume_id, metadata, delete) ################## def volume_type_create(context, values): """Create a new volume type.""" return IMPL.volume_type_create(context, values) def volume_type_get_all(context, inactive=False): """Get all volume types.""" return IMPL.volume_type_get_all(context, inactive) def volume_type_get(context, id, inactive=False): """Get volume type by id.""" return IMPL.volume_type_get(context, id, inactive) def volume_type_get_by_name(context, name): """Get volume type by name.""" return IMPL.volume_type_get_by_name(context, name) def volume_type_qos_associations_get(context, qos_specs_id, inactive=False): """Get volume types that are associated with specific qos specs.""" return IMPL.volume_type_qos_associations_get(context, qos_specs_id, inactive) def volume_type_qos_associate(context, type_id, qos_specs_id): """Associate a volume type with specific qos specs.""" return IMPL.volume_type_qos_associate(context, type_id, qos_specs_id) def volume_type_qos_disassociate(context, qos_specs_id, type_id): """Disassociate a volume type from specific qos specs.""" return IMPL.volume_type_qos_disassociate(context, qos_specs_id, type_id) def volume_type_qos_disassociate_all(context, qos_specs_id): """Disassociate all volume types from specific qos specs.""" return IMPL.volume_type_qos_disassociate_all(context, qos_specs_id) def volume_type_qos_specs_get(context, type_id): """Get all qos specs for given volume type.""" return IMPL.volume_type_qos_specs_get(context, type_id) def volume_type_destroy(context, id): """Delete a volume type.""" return IMPL.volume_type_destroy(context, id) def volume_get_active_by_window(context, begin, end=None, project_id=None): """Get all the volumes inside the window. Specifying a project_id will filter for a certain project. """ return IMPL.volume_get_active_by_window(context, begin, end, project_id) #################### def volume_type_extra_specs_get(context, volume_type_id): """Get all extra specs for a volume type.""" return IMPL.volume_type_extra_specs_get(context, volume_type_id) def volume_type_extra_specs_delete(context, volume_type_id, key): """Delete the given extra specs item.""" return IMPL.volume_type_extra_specs_delete(context, volume_type_id, key) def volume_type_extra_specs_update_or_create(context, volume_type_id, extra_specs): """Create or update volume type extra specs. This adds or modifies the key/value pairs specified in the extra specs dict argument """ return IMPL.volume_type_extra_specs_update_or_create(context, volume_type_id, extra_specs) ################### def volume_type_encryption_get(context, volume_type_id, session=None): return IMPL.volume_type_encryption_get(context, volume_type_id, session) def volume_type_encryption_delete(context, volume_type_id): return IMPL.volume_type_encryption_delete(context, volume_type_id) def volume_type_encryption_create(context, volume_type_id, encryption_specs): return IMPL.volume_type_encryption_create(context, volume_type_id, encryption_specs) def volume_type_encryption_update(context, volume_type_id, encryption_specs): return IMPL.volume_type_encryption_update(context, volume_type_id, encryption_specs) def volume_type_encryption_volume_get(context, volume_type_id, session=None): return IMPL.volume_type_encryption_volume_get(context, volume_type_id, session) def volume_encryption_metadata_get(context, volume_id, session=None): return IMPL.volume_encryption_metadata_get(context, volume_id, session) ################### def qos_specs_create(context, values): """Create a qos_specs.""" return IMPL.qos_specs_create(context, values) def qos_specs_get(context, qos_specs_id): """Get all specification for a given qos_specs.""" return IMPL.qos_specs_get(context, qos_specs_id) def qos_specs_get_all(context, inactive=False, filters=None): """Get all qos_specs.""" return IMPL.qos_specs_get_all(context, inactive, filters) def qos_specs_get_by_name(context, name): """Get all specification for a given qos_specs.""" return IMPL.qos_specs_get_by_name(context, name) def qos_specs_associations_get(context, qos_specs_id): """Get all associated volume types for a given qos_specs.""" return IMPL.qos_specs_associations_get(context, qos_specs_id) def qos_specs_associate(context, qos_specs_id, type_id): """Associate qos_specs from volume type.""" return IMPL.qos_specs_associate(context, qos_specs_id, type_id) def qos_specs_disassociate(context, qos_specs_id, type_id): """Disassociate qos_specs from volume type.""" return IMPL.qos_specs_disassociate(context, qos_specs_id, type_id) def qos_specs_disassociate_all(context, qos_specs_id): """Disassociate qos_specs from all entities.""" return IMPL.qos_specs_disassociate_all(context, qos_specs_id) def qos_specs_delete(context, qos_specs_id): """Delete the qos_specs.""" return IMPL.qos_specs_delete(context, qos_specs_id) def qos_specs_item_delete(context, qos_specs_id, key): """Delete specified key in the qos_specs.""" return IMPL.qos_specs_item_delete(context, qos_specs_id, key) def qos_specs_update(context, qos_specs_id, specs): """Update qos specs. This adds or modifies the key/value pairs specified in the specs dict argument for a given qos_specs. """ return IMPL.qos_specs_update(context, qos_specs_id, specs) ################### def volume_glance_metadata_create(context, volume_id, key, value): """Update the Glance metadata for the specified volume.""" return IMPL.volume_glance_metadata_create(context, volume_id, key, value) def volume_glance_metadata_get_all(context): """Return the glance metadata for all volumes.""" return IMPL.volume_glance_metadata_get_all(context) def volume_glance_metadata_get(context, volume_id): """Return the glance metadata for a volume.""" return IMPL.volume_glance_metadata_get(context, volume_id) def volume_snapshot_glance_metadata_get(context, snapshot_id): """Return the Glance metadata for the specified snapshot.""" return IMPL.volume_snapshot_glance_metadata_get(context, snapshot_id) def volume_glance_metadata_copy_to_snapshot(context, snapshot_id, volume_id): """Update the Glance metadata for a snapshot. This will copy all of the key:value pairs from the originating volume, to ensure that a volume created from the snapshot will retain the original metadata. """ return IMPL.volume_glance_metadata_copy_to_snapshot(context, snapshot_id, volume_id) def volume_glance_metadata_copy_to_volume(context, volume_id, snapshot_id): """Update the Glance metadata from a volume (created from a snapshot). This will copy all of the key:value pairs from the originating snapshot, to ensure that the Glance metadata from the original volume is retained. """ return IMPL.volume_glance_metadata_copy_to_volume(context, volume_id, snapshot_id) def volume_glance_metadata_delete_by_volume(context, volume_id): """Delete the glance metadata for a volume.""" return IMPL.volume_glance_metadata_delete_by_volume(context, volume_id) def volume_glance_metadata_delete_by_snapshot(context, snapshot_id): """Delete the glance metadata for a snapshot.""" return IMPL.volume_glance_metadata_delete_by_snapshot(context, snapshot_id) def volume_glance_metadata_copy_from_volume_to_volume(context, src_volume_id, volume_id): """Update the Glance metadata for a volume by copying all of the key:value pairs from the originating volume. This is so that a volume created from the volume (clone) will retain the original metadata. """ return IMPL.volume_glance_metadata_copy_from_volume_to_volume( context, src_volume_id, volume_id) ################### def quota_create(context, project_id, resource, limit): """Create a quota for the given project and resource.""" return IMPL.quota_create(context, project_id, resource, limit) def quota_get(context, project_id, resource): """Retrieve a quota or raise if it does not exist.""" return IMPL.quota_get(context, project_id, resource) def quota_get_all_by_project(context, project_id): """Retrieve all quotas associated with a given project.""" return IMPL.quota_get_all_by_project(context, project_id) def quota_update(context, project_id, resource, limit): """Update a quota or raise if it does not exist.""" return IMPL.quota_update(context, project_id, resource, limit) def quota_destroy(context, project_id, resource): """Destroy the quota or raise if it does not exist.""" return IMPL.quota_destroy(context, project_id, resource) ################### def quota_class_create(context, class_name, resource, limit): """Create a quota class for the given name and resource.""" return IMPL.quota_class_create(context, class_name, resource, limit) def quota_class_get(context, class_name, resource): """Retrieve a quota class or raise if it does not exist.""" return IMPL.quota_class_get(context, class_name, resource) def quota_class_get_default(context): """Retrieve all default quotas.""" return IMPL.quota_class_get_default(context) def quota_class_get_all_by_name(context, class_name): """Retrieve all quotas associated with a given quota class.""" return IMPL.quota_class_get_all_by_name(context, class_name) def quota_class_update(context, class_name, resource, limit): """Update a quota class or raise if it does not exist.""" return IMPL.quota_class_update(context, class_name, resource, limit) def quota_class_destroy(context, class_name, resource): """Destroy the quota class or raise if it does not exist.""" return IMPL.quota_class_destroy(context, class_name, resource) def quota_class_destroy_all_by_name(context, class_name): """Destroy all quotas associated with a given quota class.""" return IMPL.quota_class_destroy_all_by_name(context, class_name) ################### def quota_usage_get(context, project_id, resource): """Retrieve a quota usage or raise if it does not exist.""" return IMPL.quota_usage_get(context, project_id, resource) def quota_usage_get_all_by_project(context, project_id): """Retrieve all usage associated with a given resource.""" return IMPL.quota_usage_get_all_by_project(context, project_id) ################### def reservation_create(context, uuid, usage, project_id, resource, delta, expire): """Create a reservation for the given project and resource.""" return IMPL.reservation_create(context, uuid, usage, project_id, resource, delta, expire) def reservation_get(context, uuid): """Retrieve a reservation or raise if it does not exist.""" return IMPL.reservation_get(context, uuid) def reservation_get_all_by_project(context, project_id): """Retrieve all reservations associated with a given project.""" return IMPL.reservation_get_all_by_project(context, project_id) def reservation_destroy(context, uuid): """Destroy the reservation or raise if it does not exist.""" return IMPL.reservation_destroy(context, uuid) ################### def quota_reserve(context, resources, quotas, deltas, expire, until_refresh, max_age, project_id=None): """Check quotas and create appropriate reservations.""" return IMPL.quota_reserve(context, resources, quotas, deltas, expire, until_refresh, max_age, project_id=project_id) def reservation_commit(context, reservations, project_id=None): """Commit quota reservations.""" return IMPL.reservation_commit(context, reservations, project_id=project_id) def reservation_rollback(context, reservations, project_id=None): """Roll back quota reservations.""" return IMPL.reservation_rollback(context, reservations, project_id=project_id) def quota_destroy_all_by_project(context, project_id): """Destroy all quotas associated with a given project.""" return IMPL.quota_destroy_all_by_project(context, project_id) def reservation_expire(context): """Roll back any expired reservations.""" return IMPL.reservation_expire(context) ################### def backup_get(context, backup_id): """Get a backup or raise if it does not exist.""" return IMPL.backup_get(context, backup_id) def backup_get_all(context): """Get all backups.""" return IMPL.backup_get_all(context) def backup_get_all_by_host(context, host): """Get all backups belonging to a host.""" return IMPL.backup_get_all_by_host(context, host) def backup_create(context, values): """Create a backup from the values dictionary.""" return IMPL.backup_create(context, values) def backup_get_all_by_project(context, project_id): """Get all backups belonging to a project.""" return IMPL.backup_get_all_by_project(context, project_id) def backup_update(context, backup_id, values): """Set the given properties on a backup and update it. Raises NotFound if backup does not exist. """ return IMPL.backup_update(context, backup_id, values) def backup_destroy(context, backup_id): """Destroy the backup or raise if it does not exist.""" return IMPL.backup_destroy(context, backup_id) ################### def transfer_get(context, transfer_id): """Get a volume transfer record or raise if it does not exist.""" return IMPL.transfer_get(context, transfer_id) def transfer_get_all(context): """Get all volume transfer records.""" return IMPL.transfer_get_all(context) def transfer_get_all_by_project(context, project_id): """Get all volume transfer records for specified project.""" return IMPL.transfer_get_all_by_project(context, project_id) def transfer_create(context, values): """Create an entry in the transfers table.""" return IMPL.transfer_create(context, values) def transfer_destroy(context, transfer_id): """Destroy a record in the volume transfer table.""" return IMPL.transfer_destroy(context, transfer_id) def transfer_accept(context, transfer_id, user_id, project_id): """Accept a volume transfer.""" return IMPL.transfer_accept(context, transfer_id, user_id, project_id) cinder-2014.1.5/cinder/db/migration.py0000664000567000056700000000236712540642606020561 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Database setup and migration commands.""" from cinder import utils IMPL = utils.LazyPluggable('db_backend', sqlalchemy='cinder.db.sqlalchemy.migration') def db_sync(version=None): """Migrate the database to `version` or the most recent version.""" return IMPL.db_sync(version=version) def db_version(): """Display the current database version.""" return IMPL.db_version() def db_initial_version(): """The starting version for the database.""" return IMPL.db_initial_version() cinder-2014.1.5/cinder/context.py0000664000567000056700000001537712540642606017674 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """RequestContext: context for requests that persist through all of cinder.""" import copy import uuid from cinder.openstack.common import local from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import policy LOG = logging.getLogger(__name__) def generate_request_id(): return 'req-' + str(uuid.uuid4()) class RequestContext(object): """Security context and request information. Represents the user taking a given action within the system. """ user_idt_format = '{user} {tenant} {domain} {user_domain} {p_domain}' def __init__(self, user_id, project_id, is_admin=None, read_deleted="no", roles=None, project_name=None, remote_address=None, timestamp=None, request_id=None, auth_token=None, overwrite=True, quota_class=None, service_catalog=None, domain=None, user_domain=None, project_domain=None, **kwargs): """Initialize RequestContext. :param read_deleted: 'no' indicates deleted records are hidden, 'yes' indicates deleted records are visible, 'only' indicates that *only* deleted records are visible. :param overwrite: Set to False to ensure that the greenthread local copy of the index is not overwritten. :param kwargs: Extra arguments that might be present, but we ignore because they possibly came in from older rpc messages. """ if kwargs: LOG.warn(_('Arguments dropped when creating context: %s') % str(kwargs)) self.user_id = user_id self.project_id = project_id self.domain = domain self.user_domain = user_domain self.project_domain = project_domain self.roles = roles or [] self.project_name = project_name self.is_admin = is_admin if self.is_admin is None: self.is_admin = policy.check_is_admin(self.roles) elif self.is_admin and 'admin' not in self.roles: self.roles.append('admin') self.read_deleted = read_deleted self.remote_address = remote_address if not timestamp: timestamp = timeutils.utcnow() if isinstance(timestamp, basestring): timestamp = timeutils.parse_strtime(timestamp) self.timestamp = timestamp if not request_id: request_id = generate_request_id() self.request_id = request_id self.auth_token = auth_token self.quota_class = quota_class if overwrite or not hasattr(local.store, 'context'): self.update_store() self.quota_committed = False if service_catalog: # Only include required parts of service_catalog self.service_catalog = [s for s in service_catalog if s.get('type') in ('compute',)] else: # if list is empty or none self.service_catalog = [] def _get_read_deleted(self): return self._read_deleted def _set_read_deleted(self, read_deleted): if read_deleted not in ('no', 'yes', 'only'): raise ValueError(_("read_deleted can only be one of 'no', " "'yes' or 'only', not %r") % read_deleted) self._read_deleted = read_deleted def _del_read_deleted(self): del self._read_deleted read_deleted = property(_get_read_deleted, _set_read_deleted, _del_read_deleted) def update_store(self): local.store.context = self def to_dict(self): user_idt = ( self.user_idt_format.format(user=self.user or '-', tenant=self.tenant or '-', domain=self.domain or '-', user_domain=self.user_domain or '-', p_domain=self.project_domain or '-')) return {'user_id': self.user_id, 'project_id': self.project_id, 'project_name': self.project_name, 'domain': self.domain, 'user_domain': self.user_domain, 'project_domain': self.project_domain, 'is_admin': self.is_admin, 'read_deleted': self.read_deleted, 'roles': self.roles, 'remote_address': self.remote_address, 'timestamp': timeutils.strtime(self.timestamp), 'request_id': self.request_id, 'auth_token': self.auth_token, 'quota_class': self.quota_class, 'service_catalog': self.service_catalog, 'tenant': self.tenant, 'user': self.user, 'user_identity': user_idt} @classmethod def from_dict(cls, values): return cls(**values) def elevated(self, read_deleted=None, overwrite=False): """Return a version of this context with admin flag set.""" context = copy.copy(self) context.is_admin = True if 'admin' not in context.roles: context.roles.append('admin') if read_deleted is not None: context.read_deleted = read_deleted return context def deepcopy(self): return copy.deepcopy(self) # NOTE(sirp): the openstack/common version of RequestContext uses # tenant/user whereas the Cinder version uses project_id/user_id. We need # this shim in order to use context-aware code from openstack/common, like # logging, until we make the switch to using openstack/common's version of # RequestContext. @property def tenant(self): return self.project_id @property def user(self): return self.user_id def get_admin_context(read_deleted="no"): return RequestContext(user_id=None, project_id=None, is_admin=True, read_deleted=read_deleted, overwrite=False) cinder-2014.1.5/cinder/scheduler/0000775000567000056700000000000012540643114017572 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/scheduler_options.py0000664000567000056700000000663512540642606023714 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ SchedulerOptions monitors a local .json file for changes and loads it if needed. This file is converted to a data structure and passed into the filtering and weighing functions which can use it for dynamic configuration. """ import datetime import json import os from oslo.config import cfg from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils scheduler_json_config_location_opt = cfg.StrOpt( 'scheduler_json_config_location', default='', help='Absolute path to scheduler configuration JSON file.') CONF = cfg.CONF CONF.register_opt(scheduler_json_config_location_opt) LOG = logging.getLogger(__name__) class SchedulerOptions(object): """SchedulerOptions monitors a local .json file for changes. The file is reloaded if needed and converted to a data structure and passed into the filtering and weighing functions which can use it for dynamic configuration. """ def __init__(self): super(SchedulerOptions, self).__init__() self.data = {} self.last_modified = None self.last_checked = None def _get_file_handle(self, filename): """Get file handle. Broken out for testing.""" return open(filename) def _get_file_timestamp(self, filename): """Get the last modified datetime. Broken out for testing.""" try: return os.path.getmtime(filename) except os.error as e: LOG.exception(_("Could not stat scheduler options file " "%(filename)s: '%(e)s'"), {'filename': filename, 'e': e}) raise def _load_file(self, handle): """Decode the JSON file. Broken out for testing.""" try: return json.load(handle) except ValueError as e: LOG.exception(_("Could not decode scheduler options: '%s'") % e) return {} def _get_time_now(self): """Get current UTC. Broken out for testing.""" return timeutils.utcnow() def get_configuration(self, filename=None): """Check the json file for changes and load it if needed.""" if not filename: filename = CONF.scheduler_json_config_location if not filename: return self.data if self.last_checked: now = self._get_time_now() if now - self.last_checked < datetime.timedelta(minutes=5): return self.data last_modified = self._get_file_timestamp(filename) if (not last_modified or not self.last_modified or last_modified > self.last_modified): self.data = self._load_file(self._get_file_handle(filename)) self.last_modified = last_modified if not self.data: self.data = {} return self.data cinder-2014.1.5/cinder/scheduler/weights/0000775000567000056700000000000012540643114021244 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/weights/__init__.py0000664000567000056700000000000012540642603023345 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/weights/capacity.py0000664000567000056700000000635712540642606023433 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 eBay Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Weighers that weigh hosts by their capacity, including following two weighers: 1. Capacity Weigher. Weigh hosts by their available capacity. The default is to spread volumes across all hosts evenly. If you prefer stacking, you can set the 'capacity_weight_multiplier' option to a negative number and the weighing has the opposite effect of the default. 2. Allocated Capacity Weigher. Weigh hosts by their allocated capacity. The default behavior is to place new volume to the host allocated the least space. This weigher is intended to simulate the behavior of SimpleScheduler. If you prefer to place volumes to host allocated the most space, you can set the 'allocated_capacity_weight_multiplier' option to a positive number and the weighing has the opposite effect of the default. """ import math from oslo.config import cfg from cinder.openstack.common.scheduler import weights capacity_weight_opts = [ cfg.FloatOpt('capacity_weight_multiplier', default=1.0, help='Multiplier used for weighing volume capacity. ' 'Negative numbers mean to stack vs spread.'), cfg.FloatOpt('allocated_capacity_weight_multiplier', default=-1.0, help='Multiplier used for weighing volume capacity. ' 'Negative numbers mean to stack vs spread.'), ] CONF = cfg.CONF CONF.register_opts(capacity_weight_opts) class CapacityWeigher(weights.BaseHostWeigher): def _weight_multiplier(self): """Override the weight multiplier.""" return CONF.capacity_weight_multiplier def _weigh_object(self, host_state, weight_properties): """Higher weights win. We want spreading to be the default.""" reserved = float(host_state.reserved_percentage) / 100 free_space = host_state.free_capacity_gb if free_space == 'infinite' or free_space == 'unknown': #(zhiteng) 'infinite' and 'unknown' are treated the same # here, for sorting purpose. free = float('inf') else: free = math.floor(host_state.free_capacity_gb * (1 - reserved)) return free class AllocatedCapacityWeigher(weights.BaseHostWeigher): def _weight_multiplier(self): """Override the weight multiplier.""" return CONF.allocated_capacity_weight_multiplier def _weigh_object(self, host_state, weight_properties): # Higher weights win. We want spreading (choose host with lowest # allocated_capacity first) to be the default. allocated_space = host_state.allocated_capacity_gb return allocated_space cinder-2014.1.5/cinder/scheduler/weights/chance.py0000664000567000056700000000166712540642603023053 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Hewlett-Packard Development Company, L.P. # # 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. """ Chance Weigher. Assign random weights to hosts. Used to spread volumes randomly across a list of equally suitable hosts. """ import random from cinder.openstack.common.scheduler import weights class ChanceWeigher(weights.BaseHostWeigher): def _weigh_object(self, host_state, weight_properties): return random.random() cinder-2014.1.5/cinder/scheduler/driver.py0000664000567000056700000000634312540642606021452 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Scheduler base class that all Schedulers should inherit from """ from oslo.config import cfg from cinder import db from cinder.openstack.common import importutils from cinder.openstack.common import timeutils from cinder.volume import rpcapi as volume_rpcapi scheduler_driver_opts = [ cfg.StrOpt('scheduler_host_manager', default='cinder.scheduler.host_manager.HostManager', help='The scheduler host manager class to use'), cfg.IntOpt('scheduler_max_attempts', default=3, help='Maximum number of attempts to schedule an volume'), ] CONF = cfg.CONF CONF.register_opts(scheduler_driver_opts) def volume_update_db(context, volume_id, host): '''Set the host and set the scheduled_at field of a volume. :returns: A Volume with the updated fields set properly. ''' now = timeutils.utcnow() values = {'host': host, 'scheduled_at': now} return db.volume_update(context, volume_id, values) class Scheduler(object): """The base class that all Scheduler classes should inherit from.""" def __init__(self): self.host_manager = importutils.import_object( CONF.scheduler_host_manager) self.volume_rpcapi = volume_rpcapi.VolumeAPI() def update_service_capabilities(self, service_name, host, capabilities): """Process a capability update from a service node.""" self.host_manager.update_service_capabilities(service_name, host, capabilities) def host_passes_filters(self, context, volume_id, host, filter_properties): """Check if the specified host passes the filters.""" raise NotImplementedError(_("Must implement host_passes_filters")) def find_retype_host(self, context, request_spec, filter_properties={}, migration_policy='never'): """Find a host that can accept the volume with its new type.""" raise NotImplementedError(_("Must implement find_retype_host")) def schedule(self, context, topic, method, *_args, **_kwargs): """Must override schedule method for scheduler to work.""" raise NotImplementedError(_("Must implement a fallback schedule")) def schedule_create_volume(self, context, request_spec, filter_properties): """Must override schedule method for scheduler to work.""" raise NotImplementedError(_("Must implement schedule_create_volume")) cinder-2014.1.5/cinder/scheduler/filter_scheduler.py0000664000567000056700000002665112540642606023506 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Intel Corporation # Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ The FilterScheduler is for creating volumes. You can customize this scheduler by specifying your own volume Filters and Weighing Functions. """ from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder.scheduler import driver from cinder.scheduler import scheduler_options CONF = cfg.CONF LOG = logging.getLogger(__name__) class FilterScheduler(driver.Scheduler): """Scheduler that can be used for filtering and weighing.""" def __init__(self, *args, **kwargs): super(FilterScheduler, self).__init__(*args, **kwargs) self.cost_function_cache = None self.options = scheduler_options.SchedulerOptions() self.max_attempts = self._max_attempts() def schedule(self, context, topic, method, *args, **kwargs): """The schedule() contract requires we return the one best-suited host for this request. """ self._schedule(context, topic, *args, **kwargs) def _get_configuration_options(self): """Fetch options dictionary. Broken out for testing.""" return self.options.get_configuration() def populate_filter_properties(self, request_spec, filter_properties): """Stuff things into filter_properties. Can be overridden in a subclass to add more data. """ vol = request_spec['volume_properties'] filter_properties['size'] = vol['size'] filter_properties['availability_zone'] = vol.get('availability_zone') filter_properties['user_id'] = vol.get('user_id') filter_properties['metadata'] = vol.get('metadata') filter_properties['qos_specs'] = vol.get('qos_specs') def schedule_create_volume(self, context, request_spec, filter_properties): weighed_host = self._schedule(context, request_spec, filter_properties) if not weighed_host: raise exception.NoValidHost(reason="") host = weighed_host.obj.host volume_id = request_spec['volume_id'] snapshot_id = request_spec['snapshot_id'] image_id = request_spec['image_id'] updated_volume = driver.volume_update_db(context, volume_id, host) self._post_select_populate_filter_properties(filter_properties, weighed_host.obj) # context is not serializable filter_properties.pop('context', None) self.volume_rpcapi.create_volume(context, updated_volume, host, request_spec, filter_properties, allow_reschedule=True, snapshot_id=snapshot_id, image_id=image_id) def host_passes_filters(self, context, host, request_spec, filter_properties): """Check if the specified host passes the filters.""" weighed_hosts = self._get_weighted_candidates(context, request_spec, filter_properties) for weighed_host in weighed_hosts: host_state = weighed_host.obj if host_state.host == host: return host_state msg = (_('cannot place volume %(id)s on %(host)s') % {'id': request_spec['volume_id'], 'host': host}) raise exception.NoValidHost(reason=msg) def find_retype_host(self, context, request_spec, filter_properties={}, migration_policy='never'): """Find a host that can accept the volume with its new type.""" current_host = request_spec['volume_properties']['host'] # The volume already exists on this host, and so we shouldn't check if # it can accept the volume again in the CapacityFilter. filter_properties['vol_exists_on'] = current_host weighed_hosts = self._get_weighted_candidates(context, request_spec, filter_properties) if not weighed_hosts: msg = (_('No valid hosts for volume %(id)s with type %(type)s') % {'id': request_spec['volume_id'], 'type': request_spec['volume_type']}) raise exception.NoValidHost(reason=msg) for weighed_host in weighed_hosts: host_state = weighed_host.obj if host_state.host == current_host: return host_state if migration_policy == 'never': msg = (_('Current host not valid for volume %(id)s with type ' '%(type)s, migration not allowed') % {'id': request_spec['volume_id'], 'type': request_spec['volume_type']}) raise exception.NoValidHost(reason=msg) top_host = self._choose_top_host(weighed_hosts, request_spec) return top_host.obj def _post_select_populate_filter_properties(self, filter_properties, host_state): """Add additional information to the filter properties after a host has been selected by the scheduling process. """ # Add a retry entry for the selected volume backend: self._add_retry_host(filter_properties, host_state.host) def _add_retry_host(self, filter_properties, host): """Add a retry entry for the selected volume backend. In the event that the request gets re-scheduled, this entry will signal that the given backend has already been tried. """ retry = filter_properties.get('retry', None) if not retry: return hosts = retry['hosts'] hosts.append(host) def _max_attempts(self): max_attempts = CONF.scheduler_max_attempts if max_attempts < 1: msg = _("Invalid value for 'scheduler_max_attempts', " "must be >=1") raise exception.InvalidParameterValue(err=msg) return max_attempts def _log_volume_error(self, volume_id, retry): """If the request contained an exception from a previous volume create operation, log it to aid debugging """ exc = retry.pop('exc', None) # string-ified exception from volume if not exc: return # no exception info from a previous attempt, skip hosts = retry.get('hosts', None) if not hosts: return # no previously attempted hosts, skip last_host = hosts[-1] msg = _("Error scheduling %(volume_id)s from last vol-service: " "%(last_host)s : %(exc)s") % { 'volume_id': volume_id, 'last_host': last_host, 'exc': exc, } LOG.error(msg) def _populate_retry(self, filter_properties, properties): """Populate filter properties with history of retries for this request. If maximum retries is exceeded, raise NoValidHost. """ max_attempts = self.max_attempts retry = filter_properties.pop('retry', {}) if max_attempts == 1: # re-scheduling is disabled. return # retry is enabled, update attempt count: if retry: retry['num_attempts'] += 1 else: retry = { 'num_attempts': 1, 'hosts': [] # list of volume service hosts tried } filter_properties['retry'] = retry volume_id = properties.get('volume_id') self._log_volume_error(volume_id, retry) if retry['num_attempts'] > max_attempts: msg = _("Exceeded max scheduling attempts %(max_attempts)d for " "volume %(volume_id)s") % { 'max_attempts': max_attempts, 'volume_id': volume_id, } raise exception.NoValidHost(reason=msg) def _get_weighted_candidates(self, context, request_spec, filter_properties=None): """Returns a list of hosts that meet the required specs, ordered by their fitness. """ elevated = context.elevated() volume_properties = request_spec['volume_properties'] # Since Cinder is using mixed filters from Oslo and it's own, which # takes 'resource_XX' and 'volume_XX' as input respectively, copying # 'volume_XX' to 'resource_XX' will make both filters happy. resource_properties = volume_properties.copy() volume_type = request_spec.get("volume_type", None) resource_type = request_spec.get("volume_type", None) request_spec.update({'resource_properties': resource_properties}) config_options = self._get_configuration_options() if filter_properties is None: filter_properties = {} self._populate_retry(filter_properties, resource_properties) filter_properties.update({'context': context, 'request_spec': request_spec, 'config_options': config_options, 'volume_type': volume_type, 'resource_type': resource_type}) self.populate_filter_properties(request_spec, filter_properties) # Find our local list of acceptable hosts by filtering and # weighing our options. we virtually consume resources on # it so subsequent selections can adjust accordingly. # Note: remember, we are using an iterator here. So only # traverse this list once. hosts = self.host_manager.get_all_host_states(elevated) # Filter local hosts based on requirements ... hosts = self.host_manager.get_filtered_hosts(hosts, filter_properties) if not hosts: return [] LOG.debug(_("Filtered %s") % hosts) # weighted_host = WeightedHost() ... the best # host for the job. weighed_hosts = self.host_manager.get_weighed_hosts(hosts, filter_properties) return weighed_hosts def _schedule(self, context, request_spec, filter_properties=None): weighed_hosts = self._get_weighted_candidates(context, request_spec, filter_properties) if not weighed_hosts: return None return self._choose_top_host(weighed_hosts, request_spec) def _choose_top_host(self, weighed_hosts, request_spec): top_host = weighed_hosts[0] host_state = top_host.obj LOG.debug(_("Choosing %s") % host_state.host) volume_properties = request_spec['volume_properties'] host_state.consume_from_volume(volume_properties) return top_host cinder-2014.1.5/cinder/scheduler/manager.py0000664000567000056700000002532112540642606021566 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Scheduler Service """ from oslo.config import cfg from oslo import messaging from cinder import context from cinder import db from cinder import exception from cinder import manager from cinder.openstack.common import excutils from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder import quota from cinder import rpc from cinder.scheduler.flows import create_volume from cinder.volume import rpcapi as volume_rpcapi scheduler_driver_opt = cfg.StrOpt('scheduler_driver', default='cinder.scheduler.filter_scheduler.' 'FilterScheduler', help='Default scheduler driver to use') CONF = cfg.CONF CONF.register_opt(scheduler_driver_opt) QUOTAS = quota.QUOTAS LOG = logging.getLogger(__name__) class SchedulerManager(manager.Manager): """Chooses a host to create volumes.""" RPC_API_VERSION = '1.5' target = messaging.Target(version=RPC_API_VERSION) def __init__(self, scheduler_driver=None, service_name=None, *args, **kwargs): if not scheduler_driver: scheduler_driver = CONF.scheduler_driver if scheduler_driver in ['cinder.scheduler.chance.ChanceScheduler', 'cinder.scheduler.simple.SimpleScheduler']: scheduler_driver = ('cinder.scheduler.filter_scheduler.' 'FilterScheduler') LOG.deprecated(_('ChanceScheduler and SimpleScheduler have been ' 'deprecated due to lack of support for advanced ' 'features like: volume types, volume encryption,' ' QoS etc. These two schedulers can be fully ' 'replaced by FilterScheduler with certain ' 'combination of filters and weighers.')) self.driver = importutils.import_object(scheduler_driver) super(SchedulerManager, self).__init__(*args, **kwargs) def init_host(self): ctxt = context.get_admin_context() self.request_service_capabilities(ctxt) def update_service_capabilities(self, context, service_name=None, host=None, capabilities=None, **kwargs): """Process a capability update from a service node.""" if capabilities is None: capabilities = {} self.driver.update_service_capabilities(service_name, host, capabilities) def create_volume(self, context, topic, volume_id, snapshot_id=None, image_id=None, request_spec=None, filter_properties=None): try: flow_engine = create_volume.get_flow(context, db, self.driver, request_spec, filter_properties, volume_id, snapshot_id, image_id) except Exception: LOG.exception(_("Failed to create scheduler manager volume flow")) raise exception.CinderException( _("Failed to create scheduler manager volume flow")) flow_engine.run() def request_service_capabilities(self, context): volume_rpcapi.VolumeAPI().publish_service_capabilities(context) def migrate_volume_to_host(self, context, topic, volume_id, host, force_host_copy, request_spec, filter_properties=None): """Ensure that the host exists and can accept the volume.""" def _migrate_volume_set_error(self, context, ex, request_spec): volume_state = {'volume_state': {'migration_status': None}} self._set_volume_state_and_notify('migrate_volume_to_host', volume_state, context, ex, request_spec) try: tgt_host = self.driver.host_passes_filters(context, host, request_spec, filter_properties) except exception.NoValidHost as ex: _migrate_volume_set_error(self, context, ex, request_spec) except Exception as ex: with excutils.save_and_reraise_exception(): _migrate_volume_set_error(self, context, ex, request_spec) else: volume_ref = db.volume_get(context, volume_id) volume_rpcapi.VolumeAPI().migrate_volume(context, volume_ref, tgt_host, force_host_copy) def retype(self, context, topic, volume_id, request_spec, filter_properties=None): """Schedule the modification of a volume's type. :param context: the request context :param topic: the topic listened on :param volume_id: the ID of the volume to retype :param request_spec: parameters for this retype request :param filter_properties: parameters to filter by """ def _retype_volume_set_error(self, context, ex, request_spec, volume_ref, msg, reservations): if reservations: QUOTAS.rollback(context, reservations) if (volume_ref['instance_uuid'] is None and volume_ref['attached_host'] is None): orig_status = 'available' else: orig_status = 'in-use' volume_state = {'volume_state': {'status': orig_status}} self._set_volume_state_and_notify('retype', volume_state, context, ex, request_spec, msg) volume_ref = db.volume_get(context, volume_id) reservations = request_spec.get('quota_reservations') new_type = request_spec.get('volume_type') if new_type is None: msg = _('New volume type not specified in request_spec.') ex = exception.ParameterNotFound(param='volume_type') _retype_volume_set_error(self, context, ex, request_spec, volume_ref, msg, reservations) # Default migration policy is 'never' migration_policy = request_spec.get('migration_policy') if not migration_policy: migration_policy = 'never' try: tgt_host = self.driver.find_retype_host(context, request_spec, filter_properties, migration_policy) except exception.NoValidHost as ex: msg = (_("Could not find a host for volume %(volume_id)s with " "type %(type_id)s.") % {'type_id': new_type['id'], 'volume_id': volume_id}) _retype_volume_set_error(self, context, ex, request_spec, volume_ref, msg, reservations) except Exception as ex: with excutils.save_and_reraise_exception(): _retype_volume_set_error(self, context, ex, request_spec, volume_ref, None, reservations) else: volume_rpcapi.VolumeAPI().retype(context, volume_ref, new_type['id'], tgt_host, migration_policy, reservations) def manage_existing(self, context, topic, volume_id, request_spec, filter_properties=None): """Ensure that the host exists and can accept the volume.""" def _manage_existing_set_error(self, context, ex, request_spec): volume_state = {'volume_state': {'status': 'error'}} self._set_volume_state_and_notify('manage_existing', volume_state, context, ex, request_spec) volume_ref = db.volume_get(context, volume_id) try: tgt_host = self.driver.host_passes_filters(context, volume_ref['host'], request_spec, filter_properties) except exception.NoValidHost as ex: _manage_existing_set_error(self, context, ex, request_spec) except Exception as ex: with excutils.save_and_reraise_exception(): _manage_existing_set_error(self, context, ex, request_spec) else: volume_rpcapi.VolumeAPI().manage_existing(context, volume_ref, request_spec.get('ref')) def _set_volume_state_and_notify(self, method, updates, context, ex, request_spec, msg=None): # TODO(harlowja): move into a task that just does this later. if not msg: msg = (_("Failed to schedule_%(method)s: %(ex)s") % {'method': method, 'ex': ex}) LOG.error(msg) volume_state = updates['volume_state'] properties = request_spec.get('volume_properties', {}) volume_id = request_spec.get('volume_id', None) if volume_id: db.volume_update(context, volume_id, volume_state) payload = dict(request_spec=request_spec, volume_properties=properties, volume_id=volume_id, state=volume_state, method=method, reason=ex) rpc.get_notifier("scheduler").error(context, 'scheduler.' + method, payload) cinder-2014.1.5/cinder/scheduler/filters/0000775000567000056700000000000012540643114021242 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/filters/__init__.py0000664000567000056700000000000012540642603023343 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/filters/capacity_filter.py0000664000567000056700000000456212540642606024772 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Intel # Copyright (c) 2012 OpenStack Foundation # # All Rights Reserved. # # 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. import math from cinder.openstack.common import log as logging from cinder.openstack.common.scheduler import filters LOG = logging.getLogger(__name__) class CapacityFilter(filters.BaseHostFilter): """CapacityFilter filters based on volume host's capacity utilization.""" def host_passes(self, host_state, filter_properties): """Return True if host has sufficient capacity.""" # If the volume already exists on this host, don't fail it for # insufficient capacity (e.g., if we are retyping) if host_state.host == filter_properties.get('vol_exists_on'): return True volume_size = filter_properties.get('size') if host_state.free_capacity_gb is None: # Fail Safe LOG.error(_("Free capacity not set: " "volume node info collection broken.")) return False free_space = host_state.free_capacity_gb if free_space == 'infinite' or free_space == 'unknown': # NOTE(zhiteng) for those back-ends cannot report actual # available capacity, we assume it is able to serve the # request. Even if it was not, the retry mechanism is # able to handle the failure by rescheduling return True reserved = float(host_state.reserved_percentage) / 100 free = math.floor(free_space * (1 - reserved)) if free < volume_size: LOG.warning(_("Insufficient free space for volume creation " "(requested / avail): " "%(requested)s/%(available)s") % {'requested': volume_size, 'available': free}) return free >= volume_size cinder-2014.1.5/cinder/scheduler/flows/0000775000567000056700000000000012540643114020724 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/flows/__init__.py0000664000567000056700000000000012540642603023025 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/scheduler/flows/create_volume.py0000664000567000056700000001444212540642606024142 0ustar jenkinsjenkins00000000000000# 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. import taskflow.engines from taskflow.patterns import linear_flow from taskflow import task from cinder import exception from cinder import flow_utils from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import rpc from cinder import utils from cinder.volume.flows import common LOG = logging.getLogger(__name__) ACTION = 'volume:create' class ExtractSchedulerSpecTask(flow_utils.CinderTask): """Extracts a spec object from a partial and/or incomplete request spec. Reversion strategy: N/A """ default_provides = set(['request_spec']) def __init__(self, db, **kwargs): super(ExtractSchedulerSpecTask, self).__init__(addons=[ACTION], **kwargs) self.db = db def _populate_request_spec(self, context, volume_id, snapshot_id, image_id): # Create the full request spec using the volume_id. # # NOTE(harlowja): this will fetch the volume from the database, if # the volume has been deleted before we got here then this should fail. # # In the future we might want to have a lock on the volume_id so that # the volume can not be deleted while its still being created? if not volume_id: msg = _("No volume_id provided to populate a request_spec from") raise exception.InvalidInput(reason=msg) volume_ref = self.db.volume_get(context, volume_id) volume_type_id = volume_ref.get('volume_type_id') vol_type = self.db.volume_type_get(context, volume_type_id) return { 'volume_id': volume_id, 'snapshot_id': snapshot_id, 'image_id': image_id, 'volume_properties': { 'size': utils.as_int(volume_ref.get('size'), quiet=False), 'availability_zone': volume_ref.get('availability_zone'), 'volume_type_id': volume_type_id, }, 'volume_type': list(dict(vol_type).iteritems()), } def execute(self, context, request_spec, volume_id, snapshot_id, image_id): # For RPC version < 1.2 backward compatibility if request_spec is None: request_spec = self._populate_request_spec(context, volume_id, snapshot_id, image_id) return { 'request_spec': request_spec, } def get_flow(context, db, driver, request_spec=None, filter_properties=None, volume_id=None, snapshot_id=None, image_id=None): """Constructs and returns the scheduler entrypoint flow. This flow will do the following: 1. Inject keys & values for dependent tasks. 2. Extracts a scheduler specification from the provided inputs. 3. Attaches 2 activated only on *failure* tasks (one to update the db status and one to notify on the MQ of the failure that occurred). 4. Uses provided driver to to then select and continue processing of volume request. """ create_what = { 'context': context, 'raw_request_spec': request_spec, 'filter_properties': filter_properties, 'volume_id': volume_id, 'snapshot_id': snapshot_id, 'image_id': image_id, } flow_name = ACTION.replace(":", "_") + "_scheduler" scheduler_flow = linear_flow.Flow(flow_name) # This will extract and clean the spec from the starting values. scheduler_flow.add(ExtractSchedulerSpecTask( db, rebind={'request_spec': 'raw_request_spec'})) def schedule_create_volume(context, request_spec, filter_properties): def _log_failure(cause): LOG.error(_("Failed to schedule_create_volume: %(cause)s") % {'cause': cause}) def _notify_failure(cause): """When scheduling fails send out a event that it failed.""" topic = "scheduler.create_volume" payload = { 'request_spec': request_spec, 'volume_properties': request_spec.get('volume_properties', {}), 'volume_id': volume_id, 'state': 'error', 'method': 'create_volume', 'reason': cause, } try: rpc.get_notifier('scheduler').error(context, topic, payload) except exception.CinderException: LOG.exception(_("Failed notifying on %(topic)s " "payload %(payload)s") % {'topic': topic, 'payload': payload}) try: driver.schedule_create_volume(context, request_spec, filter_properties) except exception.NoValidHost as e: # Not host found happened, notify on the scheduler queue and log # that this happened and set the volume to errored out and # *do not* reraise the error (since whats the point). _notify_failure(e) _log_failure(e) common.error_out_volume(context, db, volume_id, reason=e) except Exception as e: # Some other error happened, notify on the scheduler queue and log # that this happened and set the volume to errored out and # *do* reraise the error. with excutils.save_and_reraise_exception(): _notify_failure(e) _log_failure(e) common.error_out_volume(context, db, volume_id, reason=e) scheduler_flow.add(task.FunctorTask(schedule_create_volume)) # Now load (but do not run) the flow using the provided initial data. return taskflow.engines.load(scheduler_flow, store=create_what) cinder-2014.1.5/cinder/scheduler/__init__.py0000664000567000056700000000174512540642603021714 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 OpenStack Foundation # # 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. """ :mod:`cinder.scheduler` -- Scheduler Nodes ===================================================== .. automodule:: cinder.scheduler :platform: Unix :synopsis: Module that picks a volume node to create a volume. .. moduleauthor:: Sandy Walsh .. moduleauthor:: Ed Leafe .. moduleauthor:: Chris Behrens """ cinder-2014.1.5/cinder/scheduler/simple.py0000664000567000056700000000561312540642606021447 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Chance and Simple Scheduler are DEPRECATED. Chance and Simple scheduler implementation have been deprecated, as their functionality can be implemented using the FilterScheduler, here's how: If one would like to have scheduler randomly picks available back-end (like ChanceScheduler did), use FilterScheduler with following combination of filters and weighers. scheduler_driver = cinder.scheduler.filter_scheduler.FilterScheduler scheduler_default_filters = ['AvailabilityZoneFilter', 'CapacityFilter', 'CapabilitiesFilter'] scheduler_default_weighers = 'ChanceWeigher' If one prefers the scheduler to pick up the back-end has most available space that scheudler can see (like SimpleScheduler did), use following combination of filters and weighers with FilterScheduler. scheduler_driver = cinder.scheduler.filter_scheduler.FilterScheduler scheduler_default_filters = ['AvailabilityZoneFilter', 'CapacityFilter', 'CapabilitiesFilter'] scheduler_default_weighers = 'AllocatedCapacityWeigher' allocated_capacity_weight_multiplier = -1.0 Setting/leaving configure option 'scheduler_driver=cinder.scheduler.chance.ChanceScheduler' or 'scheduler_driver=cinder.scheduler.simple.SimpleScheduler' in cinder.conf works exactly the same as described above since scheduler manager has been updated to do the trick internally/transparently for users. With that, FilterScheduler behaves mostly the same as Chance/SimpleScheduler, with additional benefits of supporting volume types, volume encryption, QoS. """ from oslo.config import cfg simple_scheduler_opts = [ cfg.IntOpt("max_gigabytes", default=10000, help="This configure option has been deprecated along with " "the SimpleScheduler. New scheduler is able to gather " "capacity information for each host, thus setting the " "maximum number of volume gigabytes for host is no " "longer needed. It's safe to remove this configure " "from cinder.conf."), ] CONF = cfg.CONF CONF.register_opts(simple_scheduler_opts) cinder-2014.1.5/cinder/scheduler/rpcapi.py0000664000567000056700000001011112540642606021421 0ustar jenkinsjenkins00000000000000# Copyright 2012, Red Hat, Inc. # # 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. """ Client side of the scheduler manager RPC API. """ from oslo.config import cfg from oslo import messaging from cinder.openstack.common import jsonutils from cinder import rpc CONF = cfg.CONF class SchedulerAPI(object): '''Client side of the scheduler rpc API. API version history: 1.0 - Initial version. 1.1 - Add create_volume() method 1.2 - Add request_spec, filter_properties arguments to create_volume() 1.3 - Add migrate_volume_to_host() method 1.4 - Add retype method 1.5 - Add manage_existing method ''' RPC_API_VERSION = '1.0' def __init__(self): super(SchedulerAPI, self).__init__() target = messaging.Target(topic=CONF.scheduler_topic, version=self.RPC_API_VERSION) self.client = rpc.get_client(target, version_cap='1.5') def create_volume(self, ctxt, topic, volume_id, snapshot_id=None, image_id=None, request_spec=None, filter_properties=None): cctxt = self.client.prepare(version='1.2') request_spec_p = jsonutils.to_primitive(request_spec) return cctxt.cast(ctxt, 'create_volume', topic=topic, volume_id=volume_id, snapshot_id=snapshot_id, image_id=image_id, request_spec=request_spec_p, filter_properties=filter_properties) def migrate_volume_to_host(self, ctxt, topic, volume_id, host, force_host_copy=False, request_spec=None, filter_properties=None): cctxt = self.client.prepare(version='1.3') request_spec_p = jsonutils.to_primitive(request_spec) return cctxt.cast(ctxt, 'migrate_volume_to_host', topic=topic, volume_id=volume_id, host=host, force_host_copy=force_host_copy, request_spec=request_spec_p, filter_properties=filter_properties) def retype(self, ctxt, topic, volume_id, request_spec=None, filter_properties=None): cctxt = self.client.prepare(version='1.4') request_spec_p = jsonutils.to_primitive(request_spec) return cctxt.cast(ctxt, 'retype', topic=topic, volume_id=volume_id, request_spec=request_spec_p, filter_properties=filter_properties) def manage_existing(self, ctxt, topic, volume_id, request_spec=None, filter_properties=None): cctxt = self.client.prepare(version='1.5') request_spec_p = jsonutils.to_primitive(request_spec) return cctxt.cast(ctxt, 'manage_existing', topic=topic, volume_id=volume_id, request_spec=request_spec_p, filter_properties=filter_properties) def update_service_capabilities(self, ctxt, service_name, host, capabilities): # FIXME(flaper87): What to do with fanout? cctxt = self.client.prepare(fanout=True) cctxt.cast(ctxt, 'update_service_capabilities', service_name=service_name, host=host, capabilities=capabilities) cinder-2014.1.5/cinder/scheduler/host_manager.py0000664000567000056700000003063112540642606022623 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Manage hosts in the current zone. """ import UserDict from oslo.config import cfg from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common.scheduler import filters from cinder.openstack.common.scheduler import weights from cinder.openstack.common import timeutils from cinder import utils host_manager_opts = [ cfg.ListOpt('scheduler_default_filters', default=[ 'AvailabilityZoneFilter', 'CapacityFilter', 'CapabilitiesFilter' ], help='Which filter class names to use for filtering hosts ' 'when not specified in the request.'), cfg.ListOpt('scheduler_default_weighers', default=[ 'CapacityWeigher' ], help='Which weigher class names to use for weighing hosts.') ] CONF = cfg.CONF CONF.register_opts(host_manager_opts) CONF.import_opt('scheduler_driver', 'cinder.scheduler.manager') LOG = logging.getLogger(__name__) class ReadOnlyDict(UserDict.IterableUserDict): """A read-only dict.""" def __init__(self, source=None): self.data = {} self.update(source) def __setitem__(self, key, item): raise TypeError def __delitem__(self, key): raise TypeError def clear(self): raise TypeError def pop(self, key, *args): raise TypeError def popitem(self): raise TypeError def update(self, source=None): if source is None: return elif isinstance(source, UserDict.UserDict): self.data = source.data elif isinstance(source, type({})): self.data = source else: raise TypeError class HostState(object): """Mutable and immutable information tracked for a host.""" def __init__(self, host, capabilities=None, service=None): self.host = host self.update_capabilities(capabilities, service) self.volume_backend_name = None self.vendor_name = None self.driver_version = 0 self.storage_protocol = None self.QoS_support = False # Mutable available resources. # These will change as resources are virtually "consumed". self.total_capacity_gb = 0 # capacity has been allocated in cinder POV, which should be # sum(vol['size'] for vol in vols_on_hosts) self.allocated_capacity_gb = 0 self.free_capacity_gb = None self.reserved_percentage = 0 self.updated = None def update_capabilities(self, capabilities=None, service=None): # Read-only capability dicts if capabilities is None: capabilities = {} self.capabilities = ReadOnlyDict(capabilities) if service is None: service = {} self.service = ReadOnlyDict(service) def update_from_volume_capability(self, capability): """Update information about a host from its volume_node info.""" if capability: if self.updated and self.updated > capability['timestamp']: return self.volume_backend = capability.get('volume_backend_name', None) self.vendor_name = capability.get('vendor_name', None) self.driver_version = capability.get('driver_version', None) self.storage_protocol = capability.get('storage_protocol', None) self.QoS_support = capability.get('QoS_support', False) self.total_capacity_gb = capability['total_capacity_gb'] self.free_capacity_gb = capability['free_capacity_gb'] self.allocated_capacity_gb = capability.get( 'allocated_capacity_gb', 0) self.reserved_percentage = capability['reserved_percentage'] self.updated = capability['timestamp'] def consume_from_volume(self, volume): """Incrementally update host state from an volume.""" volume_gb = volume['size'] self.allocated_capacity_gb += volume_gb if self.free_capacity_gb == 'infinite': # There's virtually infinite space on back-end pass elif self.free_capacity_gb == 'unknown': # Unable to determine the actual free space on back-end pass else: self.free_capacity_gb -= volume_gb self.updated = timeutils.utcnow() def __repr__(self): return ("host '%s': free_capacity_gb: %s" % (self.host, self.free_capacity_gb)) class HostManager(object): """Base HostManager class.""" host_state_cls = HostState def __init__(self): self.service_states = {} # { : {: {cap k : v}}} self.host_state_map = {} self.filter_handler = filters.HostFilterHandler('cinder.scheduler.' 'filters') self.filter_classes = self.filter_handler.get_all_classes() self.weight_handler = weights.HostWeightHandler('cinder.scheduler.' 'weights') self.weight_classes = self.weight_handler.get_all_classes() default_filters = ['AvailabilityZoneFilter', 'CapacityFilter', 'CapabilitiesFilter'] chance = 'cinder.scheduler.chance.ChanceScheduler' simple = 'cinder.scheduler.simple.SimpleScheduler' if CONF.scheduler_driver == simple: CONF.set_override('scheduler_default_filters', default_filters) CONF.set_override('scheduler_default_weighers', ['AllocatedCapacityWeigher']) elif CONF.scheduler_driver == chance: CONF.set_override('scheduler_default_filters', default_filters) CONF.set_override('scheduler_default_weighers', ['ChanceWeigher']) else: # Do nothing when some other scheduler is configured pass def _choose_host_filters(self, filter_cls_names): """Return a list of available filter names. This function checks input filter names against a predefined set of acceptable filterss (all loaded filters). If input is None, it uses CONF.scheduler_default_filters instead. """ if filter_cls_names is None: filter_cls_names = CONF.scheduler_default_filters if not isinstance(filter_cls_names, (list, tuple)): filter_cls_names = [filter_cls_names] good_filters = [] bad_filters = [] for filter_name in filter_cls_names: found_class = False for cls in self.filter_classes: if cls.__name__ == filter_name: found_class = True good_filters.append(cls) break if not found_class: bad_filters.append(filter_name) if bad_filters: msg = ", ".join(bad_filters) raise exception.SchedulerHostFilterNotFound(filter_name=msg) return good_filters def _choose_host_weighers(self, weight_cls_names): """Return a list of available weigher names. This function checks input weigher names against a predefined set of acceptable weighers (all loaded weighers). If input is None, it uses CONF.scheduler_default_weighers instead. """ if weight_cls_names is None: weight_cls_names = CONF.scheduler_default_weighers if not isinstance(weight_cls_names, (list, tuple)): weight_cls_names = [weight_cls_names] good_weighers = [] bad_weighers = [] for weigher_name in weight_cls_names: found_class = False for cls in self.weight_classes: if cls.__name__ == weigher_name: good_weighers.append(cls) found_class = True break if not found_class: bad_weighers.append(weigher_name) if bad_weighers: msg = ", ".join(bad_weighers) raise exception.SchedulerHostWeigherNotFound(weigher_name=msg) return good_weighers def get_filtered_hosts(self, hosts, filter_properties, filter_class_names=None): """Filter hosts and return only ones passing all filters.""" filter_classes = self._choose_host_filters(filter_class_names) return self.filter_handler.get_filtered_objects(filter_classes, hosts, filter_properties) def get_weighed_hosts(self, hosts, weight_properties, weigher_class_names=None): """Weigh the hosts.""" weigher_classes = self._choose_host_weighers(weigher_class_names) return self.weight_handler.get_weighed_objects(weigher_classes, hosts, weight_properties) def update_service_capabilities(self, service_name, host, capabilities): """Update the per-service capabilities based on this notification.""" if service_name != 'volume': LOG.debug(_('Ignoring %(service_name)s service update ' 'from %(host)s'), {'service_name': service_name, 'host': host}) return LOG.debug(_("Received %(service_name)s service update from " "%(host)s.") % {'service_name': service_name, 'host': host}) # Copy the capabilities, so we don't modify the original dict capab_copy = dict(capabilities) capab_copy["timestamp"] = timeutils.utcnow() # Reported time self.service_states[host] = capab_copy def get_all_host_states(self, context): """Returns a dict of all the hosts the HostManager knows about. Each of the consumable resources in HostState are populated with capabilities scheduler received from RPC. For example: {'192.168.1.100': HostState(), ...} """ # Get resource usage across the available volume nodes: topic = CONF.volume_topic volume_services = db.service_get_all_by_topic(context, topic) active_hosts = set() for service in volume_services: host = service['host'] if not utils.service_is_up(service) or service['disabled']: LOG.warn(_("volume service is down or disabled. " "(host: %s)") % host) continue capabilities = self.service_states.get(host, None) host_state = self.host_state_map.get(host) if host_state: # copy capabilities to host_state.capabilities host_state.update_capabilities(capabilities, dict(service.iteritems())) else: host_state = self.host_state_cls(host, capabilities=capabilities, service= dict(service.iteritems())) self.host_state_map[host] = host_state # update attributes in host_state that scheduler is interested in host_state.update_from_volume_capability(capabilities) active_hosts.add(host) # remove non-active hosts from host_state_map nonactive_hosts = set(self.host_state_map.keys()) - active_hosts for host in nonactive_hosts: LOG.info(_("Removing non-active host: %(host)s from " "scheduler cache.") % {'host': host}) del self.host_state_map[host] return self.host_state_map.itervalues() cinder-2014.1.5/cinder/zonemanager/0000775000567000056700000000000012540643114020122 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/zonemanager/fc_san_lookup_service.py0000664000567000056700000000674612540642606025060 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ Base Lookup Service for name server lookup to find the initiator to target port mapping for available SAN contexts. Vendor specific lookup classes are expected to implement the interfaces defined in this class. """ from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.volume import configuration as config from cinder.zonemanager import fc_common from cinder.zonemanager import fc_zone_manager LOG = logging.getLogger(__name__) class FCSanLookupService(fc_common.FCCommon): """Base Lookup Service. Base Lookup Service for name server lookup to find the initiator to target port mapping for available SAN contexts. """ lookup_service = None def __init__(self, **kwargs): super(FCSanLookupService, self).__init__(**kwargs) self.configuration = kwargs.get('configuration', None) opts = fc_zone_manager.zone_manager_opts self.configuration = config.Configuration(opts, 'fc-zone-manager') def get_device_mapping_from_network(self, initiator_list, target_list): """Get device mapping from FC network. Gets a filtered list of initiator ports and target ports for each SAN available. :param initiator_list list of initiator port WWN :param target_list list of target port WWN :return device wwn map in following format { : { 'initiator_port_wwn_list': ('200000051E55A100', '200000051E55A121'..) 'target_port_wwn_list': ('100000051E55A100', '100000051E55A121'..) } } :raise Exception when a lookup service implementation is not specified in cinder.conf:fc_san_lookup_service """ # Initialize vendor specific implementation of FCZoneDriver if (self.configuration.fc_san_lookup_service): lookup_service = self.configuration.fc_san_lookup_service LOG.debug(_("Lookup service to invoke: " "%s"), lookup_service) self.lookup_service = importutils.import_object( lookup_service, configuration=self.configuration) else: msg = _("Lookup service not configured. Config option for " "fc_san_lookup_service need to specify a concrete " "implementation of lookup service") LOG.error(msg) raise exception.FCSanLookupServiceException(msg) try: device_map = self.lookup_service.get_device_mapping_from_network( initiator_list, target_list) except Exception as e: LOG.error(e) raise exception.FCSanLookupServiceException(e) return device_map cinder-2014.1.5/cinder/zonemanager/fc_zone_manager.py0000664000567000056700000002213112540642606023615 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ ZoneManager is responsible to manage access control using FC zoning when zoning mode is set as 'fabric'. ZoneManager provides interfaces to add connection and remove connection for given initiator and target list associated with a FC volume attach and detach operation. **Related Flags** :zone_driver: Used by:class:`ZoneManager`. Defaults to `cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver` :zoning_policy: Used by: class: 'ZoneManager'. Defaults to 'none' """ from oslo.config import cfg from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.volume import configuration as config from cinder.zonemanager import fc_common LOG = logging.getLogger(__name__) zone_manager_opts = [ cfg.StrOpt('zone_driver', default='cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver' '.BrcdFCZoneDriver', help='FC Zone Driver responsible for zone management'), cfg.StrOpt('zoning_policy', default='initiator-target', help='Zoning policy configured by user'), cfg.StrOpt('fc_fabric_names', default=None, help='Comma separated list of fibre channel fabric names.' ' This list of names is used to retrieve other SAN credentials' ' for connecting to each SAN fabric'), cfg.StrOpt('fc_san_lookup_service', default='cinder.zonemanager.drivers.brocade' '.brcd_fc_san_lookup_service.BrcdFCSanLookupService', help='FC San Lookup Service'), ] CONF = cfg.CONF CONF.register_opts(zone_manager_opts, 'fc-zone-manager') class ZoneManager(fc_common.FCCommon): """Manages Connection control during attach/detach.""" VERSION = "1.0" driver = None fabric_names = [] def __init__(self, **kwargs): """Load the driver from the one specified in args, or from flags.""" super(ZoneManager, self).__init__(**kwargs) self.configuration = kwargs.get('configuration', None) if self.configuration: self.configuration.append_config_values(zone_manager_opts) zone_driver = self.configuration.zone_driver LOG.debug(_("Zone Driver from config: {%s}"), zone_driver) zm_config = config.Configuration(zone_manager_opts, 'fc-zone-manager') # Initialize vendor specific implementation of FCZoneDriver self.driver = importutils.import_object( zone_driver, configuration=zm_config) def get_zoning_state_ref_count(self, initiator_wwn, target_wwn): """Zone management state check. Performs state check for given I-T pair to return the current count of active attach for the pair. """ # TODO(sk): ref count state management count = 0 # check the state for I-T pair return count def add_connection(self, initiator_target_map): """Add connection control. Adds connection control for the given initiator target map. initiator_target_map - each initiator WWN mapped to a list of one or more target WWN: eg: { '10008c7cff523b01': ['20240002ac000a50', '20240002ac000a40'] } """ connected_fabric = None try: for initiator in initiator_target_map.keys(): target_list = initiator_target_map[initiator] LOG.debug(_("Target List :%s"), {initiator: target_list}) # get SAN context for the target list fabric_map = self.get_san_context(target_list) LOG.debug(_("Fabric Map after context lookup:%s"), fabric_map) # iterate over each SAN and apply connection control for fabric in fabric_map.keys(): connected_fabric = fabric t_list = fabric_map[fabric] # get valid I-T map to add connection control i_t_map = {initiator: t_list} valid_i_t_map = self.get_valid_initiator_target_map( i_t_map, True) LOG.info(_("Final filtered map for fabric: %s"), {fabric: valid_i_t_map}) # Call driver to add connection control self.driver.add_connection(fabric, valid_i_t_map) LOG.info(_("Add Connection: Finished iterating " "over all target list")) except Exception as e: msg = _("Failed adding connection for fabric=%(fabric)s: " "Error:%(err)s") % {'fabric': connected_fabric, 'err': e} LOG.error(msg) raise exception.ZoneManagerException(reason=msg) def delete_connection(self, initiator_target_map): """Delete connection. Updates/deletes connection control for the given initiator target map. initiator_target_map - each initiator WWN mapped to a list of one or more target WWN: eg: { '10008c7cff523b01': ['20240002ac000a50', '20240002ac000a40'] } """ connected_fabric = None try: for initiator in initiator_target_map.keys(): target_list = initiator_target_map[initiator] LOG.info(_("Delete connection Target List:%s"), {initiator: target_list}) # get SAN context for the target list fabric_map = self.get_san_context(target_list) LOG.debug(_("Delete connection Fabric Map from SAN " "context: %s"), fabric_map) # iterate over each SAN and apply connection control for fabric in fabric_map.keys(): connected_fabric = fabric t_list = fabric_map[fabric] # get valid I-T map to add connection control i_t_map = {initiator: t_list} valid_i_t_map = self.get_valid_initiator_target_map( i_t_map, False) LOG.info(_("Final filtered map for delete " "connection: %s"), valid_i_t_map) # Call driver to delete connection control if len(valid_i_t_map) > 0: self.driver.delete_connection(fabric, valid_i_t_map) LOG.debug(_("Delete Connection - Finished iterating over all" " target list")) except Exception as e: msg = _("Failed removing connection for fabric=%(fabric)s: " "Error:%(err)s") % {'fabric': connected_fabric, 'err': e} LOG.error(msg) raise exception.ZoneManagerException(reason=msg) def get_san_context(self, target_wwn_list): """SAN lookup for end devices. Look up each SAN configured and return a map of SAN (fabric IP) to list of target WWNs visible to the fabric. """ fabric_map = self.driver.get_san_context(target_wwn_list) LOG.debug(_("Got SAN context:%s"), fabric_map) return fabric_map def get_valid_initiator_target_map(self, initiator_target_map, add_control): """Reference count check for end devices. Looks up the reference count for each initiator-target pair from the map and returns a filtered list based on the operation type add_control - operation type can be true for add connection control and false for remove connection control """ filtered_i_t_map = {} for initiator in initiator_target_map.keys(): t_list = initiator_target_map[initiator] for target in t_list: count = self.get_zoning_state_ref_count(initiator, target) if add_control: if count > 0: t_list.remove(target) # update count = count + 1 else: if count > 1: t_list.remove(target) # update count = count - 1 if t_list: filtered_i_t_map[initiator] = t_list else: LOG.info(_("No targets to add or remove connection for " "I: %s"), initiator) return filtered_i_t_map cinder-2014.1.5/cinder/zonemanager/fc_common.py0000664000567000056700000000160612540642603022441 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # class FCCommon(object): """Common interface for FC operations.""" VERSION = "1.0" def __init__(self, **kwargs): pass def get_version(self): return self.VERSION cinder-2014.1.5/cinder/zonemanager/__init__.py0000664000567000056700000000164512540642603022243 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ :mod:`cinder.zonemanager` -- FC Zone manager ===================================================== .. automodule:: cinder.zonemanager :platform: Unix :synopsis: Module containing all the FC Zone Manager classes """ cinder-2014.1.5/cinder/zonemanager/drivers/0000775000567000056700000000000012540643114021600 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/zonemanager/drivers/brocade/0000775000567000056700000000000012540643114023177 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/zonemanager/drivers/brocade/fc_zone_constants.py0000664000567000056700000000256312540642603027300 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ Common constants used by Brocade FC Zone Driver. """ YES = 'y' ACTIVE_ZONE_CONFIG = 'active_zone_config' CFG_ZONESET = 'cfg:' CFG_ZONES = 'zones' OPENSTACK_CFG_NAME = 'OpenStack_Cfg' SUCCESS = 'Success' TRANS_ABORTABLE = 'It is abortable' """ CLI Commands for FC zoning operations. """ GET_ACTIVE_ZONE_CFG = 'cfgactvshow' ZONE_CREATE = 'zonecreate ' ZONESET_CREATE = 'cfgcreate ' CFG_SAVE = 'cfgsave' CFG_ADD = 'cfgadd ' ACTIVATE_ZONESET = 'cfgenable ' DEACTIVATE_ZONESET = 'cfgdisable' CFG_DELETE = 'cfgdelete ' CFG_REMOVE = 'cfgremove ' ZONE_DELETE = 'zonedelete ' CFG_SHOW_TRANS = 'cfgtransshow' CFG_ZONE_TRANS_ABORT = 'cfgtransabort' NS_SHOW = 'nsshow' NS_CAM_SHOW = 'nscamshow' cinder-2014.1.5/cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py0000664000567000056700000005405612540642606030372 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ Script to push the zone configuration to brocade SAN switches. """ import random import re from eventlet import greenthread from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import utils import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant LOG = logging.getLogger(__name__) class BrcdFCZoneClientCLI(object): switch_ip = None switch_port = '22' switch_user = 'admin' switch_pwd = 'none' patrn = re.compile('[;\s]+') def __init__(self, ipaddress, username, password, port): """initializing the client.""" self.switch_ip = ipaddress self.switch_port = port self.switch_user = username self.switch_pwd = password self.sshpool = None def get_active_zone_set(self): """Return the active zone configuration. Return active zoneset from fabric. When none of the configurations are active then it will return empty map. :returns: Map -- active zone set map in the following format { 'zones': {'openstack50060b0000c26604201900051ee8e329': ['50060b0000c26604', '201900051ee8e329'] }, 'active_zone_config': 'OpenStack_Cfg' } """ zone_set = {} zone = {} zone_member = None zone_name = None switch_data = None zone_set_name = None try: switch_data = self._get_switch_info( [ZoneConstant.GET_ACTIVE_ZONE_CFG]) except exception.BrocadeZoningCliException: with excutils.save_and_reraise_exception(): LOG.error(_("Failed getting active zone set " "from fabric %s"), self.switch_ip) try: for line in switch_data: line_split = re.split('\\t', line) if len(line_split) > 2: line_split = [x.replace( '\n', '') for x in line_split] line_split = [x.replace( ' ', '') for x in line_split] if ZoneConstant.CFG_ZONESET in line_split: zone_set_name = line_split[1] continue if line_split[1]: zone_name = line_split[1] zone[zone_name] = list() if line_split[2]: zone_member = line_split[2] if zone_member: zone_member_list = zone.get(zone_name) zone_member_list.append(zone_member) zone_set[ZoneConstant.CFG_ZONES] = zone zone_set[ZoneConstant.ACTIVE_ZONE_CONFIG] = zone_set_name except Exception as ex: # Incase of parsing error here, it should be malformed cli output. msg = _("Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." ) % {'switch': self.switch_ip, 'zone_config': switch_data} LOG.error(msg) LOG.exception(ex) raise exception.FCZoneDriverException(reason=msg) switch_data = None return zone_set def add_zones(self, zones, activate, active_zone_set=None): """Add zone configuration. This method will add the zone configuration passed by user. input params: zones - zone names mapped to members. zone members are colon separated but case-insensitive { zonename1:[zonememeber1,zonemember2,...], zonename2:[zonemember1, zonemember2,...]...} e.g: {'openstack50060b0000c26604201900051ee8e329': ['50:06:0b:00:00:c2:66:04', '20:19:00:05:1e:e8:e3:29'] } activate - True/False active_zone_set - active zone set dict retrieved from get_active_zone_set method """ LOG.debug(_("Add Zones - Zones passed: %s"), zones) cfg_name = None iterator_count = 0 zone_with_sep = '' if not active_zone_set: active_zone_set = self.get_active_zone_set() LOG.debug("Active zone set:%s", active_zone_set) zone_list = active_zone_set[ZoneConstant.CFG_ZONES] LOG.debug(_("zone list:%s"), zone_list) for zone in zones.keys(): # if zone exists, its an update. Delete & insert # TODO(skolathur): This can be optimized to an update call later if (zone in zone_list): try: self.delete_zones(zone, activate, active_zone_set) except exception.BrocadeZoningCliException: with excutils.save_and_reraise_exception(): LOG.error(_("Deleting zone failed %s"), zone) LOG.debug(_("Deleted Zone before insert : %s"), zone) zone_members_with_sep = ';'.join(str(member) for member in zones[zone]) LOG.debug(_("Forming command for add zone")) cmd = 'zonecreate "%(zone)s", "%(zone_members_with_sep)s"' % { 'zone': zone, 'zone_members_with_sep': zone_members_with_sep} LOG.debug(_("Adding zone, cmd to run %s"), cmd) self.apply_zone_change(cmd.split()) LOG.debug(_("Created zones on the switch")) if(iterator_count > 0): zone_with_sep += ';' iterator_count += 1 zone_with_sep += zone try: cfg_name = active_zone_set[ZoneConstant.ACTIVE_ZONE_CONFIG] cmd = None if not cfg_name: cfg_name = ZoneConstant.OPENSTACK_CFG_NAME cmd = 'cfgcreate "%(zoneset)s", "%(zones)s"' \ % {'zoneset': cfg_name, 'zones': zone_with_sep} else: cmd = 'cfgadd "%(zoneset)s", "%(zones)s"' \ % {'zoneset': cfg_name, 'zones': zone_with_sep} LOG.debug(_("New zone %s"), cmd) self.apply_zone_change(cmd.split()) if activate: self.activate_zoneset(cfg_name) else: self._cfg_save() except Exception as e: self._cfg_trans_abort() msg = _("Creating and activating zone set failed: " "(Zone set=%(cfg_name)s error=%(err)s)." ) % {'cfg_name': cfg_name, 'err': e} LOG.error(msg) raise exception.BrocadeZoningCliException(reason=msg) def activate_zoneset(self, cfgname): """Method to Activate the zone config. Param cfgname - ZonesetName.""" cmd_list = [ZoneConstant.ACTIVATE_ZONESET, cfgname] return self._ssh_execute(cmd_list, True, 1) def deactivate_zoneset(self): """Method to deActivate the zone config.""" return self._ssh_execute([ZoneConstant.DEACTIVATE_ZONESET], True, 1) def delete_zones(self, zone_names, activate, active_zone_set=None): """Delete zones from fabric. Method to delete the active zone config zones params zone_names: zoneNames separated by semicolon params activate: True/False params active_zone_set: the active zone set dict retrieved from get_active_zone_set method """ active_zoneset_name = None zone_list = [] if not active_zone_set: active_zone_set = self.get_active_zone_set() active_zoneset_name = active_zone_set[ ZoneConstant.ACTIVE_ZONE_CONFIG] zone_list = active_zone_set[ZoneConstant.CFG_ZONES] zones = self.patrn.split(''.join(zone_names)) cmd = None try: if len(zones) == len(zone_list): self.deactivate_zoneset() cmd = 'cfgdelete "%(active_zoneset_name)s"' \ % {'active_zoneset_name': active_zoneset_name} # Active zoneset is being deleted, hence reset activate flag activate = False else: cmd = 'cfgremove "%(active_zoneset_name)s", "%(zone_names)s"' \ % {'active_zoneset_name': active_zoneset_name, 'zone_names': zone_names } LOG.debug(_("Delete zones: Config cmd to run:%s"), cmd) self.apply_zone_change(cmd.split()) for zone in zones: self._zone_delete(zone) if activate: self.activate_zoneset(active_zoneset_name) else: self._cfg_save() except Exception as e: msg = _("Deleting zones failed: (command=%(cmd)s error=%(err)s)." ) % {'cmd': cmd, 'err': e} LOG.error(msg) self._cfg_trans_abort() raise exception.BrocadeZoningCliException(reason=msg) def get_nameserver_info(self): """Get name server data from fabric. This method will return the connected node port wwn list(local and remote) for the given switch fabric """ cli_output = None return_list = [] try: cmd = '%(nsshow)s;%(nscamshow)s' % { 'nsshow': ZoneConstant.NS_SHOW, 'nscamshow': ZoneConstant.NS_CAM_SHOW} cli_output = self._get_switch_info([cmd]) except exception.BrocadeZoningCliException: with excutils.save_and_reraise_exception(): LOG.error(_("Failed collecting nsshow " "info for fabric %s"), self.switch_ip) if (cli_output): return_list = self._parse_ns_output(cli_output) cli_output = None return return_list def _cfg_save(self): self._ssh_execute([ZoneConstant.CFG_SAVE], True, 1) def _zone_delete(self, zone_name): cmd = 'zonedelete "%(zone_name)s"' % {'zone_name': zone_name} self.apply_zone_change(cmd.split()) def _cfg_trans_abort(self): is_abortable = self._is_trans_abortable() if(is_abortable): self.apply_zone_change([ZoneConstant.CFG_ZONE_TRANS_ABORT]) def _is_trans_abortable(self): is_abortable = False stdout, stderr = None, None stdout, stderr = self._run_ssh( [ZoneConstant.CFG_SHOW_TRANS], True, 1) output = stdout.splitlines() is_abortable = False for line in output: if(ZoneConstant.TRANS_ABORTABLE in line): is_abortable = True break if stderr: msg = _("Error while checking transaction status: %s") % stderr raise exception.BrocadeZoningCliException(reason=msg) else: return is_abortable def apply_zone_change(self, cmd_list): """Execute zoning cli with no status update. Executes CLI commands such as addZone where status return is not expected. """ stdout, stderr = None, None LOG.debug(_("Executing command via ssh: %s"), cmd_list) stdout, stderr = self._run_ssh(cmd_list, True, 1) # no output expected, so output means there is an error if stdout: msg = _("Error while running zoning CLI: (command=%(cmd)s " "error=%(err)s).") % {'cmd': cmd_list, 'err': stdout} LOG.error(msg) self._cfg_trans_abort() raise exception.BrocadeZoningCliException(reason=msg) def is_supported_firmware(self): """Check firmware version is v6.4 or higher. This API checks if the firmware version per the plug-in support level. This only checks major and minor version. """ cmd = ['version'] firmware = 0 try: stdout, stderr = self._execute_shell_cmd(cmd) if (stdout): for line in stdout: if 'Fabric OS: v' in line: LOG.debug(_("Firmware version string:%s"), line) ver = line.split('Fabric OS: v')[1].split('.') if (ver): firmware = int(ver[0] + ver[1]) return firmware > 63 else: LOG.error(_("No CLI output for firmware version check")) return False except processutils.ProcessExecutionError as e: msg = _("Error while getting data via ssh: (command=%(cmd)s " "error=%(err)s).") % {'cmd': cmd, 'err': e} LOG.error(msg) raise exception.BrocadeZoningCliException(reason=msg) def _get_switch_info(self, cmd_list): stdout, stderr, sw_data = None, None, None try: stdout, stderr = self._run_ssh(cmd_list, True, 1) if (stdout): sw_data = stdout.splitlines() return sw_data except processutils.ProcessExecutionError as e: msg = _("Error while getting data via ssh: (command=%(cmd)s " "error=%(err)s).") % {'cmd': cmd_list, 'err': e} LOG.error(msg) raise exception.BrocadeZoningCliException(reason=msg) def _parse_ns_output(self, switch_data): """Parses name server data. Parses nameserver raw data and adds the device port wwns to the list :returns: List -- list of device port wwn from ns info """ return_list = [] for line in switch_data: if not(" NL " in line or " N " in line): continue linesplit = line.split(';') if len(linesplit) > 2: node_port_wwn = linesplit[2] return_list.append(node_port_wwn) else: msg = _("Malformed nameserver string: %s") % line LOG.error(msg) raise exception.InvalidParameterValue(err=msg) return return_list def _run_ssh(self, cmd_list, check_exit_code=True, attempts=1): # TODO(skolathur): Need to implement ssh_injection check # currently, the check will fail for zonecreate command # as zone members are separated by ';'which is a danger char command = ' '. join(cmd_list) if not self.sshpool: self.sshpool = utils.SSHPool(self.switch_ip, self.switch_port, None, self.switch_user, self.switch_pwd, min_size=1, max_size=5) last_exception = None try: with self.sshpool.item() as ssh: while attempts > 0: attempts -= 1 try: return processutils.ssh_execute( ssh, command, check_exit_code=check_exit_code) except Exception as e: LOG.error(e) last_exception = e greenthread.sleep(random.randint(20, 500) / 100.0) try: raise processutils.ProcessExecutionError( exit_code=last_exception.exit_code, stdout=last_exception.stdout, stderr=last_exception.stderr, cmd=last_exception.cmd) except AttributeError: raise processutils.ProcessExecutionError( exit_code=-1, stdout="", stderr="Error running SSH command", cmd=command) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Error running SSH command: %s") % command) def _ssh_execute(self, cmd_list, check_exit_code=True, attempts=1): """Execute cli with status update. Executes CLI commands such as cfgsave where status return is expected. """ utils.check_ssh_injection(cmd_list) command = ' '. join(cmd_list) if not self.sshpool: self.sshpool = utils.SSHPool(self.switch_ip, self.switch_port, None, self.switch_user, self.switch_pwd, min_size=1, max_size=5) stdin, stdout, stderr = None, None, None LOG.debug(_("Executing command via ssh: %s") % command) last_exception = None try: with self.sshpool.item() as ssh: while attempts > 0: attempts -= 1 try: stdin, stdout, stderr = ssh.exec_command(command) greenthread.sleep(random.randint(20, 500) / 100.0) stdin.write("%s\n" % ZoneConstant.YES) channel = stdout.channel exit_status = channel.recv_exit_status() LOG.debug(_("Exit Status from ssh:%s"), exit_status) # exit_status == -1 if no exit code was returned if exit_status != -1: LOG.debug(_('Result was %s') % exit_status) if check_exit_code and exit_status != 0: raise processutils.ProcessExecutionError( exit_code=exit_status, stdout=stdout, stderr=stderr, cmd=command) else: return True else: return True except Exception as e: LOG.error(e) last_exception = e greenthread.sleep(random.randint(20, 500) / 100.0) LOG.debug(_("Handling error case after " "SSH:%s"), last_exception) try: raise processutils.ProcessExecutionError( exit_code=last_exception.exit_code, stdout=last_exception.stdout, stderr=last_exception.stderr, cmd=last_exception.cmd) except AttributeError: raise processutils.ProcessExecutionError( exit_code=-1, stdout="", stderr="Error running SSH command", cmd=command) except Exception as e: with excutils.save_and_reraise_exception(): LOG.error(_("Error executing command via ssh: %s"), e) finally: if stdin: stdin.flush() stdin.close() if stdout: stdout.close() if stderr: stderr.close() def _execute_shell_cmd(self, cmd): """Run command over shell for older firmware versions. We invoke shell and issue the command and return the output. This is primarily used for issuing read commands when we are not sure if the firmware supports exec_command. """ utils.check_ssh_injection(cmd) command = ' '. join(cmd) stdout, stderr = None, None if not self.sshpool: self.sshpool = utils.SSHPool(self.switch_ip, self.switch_port, None, self.switch_user, self.switch_pwd, min_size=1, max_size=5) with self.sshpool.item() as ssh: LOG.debug('Running cmd (SSH): %s' % command) channel = ssh.invoke_shell() stdin_stream = channel.makefile('wb') stdout_stream = channel.makefile('rb') stderr_stream = channel.makefile('rb') stdin_stream.write('''%s exit ''' % command) stdin_stream.flush() stdout = stdout_stream.readlines() stderr = stderr_stream.readlines() stdin_stream.close() stdout_stream.close() stderr_stream.close() exit_status = channel.recv_exit_status() # exit_status == -1 if no exit code was returned if exit_status != -1: LOG.debug('Result was %s' % exit_status) if exit_status != 0: msg = "command %s failed" % command LOG.debug(msg) raise processutils.ProcessExecutionError( exit_code=exit_status, stdout=stdout, stderr=stderr, cmd=command) try: channel.close() except Exception as e: LOG.exception(e) LOG.debug("_execute_cmd: stderr to return:%s" % stderr) return (stdout, stderr) def cleanup(self): self.sshpool = None cinder-2014.1.5/cinder/zonemanager/drivers/brocade/__init__.py0000664000567000056700000000171412540642603025315 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ :mod:`cinder.zonemanager.driver.brocade` -- Brocade FC Zone Drivers ===================================================== .. automodule:: cinder.zonemanager.driver.brocade :platform: Unix :synopsis: Module containing all the Brocade FC Zone drivers. """ cinder-2014.1.5/cinder/zonemanager/drivers/brocade/brcd_fabric_opts.py0000664000567000056700000000423712540642606027051 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # from oslo.config import cfg from cinder.openstack.common import log as logging from cinder.volume.configuration import Configuration brcd_zone_opts = [ cfg.StrOpt('fc_fabric_address', default='', help='Management IP of fabric'), cfg.StrOpt('fc_fabric_user', default='', help='Fabric user ID'), cfg.StrOpt('fc_fabric_password', default='', help='Password for user', secret=True), cfg.IntOpt('fc_fabric_port', default=22, help='Connecting port'), cfg.StrOpt('zoning_policy', default='initiator-target', help='overridden zoning policy'), cfg.BoolOpt('zone_activate', default=True, help='overridden zoning activation state'), cfg.StrOpt('zone_name_prefix', default=None, help='overridden zone name prefix'), cfg.StrOpt('principal_switch_wwn', default=None, help='Principal switch WWN of the fabric'), ] CONF = cfg.CONF CONF.register_opts(brcd_zone_opts, 'BRCD_FABRIC_EXAMPLE') LOG = logging.getLogger(__name__) def load_fabric_configurations(fabric_names): fabric_configs = {} for fabric_name in fabric_names: config = Configuration(brcd_zone_opts, fabric_name) LOG.debug("Loaded FC fabric config %s" % fabric_name) fabric_configs[fabric_name] = config return fabric_configs cinder-2014.1.5/cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py0000664000567000056700000004525212540642606027556 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ Brocade Zone Driver is responsible to manage access control using FC zoning for Brocade FC fabrics. This is a concrete implementation of FCZoneDriver interface implementing add_connection and delete_connection interfaces. **Related Flags** :zone_activate: Used by: class: 'FCZoneDriver'. Defaults to True :zone_name_prefix: Used by: class: 'FCZoneDriver'. Defaults to 'openstack' """ from oslo.config import cfg from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import importutils from cinder.openstack.common import lockutils from cinder.openstack.common import log as logging from cinder.zonemanager.drivers.brocade import brcd_fabric_opts as fabric_opts from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver LOG = logging.getLogger(__name__) brcd_opts = [ cfg.StrOpt('brcd_sb_connector', default='cinder.zonemanager.drivers.brocade' '.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI', help='Southbound connector for zoning operation'), ] CONF = cfg.CONF CONF.register_opts(brcd_opts, 'fc-zone-manager') class BrcdFCZoneDriver(FCZoneDriver): """Brocade FC zone driver implementation. OpenStack Fibre Channel zone driver to manage FC zoning in Brocade SAN fabrics. Version history: 1.0 - Initial Brocade FC zone driver 1.1 - Implements performance enhancements """ VERSION = "1.1" def __init__(self, **kwargs): super(BrcdFCZoneDriver, self).__init__(**kwargs) self.sb_conn_map = {} self.configuration = kwargs.get('configuration', None) if self.configuration: self.configuration.append_config_values(brcd_opts) # Adding a hack to hendle parameters from super classes # in case configured with multi backend. fabric_names = self.configuration.safe_get('fc_fabric_names') activate = self.configuration.safe_get('zone_activate') prefix = self.configuration.safe_get('zone_name_prefix') base_san_opts = [] if not fabric_names: base_san_opts.append( cfg.StrOpt('fc_fabric_names', default=None, help='Comma separated list of fibre channel ' 'fabric names. This list of names is used to' ' retrieve other SAN credentials for connecting' ' to each SAN fabric' )) if not activate: base_san_opts.append( cfg.BoolOpt('zone_activate', default=True, help='Indicates whether zone should ' 'be activated or not')) if not prefix: base_san_opts.append( cfg.StrOpt('zone_name_prefix', default="openstack", help="A prefix to be used when naming zone")) if len(base_san_opts) > 0: CONF.register_opts(base_san_opts) self.configuration.append_config_values(base_san_opts) fabric_names = self.configuration.fc_fabric_names.split(',') # There can be more than one SAN in the network and we need to # get credentials for each SAN. if fabric_names: self.fabric_configs = fabric_opts.load_fabric_configurations( fabric_names) def get_formatted_wwn(self, wwn_str): """Utility API that formats WWN to insert ':'.""" wwn_str = wwn_str.encode('ascii') if len(wwn_str) != 16: return wwn_str else: return ':'.join( [wwn_str[i:i + 2] for i in range(0, len(wwn_str), 2)]) @lockutils.synchronized('brcd', 'fcfabric-', True) def add_connection(self, fabric, initiator_target_map): """Concrete implementation of add_connection. Based on zoning policy and state of each I-T pair, list of zone members are created and pushed to the fabric to add zones. The new zones created or zones updated are activated based on isActivate flag set in cinder.conf returned by volume driver after attach operation. :param fabric: Fabric name from cinder.conf file :param initiator_target_map: Mapping of initiator to list of targets """ LOG.debug(_("Add connection for Fabric:%s"), fabric) LOG.info(_("BrcdFCZoneDriver - Add connection " "for I-T map: %s"), initiator_target_map) zoning_policy = self.configuration.zoning_policy zoning_policy_fab = self.fabric_configs[fabric].safe_get( 'zoning_policy') if zoning_policy_fab: zoning_policy = zoning_policy_fab LOG.info(_("Zoning policy for Fabric %s"), zoning_policy) cli_client = self._get_cli_client(fabric) cfgmap_from_fabric = self._get_active_zone_set(cli_client) zone_names = [] if cfgmap_from_fabric.get('zones'): zone_names = cfgmap_from_fabric['zones'].keys() # based on zoning policy, create zone member list and # push changes to fabric. for initiator_key in initiator_target_map.keys(): zone_map = {} initiator = initiator_key.lower() t_list = initiator_target_map[initiator_key] if zoning_policy == 'initiator-target': for t in t_list: target = t.lower() zone_members = [self.get_formatted_wwn(initiator), self.get_formatted_wwn(target)] zone_name = (self.configuration.zone_name_prefix + initiator.replace(':', '') + target.replace(':', '')) if ( len(cfgmap_from_fabric) == 0 or ( zone_name not in zone_names)): zone_map[zone_name] = zone_members else: # This is I-T zoning, skip if zone already exists. LOG.info(_("Zone exists in I-T mode. " "Skipping zone creation %s"), zone_name) elif zoning_policy == 'initiator': zone_members = [self.get_formatted_wwn(initiator)] for t in t_list: target = t.lower() zone_members.append(self.get_formatted_wwn(target)) zone_name = self.configuration.zone_name_prefix \ + initiator.replace(':', '') if len(zone_names) > 0 and (zone_name in zone_names): zone_members = zone_members + filter( lambda x: x not in zone_members, cfgmap_from_fabric['zones'][zone_name]) zone_map[zone_name] = zone_members else: msg = _("Zoning Policy: %s, not " "recognized") % zoning_policy LOG.error(msg) raise exception.FCZoneDriverException(msg) LOG.info(_("Zone map to add: %s"), zone_map) if len(zone_map) > 0: try: cli_client.add_zones( zone_map, self.configuration.zone_activate, cfgmap_from_fabric) cli_client.cleanup() except exception.BrocadeZoningCliException as brocade_ex: raise exception.FCZoneDriverException(brocade_ex) except Exception as e: LOG.error(e) msg = _("Failed to add zoning configuration %s") % e raise exception.FCZoneDriverException(msg) LOG.debug(_("Zones added successfully: %s"), zone_map) @lockutils.synchronized('brcd', 'fcfabric-', True) def delete_connection(self, fabric, initiator_target_map): """Concrete implementation of delete_connection. Based on zoning policy and state of each I-T pair, list of zones are created for deletion. The zones are either updated deleted based on the policy and attach/detach state of each I-T pair. :param fabric: Fabric name from cinder.conf file :param initiator_target_map: Mapping of initiator to list of targets """ LOG.debug(_("Delete connection for fabric:%s"), fabric) LOG.info(_("BrcdFCZoneDriver - Delete connection for I-T map: %s"), initiator_target_map) zoning_policy = self.configuration.zoning_policy zoning_policy_fab = self.fabric_configs[fabric].safe_get( 'zoning_policy') if zoning_policy_fab: zoning_policy = zoning_policy_fab LOG.info(_("Zoning policy for fabric %s"), zoning_policy) conn = self._get_cli_client(fabric) cfgmap_from_fabric = self._get_active_zone_set(conn) zone_names = [] if cfgmap_from_fabric.get('zones'): zone_names = cfgmap_from_fabric['zones'].keys() # Based on zoning policy, get zone member list and push changes to # fabric. This operation could result in an update for zone config # with new member list or deleting zones from active cfg. LOG.debug(_("zone config from Fabric: %s"), cfgmap_from_fabric) for initiator_key in initiator_target_map.keys(): initiator = initiator_key.lower() formatted_initiator = self.get_formatted_wwn(initiator) zone_map = {} zones_to_delete = [] t_list = initiator_target_map[initiator_key] if zoning_policy == 'initiator-target': # In this case, zone needs to be deleted. for t in t_list: target = t.lower() zone_name = ( self.configuration.zone_name_prefix + initiator.replace(':', '') + target.replace(':', '')) LOG.debug(_("Zone name to del: %s"), zone_name) if len(zone_names) > 0 and (zone_name in zone_names): # delete zone. LOG.debug("Added zone to delete to " "list: %s", zone_name) zones_to_delete.append(zone_name) elif zoning_policy == 'initiator': zone_members = [formatted_initiator] for t in t_list: target = t.lower() zone_members.append(self.get_formatted_wwn(target)) zone_name = self.configuration.zone_name_prefix \ + initiator.replace(':', '') if (zone_names and (zone_name in zone_names)): filtered_members = filter( lambda x: x not in zone_members, cfgmap_from_fabric['zones'][zone_name]) # The assumption here is that initiator is always there # in the zone as it is 'initiator' policy. We find the # filtered list and if it is non-empty, add initiator # to it and update zone if filtered list is empty, we # remove that zone. LOG.debug(_("Zone delete - I mode: " "filtered targets:%s"), filtered_members) if filtered_members: filtered_members.append(formatted_initiator) LOG.debug(_("Filtered zone members to " "update: %s"), filtered_members) zone_map[zone_name] = filtered_members LOG.debug(_("Filtered zone Map to " "update: %s"), zone_map) else: zones_to_delete.append(zone_name) else: LOG.info(_("Zoning Policy: %s, not " "recognized"), zoning_policy) LOG.debug(_("Final Zone map to update: %s"), zone_map) LOG.debug(_("Final Zone list to delete: %s"), zones_to_delete) try: # Update zone membership. if zone_map: conn.add_zones( zone_map, self.configuration.zone_activate, cfgmap_from_fabric) # Delete zones ~sk. if zones_to_delete: zone_name_string = '' num_zones = len(zones_to_delete) for i in range(0, num_zones): if i == 0: zone_name_string = ( '%s%s' % ( zone_name_string, zones_to_delete[i])) else: zone_name_string = '%s%s%s' % ( zone_name_string, ';', zones_to_delete[i]) conn.delete_zones( zone_name_string, self.configuration.zone_activate, cfgmap_from_fabric) conn.cleanup() except Exception as e: LOG.error(e) msg = _("Failed to update or delete zoning configuration") raise exception.FCZoneDriverException(msg) def get_san_context(self, target_wwn_list): """Lookup SAN context for visible end devices. Look up each SAN configured and return a map of SAN (fabric IP) to list of target WWNs visible to the fabric. """ # TODO(Santhosh Kolathur): consider refactoring to use lookup service. formatted_target_list = [] fabric_map = {} fabrics = self.configuration.fc_fabric_names.split(',') LOG.debug(_("Fabric List: %s"), fabrics) LOG.debug(_("Target wwn List: %s"), target_wwn_list) if len(fabrics) > 0: for t in target_wwn_list: formatted_target_list.append(self.get_formatted_wwn(t.lower())) LOG.debug(_("Formatted Target wwn List:" " %s"), formatted_target_list) for fabric_name in fabrics: conn = self._get_cli_client(fabric_name) # Get name server data from fabric and get the targets # logged in. nsinfo = None try: nsinfo = conn.get_nameserver_info() LOG.debug(_("name server info from fabric:%s"), nsinfo) conn.cleanup() except exception.BrocadeZoningCliException as ex: if not conn.is_supported_firmware(): msg = _("Unsupported firmware on switch %s. Make sure " "switch is running firmware v6.4 or higher" ) % conn.switch_ip LOG.error(msg) raise exception.FCZoneDriverException(msg) with excutils.save_and_reraise_exception(): LOG.error(_("Error getting name server " "info: %s"), ex) except Exception as e: msg = (_("Failed to get name server info:%s") % e) LOG.error(msg) raise exception.FCZoneDriverException(msg) visible_targets = filter( lambda x: x in formatted_target_list, nsinfo) if visible_targets: LOG.info(_("Filtered targets for SAN is: %s"), {fabric_name: visible_targets}) # getting rid of the ':' before returning for idx, elem in enumerate(visible_targets): visible_targets[idx] = str( visible_targets[idx]).replace(':', '') fabric_map[fabric_name] = visible_targets else: LOG.debug(_("No targets are in the nameserver for SAN %s"), fabric_name) LOG.debug(_("Return SAN context output:%s"), fabric_map) return fabric_map def _get_active_zone_set(self, conn): cfgmap = None try: cfgmap = conn.get_active_zone_set() except exception.BrocadeZoningCliException: if not conn.is_supported_firmware(): msg = _("Unsupported firmware on switch %s. Make sure " "switch is running firmware v6.4 or higher" ) % conn.switch_ip LOG.error(msg) raise exception.FCZoneDriverException(msg) except Exception as e: LOG.error(e) msg = _("Failed to retrieve active zoning configuration %s") % e raise exception.FCZoneDriverException(msg) LOG.debug(_("Active zone set from fabric: %s"), cfgmap) return cfgmap def _get_cli_client(self, fabric): fabric_ip = self.fabric_configs[fabric].safe_get('fc_fabric_address') fabric_user = self.fabric_configs[fabric].safe_get('fc_fabric_user') fabric_pwd = self.fabric_configs[fabric].safe_get('fc_fabric_password') fabric_port = self.fabric_configs[fabric].safe_get('fc_fabric_port') cli_client = None try: cli_client = self.sb_conn_map.get(fabric_ip) if not cli_client: LOG.debug("CLI client not found, creating for %s", fabric_ip) cli_client = importutils.import_object( self.configuration.brcd_sb_connector, ipaddress=fabric_ip, username=fabric_user, password=fabric_pwd, port=fabric_port) self.sb_conn_map[fabric_ip] = cli_client except Exception as e: LOG.error(e) msg = _("Failed to create sb connector for %s") % fabric_ip raise exception.FCZoneDriverException(msg) return cli_client cinder-2014.1.5/cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py0000664000567000056700000002460712540642606031123 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # import paramiko from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import utils from cinder.zonemanager.drivers.brocade import brcd_fabric_opts as fabric_opts import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant from cinder.zonemanager.fc_san_lookup_service import FCSanLookupService LOG = logging.getLogger(__name__) class BrcdFCSanLookupService(FCSanLookupService): """The SAN lookup service that talks to Brocade switches. Version History: 1.0.0 - Initial version """ VERSION = "1.0.0" def __init__(self, **kwargs): """Initializing the client.""" super(BrcdFCSanLookupService, self).__init__(**kwargs) self.configuration = kwargs.get('configuration', None) self.create_configuration() self.client = paramiko.SSHClient() self.client.load_system_host_keys() self.client.set_missing_host_key_policy(paramiko.WarningPolicy()) def create_configuration(self): """Configuration specific to SAN context values.""" config = self.configuration fabric_names = config.fc_fabric_names.split(',') LOG.debug(_('Fabric Names: %s'), fabric_names) # There can be more than one SAN in the network and we need to # get credentials for each for SAN context lookup later. if len(fabric_names) > 0: self.fabric_configs = fabric_opts.load_fabric_configurations( fabric_names) def get_device_mapping_from_network(self, initiator_wwn_list, target_wwn_list): """Provides the initiator/target map for available SAN contexts. Looks up nameserver of each fc SAN configured to find logged in devices and returns a map of initiator and target port WWNs for each fabric. :param initiator_wwn_list: List of initiator port WWN :param target_wwn_list: List of target port WWN :returns List -- device wwn map in following format { : { 'initiator_port_wwn_list': ('200000051e55a100', '200000051e55a121'..) 'target_port_wwn_list': ('100000051e55a100', '100000051e55a121'..) } } :raises Exception when connection to fabric is failed """ device_map = {} formatted_target_list = [] formatted_initiator_list = [] fabric_map = {} fabric_names = self.configuration.fc_fabric_names fabrics = None if not fabric_names: raise exception.InvalidParameterValue( err=_("Missing Fibre Channel SAN configuration " "param - fc_fabric_names")) fabrics = fabric_names.split(',') LOG.debug(_("FC Fabric List: %s"), fabrics) if fabrics: for t in target_wwn_list: formatted_target_list.append(self.get_formatted_wwn(t)) for i in initiator_wwn_list: formatted_initiator_list.append(self. get_formatted_wwn(i)) for fabric_name in fabrics: fabric_ip = self.fabric_configs[fabric_name].safe_get( 'fc_fabric_address') fabric_user = self.fabric_configs[fabric_name].safe_get( 'fc_fabric_user') fabric_pwd = self.fabric_configs[fabric_name].safe_get( 'fc_fabric_password') fabric_port = self.fabric_configs[fabric_name].safe_get( 'fc_fabric_port') fabric_principal_wwn = \ self.fabric_configs[fabric_name].safe_get( 'principal_switch_wwn') # Get name server data from fabric and find the targets # logged in nsinfo = '' try: LOG.debug(_("Getting name server data for " "fabric %s"), fabric_ip) self.client.connect( fabric_ip, fabric_port, fabric_user, fabric_pwd) nsinfo = self.get_nameserver_info() except exception.FCSanLookupServiceException: with excutils.save_and_reraise_exception(): LOG.error(_("Failed collecting name server info from " "fabric %s") % fabric_ip) except Exception as e: msg = _("SSH connection failed " "for %(fabric)s with error: %(err)s" ) % {'fabric': fabric_ip, 'err': e} LOG.error(msg) raise exception.FCSanLookupServiceException(message=msg) finally: self.close_connection() LOG.debug(_("Lookup service:nsinfo-%s"), nsinfo) LOG.debug(_("Lookup service:initiator list from " "caller-%s"), formatted_initiator_list) LOG.debug(_("Lookup service:target list from " "caller-%s"), formatted_target_list) visible_targets = filter(lambda x: x in formatted_target_list, nsinfo) visible_initiators = filter(lambda x: x in formatted_initiator_list, nsinfo) if visible_targets: LOG.debug(_("Filtered targets is: %s"), visible_targets) # getting rid of the : before returning for idx, elem in enumerate(visible_targets): elem = str(elem).replace(':', '') visible_targets[idx] = elem else: LOG.debug(_("No targets are in the nameserver for SAN %s"), fabric_name) if visible_initiators: # getting rid of the : before returning ~sk for idx, elem in enumerate(visible_initiators): elem = str(elem).replace(':', '') visible_initiators[idx] = elem else: LOG.debug(_("No initiators are in the nameserver " "for SAN %s"), fabric_name) fabric_map = { 'initiator_port_wwn_list': visible_initiators, 'target_port_wwn_list': visible_targets } device_map[fabric_principal_wwn] = fabric_map LOG.debug(_("Device map for SAN context: %s"), device_map) return device_map def get_nameserver_info(self): """Get name server data from fabric. This method will return the connected node port wwn list(local and remote) for the given switch fabric """ cli_output = None nsinfo_list = [] try: cli_output = self._get_switch_data(ZoneConstant.NS_SHOW) except exception.FCSanLookupServiceException: with excutils.save_and_reraise_exception(): LOG.error(_("Failed collecting nsshow info for fabric")) if cli_output: nsinfo_list = self._parse_ns_output(cli_output) try: cli_output = self._get_switch_data(ZoneConstant.NS_CAM_SHOW) except exception.FCSanLookupServiceException: with excutils.save_and_reraise_exception(): LOG.error(_("Failed collecting nscamshow")) if cli_output: nsinfo_list.extend(self._parse_ns_output(cli_output)) LOG.debug(_("Connector returning nsinfo-%s"), nsinfo_list) return nsinfo_list def close_connection(self): """This will close the client connection.""" self.client.close() self.client = None def _get_switch_data(self, cmd): stdin, stdout, stderr = None, None, None utils.check_ssh_injection([cmd]) try: stdin, stdout, stderr = self.client.exec_command(cmd) switch_data = stdout.readlines() except paramiko.SSHException as e: msg = (_("SSH Command failed with error '%(err)s' " "'%(command)s'") % {'err': e, 'command': cmd}) LOG.error(msg) raise exception.FCSanLookupServiceException(message=msg) finally: if (stdin): stdin.flush() stdin.close() if (stdout): stdout.close() if (stderr): stderr.close() return switch_data def _parse_ns_output(self, switch_data): """Parses name server data. Parses nameserver raw data and adds the device port wwns to the list :returns list of device port wwn from ns info """ nsinfo_list = [] for line in switch_data: if not(" NL " in line or " N " in line): continue linesplit = line.split(';') if len(linesplit) > 2: node_port_wwn = linesplit[2] nsinfo_list.append(node_port_wwn) else: msg = _("Malformed nameserver string: %s") % line LOG.error(msg) raise exception.InvalidParameterValue(err=msg) return nsinfo_list def get_formatted_wwn(self, wwn_str): """Utility API that formats WWN to insert ':'.""" if (len(wwn_str) != 16): return wwn_str.lower() else: return (':'.join([wwn_str[i:i + 2] for i in range(0, len(wwn_str), 2)])).lower() cinder-2014.1.5/cinder/zonemanager/drivers/fc_zone_driver.py0000664000567000056700000000652512540642606025165 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ Base Zone Driver is responsible to manage access control using FC zoning Vendor specific implementations should extend this class to provide concrete implementation for add_connection and delete_connection interfaces. **Related Flags** :zoning_policy: Used by: class: 'FCZoneDriver'. Defaults to 'none' :zone_driver: Used by: class: 'FCZoneDriver'. Defaults to 'none' """ from cinder.openstack.common import log as logging from cinder.zonemanager import fc_common LOG = logging.getLogger(__name__) class FCZoneDriver(fc_common.FCCommon): """Interface to manage Connection control during attach/detach.""" def __init__(self, **kwargs): super(FCZoneDriver, self).__init__(**kwargs) LOG.debug(_("Initializing FCZoneDriver")) def add_connection(self, fabric, initiator_target_map): """Add connection control. Abstract method to add connection control. All implementing drivers should provide concrete implementation for this API. :param fabric: Fabric name from cinder.conf file :param initiator_target_map: Mapping of initiator to list of targets Example initiator_target_map: { '10008c7cff523b01': ['20240002ac000a50', '20240002ac000a40'] } Note that WWPN can be in lower or upper case and can be ':' separated strings """ raise NotImplementedError() def delete_connection(self, fabric, initiator_target_map): """Delete connection control. Abstract method to remove connection control. All implementing drivers should provide concrete implementation for this API. :param fabric: Fabric name from cinder.conf file :param initiator_target_map: Mapping of initiator to list of targets Example initiator_target_map: { '10008c7cff523b01': ['20240002ac000a50', '20240002ac000a40'] } Note that WWPN can be in lower or upper case and can be ':' separated strings """ raise NotImplementedError() def get_san_context(self, target_wwn_list): """Get SAN context for end devices. Abstract method to get SAN contexts for given list of end devices All implementing drivers should provide concrete implementation for this API. :param fabric: Fabric name from cinder.conf file :param initiator_target_map: Mapping of initiator to list of targets Example initiator_target_map: ['20240002ac000a50', '20240002ac000a40'] Note that WWPN can be in lower or upper case and can be ':' separated strings """ raise NotImplementedError() cinder-2014.1.5/cinder/zonemanager/drivers/__init__.py0000664000567000056700000000165412540642603023721 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """ :mod:`cinder.zonemanager.driver` -- FC Zone Drivers ===================================================== .. automodule:: cinder.zonemanager.driver :platform: Unix :synopsis: Module containing all the FC Zone drivers. """ cinder-2014.1.5/cinder/common/0000775000567000056700000000000012540643114017104 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/common/config.py0000664000567000056700000002033712540642606020735 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2012 Red Hat, Inc. # Copyright 2013 NTT 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. """Command-line flag library. Emulates gflags by wrapping cfg.ConfigOpts. The idea is to move fully to cfg eventually, and this wrapper is a stepping stone. """ import socket from oslo.config import cfg from cinder.openstack.common.gettextutils import _ CONF = cfg.CONF def _get_my_ip(): """ Returns the actual ip of the local machine. This code figures out what source address would be used if some traffic were to be sent out to some well known address on the Internet. In this case, a Google DNS server is used, but the specific address does not matter much. No traffic is actually sent. """ try: csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) csock.connect(('8.8.8.8', 80)) (addr, port) = csock.getsockname() csock.close() return addr except socket.error: return "127.0.0.1" core_opts = [ cfg.StrOpt('api_paste_config', default="api-paste.ini", help='File name for the paste.deploy config for cinder-api'), cfg.StrOpt('state_path', default='/var/lib/cinder', deprecated_name='pybasedir', help="Top-level directory for maintaining cinder's state"), ] debug_opts = [ ] CONF.register_cli_opts(core_opts) CONF.register_cli_opts(debug_opts) global_opts = [ cfg.StrOpt('my_ip', default=_get_my_ip(), help='ip address of this host'), cfg.StrOpt('glance_host', default='$my_ip', help='default glance hostname or ip'), cfg.IntOpt('glance_port', default=9292, help='default glance port'), cfg.ListOpt('glance_api_servers', default=['$glance_host:$glance_port'], help='A list of the glance api servers available to cinder ' '([hostname|ip]:port)'), cfg.IntOpt('glance_api_version', default=1, help='Version of the glance api to use'), cfg.IntOpt('glance_num_retries', default=0, help='Number retries when downloading an image from glance'), cfg.BoolOpt('glance_api_insecure', default=False, help='Allow to perform insecure SSL (https) requests to ' 'glance'), cfg.BoolOpt('glance_api_ssl_compression', default=False, help='Whether to attempt to negotiate SSL layer compression ' 'when using SSL (https) requests. Set to False to ' 'disable SSL layer compression. In some cases disabling ' 'this may improve data throughput, eg when high network ' 'bandwidth is available and you are using already ' 'compressed image formats such as qcow2 .'), cfg.IntOpt('glance_request_timeout', default=None, help='http/https timeout value for glance operations. If no ' 'value (None) is supplied here, the glanceclient default ' 'value is used.'), cfg.StrOpt('scheduler_topic', default='cinder-scheduler', help='the topic scheduler nodes listen on'), cfg.StrOpt('volume_topic', default='cinder-volume', help='the topic volume nodes listen on'), cfg.StrOpt('backup_topic', default='cinder-backup', help='the topic volume backup nodes listen on'), cfg.BoolOpt('enable_v1_api', default=True, help=_("Deploy v1 of the Cinder API.")), cfg.BoolOpt('enable_v2_api', default=True, help=_("Deploy v2 of the Cinder API.")), cfg.BoolOpt('api_rate_limit', default=True, help='whether to rate limit the api'), cfg.ListOpt('osapi_volume_ext_list', default=[], help='Specify list of extensions to load when using osapi_' 'volume_extension option with cinder.api.contrib.' 'select_extensions'), cfg.MultiStrOpt('osapi_volume_extension', default=['cinder.api.contrib.standard_extensions'], help='osapi volume extension to load'), cfg.StrOpt('volume_manager', default='cinder.volume.manager.VolumeManager', help='full class name for the Manager for volume'), cfg.StrOpt('backup_manager', default='cinder.backup.manager.BackupManager', help='full class name for the Manager for volume backup'), cfg.StrOpt('scheduler_manager', default='cinder.scheduler.manager.SchedulerManager', help='full class name for the Manager for scheduler'), cfg.StrOpt('host', default=socket.gethostname(), help='Name of this node. This can be an opaque identifier. ' 'It is not necessarily a hostname, FQDN, or IP address.'), # NOTE(vish): default to nova for compatibility with nova installs cfg.StrOpt('storage_availability_zone', default='nova', help='availability zone of this node'), cfg.StrOpt('default_availability_zone', default=None, help='default availability zone to use when creating a new volume. ' 'If this is not set then we use the value from the ' 'storage_availability_zone option as the default ' 'availability_zone for new volumes.'), cfg.StrOpt('default_volume_type', default=None, help='default volume type to use'), cfg.StrOpt('volume_usage_audit_period', default='month', help='time period to generate volume usages for. ' 'Time period must be hour, day, month or year'), cfg.StrOpt('rootwrap_config', default='/etc/cinder/rootwrap.conf', help='Path to the rootwrap configuration file to use for ' 'running commands as root'), cfg.BoolOpt('monkey_patch', default=False, help='Enable monkey patching'), cfg.ListOpt('monkey_patch_modules', default=[], help='List of modules/decorators to monkey patch'), cfg.IntOpt('service_down_time', default=60, help='maximum time since last check-in for up service'), cfg.StrOpt('volume_api_class', default='cinder.volume.api.API', help='The full class name of the volume API class to use'), cfg.StrOpt('backup_api_class', default='cinder.backup.api.API', help='The full class name of the volume backup API class'), cfg.StrOpt('auth_strategy', default='noauth', help='The strategy to use for auth. Supports noauth, keystone, ' 'and deprecated.'), cfg.ListOpt('enabled_backends', default=None, help='A list of backend names to use. These backend names ' 'should be backed by a unique [CONFIG] group ' 'with its options'), cfg.BoolOpt('no_snapshot_gb_quota', default=False, help='Whether snapshots count against GigaByte quota'), cfg.StrOpt('transfer_api_class', default='cinder.transfer.api.API', help='The full class name of the volume transfer API class'), ] CONF.register_opts(global_opts) cinder-2014.1.5/cinder/common/__init__.py0000664000567000056700000000000012540642603021205 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/common/sqlalchemyutils.py0000664000567000056700000001133412540642606022710 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010-2011 OpenStack Foundation # Copyright 2012 Justin Santa Barbara # All Rights Reserved. # # 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. """Implementation of paginate query.""" import sqlalchemy from cinder import exception from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) # copied from glance/db/sqlalchemy/api.py def paginate_query(query, model, limit, sort_keys, marker=None, sort_dir=None, sort_dirs=None): """Returns a query with sorting / pagination criteria added. Pagination works by requiring a unique sort_key, specified by sort_keys. (If sort_keys is not unique, then we risk looping through values.) We use the last row in the previous page as the 'marker' for pagination. So we must return values that follow the passed marker in the order. With a single-valued sort_key, this would be easy: sort_key > X. With a compound-values sort_key, (k1, k2, k3) we must do this to repeat the lexicographical ordering: (k1 > X1) or (k1 == X1 && k2 > X2) or (k1 == X1 && k2 == X2 && k3 > X3) We also have to cope with different sort_directions. Typically, the id of the last row is used as the client-facing pagination marker, then the actual marker object must be fetched from the db and passed in to us as marker. :param query: the query object to which we should add paging/sorting :param model: the ORM model class :param limit: maximum number of items to return :param sort_keys: array of attributes by which results should be sorted :param marker: the last item of the previous page; we returns the next results after this value. :param sort_dir: direction in which results should be sorted (asc, desc) :param sort_dirs: per-column array of sort_dirs, corresponding to sort_keys :rtype: sqlalchemy.orm.query.Query :return: The query with sorting/pagination added. """ if 'id' not in sort_keys: # TODO(justinsb): If this ever gives a false-positive, check # the actual primary key, rather than assuming its id LOG.warn(_('Id not in sort_keys; is sort_keys unique?')) assert(not (sort_dir and sort_dirs)) # Default the sort direction to ascending if sort_dirs is None and sort_dir is None: sort_dir = 'asc' # Ensure a per-column sort direction if sort_dirs is None: sort_dirs = [sort_dir for _sort_key in sort_keys] assert(len(sort_dirs) == len(sort_keys)) # Add sorting for current_sort_key, current_sort_dir in zip(sort_keys, sort_dirs): sort_dir_func = { 'asc': sqlalchemy.asc, 'desc': sqlalchemy.desc, }[current_sort_dir] try: sort_key_attr = getattr(model, current_sort_key) except AttributeError: raise exception.InvalidInput(reason='Invalid sort key') query = query.order_by(sort_dir_func(sort_key_attr)) # Add pagination if marker is not None: marker_values = [] for sort_key in sort_keys: v = getattr(marker, sort_key) marker_values.append(v) # Build up an array of sort criteria as in the docstring criteria_list = [] for i in xrange(0, len(sort_keys)): crit_attrs = [] for j in xrange(0, i): model_attr = getattr(model, sort_keys[j]) crit_attrs.append((model_attr == marker_values[j])) model_attr = getattr(model, sort_keys[i]) if sort_dirs[i] == 'desc': crit_attrs.append((model_attr < marker_values[i])) elif sort_dirs[i] == 'asc': crit_attrs.append((model_attr > marker_values[i])) else: raise ValueError(_("Unknown sort direction, " "must be 'desc' or 'asc'")) criteria = sqlalchemy.sql.and_(*crit_attrs) criteria_list.append(criteria) f = sqlalchemy.sql.or_(*criteria_list) query = query.filter(f) if limit is not None: query = query.limit(limit) return query cinder-2014.1.5/cinder/flow_utils.py0000664000567000056700000000256012540642606020365 0ustar jenkinsjenkins00000000000000# 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. # For more information please visit: https://wiki.openstack.org/wiki/TaskFlow from taskflow import task def _make_task_name(cls, addons=None): """Makes a pretty name for a task class.""" base_name = ".".join([cls.__module__, cls.__name__]) extra = '' if addons: extra = ';%s' % (", ".join([str(a) for a in addons])) return base_name + extra class CinderTask(task.Task): """The root task class for all cinder tasks. It automatically names the given task using the module and class that implement the given task as the task name. """ def __init__(self, addons=None, **kwargs): super(CinderTask, self).__init__(_make_task_name(self.__class__, addons), **kwargs) cinder-2014.1.5/cinder/image/0000775000567000056700000000000012540643114016676 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/image/image_utils.py0000664000567000056700000003441612540642606021567 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright (c) 2010 Citrix Systems, Inc. # # 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. """ Helper methods to deal with images. This is essentially a copy from nova.virt.images.py Some slight modifications, but at some point we should look at maybe pushing this up to Oslo """ import contextlib import os import tempfile from oslo.config import cfg from cinder import exception from cinder.openstack.common import fileutils from cinder.openstack.common import imageutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder import utils from cinder.volume import utils as volume_utils LOG = logging.getLogger(__name__) image_helper_opt = [cfg.StrOpt('image_conversion_dir', default='$state_path/conversion', help='Directory used for temporary storage ' 'during image conversion'), ] CONF = cfg.CONF CONF.register_opts(image_helper_opt) def qemu_img_info(path): """Return a object containing the parsed output from qemu-img info.""" cmd = ('env', 'LC_ALL=C', 'qemu-img', 'info', path) if os.name == 'nt': cmd = cmd[2:] out, err = utils.execute(*cmd, run_as_root=True) return imageutils.QemuImgInfo(out) def convert_image(source, dest, out_format): """Convert image to other format.""" cmd = ('qemu-img', 'convert', '-O', out_format, source, dest) utils.execute(*cmd, run_as_root=True) def resize_image(source, size, run_as_root=False): """Changes the virtual size of the image.""" cmd = ('qemu-img', 'resize', source, '%sG' % size) utils.execute(*cmd, run_as_root=run_as_root) def fetch(context, image_service, image_id, path, _user_id, _project_id): # TODO(vish): Improve context handling and add owner and auth data # when it is added to glance. Right now there is no # auth checking in glance, so we assume that access was # checked before we got here. with fileutils.remove_path_on_error(path): with open(path, "wb") as image_file: image_service.download(context, image_id, image_file) def fetch_verify_image(context, image_service, image_id, dest, user_id=None, project_id=None, size=None): fetch(context, image_service, image_id, dest, None, None) with fileutils.remove_path_on_error(dest): data = qemu_img_info(dest) fmt = data.file_format if fmt is None: raise exception.ImageUnacceptable( reason=_("'qemu-img info' parsing failed."), image_id=image_id) backing_file = data.backing_file if backing_file is not None: raise exception.ImageUnacceptable( image_id=image_id, reason=(_("fmt=%(fmt)s backed by: %(backing_file)s") % {'fmt': fmt, 'backing_file': backing_file})) # NOTE(xqueralt): If the image virtual size doesn't fit in the # requested volume there is no point on resizing it because it will # generate an unusable image. if size is not None and data.virtual_size > size: params = {'image_size': data.virtual_size, 'volume_size': size} reason = _("Size is %(image_size)dGB and doesn't fit in a " "volume of size %(volume_size)dGB.") % params raise exception.ImageUnacceptable(image_id=image_id, reason=reason) def fetch_to_vhd(context, image_service, image_id, dest, blocksize, user_id=None, project_id=None): fetch_to_volume_format(context, image_service, image_id, dest, 'vpc', blocksize, user_id, project_id) def fetch_to_raw(context, image_service, image_id, dest, blocksize, user_id=None, project_id=None, size=None): fetch_to_volume_format(context, image_service, image_id, dest, 'raw', blocksize, user_id, project_id, size) def fetch_to_volume_format(context, image_service, image_id, dest, volume_format, blocksize, user_id=None, project_id=None, size=None): if (CONF.image_conversion_dir and not os.path.exists(CONF.image_conversion_dir)): os.makedirs(CONF.image_conversion_dir) qemu_img = True image_meta = image_service.show(context, image_id) # NOTE(avishay): I'm not crazy about creating temp files which may be # large and cause disk full errors which would confuse users. # Unfortunately it seems that you can't pipe to 'qemu-img convert' because # it seeks. Maybe we can think of something for a future version. with temporary_file() as tmp: # We may be on a system that doesn't have qemu-img installed. That # is ok if we are working with a RAW image. This logic checks to see # if qemu-img is installed. If not we make sure the image is RAW and # throw an exception if not. Otherwise we stop before needing # qemu-img. Systems with qemu-img will always progress through the # whole function. try: # Use the empty tmp file to make sure qemu_img_info works. qemu_img_info(tmp) except processutils.ProcessExecutionError: qemu_img = False if image_meta: if image_meta['disk_format'] != 'raw': raise exception.ImageUnacceptable( reason=_("qemu-img is not installed and image is of " "type %s. Only RAW images can be used if " "qemu-img is not installed.") % image_meta['disk_format'], image_id=image_id) else: raise exception.ImageUnacceptable( reason=_("qemu-img is not installed and the disk " "format is not specified. Only RAW images " "can be used if qemu-img is not installed."), image_id=image_id) fetch(context, image_service, image_id, tmp, user_id, project_id) if is_xenserver_image(context, image_service, image_id): replace_xenserver_image_with_coalesced_vhd(tmp) if not qemu_img: # qemu-img is not installed but we do have a RAW image. As a # result we only need to copy the image to the destination and then # return. LOG.debug(_('Copying image from %(tmp)s to volume %(dest)s - ' 'size: %(size)s') % {'tmp': tmp, 'dest': dest, 'size': image_meta['size']}) volume_utils.copy_volume(tmp, dest, image_meta['size'], blocksize) return data = qemu_img_info(tmp) virt_size = data.virtual_size / units.GiB # NOTE(xqueralt): If the image virtual size doesn't fit in the # requested volume there is no point on resizing it because it will # generate an unusable image. if size is not None and virt_size > size: params = {'image_size': virt_size, 'volume_size': size} reason = _("Size is %(image_size)dGB and doesn't fit in a " "volume of size %(volume_size)dGB.") % params raise exception.ImageUnacceptable(image_id=image_id, reason=reason) fmt = data.file_format if fmt is None: raise exception.ImageUnacceptable( reason=_("'qemu-img info' parsing failed."), image_id=image_id) backing_file = data.backing_file if backing_file is not None: raise exception.ImageUnacceptable( image_id=image_id, reason=_("fmt=%(fmt)s backed by:%(backing_file)s") % {'fmt': fmt, 'backing_file': backing_file, }) # NOTE(jdg): I'm using qemu-img convert to write # to the volume regardless if it *needs* conversion or not # TODO(avishay): We can speed this up by checking if the image is raw # and if so, writing directly to the device. However, we need to keep # check via 'qemu-img info' that what we copied was in fact a raw # image and not a different format with a backing file, which may be # malicious. LOG.debug("%s was %s, converting to %s " % (image_id, fmt, volume_format)) convert_image(tmp, dest, volume_format) data = qemu_img_info(dest) if data.file_format != volume_format: raise exception.ImageUnacceptable( image_id=image_id, reason=_("Converted to %(vol_format)s, but format is " "now %(file_format)s") % {'vol_format': volume_format, 'file_format': data. file_format}) def upload_volume(context, image_service, image_meta, volume_path, volume_format='raw'): image_id = image_meta['id'] if (image_meta['disk_format'] == volume_format): LOG.debug("%s was %s, no need to convert to %s" % (image_id, volume_format, image_meta['disk_format'])) if os.name == 'nt' or os.access(volume_path, os.R_OK): with fileutils.file_open(volume_path) as image_file: image_service.update(context, image_id, {}, image_file) else: with utils.temporary_chown(volume_path): with fileutils.file_open(volume_path) as image_file: image_service.update(context, image_id, {}, image_file) return if (CONF.image_conversion_dir and not os.path.exists(CONF.image_conversion_dir)): os.makedirs(CONF.image_conversion_dir) fd, tmp = tempfile.mkstemp(dir=CONF.image_conversion_dir) os.close(fd) with fileutils.remove_path_on_error(tmp): LOG.debug("%s was %s, converting to %s" % (image_id, volume_format, image_meta['disk_format'])) data = qemu_img_info(volume_path) backing_file = data.backing_file fmt = data.file_format if backing_file is not None: # Disallow backing files as a security measure. # This prevents a user from writing an image header into a raw # volume with a backing file pointing to data they wish to # access. raise exception.ImageUnacceptable( image_id=image_id, reason=_("fmt=%(fmt)s backed by:%(backing_file)s") % {'fmt': fmt, 'backing_file': backing_file}) convert_image(volume_path, tmp, image_meta['disk_format']) data = qemu_img_info(tmp) if data.file_format != image_meta['disk_format']: raise exception.ImageUnacceptable( image_id=image_id, reason=_("Converted to %(f1)s, but format is now %(f2)s") % {'f1': image_meta['disk_format'], 'f2': data.file_format}) with fileutils.file_open(tmp) as image_file: image_service.update(context, image_id, {}, image_file) fileutils.delete_if_exists(tmp) def is_xenserver_image(context, image_service, image_id): image_meta = image_service.show(context, image_id) return is_xenserver_format(image_meta) def is_xenserver_format(image_meta): return ( image_meta['disk_format'] == 'vhd' and image_meta['container_format'] == 'ovf' ) def file_exist(fpath): return os.path.exists(fpath) def set_vhd_parent(vhd_path, parentpath): utils.execute('vhd-util', 'modify', '-n', vhd_path, '-p', parentpath) def extract_targz(archive_name, target): utils.execute('tar', '-xzf', archive_name, '-C', target) def fix_vhd_chain(vhd_chain): for child, parent in zip(vhd_chain[:-1], vhd_chain[1:]): set_vhd_parent(child, parent) def get_vhd_size(vhd_path): out, err = utils.execute('vhd-util', 'query', '-n', vhd_path, '-v') return int(out) def resize_vhd(vhd_path, size, journal): utils.execute( 'vhd-util', 'resize', '-n', vhd_path, '-s', '%d' % size, '-j', journal) def coalesce_vhd(vhd_path): utils.execute( 'vhd-util', 'coalesce', '-n', vhd_path) def create_temporary_file(): fd, tmp = tempfile.mkstemp(dir=CONF.image_conversion_dir) os.close(fd) return tmp def rename_file(src, dst): os.rename(src, dst) @contextlib.contextmanager def temporary_file(): try: tmp = create_temporary_file() yield tmp finally: fileutils.delete_if_exists(tmp) def temporary_dir(): return utils.tempdir(dir=CONF.image_conversion_dir) def coalesce_chain(vhd_chain): for child, parent in zip(vhd_chain[:-1], vhd_chain[1:]): with temporary_dir() as directory_for_journal: size = get_vhd_size(child) journal_file = os.path.join( directory_for_journal, 'vhd-util-resize-journal') resize_vhd(parent, size, journal_file) coalesce_vhd(child) return vhd_chain[-1] def discover_vhd_chain(directory): counter = 0 chain = [] while True: fpath = os.path.join(directory, '%d.vhd' % counter) if file_exist(fpath): chain.append(fpath) else: break counter += 1 return chain def replace_xenserver_image_with_coalesced_vhd(image_file): with temporary_dir() as tempdir: extract_targz(image_file, tempdir) chain = discover_vhd_chain(tempdir) fix_vhd_chain(chain) coalesced = coalesce_chain(chain) fileutils.delete_if_exists(image_file) rename_file(coalesced, image_file) cinder-2014.1.5/cinder/image/__init__.py0000664000567000056700000000000012540642603020777 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/image/glance.py0000664000567000056700000004507112540642606020515 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # Copyright 2013 NTT corp. # All Rights Reserved. # # 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. """Implementation of an image service that uses Glance as the backend""" from __future__ import absolute_import import copy import itertools import random import shutil import sys import time import glanceclient.exc from oslo.config import cfg import six.moves.urllib.parse as urlparse from cinder import exception from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils glance_opts = [ cfg.ListOpt('allowed_direct_url_schemes', default=[], help='A list of url schemes that can be downloaded directly ' 'via the direct_url. Currently supported schemes: ' '[file].'), ] CONF = cfg.CONF CONF.register_opts(glance_opts) CONF.import_opt('glance_api_version', 'cinder.common.config') LOG = logging.getLogger(__name__) def _parse_image_ref(image_href): """Parse an image href into composite parts. :param image_href: href of an image :returns: a tuple of the form (image_id, netloc, use_ssl) :raises ValueError """ url = urlparse.urlparse(image_href) netloc = url.netloc image_id = url.path.split('/')[-1] use_ssl = (url.scheme == 'https') return (image_id, netloc, use_ssl) def _create_glance_client(context, netloc, use_ssl, version=CONF.glance_api_version): """Instantiate a new glanceclient.Client object.""" if version is None: version = CONF.glance_api_version params = {} if use_ssl: scheme = 'https' # https specific params params['insecure'] = CONF.glance_api_insecure params['ssl_compression'] = CONF.glance_api_ssl_compression else: scheme = 'http' if CONF.auth_strategy == 'keystone': params['token'] = context.auth_token if CONF.glance_request_timeout is not None: params['timeout'] = CONF.glance_request_timeout endpoint = '%s://%s' % (scheme, netloc) return glanceclient.Client(str(version), endpoint, **params) def get_api_servers(): """Return Iterable over shuffled api servers. Shuffle a list of CONF.glance_api_servers and return an iterator that will cycle through the list, looping around to the beginning if necessary. """ api_servers = [] for api_server in CONF.glance_api_servers: if '//' not in api_server: api_server = 'http://' + api_server url = urlparse.urlparse(api_server) netloc = url.netloc use_ssl = (url.scheme == 'https') api_servers.append((netloc, use_ssl)) random.shuffle(api_servers) return itertools.cycle(api_servers) class GlanceClientWrapper(object): """Glance client wrapper class that implements retries.""" def __init__(self, context=None, netloc=None, use_ssl=False, version=None): if netloc is not None: self.client = self._create_static_client(context, netloc, use_ssl, version) else: self.client = None self.api_servers = None self.version = version def _create_static_client(self, context, netloc, use_ssl, version): """Create a client that we'll use for every call.""" self.netloc = netloc self.use_ssl = use_ssl self.version = version return _create_glance_client(context, self.netloc, self.use_ssl, self.version) def _create_onetime_client(self, context, version): """Create a client that will be used for one call.""" if self.api_servers is None: self.api_servers = get_api_servers() self.netloc, self.use_ssl = self.api_servers.next() return _create_glance_client(context, self.netloc, self.use_ssl, version) def call(self, context, method, *args, **kwargs): """Call a glance client method. If we get a connection error, retry the request according to CONF.glance_num_retries. """ version = self.version if version in kwargs: version = kwargs['version'] retry_excs = (glanceclient.exc.ServiceUnavailable, glanceclient.exc.InvalidEndpoint, glanceclient.exc.CommunicationError) num_attempts = 1 + CONF.glance_num_retries for attempt in xrange(1, num_attempts + 1): client = self.client or self._create_onetime_client(context, version) try: return getattr(client.images, method)(*args, **kwargs) except retry_excs as e: netloc = self.netloc extra = "retrying" error_msg = _("Error contacting glance server " "'%(netloc)s' for '%(method)s', " "%(extra)s.") % {'netloc': netloc, 'method': method, 'extra': extra, } if attempt == num_attempts: extra = 'done trying' error_msg = _("Error contacting glance server " "'%(netloc)s' for '%(method)s', " "%(extra)s.") % {'netloc': netloc, 'method': method, 'extra': extra, } LOG.exception(error_msg) raise exception.GlanceConnectionFailed(reason=e) LOG.exception(error_msg) time.sleep(1) class GlanceImageService(object): """Provides storage and retrieval of disk image objects within Glance.""" def __init__(self, client=None): self._client = client or GlanceClientWrapper() def detail(self, context, **kwargs): """Calls out to Glance for a list of detailed image information.""" params = self._extract_query_params(kwargs) try: images = self._client.call(context, 'list', **params) except Exception: _reraise_translated_exception() _images = [] for image in images: if self._is_image_available(context, image): _images.append(self._translate_from_glance(image)) return _images def _extract_query_params(self, params): _params = {} accepted_params = ('filters', 'marker', 'limit', 'sort_key', 'sort_dir') for param in accepted_params: if param in params: _params[param] = params.get(param) # ensure filters is a dict _params.setdefault('filters', {}) # NOTE(vish): don't filter out private images _params['filters'].setdefault('is_public', 'none') return _params def show(self, context, image_id): """Returns a dict with image data for the given opaque image id.""" try: image = self._client.call(context, 'get', image_id) except Exception: _reraise_translated_image_exception(image_id) if not self._is_image_available(context, image): raise exception.ImageNotFound(image_id=image_id) base_image_meta = self._translate_from_glance(image) return base_image_meta def get_location(self, context, image_id): """Returns the direct url representing the backend storage location, or None if this attribute is not shown by Glance. """ if CONF.glance_api_version == 1: # image location not available in v1 return (None, None) try: # direct_url is returned by v2 api client = GlanceClientWrapper(version=2) image_meta = client.call(context, 'get', image_id) except Exception: _reraise_translated_image_exception(image_id) if not self._is_image_available(context, image_meta): raise exception.ImageNotFound(image_id=image_id) # some glance stores like nfs only meta data # is stored and returned as locations. # so composite of two needs to be returned. return (getattr(image_meta, 'direct_url', None), getattr(image_meta, 'locations', None)) def download(self, context, image_id, data=None): """Calls out to Glance for data and writes data.""" if 'file' in CONF.allowed_direct_url_schemes: location = self.get_location(context, image_id) o = urlparse.urlparse(location) if o.scheme == "file": with open(o.path, "r") as f: # a system call to cp could have significant performance # advantages, however we do not have the path to files at # this point in the abstraction. shutil.copyfileobj(f, data) return try: image_chunks = self._client.call(context, 'data', image_id) except Exception: _reraise_translated_image_exception(image_id) if not data: return image_chunks else: for chunk in image_chunks: data.write(chunk) def create(self, context, image_meta, data=None): """Store the image data and return the new image object.""" sent_service_image_meta = self._translate_to_glance(image_meta) if data: sent_service_image_meta['data'] = data recv_service_image_meta = self._client.call(context, 'create', **sent_service_image_meta) return self._translate_from_glance(recv_service_image_meta) def update(self, context, image_id, image_meta, data=None, purge_props=True): """Modify the given image with the new data.""" image_meta = self._translate_to_glance(image_meta) #NOTE(dosaboy): see comment in bug 1210467 if CONF.glance_api_version == 1: image_meta['purge_props'] = purge_props #NOTE(bcwaldon): id is not an editable field, but it is likely to be # passed in by calling code. Let's be nice and ignore it. image_meta.pop('id', None) if data: image_meta['data'] = data try: #NOTE(dosaboy): the v2 api separates update from upload if data and CONF.glance_api_version > 1: image_meta = self._client.call(context, 'upload', image_id, image_meta['data']) else: image_meta = self._client.call(context, 'update', image_id, **image_meta) except Exception: _reraise_translated_image_exception(image_id) else: return self._translate_from_glance(image_meta) def delete(self, context, image_id): """Delete the given image. :raises: ImageNotFound if the image does not exist. :raises: NotAuthorized if the user is not an owner. """ try: self._client.call(context, 'delete', image_id) except glanceclient.exc.NotFound: raise exception.ImageNotFound(image_id=image_id) return True @staticmethod def _translate_to_glance(image_meta): image_meta = _convert_to_string(image_meta) image_meta = _remove_read_only(image_meta) return image_meta @staticmethod def _translate_from_glance(image): image_meta = _extract_attributes(image) image_meta = _convert_timestamps_to_datetimes(image_meta) image_meta = _convert_from_string(image_meta) return image_meta @staticmethod def _is_image_available(context, image): """Check image availability. This check is needed in case Nova and Glance are deployed without authentication turned on. """ # The presence of an auth token implies this is an authenticated # request and we need not handle the noauth use-case. if hasattr(context, 'auth_token') and context.auth_token: return True if image.is_public or context.is_admin: return True properties = image.properties if context.project_id and ('owner_id' in properties): return str(properties['owner_id']) == str(context.project_id) if context.project_id and ('project_id' in properties): return str(properties['project_id']) == str(context.project_id) try: user_id = properties['user_id'] except KeyError: return False return str(user_id) == str(context.user_id) def _convert_timestamps_to_datetimes(image_meta): """Returns image with timestamp fields converted to datetime objects.""" for attr in ['created_at', 'updated_at', 'deleted_at']: if image_meta.get(attr): image_meta[attr] = timeutils.parse_isotime(image_meta[attr]) return image_meta # NOTE(bcwaldon): used to store non-string data in glance metadata def _json_loads(properties, attr): prop = properties[attr] if isinstance(prop, basestring): properties[attr] = jsonutils.loads(prop) def _json_dumps(properties, attr): prop = properties[attr] if not isinstance(prop, basestring): properties[attr] = jsonutils.dumps(prop) _CONVERT_PROPS = ('block_device_mapping', 'mappings') def _convert(method, metadata): metadata = copy.deepcopy(metadata) properties = metadata.get('properties') if properties: for attr in _CONVERT_PROPS: if attr in properties: method(properties, attr) return metadata def _convert_from_string(metadata): return _convert(_json_loads, metadata) def _convert_to_string(metadata): return _convert(_json_dumps, metadata) def _extract_attributes(image): #NOTE(hdd): If a key is not found, base.Resource.__getattr__() may perform # a get(), resulting in a useless request back to glance. This list is # therefore sorted, with dependent attributes as the end # 'deleted_at' depends on 'deleted' # 'checksum' depends on 'status' == 'active' IMAGE_ATTRIBUTES = ['size', 'disk_format', 'owner', 'container_format', 'status', 'id', 'name', 'created_at', 'updated_at', 'deleted', 'deleted_at', 'checksum', 'min_disk', 'min_ram', 'is_public'] output = {} for attr in IMAGE_ATTRIBUTES: if attr == 'deleted_at' and not output['deleted']: output[attr] = None elif attr == 'checksum' and output['status'] != 'active': output[attr] = None else: output[attr] = getattr(image, attr, None) output['properties'] = getattr(image, 'properties', {}) return output def _remove_read_only(image_meta): IMAGE_ATTRIBUTES = ['status', 'updated_at', 'created_at', 'deleted_at'] output = copy.deepcopy(image_meta) for attr in IMAGE_ATTRIBUTES: if attr in output: del output[attr] return output def _reraise_translated_image_exception(image_id): """Transform the exception for the image but keep its traceback intact.""" exc_type, exc_value, exc_trace = sys.exc_info() new_exc = _translate_image_exception(image_id, exc_value) raise new_exc, None, exc_trace def _reraise_translated_exception(): """Transform the exception but keep its traceback intact.""" exc_type, exc_value, exc_trace = sys.exc_info() new_exc = _translate_plain_exception(exc_value) raise new_exc, None, exc_trace def _translate_image_exception(image_id, exc_value): if isinstance(exc_value, (glanceclient.exc.Forbidden, glanceclient.exc.Unauthorized)): return exception.ImageNotAuthorized(image_id=image_id) if isinstance(exc_value, glanceclient.exc.NotFound): return exception.ImageNotFound(image_id=image_id) if isinstance(exc_value, glanceclient.exc.BadRequest): return exception.Invalid(exc_value) return exc_value def _translate_plain_exception(exc_value): if isinstance(exc_value, (glanceclient.exc.Forbidden, glanceclient.exc.Unauthorized)): return exception.NotAuthorized(exc_value) if isinstance(exc_value, glanceclient.exc.NotFound): return exception.NotFound(exc_value) if isinstance(exc_value, glanceclient.exc.BadRequest): return exception.Invalid(exc_value) return exc_value def get_remote_image_service(context, image_href): """Create an image_service and parse the id from the given image_href. The image_href param can be an href of the form 'http://example.com:9292/v1/images/b8b2c6f7-7345-4e2f-afa2-eedaba9cbbe3', or just an id such as 'b8b2c6f7-7345-4e2f-afa2-eedaba9cbbe3'. If the image_href is a standalone id, then the default image service is returned. :param image_href: href that describes the location of an image :returns: a tuple of the form (image_service, image_id) """ #NOTE(bcwaldon): If image_href doesn't look like a URI, assume its a # standalone image ID if '/' not in str(image_href): image_service = get_default_image_service() return image_service, image_href try: (image_id, glance_netloc, use_ssl) = _parse_image_ref(image_href) glance_client = GlanceClientWrapper(context=context, netloc=glance_netloc, use_ssl=use_ssl) except ValueError: raise exception.InvalidImageRef(image_href=image_href) image_service = GlanceImageService(client=glance_client) return image_service, image_id def get_default_image_service(): return GlanceImageService() cinder-2014.1.5/cinder/test.py0000664000567000056700000002640412540642606017160 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Base classes for our unit tests. Allows overriding of CONF for use of fakes, and some black magic for inline callbacks. """ import os import shutil import tempfile import uuid import fixtures import logging import mock import mox from oslo.config import cfg from oslo.messaging import conffixture as messaging_conffixture import stubout import testtools from testtools import matchers from cinder.common import config # noqa Need to register global_opts from cinder.db import migration from cinder.openstack.common.db.sqlalchemy import session from cinder.openstack.common import log as oslo_logging from cinder.openstack.common import timeutils from cinder import rpc from cinder import service from cinder.tests import conf_fixture from cinder.tests import fake_notifier test_opts = [ cfg.StrOpt('sqlite_clean_db', default='clean.sqlite', help='File name of clean sqlite db'), ] CONF = cfg.CONF CONF.register_opts(test_opts) LOG = oslo_logging.getLogger(__name__) _DB_CACHE = None class TestingException(Exception): pass class Database(fixtures.Fixture): def __init__(self, db_session, db_migrate, sql_connection, sqlite_db, sqlite_clean_db): self.sql_connection = sql_connection self.sqlite_db = sqlite_db self.sqlite_clean_db = sqlite_clean_db self.engine = db_session.get_engine() self.engine.dispose() conn = self.engine.connect() if sql_connection == "sqlite://": if db_migrate.db_version() > db_migrate.db_initial_version(): return else: testdb = os.path.join(CONF.state_path, sqlite_db) if os.path.exists(testdb): return db_migrate.db_sync() # self.post_migrations() if sql_connection == "sqlite://": conn = self.engine.connect() self._DB = "".join(line for line in conn.connection.iterdump()) self.engine.dispose() else: cleandb = os.path.join(CONF.state_path, sqlite_clean_db) shutil.copyfile(testdb, cleandb) def setUp(self): super(Database, self).setUp() if self.sql_connection == "sqlite://": conn = self.engine.connect() conn.connection.executescript(self._DB) self.addCleanup(self.engine.dispose) else: shutil.copyfile( os.path.join(CONF.state_path, self.sqlite_clean_db), os.path.join(CONF.state_path, self.sqlite_db)) class TestCase(testtools.TestCase): """Test case base class for all unit tests.""" def setUp(self): """Run before each test method to initialize test environment.""" super(TestCase, self).setUp() test_timeout = os.environ.get('OS_TEST_TIMEOUT', 0) try: test_timeout = int(test_timeout) except ValueError: # If timeout value is invalid do not set a timeout. test_timeout = 0 if test_timeout > 0: self.useFixture(fixtures.Timeout(test_timeout, gentle=True)) self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.TempHomeDir()) if (os.environ.get('OS_STDOUT_CAPTURE') == 'True' or os.environ.get('OS_STDOUT_CAPTURE') == '1'): stdout = self.useFixture(fixtures.StringStream('stdout')).stream self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout)) if (os.environ.get('OS_STDERR_CAPTURE') == 'True' or os.environ.get('OS_STDERR_CAPTURE') == '1'): stderr = self.useFixture(fixtures.StringStream('stderr')).stream self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr)) self.log_fixture = self.useFixture(fixtures.FakeLogger( level=logging.DEBUG)) rpc.add_extra_exmods("cinder.tests") self.addCleanup(rpc.clear_extra_exmods) self.addCleanup(rpc.cleanup) fs = '%(levelname)s [%(name)s] %(message)s' self.messaging_conf = messaging_conffixture.ConfFixture(CONF) self.messaging_conf.transport_driver = 'fake' self.messaging_conf.response_timeout = 15 self.useFixture(self.messaging_conf) rpc.init(CONF) conf_fixture.set_defaults(CONF) CONF([], default_config_files=[]) # NOTE(vish): We need a better method for creating fixtures for tests # now that we have some required db setup for the system # to work properly. self.start = timeutils.utcnow() CONF.set_default('connection', 'sqlite://', 'database') CONF.set_default('sqlite_synchronous', False) self.log_fixture = self.useFixture(fixtures.FakeLogger()) global _DB_CACHE if not _DB_CACHE: _DB_CACHE = Database(session, migration, sql_connection=CONF.database.connection, sqlite_db=CONF.sqlite_db, sqlite_clean_db=CONF.sqlite_clean_db) self.useFixture(_DB_CACHE) # emulate some of the mox stuff, we can't use the metaclass # because it screws with our generators self.mox = mox.Mox() self.stubs = stubout.StubOutForTesting() self.addCleanup(CONF.reset) self.addCleanup(self.mox.UnsetStubs) self.addCleanup(self.stubs.UnsetAll) self.addCleanup(self.stubs.SmartUnsetAll) self.addCleanup(self.mox.VerifyAll) self.injected = [] self._services = [] fake_notifier.stub_notifier(self.stubs) CONF.set_override('fatal_exception_format_errors', True) # This will be cleaned up by the NestedTempfile fixture CONF.set_override('lock_path', tempfile.mkdtemp()) def tearDown(self): """Runs after each test method to tear down test environment.""" # Stop any timers for x in self.injected: try: x.stop() except AssertionError: pass # Kill any services for x in self._services: try: x.kill() except Exception: pass # Delete attributes that don't start with _ so they don't pin # memory around unnecessarily for the duration of the test # suite for key in [k for k in self.__dict__.keys() if k[0] != '_']: del self.__dict__[key] super(TestCase, self).tearDown() def flags(self, **kw): """Override CONF variables for a test.""" for k, v in kw.iteritems(): CONF.set_override(k, v) def log_level(self, level): """Set logging level to the specified value.""" log_root = logging.getLogger(None).logger log_root.setLevel(level) def start_service(self, name, host=None, **kwargs): host = host and host or uuid.uuid4().hex kwargs.setdefault('host', host) kwargs.setdefault('binary', 'cinder-%s' % name) svc = service.Service.create(**kwargs) svc.start() self._services.append(svc) return svc def mock_object(self, obj, attr_name, new_attr=None, **kwargs): """Use python mock to mock an object attribute Mocks the specified objects attribute with the given value. Automatically performs 'addCleanup' for the mock. """ if not new_attr: new_attr = mock.Mock() patcher = mock.patch.object(obj, attr_name, new_attr, **kwargs) patcher.start() self.addCleanup(patcher.stop) # Useful assertions def assertDictMatch(self, d1, d2, approx_equal=False, tolerance=0.001): """Assert two dicts are equivalent. This is a 'deep' match in the sense that it handles nested dictionaries appropriately. NOTE: If you don't care (or don't know) a given value, you can specify the string DONTCARE as the value. This will cause that dict-item to be skipped. """ def raise_assertion(msg): d1str = d1 d2str = d2 base_msg = ('Dictionaries do not match. %(msg)s d1: %(d1str)s ' 'd2: %(d2str)s' % {'msg': msg, 'd1str': d1str, 'd2str': d2str}) raise AssertionError(base_msg) d1keys = set(d1.keys()) d2keys = set(d2.keys()) if d1keys != d2keys: d1only = d1keys - d2keys d2only = d2keys - d1keys raise_assertion('Keys in d1 and not d2: %(d1only)s. ' 'Keys in d2 and not d1: %(d2only)s' % {'d1only': d1only, 'd2only': d2only}) for key in d1keys: d1value = d1[key] d2value = d2[key] try: error = abs(float(d1value) - float(d2value)) within_tolerance = error <= tolerance except (ValueError, TypeError): # If both values aren't convertable to float, just ignore # ValueError if arg is a str, TypeError if it's something else # (like None) within_tolerance = False if hasattr(d1value, 'keys') and hasattr(d2value, 'keys'): self.assertDictMatch(d1value, d2value) elif 'DONTCARE' in (d1value, d2value): continue elif approx_equal and within_tolerance: continue elif d1value != d2value: raise_assertion("d1['%(key)s']=%(d1value)s != " "d2['%(key)s']=%(d2value)s" % { 'key': key, 'd1value': d1value, 'd2value': d2value, }) def assertGreater(self, first, second, msg=None): """Python < v2.7 compatibility. Assert 'first' > 'second'.""" try: f = super(TestCase, self).assertGreater except AttributeError: self.assertThat(first, matchers.GreaterThan(second), message=msg or '') else: f(first, second, msg=msg) def assertGreaterEqual(self, first, second, msg=None): """Python < v2.7 compatibility. Assert 'first' >= 'second'.""" try: f = super(TestCase, self).assertGreaterEqual except AttributeError: self.assertThat(first, matchers.Not(matchers.LessThan(second)), message=msg or '') else: f(first, second, msg=msg) cinder-2014.1.5/cinder/openstack/0000775000567000056700000000000012540643114017603 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/0000775000567000056700000000000012540643114021073 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/lockutils.py0000664000567000056700000002373312540642606023473 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. import errno import functools import os import shutil import tempfile import time import weakref from eventlet import semaphore from oslo.config import cfg from cinder.openstack.common import fileutils from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import local from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) util_opts = [ cfg.BoolOpt('disable_process_locking', default=False, help='Whether to disable inter-process locks'), cfg.StrOpt('lock_path', help=('Directory to use for lock files. Default to a ' 'temp directory')) ] CONF = cfg.CONF CONF.register_opts(util_opts) def set_defaults(lock_path): cfg.set_defaults(util_opts, lock_path=lock_path) class _InterProcessLock(object): """Lock implementation which allows multiple locks, working around issues like bugs.debian.org/cgi-bin/bugreport.cgi?bug=632857 and does not require any cleanup. Since the lock is always held on a file descriptor rather than outside of the process, the lock gets dropped automatically if the process crashes, even if __exit__ is not executed. There are no guarantees regarding usage by multiple green threads in a single process here. This lock works only between processes. Exclusive access between local threads should be achieved using the semaphores in the @synchronized decorator. Note these locks are released when the descriptor is closed, so it's not safe to close the file descriptor while another green thread holds the lock. Just opening and closing the lock file can break synchronisation, so lock files must be accessed only using this abstraction. """ def __init__(self, name): self.lockfile = None self.fname = name def __enter__(self): self.lockfile = open(self.fname, 'w') while True: try: # Using non-blocking locks since green threads are not # patched to deal with blocking locking calls. # Also upon reading the MSDN docs for locking(), it seems # to have a laughable 10 attempts "blocking" mechanism. self.trylock() return self except IOError as e: if e.errno in (errno.EACCES, errno.EAGAIN): # external locks synchronise things like iptables # updates - give it some time to prevent busy spinning time.sleep(0.01) else: raise def __exit__(self, exc_type, exc_val, exc_tb): try: self.unlock() self.lockfile.close() except IOError: LOG.exception(_("Could not release the acquired lock `%s`"), self.fname) def trylock(self): raise NotImplementedError() def unlock(self): raise NotImplementedError() class _WindowsLock(_InterProcessLock): def trylock(self): msvcrt.locking(self.lockfile.fileno(), msvcrt.LK_NBLCK, 1) def unlock(self): msvcrt.locking(self.lockfile.fileno(), msvcrt.LK_UNLCK, 1) class _PosixLock(_InterProcessLock): def trylock(self): fcntl.lockf(self.lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB) def unlock(self): fcntl.lockf(self.lockfile, fcntl.LOCK_UN) if os.name == 'nt': import msvcrt InterProcessLock = _WindowsLock else: import fcntl InterProcessLock = _PosixLock _semaphores = weakref.WeakValueDictionary() def synchronized(name, lock_file_prefix, external=False, lock_path=None): """Synchronization decorator. Decorating a method like so:: @synchronized('mylock') def foo(self, *args): ... ensures that only one thread will execute the foo method at a time. Different methods can share the same lock:: @synchronized('mylock') def foo(self, *args): ... @synchronized('mylock') def bar(self, *args): ... This way only one of either foo or bar can be executing at a time. :param lock_file_prefix: The lock_file_prefix argument is used to provide lock files on disk with a meaningful prefix. The prefix should end with a hyphen ('-') if specified. :param external: The external keyword argument denotes whether this lock should work across multiple processes. This means that if two different workers both run a a method decorated with @synchronized('mylock', external=True), only one of them will execute at a time. :param lock_path: The lock_path keyword argument is used to specify a special location for external lock files to live. If nothing is set, then CONF.lock_path is used as a default. """ def wrap(f): @functools.wraps(f) def inner(*args, **kwargs): # NOTE(soren): If we ever go natively threaded, this will be racy. # See http://stackoverflow.com/questions/5390569/dyn # amically-allocating-and-destroying-mutexes sem = _semaphores.get(name, semaphore.Semaphore()) if name not in _semaphores: # this check is not racy - we're already holding ref locally # so GC won't remove the item and there was no IO switch # (only valid in greenthreads) _semaphores[name] = sem with sem: LOG.debug(_('Got semaphore "%(lock)s" for method ' '"%(method)s"...'), {'lock': name, 'method': f.__name__}) # NOTE(mikal): I know this looks odd if not hasattr(local.strong_store, 'locks_held'): local.strong_store.locks_held = [] local.strong_store.locks_held.append(name) try: if external and not CONF.disable_process_locking: LOG.debug(_('Attempting to grab file lock "%(lock)s" ' 'for method "%(method)s"...'), {'lock': name, 'method': f.__name__}) cleanup_dir = False # We need a copy of lock_path because it is non-local local_lock_path = lock_path if not local_lock_path: local_lock_path = CONF.lock_path if not local_lock_path: cleanup_dir = True local_lock_path = tempfile.mkdtemp() if not os.path.exists(local_lock_path): fileutils.ensure_tree(local_lock_path) # NOTE(mikal): the lock name cannot contain directory # separators safe_name = name.replace(os.sep, '_') lock_file_name = '%s%s' % (lock_file_prefix, safe_name) lock_file_path = os.path.join(local_lock_path, lock_file_name) try: lock = InterProcessLock(lock_file_path) with lock: LOG.debug(_('Got file lock "%(lock)s" at ' '%(path)s for method ' '"%(method)s"...'), {'lock': name, 'path': lock_file_path, 'method': f.__name__}) retval = f(*args, **kwargs) finally: LOG.debug(_('Released file lock "%(lock)s" at ' '%(path)s for method "%(method)s"...'), {'lock': name, 'path': lock_file_path, 'method': f.__name__}) # NOTE(vish): This removes the tempdir if we needed # to create one. This is used to # cleanup the locks left behind by unit # tests. if cleanup_dir: shutil.rmtree(local_lock_path) else: retval = f(*args, **kwargs) finally: local.strong_store.locks_held.remove(name) return retval return inner return wrap def synchronized_with_prefix(lock_file_prefix): """Partial object generator for the synchronization decorator. Redefine @synchronized in each project like so:: (in nova/utils.py) from nova.openstack.common import lockutils synchronized = lockutils.synchronized_with_prefix('nova-') (in nova/foo.py) from nova import utils @utils.synchronized('mylock') def bar(self, *args): ... The lock_file_prefix argument is used to provide lock files on disk with a meaningful prefix. The prefix should end with a hyphen ('-') if specified. """ return functools.partial(synchronized, lock_file_prefix=lock_file_prefix) cinder-2014.1.5/cinder/openstack/common/db/0000775000567000056700000000000012540643114021460 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/db/exception.py0000664000567000056700000000313412540642606024036 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """DB related custom exceptions.""" from cinder.openstack.common.gettextutils import _ class DBError(Exception): """Wraps an implementation specific exception.""" def __init__(self, inner_exception=None): self.inner_exception = inner_exception super(DBError, self).__init__(str(inner_exception)) class DBDuplicateEntry(DBError): """Wraps an implementation specific exception.""" def __init__(self, columns=[], inner_exception=None): self.columns = columns super(DBDuplicateEntry, self).__init__(inner_exception) class DBDeadlock(DBError): def __init__(self, inner_exception=None): super(DBDeadlock, self).__init__(inner_exception) class DBInvalidUnicodeParameter(Exception): message = _("Invalid Parameter: " "Unicode is not supported by the current database.") cinder-2014.1.5/cinder/openstack/common/db/sqlalchemy/0000775000567000056700000000000012540643114023622 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/db/sqlalchemy/models.py0000664000567000056700000000713712540642606025474 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Piston Cloud Computing, Inc. # Copyright 2012 Cloudscaling Group, Inc. # All Rights Reserved. # # 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. """ SQLAlchemy models. """ from sqlalchemy import Column, Integer from sqlalchemy import DateTime from sqlalchemy.orm import object_mapper from cinder.openstack.common.db.sqlalchemy.session import get_session from cinder.openstack.common import timeutils class ModelBase(object): """Base class for models.""" __table_initialized__ = False def save(self, session=None): """Save this object.""" if not session: session = get_session() # NOTE(boris-42): This part of code should be look like: # sesssion.add(self) # session.flush() # But there is a bug in sqlalchemy and eventlet that # raises NoneType exception if there is no running # transaction and rollback is called. As long as # sqlalchemy has this bug we have to create transaction # explicity. with session.begin(subtransactions=True): session.add(self) session.flush() def __setitem__(self, key, value): setattr(self, key, value) def __getitem__(self, key): return getattr(self, key) def get(self, key, default=None): return getattr(self, key, default) def __iter__(self): columns = dict(object_mapper(self).columns).keys() # NOTE(russellb): Allow models to specify other keys that can be looked # up, beyond the actual db columns. An example would be the 'name' # property for an Instance. if hasattr(self, '_extra_keys'): columns.extend(self._extra_keys()) self._i = iter(columns) return self def next(self): n = self._i.next() return n, getattr(self, n) def update(self, values): """Make the model object behave like a dict.""" for k, v in values.iteritems(): setattr(self, k, v) def iteritems(self): """Make the model object behave like a dict. Includes attributes from joins.""" local = dict(self) joined = dict([(k, v) for k, v in self.__dict__.iteritems() if not k[0] == '_']) local.update(joined) return local.iteritems() class TimestampMixin(object): created_at = Column(DateTime, default=timeutils.utcnow) updated_at = Column(DateTime, onupdate=timeutils.utcnow) class SoftDeleteMixin(object): deleted_at = Column(DateTime) deleted = Column(Integer, default=0) def soft_delete(self, session=None): """Mark this object as deleted.""" self.deleted = self.id self.deleted_at = timeutils.utcnow() self.save(session=session) cinder-2014.1.5/cinder/openstack/common/db/sqlalchemy/session.py0000664000567000056700000006234612540642606025677 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Session Handling for SQLAlchemy backend. Initializing: * Call set_defaults with the minimal of the following kwargs: sql_connection, sqlite_db Example: session.set_defaults( sql_connection="sqlite:///var/lib/cinder/sqlite.db", sqlite_db="/var/lib/cinder/sqlite.db") Recommended ways to use sessions within this framework: * Don't use them explicitly; this is like running with AUTOCOMMIT=1. model_query() will implicitly use a session when called without one supplied. This is the ideal situation because it will allow queries to be automatically retried if the database connection is interrupted. Note: Automatic retry will be enabled in a future patch. It is generally fine to issue several queries in a row like this. Even though they may be run in separate transactions and/or separate sessions, each one will see the data from the prior calls. If needed, undo- or rollback-like functionality should be handled at a logical level. For an example, look at the code around quotas and reservation_rollback(). Examples: def get_foo(context, foo): return model_query(context, models.Foo).\ filter_by(foo=foo).\ first() def update_foo(context, id, newfoo): model_query(context, models.Foo).\ filter_by(id=id).\ update({'foo': newfoo}) def create_foo(context, values): foo_ref = models.Foo() foo_ref.update(values) foo_ref.save() return foo_ref * Within the scope of a single method, keeping all the reads and writes within the context managed by a single session. In this way, the session's __exit__ handler will take care of calling flush() and commit() for you. If using this approach, you should not explicitly call flush() or commit(). Any error within the context of the session will cause the session to emit a ROLLBACK. If the connection is dropped before this is possible, the database will implicitly rollback the transaction. Note: statements in the session scope will not be automatically retried. If you create models within the session, they need to be added, but you do not need to call model.save() def create_many_foo(context, foos): session = get_session() with session.begin(): for foo in foos: foo_ref = models.Foo() foo_ref.update(foo) session.add(foo_ref) def update_bar(context, foo_id, newbar): session = get_session() with session.begin(): foo_ref = model_query(context, models.Foo, session).\ filter_by(id=foo_id).\ first() model_query(context, models.Bar, session).\ filter_by(id=foo_ref['bar_id']).\ update({'bar': newbar}) Note: update_bar is a trivially simple example of using "with session.begin". Whereas create_many_foo is a good example of when a transaction is needed, it is always best to use as few queries as possible. The two queries in update_bar can be better expressed using a single query which avoids the need for an explicit transaction. It can be expressed like so: def update_bar(context, foo_id, newbar): subq = model_query(context, models.Foo.id).\ filter_by(id=foo_id).\ limit(1).\ subquery() model_query(context, models.Bar).\ filter_by(id=subq.as_scalar()).\ update({'bar': newbar}) For reference, this emits approximagely the following SQL statement: UPDATE bar SET bar = ${newbar} WHERE id=(SELECT bar_id FROM foo WHERE id = ${foo_id} LIMIT 1); * Passing an active session between methods. Sessions should only be passed to private methods. The private method must use a subtransaction; otherwise SQLAlchemy will throw an error when you call session.begin() on an existing transaction. Public methods should not accept a session parameter and should not be involved in sessions within the caller's scope. Note that this incurs more overhead in SQLAlchemy than the above means due to nesting transactions, and it is not possible to implicitly retry failed database operations when using this approach. This also makes code somewhat more difficult to read and debug, because a single database transaction spans more than one method. Error handling becomes less clear in this situation. When this is needed for code clarity, it should be clearly documented. def myfunc(foo): session = get_session() with session.begin(): # do some database things bar = _private_func(foo, session) return bar def _private_func(foo, session=None): if not session: session = get_session() with session.begin(subtransaction=True): # do some other database things return bar There are some things which it is best to avoid: * Don't keep a transaction open any longer than necessary. This means that your "with session.begin()" block should be as short as possible, while still containing all the related calls for that transaction. * Avoid "with_lockmode('UPDATE')" when possible. In MySQL/InnoDB, when a "SELECT ... FOR UPDATE" query does not match any rows, it will take a gap-lock. This is a form of write-lock on the "gap" where no rows exist, and prevents any other writes to that space. This can effectively prevent any INSERT into a table by locking the gap at the end of the index. Similar problems will occur if the SELECT FOR UPDATE has an overly broad WHERE clause, or doesn't properly use an index. One idea proposed at ODS Fall '12 was to use a normal SELECT to test the number of rows matching a query, and if only one row is returned, then issue the SELECT FOR UPDATE. The better long-term solution is to use INSERT .. ON DUPLICATE KEY UPDATE. However, this can not be done until the "deleted" columns are removed and proper UNIQUE constraints are added to the tables. Enabling soft deletes: * To use/enable soft-deletes, the SoftDeleteMixin must be added to your model class. For example: class NovaBase(models.SoftDeleteMixin, models.ModelBase): pass Efficient use of soft deletes: * There are two possible ways to mark a record as deleted: model.soft_delete() and query.soft_delete(). model.soft_delete() method works with single already fetched entry. query.soft_delete() makes only one db request for all entries that correspond to query. * In almost all cases you should use query.soft_delete(). Some examples: def soft_delete_bar(): count = model_query(BarModel).find(some_condition).soft_delete() if count == 0: raise Exception("0 entries were soft deleted") def complex_soft_delete_with_synchronization_bar(session=None): if session is None: session = get_session() with session.begin(subtransactions=True): count = model_query(BarModel).\ find(some_condition).\ soft_delete(synchronize_session=True) # Here synchronize_session is required, because we # don't know what is going on in outer session. if count == 0: raise Exception("0 entries were soft deleted") * There is only one situation where model.soft_delete() is appropriate: when you fetch a single record, work with it, and mark it as deleted in the same transaction. def soft_delete_bar_model(): session = get_session() with session.begin(): bar_ref = model_query(BarModel).find(some_condition).first() # Work with bar_ref bar_ref.soft_delete(session=session) However, if you need to work with all entries that correspond to query and then soft delete them you should use query.soft_delete() method: def soft_delete_multi_models(): session = get_session() with session.begin(): query = model_query(BarModel, session=session).\ find(some_condition) model_refs = query.all() # Work with model_refs query.soft_delete(synchronize_session=False) # synchronize_session=False should be set if there is no outer # session and these entries are not used after this. When working with many rows, it is very important to use query.soft_delete, which issues a single query. Using model.soft_delete(), as in the following example, is very inefficient. for bar_ref in bar_refs: bar_ref.soft_delete(session=session) # This will produce count(bar_refs) db requests. """ import os.path import re import time from eventlet import greenthread from oslo.config import cfg import six from sqlalchemy import exc as sqla_exc import sqlalchemy.interfaces from sqlalchemy.interfaces import PoolListener import sqlalchemy.orm from sqlalchemy.pool import NullPool, StaticPool from sqlalchemy.sql.expression import literal_column from cinder.openstack.common.db import exception from cinder.openstack.common import log as logging from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import timeutils DEFAULT = 'DEFAULT' sqlite_db_opts = [ cfg.StrOpt('sqlite_db', default='cinder.sqlite', help='the filename to use with sqlite'), cfg.BoolOpt('sqlite_synchronous', default=True, help='If true, use synchronous mode for sqlite'), ] database_opts = [ cfg.StrOpt('connection', default='sqlite:///' + os.path.abspath(os.path.join(os.path.dirname(__file__), '../', '$sqlite_db')), help='The SQLAlchemy connection string used to connect to the ' 'database', deprecated_name='sql_connection', deprecated_group=DEFAULT, secret=True), cfg.IntOpt('idle_timeout', default=3600, deprecated_name='sql_idle_timeout', deprecated_group=DEFAULT, help='timeout before idle sql connections are reaped'), cfg.IntOpt('min_pool_size', default=1, deprecated_name='sql_min_pool_size', deprecated_group=DEFAULT, help='Minimum number of SQL connections to keep open in a ' 'pool'), cfg.IntOpt('max_pool_size', default=5, deprecated_name='sql_max_pool_size', deprecated_group=DEFAULT, help='Maximum number of SQL connections to keep open in a ' 'pool'), cfg.IntOpt('max_retries', default=10, deprecated_name='sql_max_retries', deprecated_group=DEFAULT, help='maximum db connection retries during startup. ' '(setting -1 implies an infinite retry count)'), cfg.IntOpt('retry_interval', default=10, deprecated_name='sql_retry_interval', deprecated_group=DEFAULT, help='interval between retries of opening a sql connection'), cfg.IntOpt('max_overflow', default=None, deprecated_name='sql_max_overflow', deprecated_group=DEFAULT, help='If set, use this value for max_overflow with sqlalchemy'), cfg.IntOpt('connection_debug', default=0, deprecated_name='sql_connection_debug', deprecated_group=DEFAULT, help='Verbosity of SQL debugging information. 0=None, ' '100=Everything'), cfg.BoolOpt('connection_trace', default=False, deprecated_name='sql_connection_trace', deprecated_group=DEFAULT, help='Add python stack traces to SQL as comment strings'), ] CONF = cfg.CONF CONF.register_opts(sqlite_db_opts) CONF.register_opts(database_opts, 'database') LOG = logging.getLogger(__name__) _ENGINE = None _MAKER = None def set_defaults(sql_connection, sqlite_db): """Set defaults for configuration variables.""" cfg.set_defaults(database_opts, connection=sql_connection) cfg.set_defaults(sqlite_db_opts, sqlite_db=sqlite_db) def cleanup(): global _ENGINE, _MAKER if _MAKER: _MAKER.close_all() _MAKER = None if _ENGINE: _ENGINE.dispose() _ENGINE = None class SqliteForeignKeysListener(PoolListener): """ Ensures that the foreign key constraints are enforced in SQLite. The foreign key constraints are disabled by default in SQLite, so the foreign key constraints will be enabled here for every database connection """ def connect(self, dbapi_con, con_record): dbapi_con.execute('pragma foreign_keys=ON') def get_session(autocommit=True, expire_on_commit=False, sqlite_fk=False): """Return a SQLAlchemy session.""" global _MAKER if _MAKER is None: engine = get_engine(sqlite_fk=sqlite_fk) _MAKER = get_maker(engine, autocommit, expire_on_commit) session = _MAKER() return session # note(boris-42): In current versions of DB backends unique constraint # violation messages follow the structure: # # sqlite: # 1 column - (IntegrityError) column c1 is not unique # N columns - (IntegrityError) column c1, c2, ..., N are not unique # # postgres: # 1 column - (IntegrityError) duplicate key value violates unique # constraint "users_c1_key" # N columns - (IntegrityError) duplicate key value violates unique # constraint "name_of_our_constraint" # # mysql: # 1 column - (IntegrityError) (1062, "Duplicate entry 'value_of_c1' for key # 'c1'") # N columns - (IntegrityError) (1062, "Duplicate entry 'values joined # with -' for key 'name_of_our_constraint'") _DUP_KEY_RE_DB = { "sqlite": re.compile(r"^.*columns?([^)]+)(is|are)\s+not\s+unique$"), "postgresql": re.compile(r"^.*duplicate\s+key.*\"([^\"]+)\"\s*\n.*$"), "mysql": re.compile(r"^.*\(1062,.*'([^\']+)'\"\)$") } def _raise_if_duplicate_entry_error(integrity_error, engine_name): """ In this function will be raised DBDuplicateEntry exception if integrity error wrap unique constraint violation. """ def get_columns_from_uniq_cons_or_name(columns): # note(boris-42): UniqueConstraint name convention: "uniq_c1_x_c2_x_c3" # means that columns c1, c2, c3 are in UniqueConstraint. uniqbase = "uniq_" if not columns.startswith(uniqbase): if engine_name == "postgresql": return [columns[columns.index("_") + 1:columns.rindex("_")]] return [columns] return columns[len(uniqbase):].split("_x_") if engine_name not in ["mysql", "sqlite", "postgresql"]: return m = _DUP_KEY_RE_DB[engine_name].match(integrity_error.message) if not m: return columns = m.group(1) if engine_name == "sqlite": columns = columns.strip().split(", ") else: columns = get_columns_from_uniq_cons_or_name(columns) raise exception.DBDuplicateEntry(columns, integrity_error) # NOTE(comstud): In current versions of DB backends, Deadlock violation # messages follow the structure: # # mysql: # (OperationalError) (1213, 'Deadlock found when trying to get lock; try ' # 'restarting transaction') _DEADLOCK_RE_DB = { "mysql": re.compile(r"^.*\(1213, 'Deadlock.*") } def _raise_if_deadlock_error(operational_error, engine_name): """ Raise DBDeadlock exception if OperationalError contains a Deadlock condition. """ re = _DEADLOCK_RE_DB.get(engine_name) if re is None: return m = re.match(operational_error.message) if not m: return raise exception.DBDeadlock(operational_error) def _wrap_db_error(f): def _wrap(*args, **kwargs): try: return f(*args, **kwargs) except UnicodeEncodeError: raise exception.DBInvalidUnicodeParameter() # note(boris-42): We should catch unique constraint violation and # wrap it by our own DBDuplicateEntry exception. Unique constraint # violation is wrapped by IntegrityError. except sqla_exc.OperationalError as e: _raise_if_deadlock_error(e, get_engine().name) # NOTE(comstud): A lot of code is checking for OperationalError # so let's not wrap it for now. raise except sqla_exc.IntegrityError as e: # note(boris-42): SqlAlchemy doesn't unify errors from different # DBs so we must do this. Also in some tables (for example # instance_types) there are more than one unique constraint. This # means we should get names of columns, which values violate # unique constraint, from error message. _raise_if_duplicate_entry_error(e, get_engine().name) raise exception.DBError(e) except Exception as e: LOG.exception(_('DB exception wrapped.')) raise exception.DBError(e) _wrap.func_name = f.func_name return _wrap def get_engine(sqlite_fk=False): """Return a SQLAlchemy engine.""" global _ENGINE if _ENGINE is None: _ENGINE = create_engine(CONF.database.connection, sqlite_fk=sqlite_fk) return _ENGINE def _synchronous_switch_listener(dbapi_conn, connection_rec): """Switch sqlite connections to non-synchronous mode.""" dbapi_conn.execute("PRAGMA synchronous = OFF") def _add_regexp_listener(dbapi_con, con_record): """Add REGEXP function to sqlite connections.""" def regexp(expr, item): reg = re.compile(expr) return reg.search(six.text_type(item)) is not None dbapi_con.create_function('regexp', 2, regexp) def _greenthread_yield(dbapi_con, con_record): """ Ensure other greenthreads get a chance to execute by forcing a context switch. With common database backends (eg MySQLdb and sqlite), there is no implicit yield caused by network I/O since they are implemented by C libraries that eventlet cannot monkey patch. """ greenthread.sleep(0) def _ping_listener(dbapi_conn, connection_rec, connection_proxy): """ Ensures that MySQL connections checked out of the pool are alive. Borrowed from: http://groups.google.com/group/sqlalchemy/msg/a4ce563d802c929f """ try: dbapi_conn.cursor().execute('select 1') except dbapi_conn.OperationalError as ex: if ex.args[0] in (2006, 2013, 2014, 2045, 2055): LOG.warn(_('Got mysql server has gone away: %s'), ex) raise sqla_exc.DisconnectionError("Database server went away") else: raise def _is_db_connection_error(args): """Return True if error in connecting to db.""" # NOTE(adam_g): This is currently MySQL specific and needs to be extended # to support Postgres and others. conn_err_codes = ('2002', '2003', '2006') for err_code in conn_err_codes: if args.find(err_code) != -1: return True return False def create_engine(sql_connection, sqlite_fk=False): """Return a new SQLAlchemy engine.""" connection_dict = sqlalchemy.engine.url.make_url(sql_connection) engine_args = { "pool_recycle": CONF.database.idle_timeout, "echo": False, 'convert_unicode': True, } # Map our SQL debug level to SQLAlchemy's options if CONF.database.connection_debug >= 100: engine_args['echo'] = 'debug' elif CONF.database.connection_debug >= 50: engine_args['echo'] = True if "sqlite" in connection_dict.drivername: if sqlite_fk: engine_args["listeners"] = [SqliteForeignKeysListener()] engine_args["poolclass"] = NullPool if CONF.database.connection == "sqlite://": engine_args["poolclass"] = StaticPool engine_args["connect_args"] = {'check_same_thread': False} else: engine_args['pool_size'] = CONF.database.max_pool_size if CONF.database.max_overflow is not None: engine_args['max_overflow'] = CONF.database.max_overflow engine = sqlalchemy.create_engine(sql_connection, **engine_args) sqlalchemy.event.listen(engine, 'checkin', _greenthread_yield) if 'mysql' in connection_dict.drivername: sqlalchemy.event.listen(engine, 'checkout', _ping_listener) elif 'sqlite' in connection_dict.drivername: if not CONF.sqlite_synchronous: sqlalchemy.event.listen(engine, 'connect', _synchronous_switch_listener) sqlalchemy.event.listen(engine, 'connect', _add_regexp_listener) if (CONF.database.connection_trace and engine.dialect.dbapi.__name__ == 'MySQLdb'): _patch_mysqldb_with_stacktrace_comments() try: engine.connect() except sqla_exc.OperationalError as e: if not _is_db_connection_error(e.args[0]): raise remaining = CONF.database.max_retries if remaining == -1: remaining = 'infinite' while True: msg = _('SQL connection failed. %s attempts left.') LOG.warn(msg % remaining) if remaining != 'infinite': remaining -= 1 time.sleep(CONF.database.retry_interval) try: engine.connect() break except sqla_exc.OperationalError as e: if (remaining != 'infinite' and remaining == 0) or \ not _is_db_connection_error(e.args[0]): raise return engine class Query(sqlalchemy.orm.query.Query): """Subclass of sqlalchemy.query with soft_delete() method.""" def soft_delete(self, synchronize_session='evaluate'): return self.update({'deleted': literal_column('id'), 'updated_at': literal_column('updated_at'), 'deleted_at': timeutils.utcnow()}, synchronize_session=synchronize_session) class Session(sqlalchemy.orm.session.Session): """Custom Session class to avoid SqlAlchemy Session monkey patching.""" @_wrap_db_error def query(self, *args, **kwargs): return super(Session, self).query(*args, **kwargs) @_wrap_db_error def flush(self, *args, **kwargs): return super(Session, self).flush(*args, **kwargs) @_wrap_db_error def execute(self, *args, **kwargs): return super(Session, self).execute(*args, **kwargs) def get_maker(engine, autocommit=True, expire_on_commit=False): """Return a SQLAlchemy sessionmaker using the given engine.""" return sqlalchemy.orm.sessionmaker(bind=engine, class_=Session, autocommit=autocommit, expire_on_commit=expire_on_commit, query_cls=Query) def _patch_mysqldb_with_stacktrace_comments(): """Adds current stack trace as a comment in queries by patching MySQLdb.cursors.BaseCursor._do_query. """ import MySQLdb.cursors import traceback old_mysql_do_query = MySQLdb.cursors.BaseCursor._do_query def _do_query(self, q): stack = '' for file, line, method, function in traceback.extract_stack(): # exclude various common things from trace if file.endswith('session.py') and method == '_do_query': continue if file.endswith('api.py') and method == 'wrapper': continue if file.endswith('utils.py') and method == '_inner': continue if file.endswith('exception.py') and method == '_wrap': continue # db/api is just a wrapper around db/sqlalchemy/api if file.endswith('db/api.py'): continue # only trace inside cinder index = file.rfind('cinder') if index == -1: continue stack += "File:%s:%s Method:%s() Line:%s | " \ % (file[index:], line, method, function) # strip trailing " | " from stack if stack: stack = stack[:-3] qq = "%s /* %s */" % (q, stack) else: qq = q old_mysql_do_query(self, qq) setattr(MySQLdb.cursors.BaseCursor, '_do_query', _do_query) cinder-2014.1.5/cinder/openstack/common/db/sqlalchemy/__init__.py0000664000567000056700000000125312540642606025741 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2012 Cloudscaling Group, Inc # All Rights Reserved. # # 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. cinder-2014.1.5/cinder/openstack/common/db/sqlalchemy/utils.py0000664000567000056700000001152212540642606025342 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010-2011 OpenStack Foundation. # Copyright 2012 Justin Santa Barbara # All Rights Reserved. # # 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. """Implementation of paginate query.""" import sqlalchemy from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class InvalidSortKey(Exception): message = _("Sort key supplied was not valid.") # copy from glance/db/sqlalchemy/api.py def paginate_query(query, model, limit, sort_keys, marker=None, sort_dir=None, sort_dirs=None): """Returns a query with sorting / pagination criteria added. Pagination works by requiring a unique sort_key, specified by sort_keys. (If sort_keys is not unique, then we risk looping through values.) We use the last row in the previous page as the 'marker' for pagination. So we must return values that follow the passed marker in the order. With a single-valued sort_key, this would be easy: sort_key > X. With a compound-values sort_key, (k1, k2, k3) we must do this to repeat the lexicographical ordering: (k1 > X1) or (k1 == X1 && k2 > X2) or (k1 == X1 && k2 == X2 && k3 > X3) We also have to cope with different sort_directions. Typically, the id of the last row is used as the client-facing pagination marker, then the actual marker object must be fetched from the db and passed in to us as marker. :param query: the query object to which we should add paging/sorting :param model: the ORM model class :param limit: maximum number of items to return :param sort_keys: array of attributes by which results should be sorted :param marker: the last item of the previous page; we returns the next results after this value. :param sort_dir: direction in which results should be sorted (asc, desc) :param sort_dirs: per-column array of sort_dirs, corresponding to sort_keys :rtype: sqlalchemy.orm.query.Query :return: The query with sorting/pagination added. """ if 'id' not in sort_keys: # TODO(justinsb): If this ever gives a false-positive, check # the actual primary key, rather than assuming its id LOG.warn(_('Id not in sort_keys; is sort_keys unique?')) assert(not (sort_dir and sort_dirs)) # Default the sort direction to ascending if sort_dirs is None and sort_dir is None: sort_dir = 'asc' # Ensure a per-column sort direction if sort_dirs is None: sort_dirs = [sort_dir for _sort_key in sort_keys] assert(len(sort_dirs) == len(sort_keys)) # Add sorting for current_sort_key, current_sort_dir in zip(sort_keys, sort_dirs): sort_dir_func = { 'asc': sqlalchemy.asc, 'desc': sqlalchemy.desc, }[current_sort_dir] try: sort_key_attr = getattr(model, current_sort_key) except AttributeError: raise InvalidSortKey() query = query.order_by(sort_dir_func(sort_key_attr)) # Add pagination if marker is not None: marker_values = [] for sort_key in sort_keys: v = getattr(marker, sort_key) marker_values.append(v) # Build up an array of sort criteria as in the docstring criteria_list = [] for i in range(0, len(sort_keys)): crit_attrs = [] for j in range(0, i): model_attr = getattr(model, sort_keys[j]) crit_attrs.append((model_attr == marker_values[j])) model_attr = getattr(model, sort_keys[i]) if sort_dirs[i] == 'desc': crit_attrs.append((model_attr < marker_values[i])) elif sort_dirs[i] == 'asc': crit_attrs.append((model_attr > marker_values[i])) else: raise ValueError(_("Unknown sort direction, " "must be 'desc' or 'asc'")) criteria = sqlalchemy.sql.and_(*crit_attrs) criteria_list.append(criteria) f = sqlalchemy.sql.or_(*criteria_list) query = query.filter(f) if limit is not None: query = query.limit(limit) return query cinder-2014.1.5/cinder/openstack/common/db/__init__.py0000664000567000056700000000125312540642606023577 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2012 Cloudscaling Group, Inc # All Rights Reserved. # # 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. cinder-2014.1.5/cinder/openstack/common/db/api.py0000664000567000056700000000730512540642606022615 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2013 Rackspace Hosting # All Rights Reserved. # # 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. """Multiple DB API backend support. Supported configuration options: The following two parameters are in the 'database' group: `backend`: DB backend name or full module path to DB backend module. `use_tpool`: Enable thread pooling of DB API calls. A DB backend module should implement a method named 'get_backend' which takes no arguments. The method can return any object that implements DB API methods. *NOTE*: There are bugs in eventlet when using tpool combined with threading locks. The python logging module happens to use such locks. To work around this issue, be sure to specify thread=False with eventlet.monkey_patch(). A bug for eventlet has been filed here: https://bitbucket.org/eventlet/eventlet/issue/137/ """ import functools from oslo.config import cfg from cinder.openstack.common import importutils from cinder.openstack.common import lockutils db_opts = [ cfg.StrOpt('backend', default='sqlalchemy', deprecated_name='db_backend', deprecated_group='DEFAULT', help='The backend to use for db'), cfg.BoolOpt('use_tpool', default=False, deprecated_name='dbapi_use_tpool', deprecated_group='DEFAULT', help='Enable the experimental use of thread pooling for ' 'all DB API calls') ] CONF = cfg.CONF CONF.register_opts(db_opts, 'database') class DBAPI(object): def __init__(self, backend_mapping=None): if backend_mapping is None: backend_mapping = {} self.__backend = None self.__backend_mapping = backend_mapping @lockutils.synchronized('dbapi_backend', 'cinder-') def __get_backend(self): """Get the actual backend. May be a module or an instance of a class. Doesn't matter to us. We do this synchronized as it's possible multiple greenthreads started very quickly trying to do DB calls and eventlet can switch threads before self.__backend gets assigned. """ if self.__backend: # Another thread assigned it return self.__backend backend_name = CONF.database.backend self.__use_tpool = CONF.database.use_tpool if self.__use_tpool: from eventlet import tpool self.__tpool = tpool # Import the untranslated name if we don't have a # mapping. backend_path = self.__backend_mapping.get(backend_name, backend_name) backend_mod = importutils.import_module(backend_path) self.__backend = backend_mod.get_backend() return self.__backend def __getattr__(self, key): backend = self.__backend or self.__get_backend() attr = getattr(backend, key) if not self.__use_tpool or not hasattr(attr, '__call__'): return attr def tpool_wrapper(*args, **kwargs): return self.__tpool.execute(attr, *args, **kwargs) functools.update_wrapper(tpool_wrapper, attr) return tpool_wrapper cinder-2014.1.5/cinder/openstack/common/eventlet_backdoor.py0000664000567000056700000001126512540642606025151 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation. # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from __future__ import print_function import errno import gc import os import pprint import socket import sys import traceback import eventlet import eventlet.backdoor import greenlet from oslo.config import cfg from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging help_for_backdoor_port = ( "Acceptable values are 0, , and :, where 0 results " "in listening on a random tcp port number; results in listening " "on the specified port number (and not enabling backdoor if that port " "is in use); and : results in listening on the smallest " "unused port number within the specified range of port numbers. The " "chosen port is displayed in the service's log file.") eventlet_backdoor_opts = [ cfg.StrOpt('backdoor_port', default=None, help="Enable eventlet backdoor. %s" % help_for_backdoor_port) ] CONF = cfg.CONF CONF.register_opts(eventlet_backdoor_opts) LOG = logging.getLogger(__name__) class EventletBackdoorConfigValueError(Exception): def __init__(self, port_range, help_msg, ex): msg = ('Invalid backdoor_port configuration %(range)s: %(ex)s. ' '%(help)s' % {'range': port_range, 'ex': ex, 'help': help_msg}) super(EventletBackdoorConfigValueError, self).__init__(msg) self.port_range = port_range def _dont_use_this(): print("Don't use this, just disconnect instead") def _find_objects(t): return [o for o in gc.get_objects() if isinstance(o, t)] def _print_greenthreads(): for i, gt in enumerate(_find_objects(greenlet.greenlet)): print(i, gt) traceback.print_stack(gt.gr_frame) print() def _print_nativethreads(): for threadId, stack in sys._current_frames().items(): print(threadId) traceback.print_stack(stack) print() def _parse_port_range(port_range): if ':' not in port_range: start, end = port_range, port_range else: start, end = port_range.split(':', 1) try: start, end = int(start), int(end) if end < start: raise ValueError return start, end except ValueError as ex: raise EventletBackdoorConfigValueError(port_range, ex, help_for_backdoor_port) def _listen(host, start_port, end_port, listen_func): try_port = start_port while True: try: return listen_func((host, try_port)) except socket.error as exc: if (exc.errno != errno.EADDRINUSE or try_port >= end_port): raise try_port += 1 def initialize_if_enabled(): backdoor_locals = { 'exit': _dont_use_this, # So we don't exit the entire process 'quit': _dont_use_this, # So we don't exit the entire process 'fo': _find_objects, 'pgt': _print_greenthreads, 'pnt': _print_nativethreads, } if CONF.backdoor_port is None: return None start_port, end_port = _parse_port_range(str(CONF.backdoor_port)) # NOTE(johannes): The standard sys.displayhook will print the value of # the last expression and set it to __builtin__._, which overwrites # the __builtin__._ that gettext sets. Let's switch to using pprint # since it won't interact poorly with gettext, and it's easier to # read the output too. def displayhook(val): if val is not None: pprint.pprint(val) sys.displayhook = displayhook sock = _listen('localhost', start_port, end_port, eventlet.listen) # In the case of backdoor port being zero, a port number is assigned by # listen(). In any case, pull the port number out here. port = sock.getsockname()[1] LOG.info(_('Eventlet backdoor listening on %(port)s for process %(pid)d') % {'port': port, 'pid': os.getpid()}) eventlet.spawn_n(eventlet.backdoor.backdoor_server, sock, locals=backdoor_locals) return port cinder-2014.1.5/cinder/openstack/common/context.py0000664000567000056700000000525612540642606023146 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ Simple class that stores security context information in the web request. Projects should subclass this class if they wish to enhance the request context or provide additional information in their specific WSGI pipeline. """ import itertools from cinder.openstack.common import uuidutils def generate_request_id(): return 'req-%s' % uuidutils.generate_uuid() class RequestContext(object): """Helper class to represent useful information about a request context. Stores information about the security context under which the user accesses the system, as well as additional request information. """ def __init__(self, auth_token=None, user=None, tenant=None, is_admin=False, read_only=False, show_deleted=False, request_id=None): self.auth_token = auth_token self.user = user self.tenant = tenant self.is_admin = is_admin self.read_only = read_only self.show_deleted = show_deleted if not request_id: request_id = generate_request_id() self.request_id = request_id def to_dict(self): return {'user': self.user, 'tenant': self.tenant, 'is_admin': self.is_admin, 'read_only': self.read_only, 'show_deleted': self.show_deleted, 'auth_token': self.auth_token, 'request_id': self.request_id} def get_admin_context(show_deleted="no"): context = RequestContext(None, tenant=None, is_admin=True, show_deleted=show_deleted) return context def get_context_from_function_and_args(function, args, kwargs): """Find an arg of type RequestContext and return it. This is useful in a couple of decorators where we don't know much about the function we're wrapping. """ for arg in itertools.chain(kwargs.values(), args): if isinstance(arg, RequestContext): return arg return None cinder-2014.1.5/cinder/openstack/common/middleware/0000775000567000056700000000000012540643114023210 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/middleware/request_id.py0000664000567000056700000000246212540642606025737 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 NEC Corporation # All Rights Reserved. # # 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. """Middleware that ensures request ID. It ensures to assign request ID for each API request and set it to request environment. The request ID is also added to API response. """ from cinder.openstack.common import context from cinder.openstack.common.middleware import base ENV_REQUEST_ID = 'openstack.request_id' HTTP_RESP_HEADER_REQUEST_ID = 'x-openstack-request-id' class RequestIdMiddleware(base.Middleware): def process_request(self, req): self.req_id = context.generate_request_id() req.environ[ENV_REQUEST_ID] = self.req_id def process_response(self, response): response.headers.add(HTTP_RESP_HEADER_REQUEST_ID, self.req_id) return response cinder-2014.1.5/cinder/openstack/common/middleware/base.py0000664000567000056700000000347712540642606024514 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """Base class(es) for WSGI Middleware.""" import webob.dec class Middleware(object): """Base WSGI middleware wrapper. These classes require an application to be initialized that will be called next. By default the middleware will simply call its wrapped app, or you can override __call__ to customize its behavior. """ @classmethod def factory(cls, global_conf, **local_conf): """Factory method for paste.deploy.""" return cls def __init__(self, application): self.application = application def process_request(self, req): """Called on each request. If this returns None, the next application down the stack will be executed. If it returns a response then that response will be returned and execution will stop here. """ return None def process_response(self, response): """Do whatever you'd like to the response.""" return response @webob.dec.wsgify def __call__(self, req): response = self.process_request(req) if response: return response response = req.get_response(self.application) return self.process_response(response) cinder-2014.1.5/cinder/openstack/common/middleware/__init__.py0000664000567000056700000000000012540642606025314 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/scheduler/0000775000567000056700000000000012540643114023051 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/scheduler/base_weight.py0000664000567000056700000000464312540642603025715 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011-2012 OpenStack Foundation. # All Rights Reserved. # # 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. """ Pluggable Weighing support """ from cinder.openstack.common.scheduler import base_handler class WeighedObject(object): """Object with weight information.""" def __init__(self, obj, weight): self.obj = obj self.weight = weight def __repr__(self): return "" % (self.obj, self.weight) class BaseWeigher(object): """Base class for pluggable weighers.""" def _weight_multiplier(self): """How weighted this weigher should be. Normally this would be overridden in a subclass based on a config value. """ return 1.0 def _weigh_object(self, obj, weight_properties): """Override in a subclass to specify a weight for a specific object. """ return 0.0 def weigh_objects(self, weighed_obj_list, weight_properties): """Weigh multiple objects. Override in a subclass if you need need access to all objects in order to manipulate weights. """ constant = self._weight_multiplier() for obj in weighed_obj_list: obj.weight += (constant * self._weigh_object(obj.obj, weight_properties)) class BaseWeightHandler(base_handler.BaseHandler): object_class = WeighedObject def get_weighed_objects(self, weigher_classes, obj_list, weighing_properties): """Return a sorted (highest score first) list of WeighedObjects.""" if not obj_list: return [] weighed_objs = [self.object_class(obj, 0.0) for obj in obj_list] for weigher_cls in weigher_classes: weigher = weigher_cls() weigher.weigh_objects(weighed_objs, weighing_properties) return sorted(weighed_objs, key=lambda x: x.weight, reverse=True) cinder-2014.1.5/cinder/openstack/common/scheduler/base_filter.py0000664000567000056700000000346212540642603025711 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011-2012 OpenStack Foundation. # All Rights Reserved. # # 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. """ Filter support """ from cinder.openstack.common.scheduler import base_handler class BaseFilter(object): """Base class for all filter classes.""" def _filter_one(self, obj, filter_properties): """Return True if it passes the filter, False otherwise. Override this in a subclass. """ return True def filter_all(self, filter_obj_list, filter_properties): """Yield objects that pass the filter. Can be overridden in a subclass, if you need to base filtering decisions on all objects. Otherwise, one can just override _filter_one() to filter a single object. """ for obj in filter_obj_list: if self._filter_one(obj, filter_properties): yield obj class BaseFilterHandler(base_handler.BaseHandler): """Base class to handle loading filter classes. This class should be subclassed where one needs to use filters. """ def get_filtered_objects(self, filter_classes, objs, filter_properties): for filter_cls in filter_classes: objs = filter_cls().filter_all(objs, filter_properties) return list(objs) cinder-2014.1.5/cinder/openstack/common/scheduler/weights/0000775000567000056700000000000012540643114024523 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/scheduler/weights/__init__.py0000664000567000056700000000245512540642603026644 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ Scheduler host weights """ from cinder.openstack.common.scheduler import base_weight class WeighedHost(base_weight.WeighedObject): def to_dict(self): return { 'weight': self.weight, 'host': self.obj.host, } def __repr__(self): return ("WeighedHost [host: %s, weight: %s]" % (self.obj.host, self.weight)) class BaseHostWeigher(base_weight.BaseWeigher): """Base class for host weights.""" pass class HostWeightHandler(base_weight.BaseWeightHandler): object_class = WeighedHost def __init__(self, namespace): super(HostWeightHandler, self).__init__(BaseHostWeigher, namespace) cinder-2014.1.5/cinder/openstack/common/scheduler/filters/0000775000567000056700000000000012540643114024521 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/scheduler/filters/availability_zone_filter.py0000664000567000056700000000221112540642606032146 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011-2012 OpenStack Foundation. # All Rights Reserved. # # 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. from cinder.openstack.common.scheduler import filters class AvailabilityZoneFilter(filters.BaseHostFilter): """Filters Hosts by availability zone.""" def host_passes(self, host_state, filter_properties): spec = filter_properties.get('request_spec', {}) props = spec.get('resource_properties', {}) availability_zone = props.get('availability_zone') if availability_zone: return availability_zone == host_state.service['availability_zone'] return True cinder-2014.1.5/cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py0000664000567000056700000000401512540642606033217 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation. # All Rights Reserved. # # 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. from cinder.openstack.common.gettextutils import _ # noqa from cinder.openstack.common import log as logging from cinder.openstack.common.scheduler import filters LOG = logging.getLogger(__name__) class IgnoreAttemptedHostsFilter(filters.BaseHostFilter): """Filter out previously attempted hosts A host passes this filter if it has not already been attempted for scheduling. The scheduler needs to add previously attempted hosts to the 'retry' key of filter_properties in order for this to work correctly. For example: { 'retry': { 'hosts': ['host1', 'host2'], 'num_attempts': 3, } } """ def host_passes(self, host_state, filter_properties): """Skip nodes that have already been attempted.""" attempted = filter_properties.get('retry', None) if not attempted: # Re-scheduling is disabled LOG.debug(_("Re-scheduling is disabled.")) return True hosts = attempted.get('hosts', []) host = host_state.host passes = host not in hosts pass_msg = "passes" if passes else "fails" LOG.debug(_("Host %(host)s %(pass_msg)s. Previously tried hosts: " "%(hosts)s") % {'host': host, 'pass_msg': pass_msg, 'hosts': hosts}) return passes cinder-2014.1.5/cinder/openstack/common/scheduler/filters/__init__.py0000664000567000056700000000270312540642606026641 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ Scheduler host filters """ from cinder.openstack.common import log as logging from cinder.openstack.common.scheduler import base_filter LOG = logging.getLogger(__name__) class BaseHostFilter(base_filter.BaseFilter): """Base class for host filters.""" def _filter_one(self, obj, filter_properties): """Return True if the object passes the filter, otherwise False.""" return self.host_passes(obj, filter_properties) def host_passes(self, host_state, filter_properties): """Return True if the HostState passes the filter, otherwise False. Override this in a subclass. """ raise NotImplementedError() class HostFilterHandler(base_filter.BaseFilterHandler): def __init__(self, namespace): super(HostFilterHandler, self).__init__(BaseHostFilter, namespace) cinder-2014.1.5/cinder/openstack/common/scheduler/filters/extra_specs_ops.py0000664000567000056700000000444012540642606030303 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation. # All Rights Reserved. # # 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. import operator from cinder.openstack.common import strutils # 1. The following operations are supported: # =, s==, s!=, s>=, s>, s<=, s<, , , , ==, !=, >=, <= # 2. Note that is handled in a different way below. # 3. If the first word in the extra_specs is not one of the operators, # it is ignored. _op_methods = {'=': lambda x, y: float(x) >= float(y), '': lambda x, y: y in x, '': lambda x, y: (strutils.bool_from_string(x) is strutils.bool_from_string(y)), '==': lambda x, y: float(x) == float(y), '!=': lambda x, y: float(x) != float(y), '>=': lambda x, y: float(x) >= float(y), '<=': lambda x, y: float(x) <= float(y), 's==': operator.eq, 's!=': operator.ne, 's<': operator.lt, 's<=': operator.le, 's>': operator.gt, 's>=': operator.ge} def match(value, req): words = req.split() op = method = None if words: op = words.pop(0) method = _op_methods.get(op) if op != '' and not method: return value == req if value is None: return False if op == '': # Ex: v1 v2 v3 while True: if words.pop(0) == value: return True if not words: break op = words.pop(0) # remove a keyword if not words: break return False try: if words and method(value, words[0]): return True except ValueError: pass return False cinder-2014.1.5/cinder/openstack/common/scheduler/filters/capabilities_filter.py0000664000567000056700000000547012540642606031104 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation. # All Rights Reserved. # # 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. import six from cinder.openstack.common.gettextutils import _ # noqa from cinder.openstack.common import log as logging from cinder.openstack.common.scheduler import filters from cinder.openstack.common.scheduler.filters import extra_specs_ops LOG = logging.getLogger(__name__) class CapabilitiesFilter(filters.BaseHostFilter): """HostFilter to work with resource (instance & volume) type records.""" def _satisfies_extra_specs(self, capabilities, resource_type): """Check that the capabilities provided by the services satisfy the extra specs associated with the resource type. """ extra_specs = resource_type.get('extra_specs', []) if not extra_specs: return True for key, req in six.iteritems(extra_specs): # Either not scope format, or in capabilities scope scope = key.split(':') if len(scope) > 1 and scope[0] != "capabilities": continue elif scope[0] == "capabilities": del scope[0] cap = capabilities for index in range(len(scope)): try: cap = cap.get(scope[index], None) except AttributeError: return False if cap is None: return False if not extra_specs_ops.match(cap, req): LOG.debug(_("extra_spec requirement '%(req)s' does not match " "'%(cap)s'"), {'req': req, 'cap': cap}) return False return True def host_passes(self, host_state, filter_properties): """Return a list of hosts that can create resource_type.""" # Note(zhiteng) Currently only Cinder and Nova are using # this filter, so the resource type is either instance or # volume. resource_type = filter_properties.get('resource_type') if not self._satisfies_extra_specs(host_state.capabilities, resource_type): LOG.debug(_("%(host_state)s fails resource_type extra_specs " "requirements"), {'host_state': host_state}) return False return True cinder-2014.1.5/cinder/openstack/common/scheduler/filters/json_filter.py0000664000567000056700000001147612540642606027427 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation. # All Rights Reserved. # # 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. import operator import six from cinder.openstack.common import jsonutils from cinder.openstack.common.scheduler import filters class JsonFilter(filters.BaseHostFilter): """Host Filter to allow simple JSON-based grammar for selecting hosts. """ def _op_compare(self, args, op): """Returns True if the specified operator can successfully compare the first item in the args with all the rest. Will return False if only one item is in the list. """ if len(args) < 2: return False if op is operator.contains: bad = args[0] not in args[1:] else: bad = [arg for arg in args[1:] if not op(args[0], arg)] return not bool(bad) def _equals(self, args): """First term is == all the other terms.""" return self._op_compare(args, operator.eq) def _less_than(self, args): """First term is < all the other terms.""" return self._op_compare(args, operator.lt) def _greater_than(self, args): """First term is > all the other terms.""" return self._op_compare(args, operator.gt) def _in(self, args): """First term is in set of remaining terms.""" return self._op_compare(args, operator.contains) def _less_than_equal(self, args): """First term is <= all the other terms.""" return self._op_compare(args, operator.le) def _greater_than_equal(self, args): """First term is >= all the other terms.""" return self._op_compare(args, operator.ge) def _not(self, args): """Flip each of the arguments.""" return [not arg for arg in args] def _or(self, args): """True if any arg is True.""" return any(args) def _and(self, args): """True if all args are True.""" return all(args) commands = { '=': _equals, '<': _less_than, '>': _greater_than, 'in': _in, '<=': _less_than_equal, '>=': _greater_than_equal, 'not': _not, 'or': _or, 'and': _and, } def _parse_string(self, string, host_state): """Strings prefixed with $ are capability lookups in the form '$variable' where 'variable' is an attribute in the HostState class. If $variable is a dictionary, you may use: $variable.dictkey """ if not string: return None if not string.startswith("$"): return string path = string[1:].split(".") obj = getattr(host_state, path[0], None) if obj is None: return None for item in path[1:]: obj = obj.get(item, None) if obj is None: return None return obj def _process_filter(self, query, host_state): """Recursively parse the query structure.""" if not query: return True cmd = query[0] method = self.commands[cmd] cooked_args = [] for arg in query[1:]: if isinstance(arg, list): arg = self._process_filter(arg, host_state) elif isinstance(arg, six.string_types): arg = self._parse_string(arg, host_state) if arg is not None: cooked_args.append(arg) result = method(self, cooked_args) return result def host_passes(self, host_state, filter_properties): """Return a list of hosts that can fulfill the requirements specified in the query. """ # TODO(zhiteng) Add description for filter_properties structure # and scheduler_hints. try: query = filter_properties['scheduler_hints']['query'] except KeyError: query = None if not query: return True # NOTE(comstud): Not checking capabilities or service for # enabled/disabled so that a provided json filter can decide result = self._process_filter(jsonutils.loads(query), host_state) if isinstance(result, list): # If any succeeded, include the host result = any(result) if result: # Filter it out. return True return False cinder-2014.1.5/cinder/openstack/common/scheduler/__init__.py0000664000567000056700000000000012540642603025152 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/scheduler/base_handler.py0000664000567000056700000000333712540642603026042 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011-2013 OpenStack Foundation. # All Rights Reserved. # # 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. """ A common base for handling extension classes. Used by BaseFilterHandler and BaseWeightHandler """ import inspect from stevedore import extension class BaseHandler(object): """Base class to handle loading filter and weight classes.""" def __init__(self, modifier_class_type, modifier_namespace): self.namespace = modifier_namespace self.modifier_class_type = modifier_class_type self.extension_manager = extension.ExtensionManager(modifier_namespace) def _is_correct_class(self, cls): """Return whether an object is a class of the correct type and is not prefixed with an underscore. """ return (inspect.isclass(cls) and not cls.__name__.startswith('_') and issubclass(cls, self.modifier_class_type)) def get_all_classes(self): # We use a set, as some classes may have an entrypoint of their own, # and also be returned by a function such as 'all_filters' for example return [ext.plugin for ext in self.extension_manager if self._is_correct_class(ext.plugin)] cinder-2014.1.5/cinder/openstack/common/gettextutils.py0000664000567000056700000004223412540642606024224 0ustar jenkinsjenkins00000000000000# Copyright 2012 Red Hat, Inc. # Copyright 2013 IBM Corp. # All Rights Reserved. # # 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. """ gettext for openstack-common modules. Usual usage in an openstack.common module: from cinder.openstack.common.gettextutils import _ """ import copy import functools import gettext import locale from logging import handlers import os from babel import localedata import six _localedir = os.environ.get('cinder'.upper() + '_LOCALEDIR') _t = gettext.translation('cinder', localedir=_localedir, fallback=True) # We use separate translation catalogs for each log level, so set up a # mapping between the log level name and the translator. The domain # for the log level is project_name + "-log-" + log_level so messages # for each level end up in their own catalog. _t_log_levels = dict( (level, gettext.translation('cinder' + '-log-' + level, localedir=_localedir, fallback=True)) for level in ['info', 'warning', 'error', 'critical'] ) _AVAILABLE_LANGUAGES = {} USE_LAZY = False def enable_lazy(): """Convenience function for configuring _() to use lazy gettext Call this at the start of execution to enable the gettextutils._ function to use lazy gettext functionality. This is useful if your project is importing _ directly instead of using the gettextutils.install() way of importing the _ function. """ global USE_LAZY USE_LAZY = True def _(msg): if USE_LAZY: return Message(msg, domain='cinder') else: if six.PY3: return _t.gettext(msg) return _t.ugettext(msg) def _log_translation(msg, level): """Build a single translation of a log message """ if USE_LAZY: return Message(msg, domain='cinder' + '-log-' + level) else: translator = _t_log_levels[level] if six.PY3: return translator.gettext(msg) return translator.ugettext(msg) # 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 = functools.partial(_log_translation, level='info') _LW = functools.partial(_log_translation, level='warning') _LE = functools.partial(_log_translation, level='error') _LC = functools.partial(_log_translation, level='critical') def install(domain, lazy=False): """Install a _() function using the given translation domain. Given a translation domain, install a _() function using gettext's install() function. The main difference from gettext.install() is that we allow overriding the default localedir (e.g. /usr/share/locale) using a translation-domain-specific environment variable (e.g. NOVA_LOCALEDIR). :param domain: the translation domain :param lazy: indicates whether or not to install the lazy _() function. The lazy _() introduces a way to do deferred translation of messages by installing a _ that builds Message objects, instead of strings, which can then be lazily translated into any available locale. """ if lazy: # NOTE(mrodden): Lazy gettext functionality. # # The following introduces a deferred way to do translations on # messages in OpenStack. We override the standard _() function # and % (format string) operation to build Message objects that can # later be translated when we have more information. def _lazy_gettext(msg): """Create and return a Message object. Lazy gettext function for a given domain, it is a factory method for a project/module to get a lazy gettext function for its own translation domain (i.e. nova, glance, cinder, etc.) Message encapsulates a string so that we can translate it later when needed. """ return Message(msg, domain=domain) from six import moves moves.builtins.__dict__['_'] = _lazy_gettext else: localedir = '%s_LOCALEDIR' % domain.upper() if six.PY3: gettext.install(domain, localedir=os.environ.get(localedir)) else: gettext.install(domain, localedir=os.environ.get(localedir), unicode=True) class Message(six.text_type): """A Message object is a unicode object that can be translated. Translation of Message is done explicitly using the translate() method. For all non-translation intents and purposes, a Message is simply unicode, and can be treated as such. """ def __new__(cls, msgid, msgtext=None, params=None, domain='cinder', *args): """Create a new Message object. In order for translation to work gettext requires a message ID, this msgid will be used as the base unicode text. It is also possible for the msgid and the base unicode text to be different by passing the msgtext parameter. """ # If the base msgtext is not given, we use the default translation # of the msgid (which is in English) just in case the system locale is # not English, so that the base text will be in that locale by default. if not msgtext: msgtext = Message._translate_msgid(msgid, domain) # We want to initialize the parent unicode with the actual object that # would have been plain unicode if 'Message' was not enabled. msg = super(Message, cls).__new__(cls, msgtext) msg.msgid = msgid msg.domain = domain msg.params = params return msg def translate(self, desired_locale=None): """Translate this message to the desired locale. :param desired_locale: The desired locale to translate the message to, if no locale is provided the message will be translated to the system's default locale. :returns: the translated message in unicode """ translated_message = Message._translate_msgid(self.msgid, self.domain, desired_locale) if self.params is None: # No need for more translation return translated_message # This Message object may have been formatted with one or more # Message objects as substitution arguments, given either as a single # argument, part of a tuple, or as one or more values in a dictionary. # When translating this Message we need to translate those Messages too translated_params = _translate_args(self.params, desired_locale) translated_message = translated_message % translated_params return translated_message @staticmethod def _translate_msgid(msgid, domain, desired_locale=None): if not desired_locale: system_locale = locale.getdefaultlocale() # If the system locale is not available to the runtime use English if not system_locale[0]: desired_locale = 'en_US' else: desired_locale = system_locale[0] locale_dir = os.environ.get(domain.upper() + '_LOCALEDIR') lang = gettext.translation(domain, localedir=locale_dir, languages=[desired_locale], fallback=True) if six.PY3: translator = lang.gettext else: translator = lang.ugettext translated_message = translator(msgid) return translated_message def __mod__(self, other): # When we mod a Message we want the actual operation to be performed # by the parent class (i.e. unicode()), the only thing we do here is # save the original msgid and the parameters in case of a translation params = self._sanitize_mod_params(other) unicode_mod = super(Message, self).__mod__(params) modded = Message(self.msgid, msgtext=unicode_mod, params=params, domain=self.domain) return modded def _sanitize_mod_params(self, other): """Sanitize the object being modded with this Message. - Add support for modding 'None' so translation supports it - Trim the modded object, which can be a large dictionary, to only those keys that would actually be used in a translation - Snapshot the object being modded, in case the message is translated, it will be used as it was when the Message was created """ if other is None: params = (other,) elif isinstance(other, dict): # Merge the dictionaries # Copy each item in case one does not support deep copy. params = {} if isinstance(self.params, dict): for key, val in self.params.items(): params[key] = self._copy_param(val) for key, val in other.items(): params[key] = self._copy_param(val) else: params = self._copy_param(other) return params def _copy_param(self, param): try: return copy.deepcopy(param) except Exception: # Fallback to casting to unicode this will handle the # python code-like objects that can't be deep-copied return six.text_type(param) def __add__(self, other): msg = _('Message objects do not support addition.') raise TypeError(msg) def __radd__(self, other): return self.__add__(other) def __str__(self): # NOTE(luisg): Logging in python 2.6 tries to str() log records, # and it expects specifically a UnicodeError in order to proceed. msg = _('Message objects do not support str() because they may ' 'contain non-ascii characters. ' 'Please use unicode() or translate() instead.') raise UnicodeError(msg) def get_available_languages(domain): """Lists the available languages for the given translation domain. :param domain: the domain to get languages for """ if domain in _AVAILABLE_LANGUAGES: return copy.copy(_AVAILABLE_LANGUAGES[domain]) localedir = '%s_LOCALEDIR' % domain.upper() find = lambda x: gettext.find(domain, localedir=os.environ.get(localedir), languages=[x]) # NOTE(mrodden): en_US should always be available (and first in case # order matters) since our in-line message strings are en_US language_list = ['en_US'] # NOTE(luisg): Babel <1.0 used a function called list(), which was # renamed to locale_identifiers() in >=1.0, the requirements master list # requires >=0.9.6, uncapped, so defensively work with both. We can remove # this check when the master list updates to >=1.0, and update all projects list_identifiers = (getattr(localedata, 'list', None) or getattr(localedata, 'locale_identifiers')) locale_identifiers = list_identifiers() for i in locale_identifiers: if find(i) is not None: language_list.append(i) # NOTE(luisg): Babel>=1.0,<1.3 has a bug where some OpenStack supported # locales (e.g. 'zh_CN', and 'zh_TW') aren't supported even though they # are perfectly legitimate locales: # https://github.com/mitsuhiko/babel/issues/37 # In Babel 1.3 they fixed the bug and they support these locales, but # they are still not explicitly "listed" by locale_identifiers(). # That is why we add the locales here explicitly if necessary so that # they are listed as supported. aliases = {'zh': 'zh_CN', 'zh_Hant_HK': 'zh_HK', 'zh_Hant': 'zh_TW', 'fil': 'tl_PH'} for (locale, alias) in six.iteritems(aliases): if locale in language_list and alias not in language_list: language_list.append(alias) _AVAILABLE_LANGUAGES[domain] = language_list return copy.copy(language_list) def translate(obj, desired_locale=None): """Gets the translated unicode representation of the given object. If the object is not translatable it is returned as-is. If the locale is None the object is translated to the system locale. :param obj: the object to translate :param desired_locale: the locale to translate the message to, if None the default system locale will be used :returns: the translated object in unicode, or the original object if it could not be translated """ message = obj if not isinstance(message, Message): # If the object to translate is not already translatable, # let's first get its unicode representation message = six.text_type(obj) if isinstance(message, Message): # Even after unicoding() we still need to check if we are # running with translatable unicode before translating return message.translate(desired_locale) return obj def _translate_args(args, desired_locale=None): """Translates all the translatable elements of the given arguments object. This method is used for translating the translatable values in method arguments which include values of tuples or dictionaries. If the object is not a tuple or a dictionary the object itself is translated if it is translatable. If the locale is None the object is translated to the system locale. :param args: the args to translate :param desired_locale: the locale to translate the args to, if None the default system locale will be used :returns: a new args object with the translated contents of the original """ if isinstance(args, tuple): return tuple(translate(v, desired_locale) for v in args) if isinstance(args, dict): translated_dict = {} for (k, v) in six.iteritems(args): translated_v = translate(v, desired_locale) translated_dict[k] = translated_v return translated_dict return translate(args, desired_locale) class TranslationHandler(handlers.MemoryHandler): """Handler that translates records before logging them. The TranslationHandler takes a locale and a target logging.Handler object to forward LogRecord objects to after translating them. This handler depends on Message objects being logged, instead of regular strings. The handler can be configured declaratively in the logging.conf as follows: [handlers] keys = translatedlog, translator [handler_translatedlog] class = handlers.WatchedFileHandler args = ('/var/log/api-localized.log',) formatter = context [handler_translator] class = openstack.common.log.TranslationHandler target = translatedlog args = ('zh_CN',) If the specified locale is not available in the system, the handler will log in the default locale. """ def __init__(self, locale=None, target=None): """Initialize a TranslationHandler :param locale: locale to use for translating messages :param target: logging.Handler object to forward LogRecord objects to after translation """ # NOTE(luisg): In order to allow this handler to be a wrapper for # other handlers, such as a FileHandler, and still be able to # configure it using logging.conf, this handler has to extend # MemoryHandler because only the MemoryHandlers' logging.conf # parsing is implemented such that it accepts a target handler. handlers.MemoryHandler.__init__(self, capacity=0, target=target) self.locale = locale def setFormatter(self, fmt): self.target.setFormatter(fmt) def emit(self, record): # We save the message from the original record to restore it # after translation, so other handlers are not affected by this original_msg = record.msg original_args = record.args try: self._translate_and_log_record(record) finally: record.msg = original_msg record.args = original_args def _translate_and_log_record(self, record): record.msg = translate(record.msg, self.locale) # In addition to translating the message, we also need to translate # arguments that were passed to the log method that were not part # of the main message e.g., log.info(_('Some message %s'), this_one)) record.args = _translate_args(record.args, self.locale) self.target.emit(record) cinder-2014.1.5/cinder/openstack/common/sslutils.py0000664000567000056700000000543112540642606023337 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import os import ssl from oslo.config import cfg from cinder.openstack.common.gettextutils import _ ssl_opts = [ cfg.StrOpt('ca_file', default=None, help="CA certificate file to use to verify " "connecting clients"), cfg.StrOpt('cert_file', default=None, help="Certificate file to use when starting " "the server securely"), cfg.StrOpt('key_file', default=None, help="Private key file to use when starting " "the server securely"), ] CONF = cfg.CONF CONF.register_opts(ssl_opts, "ssl") def is_enabled(): cert_file = CONF.ssl.cert_file key_file = CONF.ssl.key_file ca_file = CONF.ssl.ca_file use_ssl = cert_file or key_file if cert_file and not os.path.exists(cert_file): raise RuntimeError(_("Unable to find cert_file : %s") % cert_file) if ca_file and not os.path.exists(ca_file): raise RuntimeError(_("Unable to find ca_file : %s") % ca_file) if key_file and not os.path.exists(key_file): raise RuntimeError(_("Unable to find key_file : %s") % key_file) if use_ssl and (not cert_file or not key_file): raise RuntimeError(_("When running server in SSL mode, you must " "specify both a cert_file and key_file " "option value in your configuration file")) return use_ssl def wrap(sock): ssl_kwargs = { 'server_side': True, 'certfile': CONF.ssl.cert_file, 'keyfile': CONF.ssl.key_file, 'cert_reqs': ssl.CERT_NONE, } if CONF.ssl.ca_file: ssl_kwargs['ca_certs'] = CONF.ssl.ca_file ssl_kwargs['cert_reqs'] = ssl.CERT_REQUIRED return ssl.wrap_socket(sock, **ssl_kwargs) _SSL_PROTOCOLS = { "tlsv1": ssl.PROTOCOL_TLSv1, "sslv23": ssl.PROTOCOL_SSLv23, "sslv3": ssl.PROTOCOL_SSLv3 } try: _SSL_PROTOCOLS["sslv2"] = ssl.PROTOCOL_SSLv2 except AttributeError: pass def validate_ssl_version(version): key = version.lower() try: return _SSL_PROTOCOLS[key] except KeyError: raise RuntimeError(_("Invalid SSL version : %s") % version) cinder-2014.1.5/cinder/openstack/common/crypto/0000775000567000056700000000000012540643114022413 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/crypto/__init__.py0000664000567000056700000000000012540642606024517 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/crypto/utils.py0000664000567000056700000001406712540642606024142 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2013 Red Hat, Inc. # # 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. import base64 from Crypto.Hash import HMAC from Crypto import Random from cinder.openstack.common.gettextutils import _ # noqa from cinder.openstack.common import importutils class CryptoutilsException(Exception): """Generic Exception for Crypto utilities.""" message = _("An unknown error occurred in crypto utils.") class CipherBlockLengthTooBig(CryptoutilsException): """The block size is too big.""" def __init__(self, requested, permitted): msg = _("Block size of %(given)d is too big, max = %(maximum)d") message = msg % {'given': requested, 'maximum': permitted} super(CryptoutilsException, self).__init__(message) class HKDFOutputLengthTooLong(CryptoutilsException): """The amount of Key Material asked is too much.""" def __init__(self, requested, permitted): msg = _("Length of %(given)d is too long, max = %(maximum)d") message = msg % {'given': requested, 'maximum': permitted} super(CryptoutilsException, self).__init__(message) class HKDF(object): """An HMAC-based Key Derivation Function implementation (RFC5869) This class creates an object that allows to use HKDF to derive keys. """ def __init__(self, hashtype='SHA256'): self.hashfn = importutils.import_module('Crypto.Hash.' + hashtype) self.max_okm_length = 255 * self.hashfn.digest_size def extract(self, ikm, salt=None): """An extract function that can be used to derive a robust key given weak Input Key Material (IKM) which could be a password. Returns a pseudorandom key (of HashLen octets) :param ikm: input keying material (ex a password) :param salt: optional salt value (a non-secret random value) """ if salt is None: salt = '\x00' * self.hashfn.digest_size return HMAC.new(salt, ikm, self.hashfn).digest() def expand(self, prk, info, length): """An expand function that will return arbitrary length output that can be used as keys. Returns a buffer usable as key material. :param prk: a pseudorandom key of at least HashLen octets :param info: optional string (can be a zero-length string) :param length: length of output keying material (<= 255 * HashLen) """ if length > self.max_okm_length: raise HKDFOutputLengthTooLong(length, self.max_okm_length) N = (length + self.hashfn.digest_size - 1) / self.hashfn.digest_size okm = "" tmp = "" for block in range(1, N + 1): tmp = HMAC.new(prk, tmp + info + chr(block), self.hashfn).digest() okm += tmp return okm[:length] MAX_CB_SIZE = 256 class SymmetricCrypto(object): """Symmetric Key Crypto object. This class creates a Symmetric Key Crypto object that can be used to encrypt, decrypt, or sign arbitrary data. :param enctype: Encryption Cipher name (default: AES) :param hashtype: Hash/HMAC type name (default: SHA256) """ def __init__(self, enctype='AES', hashtype='SHA256'): self.cipher = importutils.import_module('Crypto.Cipher.' + enctype) self.hashfn = importutils.import_module('Crypto.Hash.' + hashtype) def new_key(self, size): return Random.new().read(size) def encrypt(self, key, msg, b64encode=True): """Encrypt the provided msg and returns the cyphertext optionally base64 encoded. Uses AES-128-CBC with a Random IV by default. The plaintext is padded to reach blocksize length. The last byte of the block is the length of the padding. The length of the padding does not include the length byte itself. :param key: The Encryption key. :param msg: the plain text. :returns encblock: a block of encrypted data. """ iv = Random.new().read(self.cipher.block_size) cipher = self.cipher.new(key, self.cipher.MODE_CBC, iv) # CBC mode requires a fixed block size. Append padding and length of # padding. if self.cipher.block_size > MAX_CB_SIZE: raise CipherBlockLengthTooBig(self.cipher.block_size, MAX_CB_SIZE) r = len(msg) % self.cipher.block_size padlen = self.cipher.block_size - r - 1 msg += '\x00' * padlen msg += chr(padlen) enc = iv + cipher.encrypt(msg) if b64encode: enc = base64.b64encode(enc) return enc def decrypt(self, key, msg, b64decode=True): """Decrypts the provided ciphertext, optionally base 64 encoded, and returns the plaintext message, after padding is removed. Uses AES-128-CBC with an IV by default. :param key: The Encryption key. :param msg: the ciphetext, the first block is the IV """ if b64decode: msg = base64.b64decode(msg) iv = msg[:self.cipher.block_size] cipher = self.cipher.new(key, self.cipher.MODE_CBC, iv) padded = cipher.decrypt(msg[self.cipher.block_size:]) l = ord(padded[-1]) + 1 plain = padded[:-l] return plain def sign(self, key, msg, b64encode=True): """Signs a message string and returns a base64 encoded signature. Uses HMAC-SHA-256 by default. :param key: The Signing key. :param msg: the message to sign. """ h = HMAC.new(key, msg, self.hashfn) out = h.digest() if b64encode: out = base64.b64encode(out) return out cinder-2014.1.5/cinder/openstack/common/jsonutils.py0000664000567000056700000001424212540642606023507 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. ''' JSON related utilities. This module provides a few things: 1) A handy function for getting an object down to something that can be JSON serialized. See to_primitive(). 2) Wrappers around loads() and dumps(). The dumps() wrapper will automatically use to_primitive() for you if needed. 3) This sets up anyjson to use the loads() and dumps() wrappers if anyjson is available. ''' import datetime import functools import inspect import itertools import json import six import six.moves.xmlrpc_client as xmlrpclib from cinder.openstack.common import gettextutils from cinder.openstack.common import importutils from cinder.openstack.common import timeutils netaddr = importutils.try_import("netaddr") _nasty_type_tests = [inspect.ismodule, inspect.isclass, inspect.ismethod, inspect.isfunction, inspect.isgeneratorfunction, inspect.isgenerator, inspect.istraceback, inspect.isframe, inspect.iscode, inspect.isbuiltin, inspect.isroutine, inspect.isabstract] _simple_types = (six.string_types + six.integer_types + (type(None), bool, float)) def to_primitive(value, convert_instances=False, convert_datetime=True, level=0, max_depth=3): """Convert a complex object into primitives. Handy for JSON serialization. We can optionally handle instances, but since this is a recursive function, we could have cyclical data structures. To handle cyclical data structures we could track the actual objects visited in a set, but not all objects are hashable. Instead we just track the depth of the object inspections and don't go too deep. Therefore, convert_instances=True is lossy ... be aware. """ # handle obvious types first - order of basic types determined by running # full tests on nova project, resulting in the following counts: # 572754 # 460353 # 379632 # 274610 # 199918 # 114200 # 51817 # 26164 # 6491 # 283 # 19 if isinstance(value, _simple_types): return value if isinstance(value, datetime.datetime): if convert_datetime: return timeutils.strtime(value) else: return value # value of itertools.count doesn't get caught by nasty_type_tests # and results in infinite loop when list(value) is called. if type(value) == itertools.count: return six.text_type(value) # FIXME(vish): Workaround for LP bug 852095. Without this workaround, # tests that raise an exception in a mocked method that # has a @wrap_exception with a notifier will fail. If # we up the dependency to 0.5.4 (when it is released) we # can remove this workaround. if getattr(value, '__module__', None) == 'mox': return 'mock' if level > max_depth: return '?' # The try block may not be necessary after the class check above, # but just in case ... try: recursive = functools.partial(to_primitive, convert_instances=convert_instances, convert_datetime=convert_datetime, level=level, max_depth=max_depth) if isinstance(value, dict): return dict((k, recursive(v)) for k, v in six.iteritems(value)) elif isinstance(value, (list, tuple)): return [recursive(lv) for lv in value] # It's not clear why xmlrpclib created their own DateTime type, but # for our purposes, make it a datetime type which is explicitly # handled if isinstance(value, xmlrpclib.DateTime): value = datetime.datetime(*tuple(value.timetuple())[:6]) if convert_datetime and isinstance(value, datetime.datetime): return timeutils.strtime(value) elif isinstance(value, gettextutils.Message): return value.data elif hasattr(value, 'iteritems'): return recursive(dict(value.iteritems()), level=level + 1) elif hasattr(value, '__iter__'): return recursive(list(value)) elif convert_instances and hasattr(value, '__dict__'): # Likely an instance of something. Watch for cycles. # Ignore class member vars. return recursive(value.__dict__, level=level + 1) elif netaddr and isinstance(value, netaddr.IPAddress): return six.text_type(value) else: if any(test(value) for test in _nasty_type_tests): return six.text_type(value) return value except TypeError: # Class objects are tricky since they may define something like # __iter__ defined but it isn't callable as list(). return six.text_type(value) def dumps(value, default=to_primitive, **kwargs): return json.dumps(value, default=default, **kwargs) def loads(s): return json.loads(s) def load(s): return json.load(s) try: import anyjson except ImportError: pass else: anyjson._modules.append((__name__, 'dumps', TypeError, 'loads', ValueError, 'load')) anyjson.force_implementation(__name__) cinder-2014.1.5/cinder/openstack/common/timeutils.py0000664000567000056700000001424112540642606023473 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ Time related utilities and helper functions. """ import calendar import datetime import time import iso8601 import six # ISO 8601 extended time format with microseconds _ISO8601_TIME_FORMAT_SUBSECOND = '%Y-%m-%dT%H:%M:%S.%f' _ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S' PERFECT_TIME_FORMAT = _ISO8601_TIME_FORMAT_SUBSECOND def isotime(at=None, subsecond=False): """Stringify time in ISO 8601 format.""" if not at: at = utcnow() st = at.strftime(_ISO8601_TIME_FORMAT if not subsecond else _ISO8601_TIME_FORMAT_SUBSECOND) tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC' st += ('Z' if tz == 'UTC' else tz) return st def parse_isotime(timestr): """Parse time from ISO 8601 format.""" try: return iso8601.parse_date(timestr) except iso8601.ParseError as e: raise ValueError(six.text_type(e)) except TypeError as e: raise ValueError(six.text_type(e)) def strtime(at=None, fmt=PERFECT_TIME_FORMAT): """Returns formatted utcnow.""" if not at: at = utcnow() return at.strftime(fmt) def parse_strtime(timestr, fmt=PERFECT_TIME_FORMAT): """Turn a formatted time back into a datetime.""" return datetime.datetime.strptime(timestr, fmt) def normalize_time(timestamp): """Normalize time in arbitrary timezone to UTC naive object.""" offset = timestamp.utcoffset() if offset is None: return timestamp return timestamp.replace(tzinfo=None) - offset def is_older_than(before, seconds): """Return True if before is older than seconds.""" if isinstance(before, six.string_types): before = parse_strtime(before).replace(tzinfo=None) else: before = before.replace(tzinfo=None) return utcnow() - before > datetime.timedelta(seconds=seconds) def is_newer_than(after, seconds): """Return True if after is newer than seconds.""" if isinstance(after, six.string_types): after = parse_strtime(after).replace(tzinfo=None) else: after = after.replace(tzinfo=None) return after - utcnow() > datetime.timedelta(seconds=seconds) def utcnow_ts(): """Timestamp version of our utcnow function.""" if utcnow.override_time is None: # NOTE(kgriffs): This is several times faster # than going through calendar.timegm(...) return int(time.time()) return calendar.timegm(utcnow().timetuple()) def utcnow(): """Overridable version of utils.utcnow.""" if utcnow.override_time: try: return utcnow.override_time.pop(0) except AttributeError: return utcnow.override_time return datetime.datetime.utcnow() def iso8601_from_timestamp(timestamp): """Returns a iso8601 formatted date from timestamp.""" return isotime(datetime.datetime.utcfromtimestamp(timestamp)) utcnow.override_time = None def set_time_override(override_time=None): """Overrides utils.utcnow. Make it return a constant time or a list thereof, one at a time. :param override_time: datetime instance or list thereof. If not given, defaults to the current UTC time. """ utcnow.override_time = override_time or datetime.datetime.utcnow() def advance_time_delta(timedelta): """Advance overridden time using a datetime.timedelta.""" assert(not utcnow.override_time is None) try: for dt in utcnow.override_time: dt += timedelta except TypeError: utcnow.override_time += timedelta def advance_time_seconds(seconds): """Advance overridden time by seconds.""" advance_time_delta(datetime.timedelta(0, seconds)) def clear_time_override(): """Remove the overridden time.""" utcnow.override_time = None def marshall_now(now=None): """Make an rpc-safe datetime with microseconds. Note: tzinfo is stripped, but not required for relative times. """ if not now: now = utcnow() return dict(day=now.day, month=now.month, year=now.year, hour=now.hour, minute=now.minute, second=now.second, microsecond=now.microsecond) def unmarshall_time(tyme): """Unmarshall a datetime dict.""" return datetime.datetime(day=tyme['day'], month=tyme['month'], year=tyme['year'], hour=tyme['hour'], minute=tyme['minute'], second=tyme['second'], microsecond=tyme['microsecond']) def delta_seconds(before, after): """Return the difference between two timing objects. Compute the difference in seconds between two date, time, or datetime objects (as a float, to microsecond resolution). """ delta = after - before return total_seconds(delta) def total_seconds(delta): """Return the total seconds of datetime.timedelta object. Compute total seconds of datetime.timedelta, datetime.timedelta doesn't have method total_seconds in Python2.6, calculate it manually. """ try: return delta.total_seconds() except AttributeError: return ((delta.days * 24 * 3600) + delta.seconds + float(delta.microseconds) / (10 ** 6)) def is_soon(dt, window): """Determines if time is going to happen in the next window seconds. :param dt: the time :param window: minimum seconds to remain to consider the time not soon :return: True if expiration is within the given duration """ soon = (utcnow() + datetime.timedelta(seconds=window)) return normalize_time(dt) <= soon cinder-2014.1.5/cinder/openstack/common/excutils.py0000664000567000056700000000717112540642606023320 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # Copyright 2012, Red Hat, Inc. # # 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. """ Exception related utilities. """ import logging import sys import time import traceback import six from cinder.openstack.common.gettextutils import _ class save_and_reraise_exception(object): """Save current exception, run some code and then re-raise. In some cases the exception context can be cleared, resulting in None being attempted to be re-raised after an exception handler is run. This can happen when eventlet switches greenthreads or when running an exception handler, code raises and catches an exception. In both cases the exception context will be cleared. To work around this, we save the exception state, run handler code, and then re-raise the original exception. If another exception occurs, the saved exception is logged and the new exception is re-raised. In some cases the caller may not want to re-raise the exception, and for those circumstances this context provides a reraise flag that can be used to suppress the exception. For example:: except Exception: with save_and_reraise_exception() as ctxt: decide_if_need_reraise() if not should_be_reraised: ctxt.reraise = False """ def __init__(self): self.reraise = True def __enter__(self): self.type_, self.value, self.tb, = sys.exc_info() return self def __exit__(self, exc_type, exc_val, exc_tb): if exc_type is not None: logging.error(_('Original exception being dropped: %s'), traceback.format_exception(self.type_, self.value, self.tb)) return False if self.reraise: six.reraise(self.type_, self.value, self.tb) def forever_retry_uncaught_exceptions(infunc): def inner_func(*args, **kwargs): last_log_time = 0 last_exc_message = None exc_count = 0 while True: try: return infunc(*args, **kwargs) except Exception as exc: this_exc_message = six.u(str(exc)) if this_exc_message == last_exc_message: exc_count += 1 else: exc_count = 1 # Do not log any more frequently than once a minute unless # the exception message changes cur_time = int(time.time()) if (cur_time - last_log_time > 60 or this_exc_message != last_exc_message): logging.exception( _('Unexpected exception occurred %d time(s)... ' 'retrying.') % exc_count) last_log_time = cur_time last_exc_message = this_exc_message exc_count = 0 # This should be a very rare event. In case it isn't, do # a sleep. time.sleep(1) return inner_func cinder-2014.1.5/cinder/openstack/common/network_utils.py0000664000567000056700000000514212540642606024365 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation. # All Rights Reserved. # # 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. """ Network-related utilities and helper functions. """ from six.moves.urllib import parse def parse_host_port(address, default_port=None): """Interpret a string as a host:port pair. An IPv6 address MUST be escaped if accompanied by a port, because otherwise ambiguity ensues: 2001:db8:85a3::8a2e:370:7334 means both [2001:db8:85a3::8a2e:370:7334] and [2001:db8:85a3::8a2e:370]:7334. >>> parse_host_port('server01:80') ('server01', 80) >>> parse_host_port('server01') ('server01', None) >>> parse_host_port('server01', default_port=1234) ('server01', 1234) >>> parse_host_port('[::1]:80') ('::1', 80) >>> parse_host_port('[::1]') ('::1', None) >>> parse_host_port('[::1]', default_port=1234) ('::1', 1234) >>> parse_host_port('2001:db8:85a3::8a2e:370:7334', default_port=1234) ('2001:db8:85a3::8a2e:370:7334', 1234) """ if address[0] == '[': # Escaped ipv6 _host, _port = address[1:].split(']') host = _host if ':' in _port: port = _port.split(':')[1] else: port = default_port else: if address.count(':') == 1: host, port = address.split(':') else: # 0 means ipv4, >1 means ipv6. # We prohibit unescaped ipv6 addresses with port. host = address port = default_port return (host, None if port is None else int(port)) def urlsplit(url, scheme='', allow_fragments=True): """Parse a URL using urlparse.urlsplit(), splitting query and fragments. This function papers over Python issue9374 when needed. The parameters are the same as urlparse.urlsplit. """ scheme, netloc, path, query, fragment = parse.urlsplit( url, scheme, allow_fragments) if allow_fragments and '#' in path: path, fragment = path.split('#', 1) if '?' in path: path, query = path.split('?', 1) return parse.SplitResult(scheme, netloc, path, query, fragment) cinder-2014.1.5/cinder/openstack/common/imageutils.py0000664000567000056700000001437312540642606023625 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright (c) 2010 Citrix Systems, Inc. # # 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. """ Helper methods to deal with images. """ import re from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import strutils class QemuImgInfo(object): BACKING_FILE_RE = re.compile((r"^(.*?)\s*\(actual\s+path\s*:" r"\s+(.*?)\)\s*$"), re.I) TOP_LEVEL_RE = re.compile(r"^([\w\d\s\_\-]+):(.*)$") SIZE_RE = re.compile(r"(\d*\.?\d+)(\w+)?(\s*\(\s*(\d+)\s+bytes\s*\))?", re.I) def __init__(self, cmd_output=None): details = self._parse(cmd_output or '') self.image = details.get('image') self.backing_file = details.get('backing_file') self.file_format = details.get('file_format') self.virtual_size = details.get('virtual_size') self.cluster_size = details.get('cluster_size') self.disk_size = details.get('disk_size') self.snapshots = details.get('snapshot_list', []) self.encrypted = details.get('encrypted') def __str__(self): lines = [ 'image: %s' % self.image, 'file_format: %s' % self.file_format, 'virtual_size: %s' % self.virtual_size, 'disk_size: %s' % self.disk_size, 'cluster_size: %s' % self.cluster_size, 'backing_file: %s' % self.backing_file, ] if self.snapshots: lines.append("snapshots: %s" % self.snapshots) if self.encrypted: lines.append("encrypted: %s" % self.encrypted) return "\n".join(lines) def _canonicalize(self, field): # Standardize on underscores/lc/no dash and no spaces # since qemu seems to have mixed outputs here... and # this format allows for better integration with python # - ie for usage in kwargs and such... field = field.lower().strip() for c in (" ", "-"): field = field.replace(c, '_') return field def _extract_bytes(self, details): # Replace it with the byte amount real_size = self.SIZE_RE.search(details) if not real_size: raise ValueError(_('Invalid input value "%s".') % details) magnitude = real_size.group(1) unit_of_measure = real_size.group(2) bytes_info = real_size.group(3) if bytes_info: return int(real_size.group(4)) elif not unit_of_measure: return int(magnitude) return strutils.string_to_bytes('%s%sB' % (magnitude, unit_of_measure), return_int=True) def _extract_details(self, root_cmd, root_details, lines_after): real_details = root_details if root_cmd == 'backing_file': # Replace it with the real backing file backing_match = self.BACKING_FILE_RE.match(root_details) if backing_match: real_details = backing_match.group(2).strip() elif root_cmd in ['virtual_size', 'cluster_size', 'disk_size']: # Replace it with the byte amount (if we can convert it) if root_details == 'None': real_details = 0 else: real_details = self._extract_bytes(root_details) elif root_cmd == 'file_format': real_details = real_details.strip().lower() elif root_cmd == 'snapshot_list': # Next line should be a header, starting with 'ID' if not lines_after or not lines_after[0].startswith("ID"): msg = _("Snapshot list encountered but no header found!") raise ValueError(msg) del lines_after[0] real_details = [] # This is the sprintf pattern we will try to match # "%-10s%-20s%7s%20s%15s" # ID TAG VM SIZE DATE VM CLOCK (current header) while lines_after: line = lines_after[0] line_pieces = line.split() if len(line_pieces) != 6: break # Check against this pattern in the final position # "%02d:%02d:%02d.%03d" date_pieces = line_pieces[5].split(":") if len(date_pieces) != 3: break real_details.append({ 'id': line_pieces[0], 'tag': line_pieces[1], 'vm_size': line_pieces[2], 'date': line_pieces[3], 'vm_clock': line_pieces[4] + " " + line_pieces[5], }) del lines_after[0] return real_details def _parse(self, cmd_output): # Analysis done of qemu-img.c to figure out what is going on here # Find all points start with some chars and then a ':' then a newline # and then handle the results of those 'top level' items in a separate # function. # # TODO(harlowja): newer versions might have a json output format # we should switch to that whenever possible. # see: http://bit.ly/XLJXDX contents = {} lines = [x for x in cmd_output.splitlines() if x.strip()] while lines: line = lines.pop(0) top_level = self.TOP_LEVEL_RE.match(line) if top_level: root = self._canonicalize(top_level.group(1)) if not root: continue root_details = top_level.group(2).strip() details = self._extract_details(root, root_details, lines) contents[root] = details return contents cinder-2014.1.5/cinder/openstack/common/loopingcall.py0000664000567000056700000001101412540642606023752 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. import sys from eventlet import event from eventlet import greenthread from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils LOG = logging.getLogger(__name__) class LoopingCallDone(Exception): """Exception to break out and stop a LoopingCall. The poll-function passed to LoopingCall can raise this exception to break out of the loop normally. This is somewhat analogous to StopIteration. An optional return-value can be included as the argument to the exception; this return-value will be returned by LoopingCall.wait() """ def __init__(self, retvalue=True): """:param retvalue: Value that LoopingCall.wait() should return.""" self.retvalue = retvalue class LoopingCallBase(object): def __init__(self, f=None, *args, **kw): self.args = args self.kw = kw self.f = f self._running = False self.done = None def stop(self): self._running = False def wait(self): return self.done.wait() class FixedIntervalLoopingCall(LoopingCallBase): """A fixed interval looping call.""" def start(self, interval, initial_delay=None): self._running = True done = event.Event() def _inner(): if initial_delay: greenthread.sleep(initial_delay) try: while self._running: start = timeutils.utcnow() self.f(*self.args, **self.kw) end = timeutils.utcnow() if not self._running: break delay = interval - timeutils.delta_seconds(start, end) if delay <= 0: LOG.warn(_('task run outlasted interval by %s sec') % -delay) greenthread.sleep(delay if delay > 0 else 0) except LoopingCallDone as e: self.stop() done.send(e.retvalue) except Exception: LOG.exception(_('in fixed duration looping call')) done.send_exception(*sys.exc_info()) return else: done.send(True) self.done = done greenthread.spawn_n(_inner) return self.done # TODO(mikal): this class name is deprecated in Havana and should be removed # in the I release LoopingCall = FixedIntervalLoopingCall class DynamicLoopingCall(LoopingCallBase): """A looping call which sleeps until the next known event. The function called should return how long to sleep for before being called again. """ def start(self, initial_delay=None, periodic_interval_max=None): self._running = True done = event.Event() def _inner(): if initial_delay: greenthread.sleep(initial_delay) try: while self._running: idle = self.f(*self.args, **self.kw) if not self._running: break if periodic_interval_max is not None: idle = min(idle, periodic_interval_max) LOG.debug(_('Dynamic looping call sleeping for %.02f ' 'seconds'), idle) greenthread.sleep(idle) except LoopingCallDone as e: self.stop() done.send(e.retvalue) except Exception: LOG.exception(_('in dynamic looping call')) done.send_exception(*sys.exc_info()) return else: done.send(True) self.done = done greenthread.spawn(_inner) return self.done cinder-2014.1.5/cinder/openstack/common/policy.py0000664000567000056700000002233512540642606022756 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Common Policy Engine Implementation""" import logging import urllib import urllib2 from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import jsonutils LOG = logging.getLogger(__name__) _BRAIN = None def set_brain(brain): """Set the brain used by enforce(). Defaults use Brain() if not set. """ global _BRAIN _BRAIN = brain def reset(): """Clear the brain used by enforce().""" global _BRAIN _BRAIN = None def enforce(match_list, target_dict, credentials_dict, exc=None, *args, **kwargs): """Enforces authorization of some rules against credentials. :param match_list: nested tuples of data to match against The basic brain supports three types of match lists: 1) rules looks like: ``('rule:compute:get_instance',)`` Retrieves the named rule from the rules dict and recursively checks against the contents of the rule. 2) roles looks like: ``('role:compute:admin',)`` Matches if the specified role is in credentials_dict['roles']. 3) generic looks like: ``('tenant_id:%(tenant_id)s',)`` Substitutes values from the target dict into the match using the % operator and matches them against the creds dict. Combining rules: The brain returns True if any of the outer tuple of rules match and also True if all of the inner tuples match. You can use this to perform simple boolean logic. For example, the following rule would return True if the creds contain the role 'admin' OR the if the tenant_id matches the target dict AND the the creds contains the role 'compute_sysadmin': :: { "rule:combined": ( 'role:admin', ('tenant_id:%(tenant_id)s', 'role:compute_sysadmin') ) } Note that rule and role are reserved words in the credentials match, so you can't match against properties with those names. Custom brains may also add new reserved words. For example, the HttpBrain adds http as a reserved word. :param target_dict: dict of object properties Target dicts contain as much information as we can about the object being operated on. :param credentials_dict: dict of actor properties Credentials dicts contain as much information as we can about the user performing the action. :param exc: exception to raise Class of the exception to raise if the check fails. Any remaining arguments passed to enforce() (both positional and keyword arguments) will be passed to the exception class. If exc is not provided, returns False. :return: True if the policy allows the action :return: False if the policy does not allow the action and exc is not set """ global _BRAIN if not _BRAIN: _BRAIN = Brain() if not _BRAIN.check(match_list, target_dict, credentials_dict): if exc: raise exc(*args, **kwargs) return False return True class Brain(object): """Implements policy checking.""" _checks = {} @classmethod def _register(cls, name, func): cls._checks[name] = func @classmethod def load_json(cls, data, default_rule=None): """Init a brain using json instead of a rules dictionary.""" rules_dict = jsonutils.loads(data) return cls(rules=rules_dict, default_rule=default_rule) def __init__(self, rules=None, default_rule=None): if self.__class__ != Brain: LOG.warning(_("Inheritance-based rules are deprecated; use " "the default brain instead of %s.") % self.__class__.__name__) self.rules = rules or {} self.default_rule = default_rule def add_rule(self, key, match): self.rules[key] = match def _check(self, match, target_dict, cred_dict): try: match_kind, match_value = match.split(':', 1) except Exception: LOG.exception(_("Failed to understand rule %(match)r") % locals()) # If the rule is invalid, fail closed return False func = None try: old_func = getattr(self, '_check_%s' % match_kind) except AttributeError: func = self._checks.get(match_kind, self._checks.get(None, None)) else: LOG.warning(_("Inheritance-based rules are deprecated; update " "_check_%s") % match_kind) func = lambda brain, kind, value, target, cred: old_func(value, target, cred) if not func: LOG.error(_("No handler for matches of kind %s") % match_kind) # Fail closed return False return func(self, match_kind, match_value, target_dict, cred_dict) def check(self, match_list, target_dict, cred_dict): """Checks authorization of some rules against credentials. Detailed description of the check with examples in policy.enforce(). :param match_list: nested tuples of data to match against :param target_dict: dict of object properties :param credentials_dict: dict of actor properties :returns: True if the check passes """ if not match_list: return True for and_list in match_list: if isinstance(and_list, basestring): and_list = (and_list,) if all([self._check(item, target_dict, cred_dict) for item in and_list]): return True return False class HttpBrain(Brain): """A brain that can check external urls for policy. Posts json blobs for target and credentials. Note that this brain is deprecated; the http check is registered by default. """ pass def register(name, func=None): """ Register a function as a policy check. :param name: Gives the name of the check type, e.g., 'rule', 'role', etc. If name is None, a default function will be registered. :param func: If given, provides the function to register. If not given, returns a function taking one argument to specify the function to register, allowing use as a decorator. """ # Perform the actual decoration by registering the function. # Returns the function for compliance with the decorator # interface. def decorator(func): # Register the function Brain._register(name, func) return func # If the function is given, do the registration if func: return decorator(func) return decorator @register("rule") def _check_rule(brain, match_kind, match, target_dict, cred_dict): """Recursively checks credentials based on the brains rules.""" try: new_match_list = brain.rules[match] except KeyError: if brain.default_rule and match != brain.default_rule: new_match_list = ('rule:%s' % brain.default_rule,) else: return False return brain.check(new_match_list, target_dict, cred_dict) @register("role") def _check_role(brain, match_kind, match, target_dict, cred_dict): """Check that there is a matching role in the cred dict.""" return match.lower() in [x.lower() for x in cred_dict['roles']] @register('http') def _check_http(brain, match_kind, match, target_dict, cred_dict): """Check http: rules by calling to a remote server. This example implementation simply verifies that the response is exactly 'True'. A custom brain using response codes could easily be implemented. """ url = 'http:' + (match % target_dict) data = {'target': jsonutils.dumps(target_dict), 'credentials': jsonutils.dumps(cred_dict)} post_data = urllib.urlencode(data) f = urllib2.urlopen(url, post_data) return f.read() == "True" @register(None) def _check_generic(brain, match_kind, match, target_dict, cred_dict): """Check an individual match. Matches look like: tenant:%(tenant_id)s role:compute:admin """ # TODO(termie): do dict inspection via dot syntax match = match % target_dict if match_kind in cred_dict: return match == unicode(cred_dict[match_kind]) return False cinder-2014.1.5/cinder/openstack/common/README0000664000567000056700000000072312540642606021762 0ustar jenkinsjenkins00000000000000openstack-common ---------------- A number of modules from openstack-common are imported into this project. These modules are "incubating" in openstack-common and are kept in sync with the help of openstack-common's update.py script. See: https://wiki.openstack.org/wiki/Oslo#Syncing_Code_from_Incubator The copy of the code should never be directly modified here. Please always update openstack-common first and then run the script to copy the changes across. cinder-2014.1.5/cinder/openstack/common/log_handler.py0000664000567000056700000000215312540642606023731 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import logging from oslo.config import cfg from cinder import rpc class PublishErrorsHandler(logging.Handler): def emit(self, record): # NOTE(flaper87): This will have to be changed in the # future. Leaving for backwar compatibility if ('cinder.openstack.common.notifier.log_notifier' in cfg.CONF.notification_driver): return rpc.get_notifier('error.publisher').info('error_notification', dict(error=record.msg)) cinder-2014.1.5/cinder/openstack/common/log.py0000664000567000056700000006227612540642606022250 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """OpenStack logging handler. This module adds to logging functionality by adding the option to specify a context object when calling the various log methods. If the context object is not specified, default formatting is used. Additionally, an instance uuid may be passed as part of the log message, which is intended to make it easier for admins to find messages related to a specific instance. It also allows setting of formatting information through conf. """ import inspect import itertools import logging import logging.config import logging.handlers import os import re import sys import traceback from oslo.config import cfg import six from six import moves from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import importutils from cinder.openstack.common import jsonutils from cinder.openstack.common import local _DEFAULT_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" _SANITIZE_KEYS = ['adminPass', 'admin_pass', 'password', 'admin_password'] # NOTE(ldbragst): Let's build a list of regex objects using the list of # _SANITIZE_KEYS we already have. This way, we only have to add the new key # to the list of _SANITIZE_KEYS and we can generate regular expressions # for XML and JSON automatically. _SANITIZE_PATTERNS = [] _FORMAT_PATTERNS = [r'(%(key)s\s*[=]\s*[\"\']).*?([\"\'])', r'(<%(key)s>).*?()', r'([\"\']%(key)s[\"\']\s*:\s*[\"\']).*?([\"\'])', r'([\'"].*?%(key)s[\'"]\s*:\s*u?[\'"]).*?([\'"])'] for key in _SANITIZE_KEYS: for pattern in _FORMAT_PATTERNS: reg_ex = re.compile(pattern % {'key': key}, re.DOTALL) _SANITIZE_PATTERNS.append(reg_ex) common_cli_opts = [ cfg.BoolOpt('debug', short='d', default=False, help='Print debugging output (set logging level to ' 'DEBUG instead of default WARNING level).'), cfg.BoolOpt('verbose', short='v', default=False, help='Print more verbose output (set logging level to ' 'INFO instead of default WARNING level).'), ] logging_cli_opts = [ cfg.StrOpt('log-config-append', metavar='PATH', deprecated_name='log-config', help='The name of logging configuration file. It does not ' 'disable existing loggers, but just appends specified ' 'logging configuration to any other existing logging ' 'options. Please see the Python logging module ' 'documentation for details on logging configuration ' 'files.'), cfg.StrOpt('log-format', default=None, metavar='FORMAT', help='DEPRECATED. ' 'A logging.Formatter log message format string which may ' 'use any of the available logging.LogRecord attributes. ' 'This option is deprecated. Please use ' 'logging_context_format_string and ' 'logging_default_format_string instead.'), cfg.StrOpt('log-date-format', default=_DEFAULT_LOG_DATE_FORMAT, metavar='DATE_FORMAT', help='Format string for %%(asctime)s in log records. ' 'Default: %(default)s'), cfg.StrOpt('log-file', metavar='PATH', deprecated_name='logfile', help='(Optional) Name of log file to output to. ' 'If no default is set, logging will go to stdout.'), cfg.StrOpt('log-dir', deprecated_name='logdir', help='(Optional) The base directory used for relative ' '--log-file paths'), cfg.BoolOpt('use-syslog', default=False, help='Use syslog for logging. ' 'Existing syslog format is DEPRECATED during I, ' 'and then will be changed in J to honor RFC5424'), cfg.BoolOpt('use-syslog-rfc-format', # TODO(bogdando) remove or use True after existing # syslog format deprecation in J default=False, help='(Optional) Use syslog rfc5424 format for logging. ' 'If enabled, will add APP-NAME (RFC5424) before the ' 'MSG part of the syslog message. The old format ' 'without APP-NAME is deprecated in I, ' 'and will be removed in J.'), cfg.StrOpt('syslog-log-facility', default='LOG_USER', help='Syslog facility to receive log lines') ] generic_log_opts = [ cfg.BoolOpt('use_stderr', default=True, help='Log output to standard error') ] log_opts = [ cfg.StrOpt('logging_context_format_string', default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' '%(name)s [%(request_id)s %(user_identity)s] ' '%(instance)s%(message)s', help='Format string to use for log messages with context'), cfg.StrOpt('logging_default_format_string', default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' '%(name)s [-] %(instance)s%(message)s', help='Format string to use for log messages without context'), cfg.StrOpt('logging_debug_format_suffix', default='%(funcName)s %(pathname)s:%(lineno)d', help='Data to append to log format when level is DEBUG'), cfg.StrOpt('logging_exception_prefix', default='%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s ' '%(instance)s', help='Prefix each line of exception output with this format'), cfg.ListOpt('default_log_levels', default=[ 'amqp=WARN', 'amqplib=WARN', 'boto=WARN', 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', 'oslo.messaging=INFO', 'iso8601=WARN', 'requests.packages.urllib3.connectionpool=WARN' ], help='List of logger=LEVEL pairs'), cfg.BoolOpt('publish_errors', default=False, help='Publish error events'), cfg.BoolOpt('fatal_deprecations', default=False, help='Make deprecations fatal'), # NOTE(mikal): there are two options here because sometimes we are handed # a full instance (and could include more information), and other times we # are just handed a UUID for the instance. cfg.StrOpt('instance_format', default='[instance: %(uuid)s] ', help='If an instance is passed with the log message, format ' 'it like this'), cfg.StrOpt('instance_uuid_format', default='[instance: %(uuid)s] ', help='If an instance UUID is passed with the log message, ' 'format it like this'), ] CONF = cfg.CONF CONF.register_cli_opts(common_cli_opts) CONF.register_cli_opts(logging_cli_opts) CONF.register_opts(generic_log_opts) CONF.register_opts(log_opts) # our new audit level # NOTE(jkoelker) Since we synthesized an audit level, make the logging # module aware of it so it acts like other levels. logging.AUDIT = logging.INFO + 1 logging.addLevelName(logging.AUDIT, 'AUDIT') try: NullHandler = logging.NullHandler except AttributeError: # NOTE(jkoelker) NullHandler added in Python 2.7 class NullHandler(logging.Handler): def handle(self, record): pass def emit(self, record): pass def createLock(self): self.lock = None def _dictify_context(context): if context is None: return None if not isinstance(context, dict) and getattr(context, 'to_dict', None): context = context.to_dict() return context def _get_binary_name(): return os.path.basename(inspect.stack()[-1][1]) def _get_log_file_path(binary=None): logfile = CONF.log_file logdir = CONF.log_dir if logfile and not logdir: return logfile if logfile and logdir: return os.path.join(logdir, logfile) if logdir: binary = binary or _get_binary_name() return '%s.log' % (os.path.join(logdir, binary),) return None def mask_password(message, secret="***"): """Replace password with 'secret' in message. :param message: The string which includes security information. :param secret: value with which to replace passwords. :returns: The unicode value of message with the password fields masked. For example: >>> mask_password("'adminPass' : 'aaaaa'") "'adminPass' : '***'" >>> mask_password("'admin_pass' : 'aaaaa'") "'admin_pass' : '***'" >>> mask_password('"password" : "aaaaa"') '"password" : "***"' >>> mask_password("'original_password' : 'aaaaa'") "'original_password' : '***'" >>> mask_password("u'original_password' : u'aaaaa'") "u'original_password' : u'***'" """ message = six.text_type(message) # NOTE(ldbragst): Check to see if anything in message contains any key # specified in _SANITIZE_KEYS, if not then just return the message since # we don't have to mask any passwords. if not any(key in message for key in _SANITIZE_KEYS): return message secret = r'\g<1>' + secret + r'\g<2>' for pattern in _SANITIZE_PATTERNS: message = re.sub(pattern, secret, message) return message class BaseLoggerAdapter(logging.LoggerAdapter): def audit(self, msg, *args, **kwargs): self.log(logging.AUDIT, msg, *args, **kwargs) class LazyAdapter(BaseLoggerAdapter): def __init__(self, name='unknown', version='unknown'): self._logger = None self.extra = {} self.name = name self.version = version @property def logger(self): if not self._logger: self._logger = getLogger(self.name, self.version) return self._logger class ContextAdapter(BaseLoggerAdapter): warn = logging.LoggerAdapter.warning def __init__(self, logger, project_name, version_string): self.logger = logger self.project = project_name self.version = version_string self._deprecated_messages_sent = dict() @property def handlers(self): return self.logger.handlers def deprecated(self, msg, *args, **kwargs): """Call this method when a deprecated feature is used. If the system is configured for fatal deprecations then the message is logged at the 'critical' level and :class:`DeprecatedConfig` will be raised. Otherwise, the message will be logged (once) at the 'warn' level. :raises: :class:`DeprecatedConfig` if the system is configured for fatal deprecations. """ stdmsg = _("Deprecated: %s") % msg if CONF.fatal_deprecations: self.critical(stdmsg, *args, **kwargs) raise DeprecatedConfig(msg=stdmsg) # Using a list because a tuple with dict can't be stored in a set. sent_args = self._deprecated_messages_sent.setdefault(msg, list()) if args in sent_args: # Already logged this message, so don't log it again. return sent_args.append(args) self.warn(stdmsg, *args, **kwargs) def process(self, msg, kwargs): # NOTE(mrodden): catch any Message/other object and # coerce to unicode before they can get # to the python logging and possibly # cause string encoding trouble if not isinstance(msg, six.string_types): msg = six.text_type(msg) if 'extra' not in kwargs: kwargs['extra'] = {} extra = kwargs['extra'] context = kwargs.pop('context', None) if not context: context = getattr(local.store, 'context', None) if context: extra.update(_dictify_context(context)) instance = kwargs.pop('instance', None) instance_uuid = (extra.get('instance_uuid') or kwargs.pop('instance_uuid', None)) instance_extra = '' if instance: instance_extra = CONF.instance_format % instance elif instance_uuid: instance_extra = (CONF.instance_uuid_format % {'uuid': instance_uuid}) extra['instance'] = instance_extra extra.setdefault('user_identity', kwargs.pop('user_identity', None)) extra['project'] = self.project extra['version'] = self.version extra['extra'] = extra.copy() return msg, kwargs class JSONFormatter(logging.Formatter): def __init__(self, fmt=None, datefmt=None): # NOTE(jkoelker) we ignore the fmt argument, but its still there # since logging.config.fileConfig passes it. self.datefmt = datefmt def formatException(self, ei, strip_newlines=True): lines = traceback.format_exception(*ei) if strip_newlines: lines = [moves.filter( lambda x: x, line.rstrip().splitlines()) for line in lines] lines = list(itertools.chain(*lines)) return lines def format(self, record): message = {'message': record.getMessage(), 'asctime': self.formatTime(record, self.datefmt), 'name': record.name, 'msg': record.msg, 'args': record.args, 'levelname': record.levelname, 'levelno': record.levelno, 'pathname': record.pathname, 'filename': record.filename, 'module': record.module, 'lineno': record.lineno, 'funcname': record.funcName, 'created': record.created, 'msecs': record.msecs, 'relative_created': record.relativeCreated, 'thread': record.thread, 'thread_name': record.threadName, 'process_name': record.processName, 'process': record.process, 'traceback': None} if hasattr(record, 'extra'): message['extra'] = record.extra if record.exc_info: message['traceback'] = self.formatException(record.exc_info) return jsonutils.dumps(message) def _create_logging_excepthook(product_name): def logging_excepthook(exc_type, value, tb): extra = {} if CONF.verbose or CONF.debug: extra['exc_info'] = (exc_type, value, tb) getLogger(product_name).critical( "".join(traceback.format_exception_only(exc_type, value)), **extra) return logging_excepthook class LogConfigError(Exception): message = _('Error loading logging config %(log_config)s: %(err_msg)s') def __init__(self, log_config, err_msg): self.log_config = log_config self.err_msg = err_msg def __str__(self): return self.message % dict(log_config=self.log_config, err_msg=self.err_msg) def _load_log_config(log_config_append): try: logging.config.fileConfig(log_config_append, disable_existing_loggers=False) except moves.configparser.Error as exc: raise LogConfigError(log_config_append, str(exc)) def setup(product_name, version='unknown'): """Setup logging.""" if CONF.log_config_append: _load_log_config(CONF.log_config_append) else: _setup_logging_from_conf(product_name, version) sys.excepthook = _create_logging_excepthook(product_name) def set_defaults(logging_context_format_string): cfg.set_defaults(log_opts, logging_context_format_string= logging_context_format_string) def _find_facility_from_conf(): facility_names = logging.handlers.SysLogHandler.facility_names facility = getattr(logging.handlers.SysLogHandler, CONF.syslog_log_facility, None) if facility is None and CONF.syslog_log_facility in facility_names: facility = facility_names.get(CONF.syslog_log_facility) if facility is None: valid_facilities = facility_names.keys() consts = ['LOG_AUTH', 'LOG_AUTHPRIV', 'LOG_CRON', 'LOG_DAEMON', 'LOG_FTP', 'LOG_KERN', 'LOG_LPR', 'LOG_MAIL', 'LOG_NEWS', 'LOG_AUTH', 'LOG_SYSLOG', 'LOG_USER', 'LOG_UUCP', 'LOG_LOCAL0', 'LOG_LOCAL1', 'LOG_LOCAL2', 'LOG_LOCAL3', 'LOG_LOCAL4', 'LOG_LOCAL5', 'LOG_LOCAL6', 'LOG_LOCAL7'] valid_facilities.extend(consts) raise TypeError(_('syslog facility must be one of: %s') % ', '.join("'%s'" % fac for fac in valid_facilities)) return facility class RFCSysLogHandler(logging.handlers.SysLogHandler): def __init__(self, *args, **kwargs): self.binary_name = _get_binary_name() super(RFCSysLogHandler, self).__init__(*args, **kwargs) def format(self, record): msg = super(RFCSysLogHandler, self).format(record) msg = self.binary_name + ' ' + msg return msg def _setup_logging_from_conf(project, version): log_root = getLogger(None).logger for handler in log_root.handlers: log_root.removeHandler(handler) if CONF.use_syslog: facility = _find_facility_from_conf() # TODO(bogdando) use the format provided by RFCSysLogHandler # after existing syslog format deprecation in J if CONF.use_syslog_rfc_format: syslog = RFCSysLogHandler(address='/dev/log', facility=facility) else: syslog = logging.handlers.SysLogHandler(address='/dev/log', facility=facility) log_root.addHandler(syslog) logpath = _get_log_file_path() if logpath: filelog = logging.handlers.WatchedFileHandler(logpath) log_root.addHandler(filelog) if CONF.use_stderr: streamlog = ColorHandler() log_root.addHandler(streamlog) elif not logpath: # pass sys.stdout as a positional argument # python2.6 calls the argument strm, in 2.7 it's stream streamlog = logging.StreamHandler(sys.stdout) log_root.addHandler(streamlog) if CONF.publish_errors: handler = importutils.import_object( "cinder.openstack.common.log_handler.PublishErrorsHandler", logging.ERROR) log_root.addHandler(handler) datefmt = CONF.log_date_format for handler in log_root.handlers: # NOTE(alaski): CONF.log_format overrides everything currently. This # should be deprecated in favor of context aware formatting. if CONF.log_format: handler.setFormatter(logging.Formatter(fmt=CONF.log_format, datefmt=datefmt)) log_root.info('Deprecated: log_format is now deprecated and will ' 'be removed in the next release') else: handler.setFormatter(ContextFormatter(project=project, version=version, datefmt=datefmt)) if CONF.debug: log_root.setLevel(logging.DEBUG) elif CONF.verbose: log_root.setLevel(logging.INFO) else: log_root.setLevel(logging.WARNING) for pair in CONF.default_log_levels: mod, _sep, level_name = pair.partition('=') level = logging.getLevelName(level_name) logger = logging.getLogger(mod) logger.setLevel(level) _loggers = {} def getLogger(name='unknown', version='unknown'): if name not in _loggers: _loggers[name] = ContextAdapter(logging.getLogger(name), name, version) return _loggers[name] def getLazyLogger(name='unknown', version='unknown'): """Returns lazy logger. Creates a pass-through logger that does not create the real logger until it is really needed and delegates all calls to the real logger once it is created. """ return LazyAdapter(name, version) class WritableLogger(object): """A thin wrapper that responds to `write` and logs.""" def __init__(self, logger, level=logging.INFO): self.logger = logger self.level = level def write(self, msg): self.logger.log(self.level, msg.rstrip()) class ContextFormatter(logging.Formatter): """A context.RequestContext aware formatter configured through flags. The flags used to set format strings are: logging_context_format_string and logging_default_format_string. You can also specify logging_debug_format_suffix to append extra formatting if the log level is debug. For information about what variables are available for the formatter see: http://docs.python.org/library/logging.html#formatter If available, uses the context value stored in TLS - local.store.context """ def __init__(self, *args, **kwargs): """Initialize ContextFormatter instance Takes additional keyword arguments which can be used in the message format string. :keyword project: project name :type project: string :keyword version: project version :type version: string """ self.project = kwargs.pop('project', 'unknown') self.version = kwargs.pop('version', 'unknown') logging.Formatter.__init__(self, *args, **kwargs) def format(self, record): """Uses contextstring if request_id is set, otherwise default.""" # store project info record.project = self.project record.version = self.version # store request info context = getattr(local.store, 'context', None) if context: d = _dictify_context(context) for k, v in d.items(): setattr(record, k, v) # NOTE(sdague): default the fancier formatting params # to an empty string so we don't throw an exception if # they get used for key in ('instance', 'color', 'user_identity'): if key not in record.__dict__: record.__dict__[key] = '' if record.__dict__.get('request_id'): self._fmt = CONF.logging_context_format_string else: self._fmt = CONF.logging_default_format_string if (record.levelno == logging.DEBUG and CONF.logging_debug_format_suffix): self._fmt += " " + CONF.logging_debug_format_suffix # Cache this on the record, Logger will respect our formatted copy if record.exc_info: record.exc_text = self.formatException(record.exc_info, record) return logging.Formatter.format(self, record) def formatException(self, exc_info, record=None): """Format exception output with CONF.logging_exception_prefix.""" if not record: return logging.Formatter.formatException(self, exc_info) stringbuffer = moves.StringIO() traceback.print_exception(exc_info[0], exc_info[1], exc_info[2], None, stringbuffer) lines = stringbuffer.getvalue().split('\n') stringbuffer.close() if CONF.logging_exception_prefix.find('%(asctime)') != -1: record.asctime = self.formatTime(record, self.datefmt) formatted_lines = [] for line in lines: pl = CONF.logging_exception_prefix % record.__dict__ fl = '%s%s' % (pl, line) formatted_lines.append(fl) return '\n'.join(formatted_lines) class ColorHandler(logging.StreamHandler): LEVEL_COLORS = { logging.DEBUG: '\033[00;32m', # GREEN logging.INFO: '\033[00;36m', # CYAN logging.AUDIT: '\033[01;36m', # BOLD CYAN logging.WARN: '\033[01;33m', # BOLD YELLOW logging.ERROR: '\033[01;31m', # BOLD RED logging.CRITICAL: '\033[01;31m', # BOLD RED } def format(self, record): record.color = self.LEVEL_COLORS[record.levelno] return logging.StreamHandler.format(self, record) class DeprecatedConfig(Exception): message = _("Fatal call to deprecated config: %(msg)s") def __init__(self, msg): super(Exception, self).__init__(self.message % dict(msg=msg)) cinder-2014.1.5/cinder/openstack/common/__init__.py0000664000567000056700000000120412540642606023206 0ustar jenkinsjenkins00000000000000# # 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. import six six.add_move(six.MovedModule('mox', 'mox', 'mox3.mox')) cinder-2014.1.5/cinder/openstack/common/periodic_task.py0000664000567000056700000001555512540642606024305 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # # 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. import datetime import time from oslo.config import cfg import six from cinder.openstack.common.gettextutils import _ # noqa from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils periodic_opts = [ cfg.BoolOpt('run_external_periodic_tasks', default=True, help=('Some periodic tasks can be run in a separate process. ' 'Should we run them here?')), ] CONF = cfg.CONF CONF.register_opts(periodic_opts) LOG = logging.getLogger(__name__) DEFAULT_INTERVAL = 60.0 class InvalidPeriodicTaskArg(Exception): message = _("Unexpected argument for periodic task creation: %(arg)s.") def periodic_task(*args, **kwargs): """Decorator to indicate that a method is a periodic task. This decorator can be used in two ways: 1. Without arguments '@periodic_task', this will be run on every cycle of the periodic scheduler. 2. With arguments: @periodic_task(spacing=N [, run_immediately=[True|False]]) this will be run on approximately every N seconds. If this number is negative the periodic task will be disabled. If the run_immediately argument is provided and has a value of 'True', the first run of the task will be shortly after task scheduler starts. If run_immediately is omitted or set to 'False', the first time the task runs will be approximately N seconds after the task scheduler starts. """ def decorator(f): # Test for old style invocation if 'ticks_between_runs' in kwargs: raise InvalidPeriodicTaskArg(arg='ticks_between_runs') # Control if run at all f._periodic_task = True f._periodic_external_ok = kwargs.pop('external_process_ok', False) if f._periodic_external_ok and not CONF.run_external_periodic_tasks: f._periodic_enabled = False else: f._periodic_enabled = kwargs.pop('enabled', True) # Control frequency f._periodic_spacing = kwargs.pop('spacing', 0) f._periodic_immediate = kwargs.pop('run_immediately', False) if f._periodic_immediate: f._periodic_last_run = None else: f._periodic_last_run = timeutils.utcnow() return f # NOTE(sirp): The `if` is necessary to allow the decorator to be used with # and without parens. # # In the 'with-parens' case (with kwargs present), this function needs to # return a decorator function since the interpreter will invoke it like: # # periodic_task(*args, **kwargs)(f) # # In the 'without-parens' case, the original function will be passed # in as the first argument, like: # # periodic_task(f) if kwargs: return decorator else: return decorator(args[0]) class _PeriodicTasksMeta(type): def __init__(cls, names, bases, dict_): """Metaclass that allows us to collect decorated periodic tasks.""" super(_PeriodicTasksMeta, cls).__init__(names, bases, dict_) # NOTE(sirp): if the attribute is not present then we must be the base # class, so, go ahead an initialize it. If the attribute is present, # then we're a subclass so make a copy of it so we don't step on our # parent's toes. try: cls._periodic_tasks = cls._periodic_tasks[:] except AttributeError: cls._periodic_tasks = [] try: cls._periodic_last_run = cls._periodic_last_run.copy() except AttributeError: cls._periodic_last_run = {} try: cls._periodic_spacing = cls._periodic_spacing.copy() except AttributeError: cls._periodic_spacing = {} for value in cls.__dict__.values(): if getattr(value, '_periodic_task', False): task = value name = task.__name__ if task._periodic_spacing < 0: LOG.info(_('Skipping periodic task %(task)s because ' 'its interval is negative'), {'task': name}) continue if not task._periodic_enabled: LOG.info(_('Skipping periodic task %(task)s because ' 'it is disabled'), {'task': name}) continue # A periodic spacing of zero indicates that this task should # be run every pass if task._periodic_spacing == 0: task._periodic_spacing = None cls._periodic_tasks.append((name, task)) cls._periodic_spacing[name] = task._periodic_spacing cls._periodic_last_run[name] = task._periodic_last_run @six.add_metaclass(_PeriodicTasksMeta) class PeriodicTasks(object): def run_periodic_tasks(self, context, raise_on_error=False): """Tasks to be run at a periodic interval.""" idle_for = DEFAULT_INTERVAL for task_name, task in self._periodic_tasks: full_task_name = '.'.join([self.__class__.__name__, task_name]) now = timeutils.utcnow() spacing = self._periodic_spacing[task_name] last_run = self._periodic_last_run[task_name] # If a periodic task is _nearly_ due, then we'll run it early if spacing is not None and last_run is not None: due = last_run + datetime.timedelta(seconds=spacing) if not timeutils.is_soon(due, 0.2): idle_for = min(idle_for, timeutils.delta_seconds(now, due)) continue if spacing is not None: idle_for = min(idle_for, spacing) LOG.debug(_("Running periodic task %(full_task_name)s"), {"full_task_name": full_task_name}) self._periodic_last_run[task_name] = timeutils.utcnow() try: task(self, context) except Exception as e: if raise_on_error: raise LOG.exception(_("Error during %(full_task_name)s: %(e)s"), {"full_task_name": full_task_name, "e": e}) time.sleep(0) return idle_for cinder-2014.1.5/cinder/openstack/common/local.py0000664000567000056700000000321512540642606022545 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """Local storage of variables using weak references""" import threading import weakref class WeakLocal(threading.local): def __getattribute__(self, attr): rval = super(WeakLocal, self).__getattribute__(attr) if rval: # NOTE(mikal): this bit is confusing. What is stored is a weak # reference, not the value itself. We therefore need to lookup # the weak reference and return the inner value here. rval = rval() return rval def __setattr__(self, attr, value): value = weakref.ref(value) return super(WeakLocal, self).__setattr__(attr, value) # NOTE(mikal): the name "store" should be deprecated in the future store = WeakLocal() # A "weak" store uses weak references and allows an object to fall out of scope # when it falls out of scope in the code that uses the thread local storage. A # "strong" store will hold a reference to the object so that it never falls out # of scope. weak_store = WeakLocal() strong_store = threading.local() cinder-2014.1.5/cinder/openstack/common/threadgroup.py0000664000567000056700000001012312540642606023773 0ustar jenkinsjenkins00000000000000# Copyright 2012 Red Hat, Inc. # # 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. import eventlet from eventlet import greenpool from eventlet import greenthread from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall LOG = logging.getLogger(__name__) def _thread_done(gt, *args, **kwargs): """Callback function to be passed to GreenThread.link() when we spawn() Calls the :class:`ThreadGroup` to notify if. """ kwargs['group'].thread_done(kwargs['thread']) class Thread(object): """Wrapper around a greenthread, that holds a reference to the :class:`ThreadGroup`. The Thread will notify the :class:`ThreadGroup` when it has done so it can be removed from the threads list. """ def __init__(self, thread, group): self.thread = thread self.thread.link(_thread_done, group=group, thread=self) def stop(self): self.thread.kill() def wait(self): return self.thread.wait() def link(self, func, *args, **kwargs): self.thread.link(func, *args, **kwargs) class ThreadGroup(object): """The point of the ThreadGroup classis to: * keep track of timers and greenthreads (making it easier to stop them when need be). * provide an easy API to add timers. """ def __init__(self, thread_pool_size=10): self.pool = greenpool.GreenPool(thread_pool_size) self.threads = [] self.timers = [] def add_dynamic_timer(self, callback, initial_delay=None, periodic_interval_max=None, *args, **kwargs): timer = loopingcall.DynamicLoopingCall(callback, *args, **kwargs) timer.start(initial_delay=initial_delay, periodic_interval_max=periodic_interval_max) self.timers.append(timer) def add_timer(self, interval, callback, initial_delay=None, *args, **kwargs): pulse = loopingcall.FixedIntervalLoopingCall(callback, *args, **kwargs) pulse.start(interval=interval, initial_delay=initial_delay) self.timers.append(pulse) def add_thread(self, callback, *args, **kwargs): gt = self.pool.spawn(callback, *args, **kwargs) th = Thread(gt, self) self.threads.append(th) return th def thread_done(self, thread): self.threads.remove(thread) def stop(self): current = greenthread.getcurrent() # Iterate over a copy of self.threads so thread_done doesn't # modify the list while we're iterating for x in self.threads[:]: if x is current: # don't kill the current thread. continue try: x.stop() except Exception as ex: LOG.exception(ex) for x in self.timers: try: x.stop() except Exception as ex: LOG.exception(ex) self.timers = [] def wait(self): for x in self.timers: try: x.wait() except eventlet.greenlet.GreenletExit: pass except Exception as ex: LOG.exception(ex) current = greenthread.getcurrent() # Iterate over a copy of self.threads so thread_done doesn't # modify the list while we're iterating for x in self.threads[:]: if x is current: continue try: x.wait() except eventlet.greenlet.GreenletExit: pass except Exception as ex: LOG.exception(ex) cinder-2014.1.5/cinder/openstack/common/service.py0000664000567000056700000003505112540642606023116 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """Generic Node base class for all workers that run on hosts.""" import errno import logging as std_logging import os import random import signal import sys import threading import time try: # Importing just the symbol here because the io module does not # exist in Python 2.6. from io import UnsupportedOperation # noqa except ImportError: # Python 2.6 UnsupportedOperation = None import eventlet from oslo.config import cfg from cinder.openstack.common import eventlet_backdoor from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.openstack.common import threadgroup rpc = importutils.try_import('cinder.openstack.common.rpc') CONF = cfg.CONF LOG = logging.getLogger(__name__) def _sighup_supported(): return hasattr(signal, 'SIGHUP') def _is_daemon(): # The process group for a foreground process will match the # process group of the controlling terminal. If those values do # not match, or ioctl() fails on the stdout file handle, we assume # the process is running in the background as a daemon. # http://www.gnu.org/software/bash/manual/bashref.html#Job-Control-Basics try: is_daemon = os.getpgrp() != os.tcgetpgrp(sys.stdout.fileno()) except OSError as err: if err.errno == errno.ENOTTY: # Assume we are a daemon because there is no terminal. is_daemon = True else: raise except UnsupportedOperation: # Could not get the fileno for stdout, so we must be a daemon. is_daemon = True return is_daemon def _is_sighup_and_daemon(signo): if not (_sighup_supported() and signo == signal.SIGHUP): # Avoid checking if we are a daemon, because the signal isn't # SIGHUP. return False return _is_daemon() def _signo_to_signame(signo): signals = {signal.SIGTERM: 'SIGTERM', signal.SIGINT: 'SIGINT'} if _sighup_supported(): signals[signal.SIGHUP] = 'SIGHUP' return signals[signo] def _set_signals_handler(handler): signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGINT, handler) if _sighup_supported(): signal.signal(signal.SIGHUP, handler) class Launcher(object): """Launch one or more services and wait for them to complete.""" def __init__(self): """Initialize the service launcher. :returns: None """ self.services = Services() self.backdoor_port = eventlet_backdoor.initialize_if_enabled() def launch_service(self, service): """Load and start the given service. :param service: The service you would like to start. :returns: None """ service.backdoor_port = self.backdoor_port self.services.add(service) def stop(self): """Stop all services which are currently running. :returns: None """ self.services.stop() def wait(self): """Waits until all services have been stopped, and then returns. :returns: None """ self.services.wait() def restart(self): """Reload config files and restart service. :returns: None """ cfg.CONF.reload_config_files() self.services.restart() class SignalExit(SystemExit): def __init__(self, signo, exccode=1): super(SignalExit, self).__init__(exccode) self.signo = signo class ServiceLauncher(Launcher): def _handle_signal(self, signo, frame): # Allow the process to be killed again and die from natural causes _set_signals_handler(signal.SIG_DFL) raise SignalExit(signo) def handle_signal(self): _set_signals_handler(self._handle_signal) def _wait_for_exit_or_signal(self, ready_callback=None): status = None signo = 0 LOG.debug(_('Full set of CONF:')) CONF.log_opt_values(LOG, std_logging.DEBUG) try: if ready_callback: ready_callback() super(ServiceLauncher, self).wait() except SignalExit as exc: signame = _signo_to_signame(exc.signo) LOG.info(_('Caught %s, exiting'), signame) status = exc.code signo = exc.signo except SystemExit as exc: status = exc.code finally: self.stop() if rpc: try: rpc.cleanup() except Exception: # We're shutting down, so it doesn't matter at this point. LOG.exception(_('Exception during rpc cleanup.')) return status, signo def wait(self, ready_callback=None): while True: self.handle_signal() status, signo = self._wait_for_exit_or_signal(ready_callback) if not _is_sighup_and_daemon(signo): return status self.restart() class ServiceWrapper(object): def __init__(self, service, workers): self.service = service self.workers = workers self.children = set() self.forktimes = [] class ProcessLauncher(object): def __init__(self, wait_interval=0.01): """Constructor. :param wait_interval: The interval to sleep for between checks of child process exit. """ self.children = {} self.sigcaught = None self.running = True self.wait_interval = wait_interval rfd, self.writepipe = os.pipe() self.readpipe = eventlet.greenio.GreenPipe(rfd, 'r') self.handle_signal() def handle_signal(self): _set_signals_handler(self._handle_signal) def _handle_signal(self, signo, frame): self.sigcaught = signo self.running = False # Allow the process to be killed again and die from natural causes _set_signals_handler(signal.SIG_DFL) def _pipe_watcher(self): # This will block until the write end is closed when the parent # dies unexpectedly self.readpipe.read() LOG.info(_('Parent process has died unexpectedly, exiting')) sys.exit(1) def _child_process_handle_signal(self): # Setup child signal handlers differently def _sigterm(*args): signal.signal(signal.SIGTERM, signal.SIG_DFL) raise SignalExit(signal.SIGTERM) def _sighup(*args): signal.signal(signal.SIGHUP, signal.SIG_DFL) raise SignalExit(signal.SIGHUP) signal.signal(signal.SIGTERM, _sigterm) if _sighup_supported(): signal.signal(signal.SIGHUP, _sighup) # Block SIGINT and let the parent send us a SIGTERM signal.signal(signal.SIGINT, signal.SIG_IGN) def _child_wait_for_exit_or_signal(self, launcher): status = 0 signo = 0 # NOTE(johannes): All exceptions are caught to ensure this # doesn't fallback into the loop spawning children. It would # be bad for a child to spawn more children. try: launcher.wait() except SignalExit as exc: signame = _signo_to_signame(exc.signo) LOG.info(_('Caught %s, exiting'), signame) status = exc.code signo = exc.signo except SystemExit as exc: status = exc.code except BaseException: LOG.exception(_('Unhandled exception')) status = 2 finally: launcher.stop() return status, signo def _child_process(self, service): self._child_process_handle_signal() # Reopen the eventlet hub to make sure we don't share an epoll # fd with parent and/or siblings, which would be bad eventlet.hubs.use_hub() # Close write to ensure only parent has it open os.close(self.writepipe) # Create greenthread to watch for parent to close pipe eventlet.spawn_n(self._pipe_watcher) # Reseed random number generator random.seed() launcher = Launcher() launcher.launch_service(service) return launcher def _start_child(self, wrap): if len(wrap.forktimes) > wrap.workers: # Limit ourselves to one process a second (over the period of # number of workers * 1 second). This will allow workers to # start up quickly but ensure we don't fork off children that # die instantly too quickly. if time.time() - wrap.forktimes[0] < wrap.workers: LOG.info(_('Forking too fast, sleeping')) time.sleep(1) wrap.forktimes.pop(0) wrap.forktimes.append(time.time()) pid = os.fork() if pid == 0: launcher = self._child_process(wrap.service) while True: self._child_process_handle_signal() status, signo = self._child_wait_for_exit_or_signal(launcher) if not _is_sighup_and_daemon(signo): break launcher.restart() os._exit(status) LOG.info(_('Started child %d'), pid) wrap.children.add(pid) self.children[pid] = wrap return pid def launch_service(self, service, workers=1): wrap = ServiceWrapper(service, workers) LOG.info(_('Starting %d workers'), wrap.workers) while self.running and len(wrap.children) < wrap.workers: self._start_child(wrap) def _wait_child(self): try: # Don't block if no child processes have exited pid, status = os.waitpid(0, os.WNOHANG) if not pid: return None except OSError as exc: if exc.errno not in (errno.EINTR, errno.ECHILD): raise return None if os.WIFSIGNALED(status): sig = os.WTERMSIG(status) LOG.info(_('Child %(pid)d killed by signal %(sig)d'), dict(pid=pid, sig=sig)) else: code = os.WEXITSTATUS(status) LOG.info(_('Child %(pid)s exited with status %(code)d'), dict(pid=pid, code=code)) if pid not in self.children: LOG.warning(_('pid %d not in child list'), pid) return None wrap = self.children.pop(pid) wrap.children.remove(pid) return wrap def _respawn_children(self): while self.running: wrap = self._wait_child() if not wrap: # Yield to other threads if no children have exited # Sleep for a short time to avoid excessive CPU usage # (see bug #1095346) eventlet.greenthread.sleep(self.wait_interval) continue while self.running and len(wrap.children) < wrap.workers: self._start_child(wrap) def wait(self): """Loop waiting on children to die and respawning as necessary.""" LOG.debug(_('Full set of CONF:')) CONF.log_opt_values(LOG, std_logging.DEBUG) while True: self.handle_signal() self._respawn_children() if self.sigcaught: signame = _signo_to_signame(self.sigcaught) LOG.info(_('Caught %s, stopping children'), signame) if not _is_sighup_and_daemon(self.sigcaught): break for pid in self.children: os.kill(pid, signal.SIGHUP) self.running = True self.sigcaught = None for pid in self.children: try: os.kill(pid, signal.SIGTERM) except OSError as exc: if exc.errno != errno.ESRCH: raise # Wait for children to die if self.children: LOG.info(_('Waiting on %d children to exit'), len(self.children)) while self.children: self._wait_child() class Service(object): """Service object for binaries running on hosts.""" def __init__(self, threads=1000): self.tg = threadgroup.ThreadGroup(threads) # signal that the service is done shutting itself down: self._done = threading.Event() def reset(self): self._done = threading.Event() def start(self): pass def stop(self): self.tg.stop() self.tg.wait() # Signal that service cleanup is done: self._done.set() def wait(self): self._done.wait() class Services(object): def __init__(self): self.services = [] self.tg = threadgroup.ThreadGroup() self.done = threading.Event() def add(self, service): self.services.append(service) self.tg.add_thread(self.run_service, service, self.done) def stop(self): # wait for graceful shutdown of services: for service in self.services: service.stop() service.wait() # Each service has performed cleanup, now signal that the run_service # wrapper threads can now die: self.done.set() # reap threads: self.tg.stop() def wait(self): self.tg.wait() def restart(self): self.stop() self.done = threading.Event() for restart_service in self.services: restart_service.reset() self.tg.add_thread(self.run_service, restart_service, self.done) @staticmethod def run_service(service, done): """Service start wrapper. :param service: service to run :param done: event to wait on until a shutdown is triggered :returns: None """ service.start() done.wait() def launch(service, workers=None): if workers: launcher = ProcessLauncher() launcher.launch_service(service, workers=workers) else: launcher = ServiceLauncher() launcher.launch_service(service) return launcher cinder-2014.1.5/cinder/openstack/common/uuidutils.py0000664000567000056700000000212212540642606023476 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2012 Intel Corporation. # All Rights Reserved. # # 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. """ UUID related utilities and helper functions. """ import uuid def generate_uuid(): return str(uuid.uuid4()) def is_uuid_like(val): """Returns validation of a value as a UUID. For our purposes, a UUID is a canonical form string: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa """ try: return str(uuid.UUID(val)) == val except (TypeError, ValueError, AttributeError): return False cinder-2014.1.5/cinder/openstack/common/versionutils.py0000664000567000056700000001154012540642606024221 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. """ Helpers for comparing version strings. """ import functools import pkg_resources from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class deprecated(object): """A decorator to mark callables as deprecated. This decorator logs a deprecation message when the callable it decorates is used. The message will include the release where the callable was deprecated, the release where it may be removed and possibly an optional replacement. Examples: 1. Specifying the required deprecated release >>> @deprecated(as_of=deprecated.ICEHOUSE) ... def a(): pass 2. Specifying a replacement: >>> @deprecated(as_of=deprecated.ICEHOUSE, in_favor_of='f()') ... def b(): pass 3. Specifying the release where the functionality may be removed: >>> @deprecated(as_of=deprecated.ICEHOUSE, remove_in=+1) ... def c(): pass """ FOLSOM = 'F' GRIZZLY = 'G' HAVANA = 'H' ICEHOUSE = 'I' _RELEASES = { 'F': 'Folsom', 'G': 'Grizzly', 'H': 'Havana', 'I': 'Icehouse', } _deprecated_msg_with_alternative = _( '%(what)s is deprecated as of %(as_of)s in favor of ' '%(in_favor_of)s and may be removed in %(remove_in)s.') _deprecated_msg_no_alternative = _( '%(what)s is deprecated as of %(as_of)s and may be ' 'removed in %(remove_in)s. It will not be superseded.') def __init__(self, as_of, in_favor_of=None, remove_in=2, what=None): """Initialize decorator :param as_of: the release deprecating the callable. Constants are define in this class for convenience. :param in_favor_of: the replacement for the callable (optional) :param remove_in: an integer specifying how many releases to wait before removing (default: 2) :param what: name of the thing being deprecated (default: the callable's name) """ self.as_of = as_of self.in_favor_of = in_favor_of self.remove_in = remove_in self.what = what def __call__(self, func): if not self.what: self.what = func.__name__ + '()' @functools.wraps(func) def wrapped(*args, **kwargs): msg, details = self._build_message() LOG.deprecated(msg, details) return func(*args, **kwargs) return wrapped def _get_safe_to_remove_release(self, release): # TODO(dstanek): this method will have to be reimplemented once # when we get to the X release because once we get to the Y # release, what is Y+2? new_release = chr(ord(release) + self.remove_in) if new_release in self._RELEASES: return self._RELEASES[new_release] else: return new_release def _build_message(self): details = dict(what=self.what, as_of=self._RELEASES[self.as_of], remove_in=self._get_safe_to_remove_release(self.as_of)) if self.in_favor_of: details['in_favor_of'] = self.in_favor_of msg = self._deprecated_msg_with_alternative else: msg = self._deprecated_msg_no_alternative return msg, details def is_compatible(requested_version, current_version, same_major=True): """Determine whether `requested_version` is satisfied by `current_version`; in other words, `current_version` is >= `requested_version`. :param requested_version: version to check for compatibility :param current_version: version to check against :param same_major: if True, the major version must be identical between `requested_version` and `current_version`. This is used when a major-version difference indicates incompatibility between the two versions. Since this is the common-case in practice, the default is True. :returns: True if compatible, False if not """ requested_parts = pkg_resources.parse_version(requested_version) current_parts = pkg_resources.parse_version(current_version) if same_major and (requested_parts[0] != current_parts[0]): return False return current_parts >= requested_parts cinder-2014.1.5/cinder/openstack/common/processutils.py0000664000567000056700000002312012540642606024207 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ System-level utilities and helper functions. """ import logging import os import random import shlex import signal from eventlet.green import subprocess from eventlet import greenthread from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import strutils LOG = logging.getLogger(__name__) class InvalidArgumentError(Exception): def __init__(self, message=None): super(InvalidArgumentError, self).__init__(message) class UnknownArgumentError(Exception): def __init__(self, message=None): super(UnknownArgumentError, self).__init__(message) class ProcessExecutionError(Exception): def __init__(self, stdout=None, stderr=None, exit_code=None, cmd=None, description=None): self.exit_code = exit_code self.stderr = stderr self.stdout = stdout self.cmd = cmd self.description = description if description is None: description = "Unexpected error while running command." if exit_code is None: exit_code = '-' message = ("%s\nCommand: %s\nExit code: %s\nStdout: %r\nStderr: %r" % (description, cmd, exit_code, stdout, stderr)) super(ProcessExecutionError, self).__init__(message) class NoRootWrapSpecified(Exception): def __init__(self, message=None): super(NoRootWrapSpecified, self).__init__(message) def _subprocess_setup(): # Python installs a SIGPIPE handler by default. This is usually not what # non-Python subprocesses expect. signal.signal(signal.SIGPIPE, signal.SIG_DFL) def execute(*cmd, **kwargs): """Helper method to shell out and execute a command through subprocess. Allows optional retry. :param cmd: Passed to subprocess.Popen. :type cmd: string :param process_input: Send to opened process. :type proces_input: string :param check_exit_code: Single bool, int, or list of allowed exit codes. Defaults to [0]. Raise :class:`ProcessExecutionError` unless program exits with one of these code. :type check_exit_code: boolean, int, or [int] :param delay_on_retry: True | False. Defaults to True. If set to True, wait a short amount of time before retrying. :type delay_on_retry: boolean :param attempts: How many times to retry cmd. :type attempts: int :param run_as_root: True | False. Defaults to False. If set to True, the command is prefixed by the command specified in the root_helper kwarg. :type run_as_root: boolean :param root_helper: command to prefix to commands called with run_as_root=True :type root_helper: string :param shell: whether or not there should be a shell used to execute this command. Defaults to false. :type shell: boolean :param loglevel: log level for execute commands. :type loglevel: int. (Should be logging.DEBUG or logging.INFO) :returns: (stdout, stderr) from process execution :raises: :class:`UnknownArgumentError` on receiving unknown arguments :raises: :class:`ProcessExecutionError` """ process_input = kwargs.pop('process_input', None) check_exit_code = kwargs.pop('check_exit_code', [0]) ignore_exit_code = False delay_on_retry = kwargs.pop('delay_on_retry', True) attempts = kwargs.pop('attempts', 1) run_as_root = kwargs.pop('run_as_root', False) root_helper = kwargs.pop('root_helper', '') shell = kwargs.pop('shell', False) loglevel = kwargs.pop('loglevel', logging.DEBUG) if isinstance(check_exit_code, bool): ignore_exit_code = not check_exit_code check_exit_code = [0] elif isinstance(check_exit_code, int): check_exit_code = [check_exit_code] if kwargs: raise UnknownArgumentError(_('Got unknown keyword args ' 'to utils.execute: %r') % kwargs) if run_as_root and hasattr(os, 'geteuid') and os.geteuid() != 0: if not root_helper: raise NoRootWrapSpecified( message=('Command requested root, but did not specify a root ' 'helper.')) cmd = shlex.split(root_helper) + list(cmd) cmd = map(str, cmd) sanitized_cmd = strutils.mask_password(' '.join(cmd)) while attempts > 0: attempts -= 1 try: LOG.log(loglevel, _('Running cmd (subprocess): %s'), sanitized_cmd) _PIPE = subprocess.PIPE # pylint: disable=E1101 if os.name == 'nt': preexec_fn = None close_fds = False else: preexec_fn = _subprocess_setup close_fds = True obj = subprocess.Popen(cmd, stdin=_PIPE, stdout=_PIPE, stderr=_PIPE, close_fds=close_fds, preexec_fn=preexec_fn, shell=shell) result = None if process_input is not None: result = obj.communicate(process_input) else: result = obj.communicate() obj.stdin.close() # pylint: disable=E1101 _returncode = obj.returncode # pylint: disable=E1101 LOG.log(loglevel, _('Result was %s') % _returncode) if not ignore_exit_code and _returncode not in check_exit_code: (stdout, stderr) = result sanitized_stdout = strutils.mask_password(stdout) sanitized_stderr = strutils.mask_password(stderr) raise ProcessExecutionError(exit_code=_returncode, stdout=sanitized_stdout, stderr=sanitized_stderr, cmd=sanitized_cmd) return result except ProcessExecutionError: if not attempts: raise else: LOG.log(loglevel, _('%r failed. Retrying.'), sanitized_cmd) if delay_on_retry: greenthread.sleep(random.randint(20, 200) / 100.0) finally: # NOTE(termie): this appears to be necessary to let the subprocess # call clean something up in between calls, without # it two execute calls in a row hangs the second one greenthread.sleep(0) def trycmd(*args, **kwargs): """A wrapper around execute() to more easily handle warnings and errors. Returns an (out, err) tuple of strings containing the output of the command's stdout and stderr. If 'err' is not empty then the command can be considered to have failed. :discard_warnings True | False. Defaults to False. If set to True, then for succeeding commands, stderr is cleared """ discard_warnings = kwargs.pop('discard_warnings', False) try: out, err = execute(*args, **kwargs) failed = False except ProcessExecutionError as exn: out, err = '', str(exn) failed = True if not failed and discard_warnings and err: # Handle commands that output to stderr but otherwise succeed err = '' return out, err def ssh_execute(ssh, cmd, process_input=None, addl_env=None, check_exit_code=True): sanitized_cmd = strutils.mask_password(cmd) LOG.debug(_('Running cmd (SSH): %s'), sanitized_cmd) if addl_env: raise InvalidArgumentError(_('Environment not supported over SSH')) if process_input: # This is (probably) fixable if we need it... raise InvalidArgumentError(_('process_input not supported over SSH')) stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd) channel = stdout_stream.channel # NOTE(justinsb): This seems suspicious... # ...other SSH clients have buffering issues with this approach stdout = stdout_stream.read() sanitized_stdout = strutils.mask_password(stdout) stderr = stderr_stream.read() sanitized_stderr = strutils.mask_password(stderr) stdin_stream.close() exit_status = channel.recv_exit_status() # exit_status == -1 if no exit code was returned if exit_status != -1: LOG.debug(_('Result was %s') % exit_status) if check_exit_code and exit_status != 0: raise ProcessExecutionError(exit_code=exit_status, stdout=sanitized_stdout, stderr=sanitized_stderr, cmd=sanitized_cmd) return (sanitized_stdout, sanitized_stderr) cinder-2014.1.5/cinder/openstack/common/importutils.py0000664000567000056700000000451312540642606024050 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ Import related utilities and helper functions. """ import sys import traceback def import_class(import_str): """Returns a class from a string including module and class.""" mod_str, _sep, class_str = import_str.rpartition('.') try: __import__(mod_str) return getattr(sys.modules[mod_str], class_str) except (ValueError, AttributeError): raise ImportError('Class %s cannot be found (%s)' % (class_str, traceback.format_exception(*sys.exc_info()))) def import_object(import_str, *args, **kwargs): """Import a class and return an instance of it.""" return import_class(import_str)(*args, **kwargs) def import_object_ns(name_space, import_str, *args, **kwargs): """Tries to import object from default namespace. Imports a class and return an instance of it, first by trying to find the class in a default namespace, then failing back to a full path if not found in the default namespace. """ import_value = "%s.%s" % (name_space, import_str) try: return import_class(import_value)(*args, **kwargs) except ImportError: return import_class(import_str)(*args, **kwargs) def import_module(import_str): """Import a module.""" __import__(import_str) return sys.modules[import_str] def import_versioned_module(version, submodule=None): module = 'cinder.v%s' % version if submodule: module = '.'.join((module, submodule)) return import_module(module) def try_import(import_str, default=None): """Try to import a module and if it fails return default.""" try: return import_module(import_str) except ImportError: return default cinder-2014.1.5/cinder/openstack/common/config/0000775000567000056700000000000012540643114022340 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/config/generator.py0000664000567000056700000002444712540642606024720 0ustar jenkinsjenkins00000000000000# Copyright 2012 SINA Corporation # Copyright 2014 Cisco Systems, Inc. # All Rights Reserved. # # 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. # """Extracts OpenStack config option info from module(s).""" from __future__ import print_function import argparse import imp import os import re import socket import sys import textwrap from oslo.config import cfg import six import stevedore.named from cinder.openstack.common import gettextutils from cinder.openstack.common import importutils gettextutils.install('cinder') STROPT = "StrOpt" BOOLOPT = "BoolOpt" INTOPT = "IntOpt" FLOATOPT = "FloatOpt" LISTOPT = "ListOpt" DICTOPT = "DictOpt" MULTISTROPT = "MultiStrOpt" OPT_TYPES = { STROPT: 'string value', BOOLOPT: 'boolean value', INTOPT: 'integer value', FLOATOPT: 'floating point value', LISTOPT: 'list value', DICTOPT: 'dict value', MULTISTROPT: 'multi valued', } OPTION_REGEX = re.compile(r"(%s)" % "|".join([STROPT, BOOLOPT, INTOPT, FLOATOPT, LISTOPT, DICTOPT, MULTISTROPT])) PY_EXT = ".py" BASEDIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../../")) WORDWRAP_WIDTH = 60 def raise_extension_exception(extmanager, ep, err): raise def generate(argv): parser = argparse.ArgumentParser( description='generate sample configuration file', ) parser.add_argument('-m', dest='modules', action='append') parser.add_argument('-l', dest='libraries', action='append') parser.add_argument('srcfiles', nargs='*') parsed_args = parser.parse_args(argv) mods_by_pkg = dict() for filepath in parsed_args.srcfiles: pkg_name = filepath.split(os.sep)[1] mod_str = '.'.join(['.'.join(filepath.split(os.sep)[:-1]), os.path.basename(filepath).split('.')[0]]) mods_by_pkg.setdefault(pkg_name, list()).append(mod_str) # NOTE(lzyeval): place top level modules before packages pkg_names = sorted(pkg for pkg in mods_by_pkg if pkg.endswith(PY_EXT)) ext_names = sorted(pkg for pkg in mods_by_pkg if pkg not in pkg_names) pkg_names.extend(ext_names) # opts_by_group is a mapping of group name to an options list # The options list is a list of (module, options) tuples opts_by_group = {'DEFAULT': []} if parsed_args.modules: for module_name in parsed_args.modules: module = _import_module(module_name) if module: for group, opts in _list_opts(module): opts_by_group.setdefault(group, []).append((module_name, opts)) # Look for entry points defined in libraries (or applications) for # option discovery, and include their return values in the output. # # Each entry point should be a function returning an iterable # of pairs with the group name (or None for the default group) # and the list of Opt instances for that group. if parsed_args.libraries: loader = stevedore.named.NamedExtensionManager( 'oslo.config.opts', names=list(set(parsed_args.libraries)), invoke_on_load=False, on_load_failure_callback=raise_extension_exception ) for ext in loader: for group, opts in ext.plugin(): opt_list = opts_by_group.setdefault(group or 'DEFAULT', []) opt_list.append((ext.name, opts)) for pkg_name in pkg_names: mods = mods_by_pkg.get(pkg_name) mods.sort() for mod_str in mods: if mod_str.endswith('.__init__'): mod_str = mod_str[:mod_str.rfind(".")] mod_obj = _import_module(mod_str) if not mod_obj: raise RuntimeError("Unable to import module %s" % mod_str) for group, opts in _list_opts(mod_obj): opts_by_group.setdefault(group, []).append((mod_str, opts)) print_group_opts('DEFAULT', opts_by_group.pop('DEFAULT', [])) for group in sorted(opts_by_group.keys()): print_group_opts(group, opts_by_group[group]) def _import_module(mod_str): try: if mod_str.startswith('bin.'): imp.load_source(mod_str[4:], os.path.join('bin', mod_str[4:])) return sys.modules[mod_str[4:]] else: return importutils.import_module(mod_str) except Exception as e: sys.stderr.write("Error importing module %s: %s\n" % (mod_str, str(e))) return None def _is_in_group(opt, group): "Check if opt is in group." for value in group._opts.values(): # NOTE(llu): Temporary workaround for bug #1262148, wait until # newly released oslo.config support '==' operator. if not(value['opt'] != opt): return True return False def _guess_groups(opt, mod_obj): # is it in the DEFAULT group? if _is_in_group(opt, cfg.CONF): return 'DEFAULT' # what other groups is it in? for value in cfg.CONF.values(): if isinstance(value, cfg.CONF.GroupAttr): if _is_in_group(opt, value._group): return value._group.name raise RuntimeError( "Unable to find group for option %s, " "maybe it's defined twice in the same group?" % opt.name ) def _list_opts(obj): def is_opt(o): return (isinstance(o, cfg.Opt) and not isinstance(o, cfg.SubCommandOpt)) opts = list() for attr_str in dir(obj): attr_obj = getattr(obj, attr_str) if is_opt(attr_obj): opts.append(attr_obj) elif (isinstance(attr_obj, list) and all(map(lambda x: is_opt(x), attr_obj))): opts.extend(attr_obj) ret = {} for opt in opts: ret.setdefault(_guess_groups(opt, obj), []).append(opt) return ret.items() def print_group_opts(group, opts_by_module): print("[%s]" % group) print('') for mod, opts in opts_by_module: print('#') print('# Options defined in %s' % mod) print('#') print('') for opt in opts: _print_opt(opt) print('') def _get_my_ip(): try: csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) csock.connect(('8.8.8.8', 80)) (addr, port) = csock.getsockname() csock.close() return addr except socket.error: return None def _sanitize_default(name, value): """Set up a reasonably sensible default for pybasedir, my_ip and host.""" if value.startswith(sys.prefix): # NOTE(jd) Don't use os.path.join, because it is likely to think the # second part is an absolute pathname and therefore drop the first # part. value = os.path.normpath("/usr/" + value[len(sys.prefix):]) elif value.startswith(BASEDIR): return value.replace(BASEDIR, '/usr/lib/python/site-packages') elif BASEDIR in value: return value.replace(BASEDIR, '') elif value == _get_my_ip(): return '10.0.0.1' elif value in (socket.gethostname(), socket.getfqdn()) and 'host' in name: return 'cinder' elif value.strip() != value: return '"%s"' % value return value def _print_opt(opt): opt_name, opt_default, opt_help = opt.dest, opt.default, opt.help if not opt_help: sys.stderr.write('WARNING: "%s" is missing help string.\n' % opt_name) opt_help = "" opt_type = None try: opt_type = OPTION_REGEX.search(str(type(opt))).group(0) except (ValueError, AttributeError) as err: sys.stderr.write("%s\n" % str(err)) sys.exit(1) opt_help = u'%s (%s)' % (opt_help, OPT_TYPES[opt_type]) print('#', "\n# ".join(textwrap.wrap(opt_help, WORDWRAP_WIDTH))) if opt.deprecated_opts: for deprecated_opt in opt.deprecated_opts: if deprecated_opt.name: deprecated_group = (deprecated_opt.group if deprecated_opt.group else "DEFAULT") print('# Deprecated group/name - [%s]/%s' % (deprecated_group, deprecated_opt.name)) try: if opt_default is None: print('#%s=' % opt_name) elif opt_type == STROPT: assert(isinstance(opt_default, six.string_types)) print('#%s=%s' % (opt_name, _sanitize_default(opt_name, opt_default))) elif opt_type == BOOLOPT: assert(isinstance(opt_default, bool)) print('#%s=%s' % (opt_name, str(opt_default).lower())) elif opt_type == INTOPT: assert(isinstance(opt_default, int) and not isinstance(opt_default, bool)) print('#%s=%s' % (opt_name, opt_default)) elif opt_type == FLOATOPT: assert(isinstance(opt_default, float)) print('#%s=%s' % (opt_name, opt_default)) elif opt_type == LISTOPT: assert(isinstance(opt_default, list)) print('#%s=%s' % (opt_name, ','.join(opt_default))) elif opt_type == DICTOPT: assert(isinstance(opt_default, dict)) opt_default_strlist = [str(key) + ':' + str(value) for (key, value) in opt_default.items()] print('#%s=%s' % (opt_name, ','.join(opt_default_strlist))) elif opt_type == MULTISTROPT: assert(isinstance(opt_default, list)) if not opt_default: opt_default = [''] for default in opt_default: print('#%s=%s' % (opt_name, default)) print('') except Exception: sys.stderr.write('Error in option "%s"\n' % opt_name) sys.exit(1) def main(): generate(sys.argv[1:]) if __name__ == '__main__': main() cinder-2014.1.5/cinder/openstack/common/config/__init__.py0000664000567000056700000000000012540642603024441 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/openstack/common/request_utils.py0000664000567000056700000000621412540642606024365 0ustar jenkinsjenkins00000000000000# Copyright 2014 Rackspace Hosting # All Rights Reserved. # # 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. """ Utilities for linking request ID's across service calls. """ import logging from openstack.common.gettextutils import _ # noqa LOG = logging.getLogger(__name__) def link_request_ids(context, source_id, target_id=None, stage=None, target_name=None, notifier=None): """Links the Request ID from the Source service to the Request ID returned from the Target service. Linkages are logged and emitted as INFO notifications. :params context: context object :params source_id: the Request ID of the source :params target_id: the Request ID of the target :params stage: optional event name extension to indicate which part of the linkage this is. :params target_name: human readable name of the target system you are talking to. :params notifier: notifier object A typical use case is: System A asking System B to perform some action. The linkages might look like this: link_request_ids(sys_A.request_ID, stage="start") # send request to System B and get request ID link_request_ids(sys_A.request_ID, target_id=sys_B.request.ID) # optionally wait for System B to complete link_request_ids(sys_A.request_ID, target_id=sys_B.request.ID, stage="end") But, it could be as simple as: link_request_ids(sys_A.request_ID, target_id=sys_B.request.ID) """ event_name = "request.link" if stage: event_name += ".%s" % stage rtarget_id = "" if target_id: rtarget_id = _("TargetId=%(id)s ") % {'id': target_id} rtarget_name = "" if target_name: rtarget_name = _("Target='%(name)s' ") % {'name': target_name} arrow = "" if target_name or target_id: arrow = " -> " LOG.info(_("Request ID Link: %(event_name)s '%(source_id)s'%(arrow)s" "%(target_name)s%(target_id)s") % {"event_name": event_name, "source_id": source_id, "target_name": rtarget_name, "arrow": arrow, "target_id": rtarget_id}) if notifier: payload = {"source_request_id": source_id, "target_request_id": target_id, "target_name": target_name, "stage": stage} notifier.info(context, event_name, payload) cinder-2014.1.5/cinder/openstack/common/strutils.py0000664000567000056700000002566512540642606023361 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. """ System-level utilities and helper functions. """ import math import re import sys import unicodedata import six from cinder.openstack.common.gettextutils import _ UNIT_PREFIX_EXPONENT = { 'k': 1, 'K': 1, 'Ki': 1, 'M': 2, 'Mi': 2, 'G': 3, 'Gi': 3, 'T': 4, 'Ti': 4, } UNIT_SYSTEM_INFO = { 'IEC': (1024, re.compile(r'(^[-+]?\d*\.?\d+)([KMGT]i?)?(b|bit|B)$')), 'SI': (1000, re.compile(r'(^[-+]?\d*\.?\d+)([kMGT])?(b|bit|B)$')), } TRUE_STRINGS = ('1', 't', 'true', 'on', 'y', 'yes') FALSE_STRINGS = ('0', 'f', 'false', 'off', 'n', 'no') SLUGIFY_STRIP_RE = re.compile(r"[^\w\s-]") SLUGIFY_HYPHENATE_RE = re.compile(r"[-\s]+") # NOTE(flaper87): The following globals are used by `mask_password` _SANITIZE_KEYS = ['adminPass', 'admin_pass', 'password', 'admin_password'] # NOTE(ldbragst): Let's build a list of regex objects using the list of # _SANITIZE_KEYS we already have. This way, we only have to add the new key # to the list of _SANITIZE_KEYS and we can generate regular expressions # for XML and JSON automatically. _SANITIZE_PATTERNS_2 = [] _SANITIZE_PATTERNS_1 = [] # NOTE(amrith): Some regular expressions have only one parameter, some # have two parameters. Use different lists of patterns here. _FORMAT_PATTERNS_1 = [r'(%(key)s\s*[=]\s*)[^\s^\'^\"]+'] _FORMAT_PATTERNS_2 = [r'(%(key)s\s*[=]\s*[\"\']).*?([\"\'])', r'(%(key)s\s+[\"\']).*?([\"\'])', r'([-]{2}%(key)s\s+)[^\'^\"^=^\s]+([\s]*)', r'(<%(key)s>).*?()', r'([\"\']%(key)s[\"\']\s*:\s*[\"\']).*?([\"\'])', r'([\'"].*?%(key)s[\'"]\s*:\s*u?[\'"]).*?([\'"])', r'([\'"].*?%(key)s[\'"]\s*,\s*\'--?[A-z]+\'\s*,\s*u?' '[\'"]).*?([\'"])', r'(%(key)s\s*--?[A-z]+\s*)\S+(\s*)'] for key in _SANITIZE_KEYS: for pattern in _FORMAT_PATTERNS_2: reg_ex = re.compile(pattern % {'key': key}, re.DOTALL) _SANITIZE_PATTERNS_2.append(reg_ex) for pattern in _FORMAT_PATTERNS_1: reg_ex = re.compile(pattern % {'key': key}, re.DOTALL) _SANITIZE_PATTERNS_1.append(reg_ex) def int_from_bool_as_string(subject): """Interpret a string as a boolean and return either 1 or 0. Any string value in: ('True', 'true', 'On', 'on', '1') is interpreted as a boolean True. Useful for JSON-decoded stuff and config file parsing """ return bool_from_string(subject) and 1 or 0 def bool_from_string(subject, strict=False, default=False): """Interpret a string as a boolean. A case-insensitive match is performed such that strings matching 't', 'true', 'on', 'y', 'yes', or '1' are considered True and, when `strict=False`, anything else returns the value specified by 'default'. Useful for JSON-decoded stuff and config file parsing. If `strict=True`, unrecognized values, including None, will raise a ValueError which is useful when parsing values passed in from an API call. Strings yielding False are 'f', 'false', 'off', 'n', 'no', or '0'. """ if not isinstance(subject, six.string_types): subject = str(subject) lowered = subject.strip().lower() if lowered in TRUE_STRINGS: return True elif lowered in FALSE_STRINGS: return False elif strict: acceptable = ', '.join( "'%s'" % s for s in sorted(TRUE_STRINGS + FALSE_STRINGS)) msg = _("Unrecognized value '%(val)s', acceptable values are:" " %(acceptable)s") % {'val': subject, 'acceptable': acceptable} raise ValueError(msg) else: return default def safe_decode(text, incoming=None, errors='strict'): """Decodes incoming str using `incoming` if they're not already unicode. :param incoming: Text's current encoding :param errors: Errors handling policy. See here for valid values http://docs.python.org/2/library/codecs.html :returns: text or a unicode `incoming` encoded representation of it. :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)) if isinstance(text, six.text_type): return text if not incoming: incoming = (sys.stdin.encoding or sys.getdefaultencoding()) try: return text.decode(incoming, errors) except UnicodeDecodeError: # Note(flaper87) If we get here, it means that # sys.stdin.encoding / sys.getdefaultencoding # didn't return a suitable encoding to decode # text. This happens mostly when global LANG # var is not set correctly and there's no # default encoding. In this case, most likely # python will use ASCII or ANSI encoders as # default encodings but they won't be capable # of decoding non-ASCII characters. # # Also, UTF-8 is being used since it's an ASCII # extension. return text.decode('utf-8', errors) def safe_encode(text, incoming=None, encoding='utf-8', errors='strict'): """Encodes incoming str/unicode using `encoding`. If incoming is not specified, text is expected to be encoded with current python's default encoding. (`sys.getdefaultencoding`) :param incoming: Text's current encoding :param encoding: Expected encoding for text (Default UTF-8) :param errors: Errors handling policy. See here for valid values http://docs.python.org/2/library/codecs.html :returns: text or a bytestring `encoding` encoded representation of it. :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)) if not incoming: incoming = (sys.stdin.encoding or sys.getdefaultencoding()) if isinstance(text, six.text_type): if six.PY3: return text.encode(encoding, errors).decode(incoming) else: return text.encode(encoding, errors) elif text and encoding != incoming: # Decode text before encoding it with `encoding` text = safe_decode(text, incoming, errors) if six.PY3: return text.encode(encoding, errors).decode(incoming) else: return text.encode(encoding, errors) return text def string_to_bytes(text, unit_system='IEC', return_int=False): """Converts a string into an float representation of bytes. The units supported for IEC :: Kb(it), Kib(it), Mb(it), Mib(it), Gb(it), Gib(it), Tb(it), Tib(it) KB, KiB, MB, MiB, GB, GiB, TB, TiB The units supported for SI :: kb(it), Mb(it), Gb(it), Tb(it) kB, MB, GB, TB Note that the SI unit system does not support capital letter 'K' :param text: String input for bytes size conversion. :param unit_system: Unit system for byte size conversion. :param return_int: If True, returns integer representation of text in bytes. (default: decimal) :returns: Numerical representation of text in bytes. :raises ValueError: If text has an invalid value. """ try: base, reg_ex = UNIT_SYSTEM_INFO[unit_system] except KeyError: msg = _('Invalid unit system: "%s"') % unit_system raise ValueError(msg) match = reg_ex.match(text) if match: magnitude = float(match.group(1)) unit_prefix = match.group(2) if match.group(3) in ['b', 'bit']: magnitude /= 8 else: msg = _('Invalid string format: %s') % text raise ValueError(msg) if not unit_prefix: res = magnitude else: res = magnitude * pow(base, UNIT_PREFIX_EXPONENT[unit_prefix]) if return_int: return int(math.ceil(res)) return res def to_slug(value, incoming=None, errors="strict"): """Normalize string. Convert to lowercase, remove non-word characters, and convert spaces to hyphens. Inspired by Django's `slugify` filter. :param value: Text to slugify :param incoming: Text's current encoding :param errors: Errors handling policy. See here for valid values http://docs.python.org/2/library/codecs.html :returns: slugified unicode representation of `value` :raises TypeError: If text is not an instance of str """ value = safe_decode(value, incoming, errors) # NOTE(aababilov): no need to use safe_(encode|decode) here: # encodings are always "ascii", error handling is always "ignore" # and types are always known (first: unicode; second: str) value = unicodedata.normalize("NFKD", value).encode( "ascii", "ignore").decode("ascii") value = SLUGIFY_STRIP_RE.sub("", value).strip().lower() return SLUGIFY_HYPHENATE_RE.sub("-", value) def mask_password(message, secret="***"): """Replace password with 'secret' in message. :param message: The string which includes security information. :param secret: value with which to replace passwords. :returns: The unicode value of message with the password fields masked. For example: >>> mask_password("'adminPass' : 'aaaaa'") "'adminPass' : '***'" >>> mask_password("'admin_pass' : 'aaaaa'") "'admin_pass' : '***'" >>> mask_password('"password" : "aaaaa"') '"password" : "***"' >>> mask_password("'original_password' : 'aaaaa'") "'original_password' : '***'" >>> mask_password("u'original_password' : u'aaaaa'") "u'original_password' : u'***'" """ try: message = six.text_type(message) except UnicodeDecodeError: # NOTE(jecarey): Temporary fix to handle cases where message is a # byte string. A better solution will be provided in Kilo. pass # NOTE(ldbragst): Check to see if anything in message contains any key # specified in _SANITIZE_KEYS, if not then just return the message since # we don't have to mask any passwords. if not any(key in message for key in _SANITIZE_KEYS): return message substitute = r'\g<1>' + secret + r'\g<2>' for pattern in _SANITIZE_PATTERNS_2: message = re.sub(pattern, substitute, message) substitute = r'\g<1>' + secret for pattern in _SANITIZE_PATTERNS_1: message = re.sub(pattern, substitute, message) return message cinder-2014.1.5/cinder/openstack/common/fileutils.py0000664000567000056700000000563412540642606023462 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack Foundation. # All Rights Reserved. # # 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. import contextlib import errno import os from cinder.openstack.common import excutils from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) _FILE_CACHE = {} def ensure_tree(path): """Create a directory (and any ancestor directories required) :param path: Directory to create """ try: os.makedirs(path) except OSError as exc: if exc.errno == errno.EEXIST: if not os.path.isdir(path): raise else: raise def read_cached_file(filename, force_reload=False): """Read from a file if it has been modified. :param force_reload: Whether to reload the file. :returns: A tuple with a boolean specifying if the data is fresh or not. """ global _FILE_CACHE if force_reload and filename in _FILE_CACHE: del _FILE_CACHE[filename] reloaded = False mtime = os.path.getmtime(filename) cache_info = _FILE_CACHE.setdefault(filename, {}) if not cache_info or mtime > cache_info.get('mtime', 0): LOG.debug(_("Reloading cached file %s") % filename) with open(filename) as fap: cache_info['data'] = fap.read() cache_info['mtime'] = mtime reloaded = True return (reloaded, cache_info['data']) def delete_if_exists(path): """Delete a file, but ignore file not found error. :param path: File to delete """ try: os.unlink(path) except OSError as e: if e.errno == errno.ENOENT: return else: raise @contextlib.contextmanager def remove_path_on_error(path): """Protect code that wants to operate on PATH atomically. Any exception will cause PATH to be removed. :param path: File to work with """ try: yield except Exception: with excutils.save_and_reraise_exception(): delete_if_exists(path) def file_open(*args, **kwargs): """Open file see built-in file() documentation for more details Note: The reason this is kept in a separate module is to easily be able to provide a stub module that doesn't alter system state at all (for unit tests) """ return file(*args, **kwargs) cinder-2014.1.5/cinder/openstack/__init__.py0000664000567000056700000000121612540642606021721 0ustar jenkinsjenkins00000000000000# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2011 Red Hat, Inc. # # 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. cinder-2014.1.5/cinder/transfer/0000775000567000056700000000000012540643114017440 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/transfer/__init__.py0000664000567000056700000000172112540642606021557 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # Importing full names to not pollute the namespace and cause possible # collisions with use of 'from cinder.transfer import ' elsewhere. from oslo.config import cfg import cinder.openstack.common.importutils CONF = cfg.CONF API = cinder.openstack.common.importutils.import_class(CONF.transfer_api_class) cinder-2014.1.5/cinder/transfer/api.py0000664000567000056700000002116712540642606020577 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Handles all requests relating to transferring ownership of volumes. """ import datetime import hashlib import hmac import random from oslo.config import cfg from cinder.db import base from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import quota from cinder.volume import api as volume_api volume_transfer_opts = [ cfg.IntOpt('volume_transfer_salt_length', default=8, help='The number of characters in the salt.'), cfg.IntOpt('volume_transfer_key_length', default=16, help='The number of characters in the ' 'autogenerated auth key.'), ] CONF = cfg.CONF CONF.register_opts(volume_transfer_opts) LOG = logging.getLogger(__name__) QUOTAS = quota.QUOTAS class API(base.Base): """API for interacting volume transfers.""" def __init__(self, db_driver=None): self.volume_api = volume_api.API() super(API, self).__init__(db_driver) def get(self, context, transfer_id): rv = self.db.transfer_get(context, transfer_id) return dict(rv.iteritems()) def delete(self, context, transfer_id): """Make the RPC call to delete a volume transfer.""" volume_api.check_policy(context, 'delete_transfer') transfer = self.db.transfer_get(context, transfer_id) volume_ref = self.db.volume_get(context, transfer.volume_id) if volume_ref['status'] != 'awaiting-transfer': msg = _("Volume in unexpected state") LOG.error(msg) self.db.transfer_destroy(context, transfer_id) def get_all(self, context, filters={}): volume_api.check_policy(context, 'get_all_transfers') if context.is_admin and 'all_tenants' in filters: transfers = self.db.transfer_get_all(context) else: transfers = self.db.transfer_get_all_by_project(context, context.project_id) return transfers def _get_random_string(self, length): """Get a random hex string of the specified length.""" rndstr = "" random.seed(datetime.datetime.now().microsecond) while len(rndstr) < length: rndstr += hashlib.sha224(str(random.random())).hexdigest() return rndstr[0:length] def _get_crypt_hash(self, salt, auth_key): """Generate a random hash based on the salt and the auth key.""" return hmac.new(str(salt), str(auth_key), hashlib.sha1).hexdigest() def create(self, context, volume_id, display_name): """Creates an entry in the transfers table.""" volume_api.check_policy(context, 'create_transfer') LOG.info("Generating transfer record for volume %s" % volume_id) volume_ref = self.db.volume_get(context, volume_id) if volume_ref['status'] != "available": raise exception.InvalidVolume(reason=_("status must be available")) # The salt is just a short random string. salt = self._get_random_string(CONF.volume_transfer_salt_length) auth_key = self._get_random_string(CONF.volume_transfer_key_length) crypt_hash = self._get_crypt_hash(salt, auth_key) # TODO(ollie): Transfer expiry needs to be implemented. transfer_rec = {'volume_id': volume_id, 'display_name': display_name, 'salt': salt, 'crypt_hash': crypt_hash, 'expires_at': None} try: transfer = self.db.transfer_create(context, transfer_rec) except Exception: LOG.error(_("Failed to create transfer record for %s") % volume_id) raise return {'id': transfer['id'], 'volume_id': transfer['volume_id'], 'display_name': transfer['display_name'], 'auth_key': auth_key, 'created_at': transfer['created_at']} def accept(self, context, transfer_id, auth_key): """Accept a volume that has been offered for transfer.""" # We must use an elevated context to see the volume that is still # owned by the donor. volume_api.check_policy(context, 'accept_transfer') transfer = self.db.transfer_get(context.elevated(), transfer_id) crypt_hash = self._get_crypt_hash(transfer['salt'], auth_key) if crypt_hash != transfer['crypt_hash']: msg = (_("Attempt to transfer %s with invalid auth key.") % transfer_id) LOG.error(msg) raise exception.InvalidAuthKey(reason=msg) volume_id = transfer['volume_id'] vol_ref = self.db.volume_get(context.elevated(), volume_id) try: reservations = QUOTAS.reserve(context, volumes=1, gigabytes=vol_ref['size']) except exception.OverQuota as e: overs = e.kwargs['overs'] usages = e.kwargs['usages'] quotas = e.kwargs['quotas'] def _consumed(name): return (usages[name]['reserved'] + usages[name]['in_use']) if 'gigabytes' in overs: msg = _("Quota exceeded for %(s_pid)s, tried to create " "%(s_size)sG volume (%(d_consumed)dG of %(d_quota)dG " "already consumed)") LOG.warn(msg % {'s_pid': context.project_id, 's_size': vol_ref['size'], 'd_consumed': _consumed('gigabytes'), 'd_quota': quotas['gigabytes']}) raise exception.VolumeSizeExceedsAvailableQuota( requested=vol_ref['size'], consumed=_consumed('gigabytes'), quota=quotas['gigabytes']) elif 'volumes' in overs: msg = _("Quota exceeded for %(s_pid)s, tried to create " "volume (%(d_consumed)d volumes " "already consumed)") LOG.warn(msg % {'s_pid': context.project_id, 'd_consumed': _consumed('volumes')}) raise exception.VolumeLimitExceeded(allowed=quotas['volumes']) try: donor_id = vol_ref['project_id'] donor_reservations = QUOTAS.reserve(context.elevated(), project_id=donor_id, volumes=-1, gigabytes=-vol_ref['size']) except Exception: donor_reservations = None LOG.exception(_("Failed to update quota donating volume" "transfer id %s") % transfer_id) try: # Transfer ownership of the volume now, must use an elevated # context. self.volume_api.accept_transfer(context, vol_ref, context.user_id, context.project_id) self.db.transfer_accept(context.elevated(), transfer_id, context.user_id, context.project_id) QUOTAS.commit(context, reservations) if donor_reservations: QUOTAS.commit(context, donor_reservations, project_id=donor_id) LOG.info(_("Volume %s has been transferred.") % volume_id) except Exception: with excutils.save_and_reraise_exception(): QUOTAS.rollback(context, reservations) if donor_reservations: QUOTAS.rollback(context, donor_reservations, project_id=donor_id) vol_ref = self.db.volume_get(context, volume_id) return {'id': transfer_id, 'display_name': transfer['display_name'], 'volume_id': vol_ref['id']} cinder-2014.1.5/cinder/exception.py0000664000567000056700000004633412540642606020203 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Cinder base exception handling. Includes decorator for re-raising Cinder-type exceptions. SHOULD include dedicated exception logging. """ import sys from oslo.config import cfg import webob.exc from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) exc_log_opts = [ cfg.BoolOpt('fatal_exception_format_errors', default=False, help='make exception message format errors fatal'), ] CONF = cfg.CONF CONF.register_opts(exc_log_opts) class ConvertedException(webob.exc.WSGIHTTPException): def __init__(self, code=0, title="", explanation=""): self.code = code self.title = title self.explanation = explanation super(ConvertedException, self).__init__() class Error(Exception): pass class CinderException(Exception): """Base Cinder Exception To correctly use this class, inherit from it and define a 'message' property. That message will get printf'd with the keyword arguments provided to the constructor. """ message = _("An unknown exception occurred.") code = 500 headers = {} safe = False def __init__(self, message=None, **kwargs): self.kwargs = kwargs if 'code' not in self.kwargs: try: self.kwargs['code'] = self.code except AttributeError: pass if not message: try: message = self.message % kwargs except Exception: exc_info = sys.exc_info() # kwargs doesn't match a variable in the message # log the issue and the kwargs LOG.exception(_('Exception in string format operation')) for name, value in kwargs.iteritems(): LOG.error("%s: %s" % (name, value)) if CONF.fatal_exception_format_errors: raise exc_info[0], exc_info[1], exc_info[2] # at least get the core message out if something happened message = self.message # NOTE(luisg): We put the actual message in 'msg' so that we can access # it, because if we try to access the message via 'message' it will be # overshadowed by the class' message attribute self.msg = message super(CinderException, self).__init__(message) def __unicode__(self): return unicode(self.msg) class VolumeBackendAPIException(CinderException): message = _("Bad or unexpected response from the storage volume " "backend API: %(data)s") class VolumeDriverException(CinderException): message = _("Volume driver reported an error: %(message)s") class BackupDriverException(CinderException): message = _("Backup driver reported an error: %(message)s") class GlanceConnectionFailed(CinderException): message = _("Connection to glance failed: %(reason)s") class NotAuthorized(CinderException): message = _("Not authorized.") code = 403 class AdminRequired(NotAuthorized): message = _("User does not have admin privileges") class PolicyNotAuthorized(NotAuthorized): message = _("Policy doesn't allow %(action)s to be performed.") class ImageNotAuthorized(CinderException): message = _("Not authorized for image %(image_id)s.") class DriverNotInitialized(CinderException): message = _("Volume driver not ready.") class Invalid(CinderException): message = _("Unacceptable parameters.") code = 400 class InvalidSnapshot(Invalid): message = _("Invalid snapshot: %(reason)s") class InvalidVolumeAttachMode(Invalid): message = _("Invalid attaching mode '%(mode)s' for " "volume %(volume_id)s.") class VolumeAttached(Invalid): message = _("Volume %(volume_id)s is still attached, detach volume first.") class SfJsonEncodeFailure(CinderException): message = _("Failed to load data into json format") class InvalidResults(Invalid): message = _("The results are invalid.") class InvalidInput(Invalid): message = _("Invalid input received: %(reason)s") class InvalidVolumeType(Invalid): message = _("Invalid volume type: %(reason)s") class InvalidVolume(Invalid): message = _("Invalid volume: %(reason)s") class InvalidContentType(Invalid): message = _("Invalid content type %(content_type)s.") class InvalidHost(Invalid): message = _("Invalid host: %(reason)s") # Cannot be templated as the error syntax varies. # msg needs to be constructed when raised. class InvalidParameterValue(Invalid): message = _("%(err)s") class InvalidAuthKey(Invalid): message = _("Invalid auth key: %(reason)s") class InvalidConfigurationValue(Invalid): message = _('Value "%(value)s" is not valid for ' 'configuration option "%(option)s"') class ServiceUnavailable(Invalid): message = _("Service is unavailable at this time.") class ImageUnacceptable(Invalid): message = _("Image %(image_id)s is unacceptable: %(reason)s") class DeviceUnavailable(Invalid): message = _("The device in the path %(path)s is unavailable: %(reason)s") class InvalidUUID(Invalid): message = _("Expected a uuid but received %(uuid)s.") class NotFound(CinderException): message = _("Resource could not be found.") code = 404 safe = True class VolumeNotFound(NotFound): message = _("Volume %(volume_id)s could not be found.") class VolumeMetadataNotFound(NotFound): message = _("Volume %(volume_id)s has no metadata with " "key %(metadata_key)s.") class VolumeAdminMetadataNotFound(NotFound): message = _("Volume %(volume_id)s has no administration metadata with " "key %(metadata_key)s.") class InvalidVolumeMetadata(Invalid): message = _("Invalid metadata: %(reason)s") class InvalidVolumeMetadataSize(Invalid): message = _("Invalid metadata size: %(reason)s") class SnapshotMetadataNotFound(NotFound): message = _("Snapshot %(snapshot_id)s has no metadata with " "key %(metadata_key)s.") class VolumeTypeNotFound(NotFound): message = _("Volume type %(volume_type_id)s could not be found.") class VolumeTypeNotFoundByName(VolumeTypeNotFound): message = _("Volume type with name %(volume_type_name)s " "could not be found.") class VolumeTypeExtraSpecsNotFound(NotFound): message = _("Volume Type %(volume_type_id)s has no extra specs with " "key %(extra_specs_key)s.") class VolumeTypeInUse(CinderException): message = _("Volume Type %(volume_type_id)s deletion is not allowed with " "volumes present with the type.") class SnapshotNotFound(NotFound): message = _("Snapshot %(snapshot_id)s could not be found.") class VolumeIsBusy(CinderException): message = _("deleting volume %(volume_name)s that has snapshot") class SnapshotIsBusy(CinderException): message = _("deleting snapshot %(snapshot_name)s that has " "dependent volumes") class ISCSITargetNotFoundForVolume(NotFound): message = _("No target id found for volume %(volume_id)s.") class InvalidImageRef(Invalid): message = _("Invalid image href %(image_href)s.") class ImageNotFound(NotFound): message = _("Image %(image_id)s could not be found.") class ServiceNotFound(NotFound): message = _("Service %(service_id)s could not be found.") class HostNotFound(NotFound): message = _("Host %(host)s could not be found.") class SchedulerHostFilterNotFound(NotFound): message = _("Scheduler Host Filter %(filter_name)s could not be found.") class SchedulerHostWeigherNotFound(NotFound): message = _("Scheduler Host Weigher %(weigher_name)s could not be found.") class HostBinaryNotFound(NotFound): message = _("Could not find binary %(binary)s on host %(host)s.") class InvalidReservationExpiration(Invalid): message = _("Invalid reservation expiration %(expire)s.") class InvalidQuotaValue(Invalid): message = _("Change would make usage less than 0 for the following " "resources: %(unders)s") class QuotaNotFound(NotFound): message = _("Quota could not be found") class QuotaResourceUnknown(QuotaNotFound): message = _("Unknown quota resources %(unknown)s.") class ProjectQuotaNotFound(QuotaNotFound): message = _("Quota for project %(project_id)s could not be found.") class QuotaClassNotFound(QuotaNotFound): message = _("Quota class %(class_name)s could not be found.") class QuotaUsageNotFound(QuotaNotFound): message = _("Quota usage for project %(project_id)s could not be found.") class ReservationNotFound(QuotaNotFound): message = _("Quota reservation %(uuid)s could not be found.") class OverQuota(CinderException): message = _("Quota exceeded for resources: %(overs)s") class FileNotFound(NotFound): message = _("File %(file_path)s could not be found.") #TODO(bcwaldon): EOL this exception! class Duplicate(CinderException): pass class VolumeTypeExists(Duplicate): message = _("Volume Type %(id)s already exists.") class VolumeTypeEncryptionExists(Invalid): message = _("Volume type encryption for type %(type_id)s already exists.") class VolumeTypeEncryptionNotFound(NotFound): message = _("Volume type encryption for type %(type_id)s does not exist.") class MalformedRequestBody(CinderException): message = _("Malformed message body: %(reason)s") class ConfigNotFound(NotFound): message = _("Could not find config at %(path)s") class ParameterNotFound(NotFound): message = _("Could not find parameter %(param)s") class PasteAppNotFound(NotFound): message = _("Could not load paste app '%(name)s' from %(path)s") class NoValidHost(CinderException): message = _("No valid host was found. %(reason)s") class NoMoreTargets(CinderException): """No more available targets.""" pass class QuotaError(CinderException): message = _("Quota exceeded: code=%(code)s") code = 413 headers = {'Retry-After': 0} safe = True class VolumeSizeExceedsAvailableQuota(QuotaError): message = _("Requested volume or snapshot exceeds allowed Gigabytes " "quota. Requested %(requested)sG, quota is %(quota)sG and " "%(consumed)sG has been consumed.") class VolumeLimitExceeded(QuotaError): message = _("Maximum number of volumes allowed (%(allowed)d) exceeded") class SnapshotLimitExceeded(QuotaError): message = _("Maximum number of snapshots allowed (%(allowed)d) exceeded") class DuplicateSfVolumeNames(Duplicate): message = _("Detected more than one volume with name %(vol_name)s") class VolumeTypeCreateFailed(CinderException): message = _("Cannot create volume_type with " "name %(name)s and specs %(extra_specs)s") class UnknownCmd(VolumeDriverException): message = _("Unknown or unsupported command %(cmd)s") class MalformedResponse(VolumeDriverException): message = _("Malformed response to command %(cmd)s: %(reason)s") class FailedCmdWithDump(VolumeDriverException): message = _("Operation failed with status=%(status)s. Full dump: %(data)s") class GlanceMetadataExists(Invalid): message = _("Glance metadata cannot be updated, key %(key)s" " exists for volume id %(volume_id)s") class GlanceMetadataNotFound(NotFound): message = _("Glance metadata for volume/snapshot %(id)s cannot be found.") class ExportFailure(Invalid): message = _("Failed to export for volume: %(reason)s") class MetadataCreateFailure(Invalid): message = _("Failed to create metadata for volume: %(reason)s") class MetadataUpdateFailure(Invalid): message = _("Failed to update metadata for volume: %(reason)s") class MetadataCopyFailure(Invalid): message = _("Failed to copy metadata to volume: %(reason)s") class ImageCopyFailure(Invalid): message = _("Failed to copy image to volume: %(reason)s") class BackupInvalidCephArgs(BackupDriverException): message = _("Invalid Ceph args provided for backup rbd operation") class BackupOperationError(Invalid): message = _("An error has occurred during backup operation") class BackupMetadataUnsupportedVersion(BackupDriverException): message = _("Unsupported backup metadata version requested") class VolumeMetadataBackupExists(BackupDriverException): message = _("Metadata backup already exists for this volume") class BackupRBDOperationFailed(BackupDriverException): message = _("Backup RBD operation failed") class BackupNotFound(NotFound): message = _("Backup %(backup_id)s could not be found.") class BackupFailedToGetVolumeBackend(NotFound): message = _("Failed to identify volume backend.") class InvalidBackup(Invalid): message = _("Invalid backup: %(reason)s") class SwiftConnectionFailed(BackupDriverException): message = _("Connection to swift failed: %(reason)s") class TransferNotFound(NotFound): message = _("Transfer %(transfer_id)s could not be found.") class VolumeMigrationFailed(CinderException): message = _("Volume migration failed: %(reason)s") class SSHInjectionThreat(CinderException): message = _("SSH command injection detected: %(command)s") class QoSSpecsExists(Duplicate): message = _("QoS Specs %(specs_id)s already exists.") class QoSSpecsCreateFailed(CinderException): message = _("Failed to create qos_specs: " "%(name)s with specs %(qos_specs)s.") class QoSSpecsUpdateFailed(CinderException): message = _("Failed to update qos_specs: " "%(specs_id)s with specs %(qos_specs)s.") class QoSSpecsNotFound(NotFound): message = _("No such QoS spec %(specs_id)s.") class QoSSpecsAssociateFailed(CinderException): message = _("Failed to associate qos_specs: " "%(specs_id)s with type %(type_id)s.") class QoSSpecsDisassociateFailed(CinderException): message = _("Failed to disassociate qos_specs: " "%(specs_id)s with type %(type_id)s.") class QoSSpecsKeyNotFound(NotFound): message = _("QoS spec %(specs_id)s has no spec with " "key %(specs_key)s.") class InvalidQoSSpecs(Invalid): message = _("Invalid qos specs: %(reason)s") class QoSSpecsInUse(CinderException): message = _("QoS Specs %(specs_id)s is still associated with entities.") class KeyManagerError(CinderException): msg_fmt = _("key manager error: %(reason)s") class ManageExistingInvalidReference(CinderException): message = _("Manage existing volume failed due to invalid backend " "reference %(existing_ref)s: %(reason)s") class ManageExistingVolumeTypeMismatch(CinderException): message = _("Manage existing volume failed due to volume type mismatch: " "%(reason)s") # Driver specific exceptions # Coraid class CoraidException(VolumeDriverException): message = _('Coraid Cinder Driver exception.') class CoraidJsonEncodeFailure(CoraidException): message = _('Failed to encode json data.') class CoraidESMBadCredentials(CoraidException): message = _('Login on ESM failed.') class CoraidESMReloginFailed(CoraidException): message = _('Relogin on ESM failed.') class CoraidESMBadGroup(CoraidException): message = _('Group with name "%(group_name)s" not found.') class CoraidESMConfigureError(CoraidException): message = _('ESM configure request failed: %(reason)s') class CoraidESMNotAvailable(CoraidException): message = _('Coraid ESM not available with reason: %(reason)s') # Zadara class ZadaraException(VolumeDriverException): message = _('Zadara Cinder Driver exception.') class ZadaraServerCreateFailure(ZadaraException): message = _("Unable to create server object for initiator %(name)s") class ZadaraServerNotFound(ZadaraException): message = _("Unable to find server object for initiator %(name)s") class ZadaraVPSANoActiveController(ZadaraException): message = _("Unable to find any active VPSA controller") class ZadaraAttachmentsNotFound(ZadaraException): message = _("Failed to retrieve attachments for volume %(name)s") class ZadaraInvalidAttachmentInfo(ZadaraException): message = _("Invalid attachment info for volume %(name)s: %(reason)s") class BadHTTPResponseStatus(ZadaraException): message = _("Bad HTTP response status %(status)s") #SolidFire class SolidFireAPIException(VolumeBackendAPIException): message = _("Bad response from SolidFire API") class SolidFireDriverException(VolumeDriverException): message = _("SolidFire Cinder Driver exception") class SolidFireAPIDataException(SolidFireAPIException): message = _("Error in SolidFire API response: data=%(data)s") class SolidFireAccountNotFound(SolidFireDriverException): message = _("Unable to locate account %(account_name)s on " "Solidfire device") # HP 3Par class Invalid3PARDomain(VolumeDriverException): message = _("Invalid 3PAR Domain: %(err)s") # NFS driver class NfsException(VolumeDriverException): message = _("Unknown NFS exception") class NfsNoSharesMounted(VolumeDriverException): message = _("No mounted NFS shares found") class NfsNoSuitableShareFound(VolumeDriverException): message = _("There is no share which can host %(volume_size)sG") # Gluster driver class GlusterfsException(VolumeDriverException): message = _("Unknown Gluster exception") class GlusterfsNoSharesMounted(VolumeDriverException): message = _("No mounted Gluster shares found") class GlusterfsNoSuitableShareFound(VolumeDriverException): message = _("There is no share which can host %(volume_size)sG") class RemoveExportException(VolumeDriverException): message = _("Failed to remove export for volume %(volume)s: %(reason)s") # HP MSA class HPMSAVolumeDriverException(VolumeDriverException): message = _("HP MSA Volume Driver exception") class HPMSAInvalidVDisk(HPMSAVolumeDriverException): message = _("VDisk doesn't exist (%(vdisk)s)") class HPMSAConnectionError(HPMSAVolumeDriverException): message = _("Unable to connect to MSA array") class HPMSANotEnoughSpace(HPMSAVolumeDriverException): message = _("Not enough space on VDisk (%(vdisk)s)") # Fibre Channel Zone Manager class ZoneManagerException(CinderException): message = _("Fibre Channel connection control failure: %(reason)s") class FCZoneDriverException(CinderException): message = _("Fibre Channel Zone operation failed: %(reason)s") class FCSanLookupServiceException(CinderException): message = _("Fibre Channel SAN Lookup failure: %(reason)s") class BrocadeZoningCliException(CinderException): message = _("Fibre Channel Zoning CLI error: %(reason)s") class NetAppDriverException(VolumeDriverException): message = _("NetApp Cinder Driver exception.") cinder-2014.1.5/cinder/policy.py0000664000567000056700000000710112540642606017471 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Policy Engine For Cinder""" from oslo.config import cfg from cinder import exception from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import policy from cinder import utils policy_opts = [ cfg.StrOpt('policy_file', default='policy.json', help=_('JSON file representing policy')), cfg.StrOpt('policy_default_rule', default='default', help=_('Rule checked when requested rule is not found')), ] CONF = cfg.CONF CONF.register_opts(policy_opts) _POLICY_PATH = None _POLICY_CACHE = {} def reset(): global _POLICY_PATH global _POLICY_CACHE _POLICY_PATH = None _POLICY_CACHE = {} policy.reset() def init(): global _POLICY_PATH global _POLICY_CACHE if not _POLICY_PATH: _POLICY_PATH = utils.find_config(CONF.policy_file) utils.read_cached_file(_POLICY_PATH, _POLICY_CACHE, reload_func=_set_brain) def _set_brain(data): default_rule = CONF.policy_default_rule policy.set_brain(policy.Brain.load_json(data, default_rule)) def enforce_action(context, action): """Checks that the action can be done by the given context. Applies a check to ensure the context's project_id and user_id can be applied to the given action using the policy enforcement api. """ target = { 'project_id': context.project_id, 'user_id': context.user_id, } enforce(context, action, target) def enforce(context, action, target): """Verifies that the action is valid on the target in this context. :param context: cinder context :param action: string representing the action to be checked this should be colon separated for clarity. i.e. ``compute:create_instance``, ``compute:attach_volume``, ``volume:attach_volume`` :param object: dictionary representing the object of the action for object creation this should be a dictionary representing the location of the object e.g. ``{'project_id': context.project_id}`` :raises cinder.exception.PolicyNotAuthorized: if verification fails. """ init() match_list = ('rule:%s' % action,) credentials = context.to_dict() policy.enforce(match_list, target, credentials, exception.PolicyNotAuthorized, action=action) def check_is_admin(roles): """Whether or not roles contains 'admin' role according to policy setting. """ init() action = 'context_is_admin' match_list = ('rule:%s' % action,) # include project_id on target to avoid KeyError if context_is_admin # policy definition is missing, and default admin_or_owner rule # attempts to apply. Since our credentials dict does not include a # project_id, this target can never match as a generic rule. target = {'project_id': ''} credentials = {'roles': roles} return policy.enforce(match_list, target, credentials) cinder-2014.1.5/cinder/brick/0000775000567000056700000000000012540643114016706 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/README.txt0000664000567000056700000000063112540642606020411 0ustar jenkinsjenkins00000000000000Brick is a new library that currently is maintained in Cinder for the Havana release. It will eventually be moved external to Cinder, possibly oslo, or pypi. Any defects found in Brick, should be submitted against Cinder and fixed there, then pulled into other projects that are using brick. * Brick is used outside of Cinder and therefore cannot have any dependencies on Cinder and/or it's database. cinder-2014.1.5/cinder/brick/iscsi/0000775000567000056700000000000012540643114020020 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/iscsi/iscsi.py0000664000567000056700000005532412540642606021522 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Helper code for the iSCSI volume driver. """ import contextlib import os import re import stat import time from cinder.brick import exception from cinder.brick import executor from cinder.openstack.common import fileutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils LOG = logging.getLogger(__name__) class TargetAdmin(executor.Executor): """iSCSI target administration. Base class for iSCSI target admin helpers. """ def __init__(self, cmd, root_helper, execute): super(TargetAdmin, self).__init__(root_helper, execute=execute) self._cmd = cmd def _run(self, *args, **kwargs): self._execute(self._cmd, *args, run_as_root=True, **kwargs) def create_iscsi_target(self, name, tid, lun, path, chap_auth=None, **kwargs): """Create a iSCSI target and logical unit.""" raise NotImplementedError() def remove_iscsi_target(self, tid, lun, vol_id, vol_name, **kwargs): """Remove a iSCSI target and logical unit.""" raise NotImplementedError() def _new_target(self, name, tid, **kwargs): """Create a new iSCSI target.""" raise NotImplementedError() def _delete_target(self, tid, **kwargs): """Delete a target.""" raise NotImplementedError() def show_target(self, tid, iqn=None, **kwargs): """Query the given target ID.""" raise NotImplementedError() def _new_logicalunit(self, tid, lun, path, **kwargs): """Create a new LUN on a target using the supplied path.""" raise NotImplementedError() def _delete_logicalunit(self, tid, lun, **kwargs): """Delete a logical unit from a target.""" raise NotImplementedError() class TgtAdm(TargetAdmin): """iSCSI target administration using tgtadm.""" VOLUME_CONF = """ backing-store %s lld iscsi """ VOLUME_CONF_WITH_CHAP_AUTH = """ backing-store %s lld iscsi %s """ def __init__(self, root_helper, volumes_dir, target_prefix='iqn.2010-10.org.openstack:', execute=putils.execute): super(TgtAdm, self).__init__('tgtadm', root_helper, execute) self.iscsi_target_prefix = target_prefix self.volumes_dir = volumes_dir def _get_target(self, iqn): (out, err) = self._execute('tgt-admin', '--show', run_as_root=True) lines = out.split('\n') for line in lines: if iqn in line: parsed = line.split() tid = parsed[1] return tid[:-1] return None def _verify_backing_lun(self, iqn, tid): backing_lun = True capture = False target_info = [] (out, err) = self._execute('tgt-admin', '--show', run_as_root=True) lines = out.split('\n') for line in lines: if iqn in line and "Target %s" % tid in line: capture = True if capture: target_info.append(line) if iqn not in line and 'Target ' in line: capture = False if ' LUN: 1' not in target_info: backing_lun = False return backing_lun def _recreate_backing_lun(self, iqn, tid, name, path): LOG.warning(_('Attempting recreate of backing lun...')) # Since we think the most common case of this is a dev busy # (create vol from snapshot) we're going to add a sleep here # this will hopefully give things enough time to stabilize # how long should we wait?? I have no idea, let's go big # and error on the side of caution time.sleep(10) try: (out, err) = self._execute('tgtadm', '--lld', 'iscsi', '--op', 'new', '--mode', 'logicalunit', '--tid', tid, '--lun', '1', '-b', path, run_as_root=True) LOG.debug('StdOut from recreate backing lun: %s' % out) LOG.debug('StdErr from recreate backing lun: %s' % err) except putils.ProcessExecutionError as e: LOG.error(_("Failed to recover attempt to create " "iscsi backing lun for volume " "id:%(vol_id)s: %(e)s") % {'vol_id': name, 'e': e}) def create_iscsi_target(self, name, tid, lun, path, chap_auth=None, **kwargs): # Note(jdg) tid and lun aren't used by TgtAdm but remain for # compatibility fileutils.ensure_tree(self.volumes_dir) vol_id = name.split(':')[1] if chap_auth is None: volume_conf = self.VOLUME_CONF % (name, path) else: volume_conf = self.VOLUME_CONF_WITH_CHAP_AUTH % (name, path, chap_auth) LOG.info(_('Creating iscsi_target for: %s') % vol_id) volumes_dir = self.volumes_dir volume_path = os.path.join(volumes_dir, vol_id) f = open(volume_path, 'w+') f.write(volume_conf) f.close() LOG.debug(_('Created volume path %(vp)s,\n' 'content: %(vc)s') % {'vp': volume_path, 'vc': volume_conf}) old_persist_file = None old_name = kwargs.get('old_name', None) if old_name is not None: old_persist_file = os.path.join(volumes_dir, old_name) try: # with the persistent tgts we create them # by creating the entry in the persist file # and then doing an update to get the target # created. (out, err) = self._execute('tgt-admin', '--update', name, run_as_root=True) LOG.debug("StdOut from tgt-admin --update: %s", out) LOG.debug("StdErr from tgt-admin --update: %s", err) # Grab targets list for debug # Consider adding a check for lun 0 and 1 for tgtadm # before considering this as valid (out, err) = self._execute('tgtadm', '--lld', 'iscsi', '--op', 'show', '--mode', 'target', run_as_root=True) LOG.debug("Targets after update: %s" % out) except putils.ProcessExecutionError as e: LOG.warning(_("Failed to create iscsi target for volume " "id:%(vol_id)s: %(e)s") % {'vol_id': vol_id, 'e': e}) #Don't forget to remove the persistent file we created os.unlink(volume_path) raise exception.ISCSITargetCreateFailed(volume_id=vol_id) iqn = '%s%s' % (self.iscsi_target_prefix, vol_id) tid = self._get_target(iqn) if tid is None: LOG.error(_("Failed to create iscsi target for volume " "id:%(vol_id)s. Please ensure your tgtd config file " "contains 'include %(volumes_dir)s/*'") % { 'vol_id': vol_id, 'volumes_dir': volumes_dir, }) raise exception.NotFound() # NOTE(jdg): Sometimes we have some issues with the backing lun # not being created, believe this is due to a device busy # or something related, so we're going to add some code # here that verifies the backing lun (lun 1) was created # and we'll try and recreate it if it's not there if not self._verify_backing_lun(iqn, tid): try: self._recreate_backing_lun(iqn, tid, name, path) except putils.ProcessExecutionError: os.unlink(volume_path) raise exception.ISCSITargetCreateFailed(volume_id=vol_id) # Finally check once more and if no go, fail and punt if not self._verify_backing_lun(iqn, tid): os.unlink(volume_path) raise exception.ISCSITargetCreateFailed(volume_id=vol_id) if old_persist_file is not None and os.path.exists(old_persist_file): os.unlink(old_persist_file) return tid def remove_iscsi_target(self, tid, lun, vol_id, vol_name, **kwargs): LOG.info(_('Removing iscsi_target for: %s') % vol_id) vol_uuid_file = vol_name volume_path = os.path.join(self.volumes_dir, vol_uuid_file) if not os.path.exists(volume_path): LOG.warning(_('Volume path %s does not exist, ' 'nothing to remove.') % volume_path) return if os.path.isfile(volume_path): iqn = '%s%s' % (self.iscsi_target_prefix, vol_uuid_file) else: raise exception.ISCSITargetRemoveFailed(volume_id=vol_id) try: # NOTE(vish): --force is a workaround for bug: # https://bugs.launchpad.net/cinder/+bug/1159948 self._execute('tgt-admin', '--force', '--delete', iqn, run_as_root=True) except putils.ProcessExecutionError as e: LOG.error(_("Failed to remove iscsi target for volume " "id:%(vol_id)s: %(e)s") % {'vol_id': vol_id, 'e': e}) raise exception.ISCSITargetRemoveFailed(volume_id=vol_id) # NOTE(jdg): There's a bug in some versions of tgt that # will sometimes fail silently when using the force flag # https://bugs.launchpad.net/ubuntu/+source/tgt/+bug/1305343 # For now work-around by checking if the target was deleted, # if it wasn't, try again without the force. # This will NOT do any good for the case of mutliple sessions # which the force was aded for but it will however address # the cases pointed out in bug: # https://bugs.launchpad.net/cinder/+bug/1304122 if self._get_target(iqn): try: LOG.warning(_('Silent failure of target removal ' 'detected, retry....')) self._execute('tgt-admin', '--delete', iqn, run_as_root=True) except putils.ProcessExecutionError as e: LOG.error(_("Failed to remove iscsi target for volume " "id:%(vol_id)s: %(e)s") % {'vol_id': vol_id, 'e': e}) raise exception.ISCSITargetRemoveFailed(volume_id=vol_id) # NOTE(jdg): This *should* be there still but incase # it's not we don't care, so just ignore it if was # somehow deleted between entry of this method # and here if os.path.exists(volume_path): os.unlink(volume_path) else: LOG.debug('Volume path %s not found at end, ' 'of remove_iscsi_target.' % volume_path) def show_target(self, tid, iqn=None, **kwargs): if iqn is None: raise exception.InvalidParameterValue( err=_('valid iqn needed for show_target')) tid = self._get_target(iqn) if tid is None: raise exception.NotFound() class IetAdm(TargetAdmin): """iSCSI target administration using ietadm.""" def __init__(self, root_helper, iet_conf='/etc/iet/ietd.conf', iscsi_iotype='fileio', execute=putils.execute): super(IetAdm, self).__init__('ietadm', root_helper, execute) self.iet_conf = iet_conf self.iscsi_iotype = iscsi_iotype def _is_block(self, path): mode = os.stat(path).st_mode return stat.S_ISBLK(mode) def _iotype(self, path): if self.iscsi_iotype == 'auto': return 'blockio' if self._is_block(path) else 'fileio' else: return self.iscsi_iotype @contextlib.contextmanager def temporary_chown(self, path, owner_uid=None): """Temporarily chown a path. :params path: The path to chown :params owner_uid: UID of temporary owner (defaults to current user) """ if owner_uid is None: owner_uid = os.getuid() orig_uid = os.stat(path).st_uid if orig_uid != owner_uid: putils.execute('chown', owner_uid, path, root_helper=self._root_helper, run_as_root=True) try: yield finally: if orig_uid != owner_uid: putils.execute('chown', orig_uid, path, root_helper=self._root_helper, run_as_root=True) def create_iscsi_target(self, name, tid, lun, path, chap_auth=None, **kwargs): # NOTE (jdg): Address bug: 1175207 kwargs.pop('old_name', None) self._new_target(name, tid, **kwargs) self._new_logicalunit(tid, lun, path, **kwargs) if chap_auth is not None: (type, username, password) = chap_auth.split() self._new_auth(tid, type, username, password, **kwargs) conf_file = self.iet_conf if os.path.exists(conf_file): try: volume_conf = """ Target %s %s Lun 0 Path=%s,Type=%s """ % (name, chap_auth, path, self._iotype(path)) with self.temporary_chown(conf_file): f = open(conf_file, 'a+') f.write(volume_conf) f.close() except putils.ProcessExecutionError as e: vol_id = name.split(':')[1] LOG.error(_("Failed to create iscsi target for volume " "id:%(vol_id)s: %(e)s") % {'vol_id': vol_id, 'e': e}) raise exception.ISCSITargetCreateFailed(volume_id=vol_id) return tid def remove_iscsi_target(self, tid, lun, vol_id, vol_name, **kwargs): LOG.info(_('Removing iscsi_target for volume: %s') % vol_id) self._delete_logicalunit(tid, lun, **kwargs) self._delete_target(tid, **kwargs) vol_uuid_file = vol_name conf_file = self.iet_conf if os.path.exists(conf_file): with self.temporary_chown(conf_file): try: iet_conf_text = open(conf_file, 'r+') full_txt = iet_conf_text.readlines() new_iet_conf_txt = [] count = 0 for line in full_txt: if count > 0: count -= 1 continue elif re.search(vol_uuid_file, line): count = 2 continue else: new_iet_conf_txt.append(line) iet_conf_text.seek(0) iet_conf_text.truncate(0) iet_conf_text.writelines(new_iet_conf_txt) finally: iet_conf_text.close() def _new_target(self, name, tid, **kwargs): self._run('--op', 'new', '--tid=%s' % tid, '--params', 'Name=%s' % name, **kwargs) def _delete_target(self, tid, **kwargs): self._run('--op', 'delete', '--tid=%s' % tid, **kwargs) def show_target(self, tid, iqn=None, **kwargs): self._run('--op', 'show', '--tid=%s' % tid, **kwargs) def _new_logicalunit(self, tid, lun, path, **kwargs): self._run('--op', 'new', '--tid=%s' % tid, '--lun=%d' % lun, '--params', 'Path=%s,Type=%s' % (path, self._iotype(path)), **kwargs) def _delete_logicalunit(self, tid, lun, **kwargs): self._run('--op', 'delete', '--tid=%s' % tid, '--lun=%d' % lun, **kwargs) def _new_auth(self, tid, type, username, password, **kwargs): self._run('--op', 'new', '--tid=%s' % tid, '--user', '--params=%s=%s,Password=%s' % (type, username, password), **kwargs) class FakeIscsiHelper(object): def __init__(self): self.tid = 1 self._execute = None def set_execute(self, execute): self._execute = execute def create_iscsi_target(self, *args, **kwargs): self.tid += 1 return self.tid class LioAdm(TargetAdmin): """iSCSI target administration for LIO using python-rtslib.""" def __init__(self, root_helper, lio_initiator_iqns='', iscsi_target_prefix='iqn.2010-10.org.openstack:', execute=putils.execute): super(LioAdm, self).__init__('cinder-rtstool', root_helper, execute) self.iscsi_target_prefix = iscsi_target_prefix self.lio_initiator_iqns = lio_initiator_iqns self._verify_rtstool() def _verify_rtstool(self): try: self._execute('cinder-rtstool', 'verify') except (OSError, putils.ProcessExecutionError): LOG.error(_('cinder-rtstool is not installed correctly')) raise def _get_target(self, iqn): (out, err) = self._execute('cinder-rtstool', 'get-targets', run_as_root=True) lines = out.split('\n') for line in lines: if iqn in line: return line return None def create_iscsi_target(self, name, tid, lun, path, chap_auth=None, **kwargs): # tid and lun are not used vol_id = name.split(':')[1] LOG.info(_('Creating iscsi_target for volume: %s') % vol_id) # rtstool requires chap_auth, but unit tests don't provide it chap_auth_userid = 'test_id' chap_auth_password = 'test_pass' if chap_auth is not None: (chap_auth_userid, chap_auth_password) = chap_auth.split(' ')[1:] extra_args = [] if self.lio_initiator_iqns: extra_args.append(self.lio_initiator_iqns) try: command_args = ['cinder-rtstool', 'create', path, name, chap_auth_userid, chap_auth_password] if extra_args: command_args.extend(extra_args) self._execute(*command_args, run_as_root=True) except putils.ProcessExecutionError as e: LOG.error(_("Failed to create iscsi target for volume " "id:%s.") % vol_id) LOG.error("%s" % e) raise exception.ISCSITargetCreateFailed(volume_id=vol_id) iqn = '%s%s' % (self.iscsi_target_prefix, vol_id) tid = self._get_target(iqn) if tid is None: LOG.error(_("Failed to create iscsi target for volume " "id:%s.") % vol_id) raise exception.NotFound() return tid def remove_iscsi_target(self, tid, lun, vol_id, vol_name, **kwargs): LOG.info(_('Removing iscsi_target: %s') % vol_id) vol_uuid_name = vol_name iqn = '%s%s' % (self.iscsi_target_prefix, vol_uuid_name) try: self._execute('cinder-rtstool', 'delete', iqn, run_as_root=True) except putils.ProcessExecutionError as e: LOG.error(_("Failed to remove iscsi target for volume " "id:%s.") % vol_id) LOG.error("%s" % e) raise exception.ISCSITargetRemoveFailed(volume_id=vol_id) def show_target(self, tid, iqn=None, **kwargs): if iqn is None: raise exception.InvalidParameterValue( err=_('valid iqn needed for show_target')) tid = self._get_target(iqn) if tid is None: raise exception.NotFound() def initialize_connection(self, volume, connector): volume_iqn = volume['provider_location'].split(' ')[1] (auth_method, auth_user, auth_pass) = \ volume['provider_auth'].split(' ', 3) # Add initiator iqns to target ACL try: self._execute('cinder-rtstool', 'add-initiator', volume_iqn, auth_user, auth_pass, connector['initiator'], run_as_root=True) except putils.ProcessExecutionError: LOG.error(_("Failed to add initiator iqn %s to target") % connector['initiator']) raise exception.ISCSITargetAttachFailed(volume_id=volume['id']) class ISERTgtAdm(TgtAdm): VOLUME_CONF = """ driver iser backing-store %s """ VOLUME_CONF_WITH_CHAP_AUTH = """ driver iser backing-store %s %s """ def __init__(self, root_helper, volumes_dir, target_prefix='iqn.2010-10.org.openstack:', execute=putils.execute): super(ISERTgtAdm, self).__init__(root_helper, volumes_dir, target_prefix, execute) cinder-2014.1.5/cinder/brick/iscsi/__init__.py0000664000567000056700000000000012540642606022124 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/local_dev/0000775000567000056700000000000012540643114020636 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/local_dev/lvm.py0000664000567000056700000006031712540642606022022 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation. # All Rights Reserved. # # 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. """ LVM class for performing LVM operations. """ import math import re import itertools from cinder.brick import exception from cinder.brick import executor from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils LOG = logging.getLogger(__name__) class LVM(executor.Executor): """LVM object to enable various LVM related operations.""" def __init__(self, vg_name, root_helper, create_vg=False, physical_volumes=None, lvm_type='default', executor=putils.execute): """Initialize the LVM object. The LVM object is based on an LVM VolumeGroup, one instantiation for each VolumeGroup you have/use. :param vg_name: Name of existing VG or VG to create :param root_helper: Execution root_helper method to use :param create_vg: Indicates the VG doesn't exist and we want to create it :param physical_volumes: List of PVs to build VG on :param lvm_type: VG and Volume type (default, or thin) :param executor: Execute method to use, None uses common/processutils """ super(LVM, self).__init__(execute=executor, root_helper=root_helper) self.vg_name = vg_name self.pv_list = [] self.lv_list = [] self.vg_size = 0.0 self.vg_free_space = 0.0 self.vg_lv_count = 0 self.vg_uuid = None self.vg_thin_pool = None self.vg_thin_pool_size = 0.0 self.vg_thin_pool_free_space = 0.0 self._supports_snapshot_lv_activation = None self._supports_lvchange_ignoreskipactivation = None if create_vg and physical_volumes is not None: self.pv_list = physical_volumes try: self._create_vg(physical_volumes) except putils.ProcessExecutionError as err: LOG.exception(_('Error creating Volume Group')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) raise exception.VolumeGroupCreationFailed(vg_name=self.vg_name) if self._vg_exists() is False: LOG.error(_('Unable to locate Volume Group %s') % vg_name) raise exception.VolumeGroupNotFound(vg_name=vg_name) # NOTE: we assume that the VG has been activated outside of Cinder if lvm_type == 'thin': pool_name = "%s-pool" % self.vg_name if self.get_volume(pool_name) is None: self.create_thin_pool(pool_name) else: self.vg_thin_pool = pool_name self.activate_lv(self.vg_thin_pool) self.pv_list = self.get_all_physical_volumes(root_helper, vg_name) def _vg_exists(self): """Simple check to see if VG exists. :returns: True if vg specified in object exists, else False """ exists = False (out, err) = self._execute( 'env', 'LC_ALL=C', 'vgs', '--noheadings', '-o', 'name', self.vg_name, root_helper=self._root_helper, run_as_root=True) if out is not None: volume_groups = out.split() if self.vg_name in volume_groups: exists = True return exists def _create_vg(self, pv_list): cmd = ['vgcreate', self.vg_name, ','.join(pv_list)] self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) def _get_vg_uuid(self): (out, err) = self._execute('env', 'LC_ALL=C', 'vgs', '--noheadings', '-o uuid', self.vg_name) if out is not None: return out.split() else: return [] def _get_thin_pool_free_space(self, vg_name, thin_pool_name): """Returns available thin pool free space. :param vg_name: the vg where the pool is placed :param thin_pool_name: the thin pool to gather info for :returns: Free space in GB (float), calculated using data_percent """ cmd = ['env', 'LC_ALL=C', 'lvs', '--noheadings', '--unit=g', '-o', 'size,data_percent', '--separator', ':', '--nosuffix'] # NOTE(gfidente): data_percent only applies to some types of LV so we # make sure to append the actual thin pool name cmd.append("/dev/%s/%s" % (vg_name, thin_pool_name)) free_space = 0.0 try: (out, err) = self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) if out is not None: out = out.strip() data = out.split(':') pool_size = float(data[0]) data_percent = float(data[1]) consumed_space = pool_size / 100 * data_percent free_space = pool_size - consumed_space free_space = round(free_space, 2) except putils.ProcessExecutionError as err: LOG.exception(_('Error querying thin pool about data_percent')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) return free_space @staticmethod def get_lvm_version(root_helper): """Static method to get LVM version from system. :param root_helper: root_helper to use for execute :returns: version 3-tuple """ cmd = ['env', 'LC_ALL=C', 'vgs', '--version'] (out, err) = putils.execute(*cmd, root_helper=root_helper, run_as_root=True) lines = out.split('\n') for line in lines: if 'LVM version' in line: version_list = line.split() # NOTE(gfidente): version is formatted as follows: # major.minor.patchlevel(library API version)[-customisation] version = version_list[2] version_filter = r"(\d+)\.(\d+)\.(\d+).*" r = re.search(version_filter, version) version_tuple = tuple(map(int, r.group(1, 2, 3))) return version_tuple @staticmethod def supports_thin_provisioning(root_helper): """Static method to check for thin LVM support on a system. :param root_helper: root_helper to use for execute :returns: True if supported, False otherwise """ return LVM.get_lvm_version(root_helper) >= (2, 2, 95) @property def supports_snapshot_lv_activation(self): """Property indicating whether snap activation changes are supported. Check for LVM version >= 2.02.91. (LVM2 git: e8a40f6 Allow to activate snapshot) :returns: True/False indicating support """ if self._supports_snapshot_lv_activation is not None: return self._supports_snapshot_lv_activation self._supports_snapshot_lv_activation = ( self.get_lvm_version(self._root_helper) >= (2, 2, 91)) return self._supports_snapshot_lv_activation @property def supports_lvchange_ignoreskipactivation(self): """Property indicating whether lvchange can ignore skip activation. Check for LVM version >= 2.02.99. (LVM2 git: ab789c1bc add --ignoreactivationskip to lvchange) """ if self._supports_lvchange_ignoreskipactivation is not None: return self._supports_lvchange_ignoreskipactivation self._supports_lvchange_ignoreskipactivation = ( self.get_lvm_version(self._root_helper) >= (2, 2, 99)) return self._supports_lvchange_ignoreskipactivation @staticmethod def get_all_volumes(root_helper, vg_name=None): """Static method to get all LV's on a system. :param root_helper: root_helper to use for execute :param vg_name: optional, gathers info for only the specified VG :returns: List of Dictionaries with LV info """ cmd = ['env', 'LC_ALL=C', 'lvs', '--noheadings', '--unit=g', '-o', 'vg_name,name,size', '--nosuffix'] if vg_name is not None: cmd.append(vg_name) (out, err) = putils.execute(*cmd, root_helper=root_helper, run_as_root=True) lv_list = [] if out is not None: volumes = out.split() for vg, name, size in itertools.izip(*[iter(volumes)] * 3): lv_list.append({"vg": vg, "name": name, "size": size}) return lv_list def get_volumes(self): """Get all LV's associated with this instantiation (VG). :returns: List of Dictionaries with LV info """ self.lv_list = self.get_all_volumes(self._root_helper, self.vg_name) return self.lv_list def get_volume(self, name): """Get reference object of volume specified by name. :returns: dict representation of Logical Volume if exists """ ref_list = self.get_volumes() for r in ref_list: if r['name'] == name: return r @staticmethod def get_all_physical_volumes(root_helper, vg_name=None): """Static method to get all PVs on a system. :param root_helper: root_helper to use for execute :param vg_name: optional, gathers info for only the specified VG :returns: List of Dictionaries with PV info """ cmd = ['env', 'LC_ALL=C', 'pvs', '--noheadings', '--unit=g', '-o', 'vg_name,name,size,free', '--separator', ':', '--nosuffix'] (out, err) = putils.execute(*cmd, root_helper=root_helper, run_as_root=True) pvs = out.split() if vg_name is not None: pvs = [pv for pv in pvs if vg_name == pv.split(':')[0]] pv_list = [] for pv in pvs: fields = pv.split(':') pv_list.append({'vg': fields[0], 'name': fields[1], 'size': float(fields[2]), 'available': float(fields[3])}) return pv_list def get_physical_volumes(self): """Get all PVs associated with this instantiation (VG). :returns: List of Dictionaries with PV info """ self.pv_list = self.get_all_physical_volumes(self._root_helper, self.vg_name) return self.pv_list @staticmethod def get_all_volume_groups(root_helper, vg_name=None): """Static method to get all VGs on a system. :param root_helper: root_helper to use for execute :param vg_name: optional, gathers info for only the specified VG :returns: List of Dictionaries with VG info """ cmd = ['env', 'LC_ALL=C', 'vgs', '--noheadings', '--unit=g', '-o', 'name,size,free,lv_count,uuid', '--separator', ':', '--nosuffix'] if vg_name is not None: cmd.append(vg_name) (out, err) = putils.execute(*cmd, root_helper=root_helper, run_as_root=True) vg_list = [] if out is not None: vgs = out.split() for vg in vgs: fields = vg.split(':') vg_list.append({'name': fields[0], 'size': float(fields[1]), 'available': float(fields[2]), 'lv_count': int(fields[3]), 'uuid': fields[4]}) return vg_list def update_volume_group_info(self): """Update VG info for this instantiation. Used to update member fields of object and provide a dict of info for caller. :returns: Dictionaries of VG info """ vg_list = self.get_all_volume_groups(self._root_helper, self.vg_name) if len(vg_list) != 1: LOG.error(_('Unable to find VG: %s') % self.vg_name) raise exception.VolumeGroupNotFound(vg_name=self.vg_name) self.vg_size = float(vg_list[0]['size']) self.vg_free_space = float(vg_list[0]['available']) self.vg_lv_count = int(vg_list[0]['lv_count']) self.vg_uuid = vg_list[0]['uuid'] if self.vg_thin_pool is not None: for lv in self.get_all_volumes(self._root_helper, self.vg_name): if lv['name'] == self.vg_thin_pool: self.vg_thin_pool_size = lv['size'] tpfs = self._get_thin_pool_free_space(self.vg_name, self.vg_thin_pool) self.vg_thin_pool_free_space = tpfs def _calculate_thin_pool_size(self): """Calculates the correct size for a thin pool. Ideally we would use 100% of the containing volume group and be done. But the 100%VG notation to lvcreate is not implemented and thus cannot be used. See https://bugzilla.redhat.com/show_bug.cgi?id=998347 Further, some amount of free space must remain in the volume group for metadata for the contained logical volumes. The exact amount depends on how much volume sharing you expect. :returns: An lvcreate-ready string for the number of calculated bytes. """ # make sure volume group information is current self.update_volume_group_info() # leave 5% free for metadata return "%sg" % (self.vg_free_space * 0.95) def create_thin_pool(self, name=None, size_str=None): """Creates a thin provisioning pool for this VG. The syntax here is slightly different than the default lvcreate -T, so we'll just write a custom cmd here and do it. :param name: Name to use for pool, default is "-pool" :param size_str: Size to allocate for pool, default is entire VG :returns: The size string passed to the lvcreate command """ if not self.supports_thin_provisioning(self._root_helper): LOG.error(_('Requested to setup thin provisioning, ' 'however current LVM version does not ' 'support it.')) return None if name is None: name = '%s-pool' % self.vg_name vg_pool_name = '%s/%s' % (self.vg_name, name) if not size_str: size_str = self._calculate_thin_pool_size() cmd = ['lvcreate', '-T', '-L', size_str, vg_pool_name] LOG.debug(_('Created thin pool \'%(pool)s\' with size %(size)s of ' 'total %(free)sg') % {'pool': vg_pool_name, 'size': size_str, 'free': self.vg_free_space}) self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) self.vg_thin_pool = name return size_str def create_volume(self, name, size_str, lv_type='default', mirror_count=0): """Creates a logical volume on the object's VG. :param name: Name to use when creating Logical Volume :param size_str: Size to use when creating Logical Volume :param lv_type: Type of Volume (default or thin) :param mirror_count: Use LVM mirroring with specified count """ if lv_type == 'thin': pool_path = '%s/%s' % (self.vg_name, self.vg_thin_pool) cmd = ['lvcreate', '-T', '-V', size_str, '-n', name, pool_path] else: cmd = ['lvcreate', '-n', name, self.vg_name, '-L', size_str] if mirror_count > 0: cmd.extend(['-m', mirror_count, '--nosync', '--mirrorlog', 'mirrored']) terras = int(size_str[:-1]) / 1024.0 if terras >= 1.5: rsize = int(2 ** math.ceil(math.log(terras) / math.log(2))) # NOTE(vish): Next power of two for region size. See: # http://red.ht/U2BPOD cmd.extend(['-R', str(rsize)]) try: self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception(_('Error creating Volume')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) raise def create_lv_snapshot(self, name, source_lv_name, lv_type='default'): """Creates a snapshot of a logical volume. :param name: Name to assign to new snapshot :param source_lv_name: Name of Logical Volume to snapshot :param lv_type: Type of LV (default or thin) """ source_lvref = self.get_volume(source_lv_name) if source_lvref is None: LOG.error(_("Trying to create snapshot by non-existent LV: %s") % source_lv_name) raise exception.VolumeDeviceNotFound(device=source_lv_name) cmd = ['lvcreate', '--name', name, '--snapshot', '%s/%s' % (self.vg_name, source_lv_name)] if lv_type != 'thin': size = source_lvref['size'] cmd.extend(['-L', '%sg' % (size)]) try: self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception(_('Error creating snapshot')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) raise def _mangle_lv_name(self, name): # Linux LVM reserves name that starts with snapshot, so that # such volume name can't be created. Mangle it. if not name.startswith('snapshot'): return name return '_' + name def activate_lv(self, name, is_snapshot=False): """Ensure that logical volume/snapshot logical volume is activated. :param name: Name of LV to activate :raises: putils.ProcessExecutionError """ # This is a no-op if requested for a snapshot on a version # of LVM that doesn't support snapshot activation. # (Assume snapshot LV is always active.) if is_snapshot and not self.supports_snapshot_lv_activation: return lv_path = self.vg_name + '/' + self._mangle_lv_name(name) # Must pass --yes to activate both the snap LV and its origin LV. # Otherwise lvchange asks if you would like to do this interactively, # and fails. cmd = ['lvchange', '-a', 'y', '--yes'] if self.supports_lvchange_ignoreskipactivation: cmd.append('-K') cmd.append(lv_path) try: self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception(_('Error activating LV')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) raise def delete(self, name): """Delete logical volume or snapshot. :param name: Name of LV to delete """ def run_udevadm_settle(): self._execute('udevadm', 'settle', root_helper=self._root_helper, run_as_root=True, check_exit_code=False) # LV removal seems to be a race with other writers or udev in # some cases (see LP #1270192), so we enable retry deactivation LVM_CONFIG = 'activation { retry_deactivation = 1} ' try: self._execute( 'lvremove', '--config', LVM_CONFIG, '-f', '%s/%s' % (self.vg_name, name), root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: mesg = (_('Error reported running lvremove: CMD: %(command)s, ' 'RESPONSE: %(response)s') % {'command': err.cmd, 'response': err.stderr}) LOG.debug(mesg) LOG.debug(_('Attempting udev settle and retry of lvremove...')) run_udevadm_settle() # The previous failing lvremove -f might leave behind # suspended devices; when lvmetad is not available, any # further lvm command will block forever. # Therefore we need to skip suspended devices on retry. LVM_CONFIG += 'devices { ignore_suspended_devices = 1}' self._execute( 'lvremove', '--config', LVM_CONFIG, '-f', '%s/%s' % (self.vg_name, name), root_helper=self._root_helper, run_as_root=True) def revert(self, snapshot_name): """Revert an LV from snapshot. :param snapshot_name: Name of snapshot to revert """ self._execute('lvconvert', '--merge', snapshot_name, root_helper=self._root_helper, run_as_root=True) def lv_has_snapshot(self, name): out, err = self._execute( 'env', 'LC_ALL=C', 'lvdisplay', '--noheading', '-C', '-o', 'Attr', '%s/%s' % (self.vg_name, name), root_helper=self._root_helper, run_as_root=True) if out: out = out.strip() if (out[0] == 'o') or (out[0] == 'O'): return True return False def extend_volume(self, lv_name, new_size): """Extend the size of an existing volume.""" try: self._execute('lvextend', '-L', new_size, '%s/%s' % (self.vg_name, lv_name), root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception(_('Error extending Volume')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) raise def vg_mirror_free_space(self, mirror_count): free_capacity = 0.0 disks = [] for pv in self.pv_list: disks.append(float(pv['available'])) while True: disks = sorted([a for a in disks if a > 0.0], reverse=True) if len(disks) <= mirror_count: break # consume the smallest disk disk = disks[-1] disks = disks[:-1] # match extents for each mirror on the largest disks for index in list(range(mirror_count)): disks[index] -= disk free_capacity += disk return free_capacity def vg_mirror_size(self, mirror_count): return (self.vg_free_space / (mirror_count + 1)) def rename_volume(self, lv_name, new_name): """Change the name of an existing volume.""" try: self._execute('lvrename', self.vg_name, lv_name, new_name, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception(_('Error renaming logical volume')) LOG.error(_('Cmd :%s') % err.cmd) LOG.error(_('StdOut :%s') % err.stdout) LOG.error(_('StdErr :%s') % err.stderr) raise cinder-2014.1.5/cinder/brick/local_dev/__init__.py0000664000567000056700000000000012540642603022737 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/exception.py0000664000567000056700000000722412540642606021270 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. """Exceptions for the Brick library.""" from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class BrickException(Exception): """Base Brick Exception To correctly use this class, inherit from it and define a 'msg_fmt' property. That msg_fmt will get printf'd with the keyword arguments provided to the constructor. """ message = _("An unknown exception occurred.") code = 500 headers = {} safe = False def __init__(self, message=None, **kwargs): self.kwargs = kwargs if 'code' not in self.kwargs: try: self.kwargs['code'] = self.code except AttributeError: pass if not message: try: message = self.message % kwargs except Exception: # kwargs doesn't match a variable in the message # log the issue and the kwargs msg = (_("Exception in string format operation. msg='%s'") % self.message) LOG.exception(msg) for name, value in kwargs.iteritems(): LOG.error("%s: %s" % (name, value)) # at least get the core message out if something happened message = self.message # Put the message in 'msg' so that we can access it. If we have it in # message it will be overshadowed by the class' message attribute self.msg = message super(BrickException, self).__init__(message) def __unicode__(self): return unicode(self.msg) class NotFound(BrickException): message = _("Resource could not be found.") code = 404 safe = True class Invalid(BrickException): message = _("Unacceptable parameters.") code = 400 # Cannot be templated as the error syntax varies. # msg needs to be constructed when raised. class InvalidParameterValue(Invalid): message = _("%(err)s") class NoFibreChannelHostsFound(BrickException): message = _("We are unable to locate any Fibre Channel devices.") class NoFibreChannelVolumeDeviceFound(BrickException): message = _("Unable to find a Fibre Channel volume device.") class VolumeDeviceNotFound(BrickException): message = _("Volume device not found at %(device)s.") class VolumeGroupNotFound(BrickException): message = _('Unable to find Volume Group: %(vg_name)s') class VolumeGroupCreationFailed(BrickException): message = _('Failed to create Volume Group: %(vg_name)s') class ISCSITargetCreateFailed(BrickException): message = _("Failed to create iscsi target for volume %(volume_id)s.") class ISCSITargetRemoveFailed(BrickException): message = _("Failed to remove iscsi target for volume %(volume_id)s.") class ISCSITargetAttachFailed(BrickException): message = _("Failed to attach iSCSI target for volume %(volume_id)s.") class ProtocolNotSupported(BrickException): message = _("Connect to volume via protocol %(protocol)s not supported.") cinder-2014.1.5/cinder/brick/__init__.py0000664000567000056700000000000012540642603021007 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/executor.py0000664000567000056700000000234012540642606021122 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. """Generic exec utility that allows us to set the execute and root_helper attributes for putils. Some projects need their own execute wrapper and root_helper settings, so this provides that hook. """ from cinder.openstack.common import processutils as putils class Executor(object): def __init__(self, root_helper, execute=putils.execute, *args, **kwargs): self.set_execute(execute) self.set_root_helper(root_helper) def set_execute(self, execute): self._execute = execute def set_root_helper(self, helper): self._root_helper = helper cinder-2014.1.5/cinder/brick/remotefs/0000775000567000056700000000000012540643114020532 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/remotefs/__init__.py0000664000567000056700000000000012540642606022636 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/remotefs/remotefs.py0000775000567000056700000001477612540642606022757 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved # # 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. """Remote filesystem client utilities.""" import hashlib import os import re import six from cinder.brick import exception from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils LOG = logging.getLogger(__name__) class RemoteFsClient(object): def __init__(self, mount_type, root_helper, execute=putils.execute, *args, **kwargs): self._mount_type = mount_type if mount_type == "nfs": self._mount_base = kwargs.get('nfs_mount_point_base', None) if not self._mount_base: raise exception.InvalidParameterValue( err=_('nfs_mount_point_base required')) self._mount_options = kwargs.get('nfs_mount_options', None) self._check_nfs_options() elif mount_type == "glusterfs": self._mount_base = kwargs.get('glusterfs_mount_point_base', None) if not self._mount_base: raise exception.InvalidParameterValue( err=_('glusterfs_mount_point_base required')) self._mount_options = None else: raise exception.ProtocolNotSupported(protocol=mount_type) self.root_helper = root_helper self.set_execute(execute) def set_execute(self, execute): self._execute = execute def _get_hash_str(self, base_str): """Return a string that represents hash of base_str (in a hex format). """ return hashlib.md5(base_str).hexdigest() def get_mount_point(self, device_name): """Get Mount Point. :param device_name: example 172.18.194.100:/var/nfs """ return os.path.join(self._mount_base, self._get_hash_str(device_name)) def _read_mounts(self): (out, err) = self._execute('mount', check_exit_code=0) lines = out.split('\n') mounts = {} for line in lines: tokens = line.split() if 2 < len(tokens): device = tokens[0] mnt_point = tokens[2] mounts[mnt_point] = device return mounts def mount(self, share, flags=None): """Mount given share.""" mount_path = self.get_mount_point(share) if mount_path in self._read_mounts(): LOG.info(_('Already mounted: %s') % mount_path) return self._execute('mkdir', '-p', mount_path, check_exit_code=0) if self._mount_type == 'nfs': self._mount_nfs(share, mount_path, flags) else: self._do_mount(self._mount_type, share, mount_path, self._mount_options, flags) def _do_mount(self, mount_type, share, mount_path, mount_options=None, flags=None): """Mounts share based on the specified params.""" mnt_cmd = ['mount', '-t', mount_type] if mount_options is not None: mnt_cmd.extend(['-o', mount_options]) if flags is not None: mnt_cmd.extend(flags) mnt_cmd.extend([share, mount_path]) self._execute(*mnt_cmd, root_helper=self.root_helper, run_as_root=True, check_exit_code=0) def _mount_nfs(self, nfs_share, mount_path, flags=None): """Mount nfs share using present mount types.""" mnt_errors = {} # This loop allows us to first try to mount with NFS 4.1 for pNFS # support but falls back to mount NFS 4 or NFS 3 if either the client # or server do not support it. for mnt_type in sorted(self._nfs_mount_type_opts.keys(), reverse=True): options = self._nfs_mount_type_opts[mnt_type] try: self._do_mount('nfs', nfs_share, mount_path, options, flags) LOG.debug(_('Mounted %(sh)s using %(mnt_type)s.') % {'sh': nfs_share, 'mnt_type': mnt_type}) return except Exception as e: mnt_errors[mnt_type] = six.text_type(e) LOG.debug(_('Failed to do %s mount.'), mnt_type) raise exception.BrickException(_("NFS mount failed for share %(sh)s." "Error - %(error)s") % {'sh': nfs_share, 'error': mnt_errors}) def _check_nfs_options(self): """Checks and prepares nfs mount type options.""" self._nfs_mount_type_opts = {'nfs': self._mount_options} nfs_vers_opt_patterns = ['^nfsvers', '^vers', '^v[\d]'] for opt in nfs_vers_opt_patterns: if self._option_exists(self._mount_options, opt): return # pNFS requires NFS 4.1. The mount.nfs4 utility does not automatically # negotiate 4.1 support, we have to ask for it by specifying two # options: vers=4 and minorversion=1. pnfs_opts = self._update_option(self._mount_options, 'vers', '4') pnfs_opts = self._update_option(pnfs_opts, 'minorversion', '1') self._nfs_mount_type_opts['pnfs'] = pnfs_opts def _option_exists(self, options, opt_pattern): """Checks if the option exists in nfs options and returns position.""" options = [x.strip() for x in options.split(',')] if options else [] pos = 0 for opt in options: pos = pos + 1 if re.match(opt_pattern, opt, flags=0): return pos return 0 def _update_option(self, options, option, value=None): """Update option if exists else adds it and returns new options.""" opts = [x.strip() for x in options.split(',')] if options else [] pos = self._option_exists(options, option) if pos: opts.pop(pos - 1) opt = '%s=%s' % (option, value) if value else option opts.append(opt) return ",".join(opts) if len(opts) > 1 else opts[0] cinder-2014.1.5/cinder/brick/initiator/0000775000567000056700000000000012540643114020710 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/initiator/host_driver.py0000664000567000056700000000177412540642606023630 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation. # All Rights Reserved. # # 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. import os class HostDriver(object): def get_all_block_devices(self): """Get the list of all block devices seen in /dev/disk/by-path/.""" files = [] dir = "/dev/disk/by-path/" if os.path.isdir(dir): files = os.listdir(dir) devices = [] for file in files: devices.append(dir + file) return devices cinder-2014.1.5/cinder/brick/initiator/__init__.py0000664000567000056700000000000012540642606023014 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/brick/initiator/linuxfc.py0000664000567000056700000001145112540642606022741 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. """Generic linux Fibre Channel utilities.""" import errno from cinder.brick.initiator import linuxscsi from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils LOG = logging.getLogger(__name__) class LinuxFibreChannel(linuxscsi.LinuxSCSI): def __init__(self, root_helper, execute=putils.execute, *args, **kwargs): super(LinuxFibreChannel, self).__init__(root_helper, execute, *args, **kwargs) def rescan_hosts(self, hbas): for hba in hbas: self.echo_scsi_command("/sys/class/scsi_host/%s/scan" % hba['host_device'], "- - -") def get_fc_hbas(self): """Get the Fibre Channel HBA information.""" out = None try: out, err = self._execute('systool', '-c', 'fc_host', '-v', run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as exc: # This handles the case where rootwrap is used # and systool is not installed # 96 = nova.cmd.rootwrap.RC_NOEXECFOUND: if exc.exit_code == 96: LOG.warn(_("systool is not installed")) return [] except OSError as exc: # This handles the case where rootwrap is NOT used # and systool is not installed if exc.errno == errno.ENOENT: LOG.warn(_("systool is not installed")) return [] # No FC HBAs were found if out is None: return [] lines = out.split('\n') # ignore the first 2 lines lines = lines[2:] hbas = [] hba = {} lastline = None for line in lines: line = line.strip() # 2 newlines denotes a new hba port if line == '' and lastline == '': if len(hba) > 0: hbas.append(hba) hba = {} else: val = line.split('=') if len(val) == 2: key = val[0].strip().replace(" ", "") value = val[1].strip() hba[key] = value.replace('"', '') lastline = line return hbas def get_fc_hbas_info(self): """Get Fibre Channel WWNs and device paths from the system, if any.""" # Note(walter-boring) modern Linux kernels contain the FC HBA's in /sys # and are obtainable via the systool app hbas = self.get_fc_hbas() if not hbas: return [] hbas_info = [] for hba in hbas: wwpn = hba['port_name'].replace('0x', '') wwnn = hba['node_name'].replace('0x', '') device_path = hba['ClassDevicepath'] device = hba['ClassDevice'] hbas_info.append({'port_name': wwpn, 'node_name': wwnn, 'host_device': device, 'device_path': device_path}) return hbas_info def get_fc_wwpns(self): """Get Fibre Channel WWPNs from the system, if any.""" # Note(walter-boring) modern Linux kernels contain the FC HBA's in /sys # and are obtainable via the systool app hbas = self.get_fc_hbas() wwpns = [] if hbas: for hba in hbas: if hba['port_state'] == 'Online': wwpn = hba['port_name'].replace('0x', '') wwpns.append(wwpn) return wwpns def get_fc_wwnns(self): """Get Fibre Channel WWNNs from the system, if any.""" # Note(walter-boring) modern Linux kernels contain the FC HBA's in /sys # and are obtainable via the systool app hbas = self.get_fc_hbas() if not hbas: return [] wwnns = [] if hbas: for hba in hbas: if hba['port_state'] == 'Online': wwnn = hba['node_name'].replace('0x', '') wwnns.append(wwnn) return wwnns cinder-2014.1.5/cinder/brick/initiator/connector.py0000664000567000056700000011504212540642606023264 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation. # All Rights Reserved. # # 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. import os import socket import time from cinder.brick import exception from cinder.brick import executor from cinder.brick.initiator import host_driver from cinder.brick.initiator import linuxfc from cinder.brick.initiator import linuxscsi from cinder.brick.remotefs import remotefs from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import lockutils from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder.openstack.common import processutils as putils LOG = logging.getLogger(__name__) synchronized = lockutils.synchronized_with_prefix('brick-') DEVICE_SCAN_ATTEMPTS_DEFAULT = 3 def get_connector_properties(root_helper, my_ip): """Get the connection properties for all protocols.""" iscsi = ISCSIConnector(root_helper=root_helper) fc = linuxfc.LinuxFibreChannel(root_helper=root_helper) props = {} props['ip'] = my_ip props['host'] = socket.gethostname() initiator = iscsi.get_initiator() if initiator: props['initiator'] = initiator wwpns = fc.get_fc_wwpns() if wwpns: props['wwpns'] = wwpns wwnns = fc.get_fc_wwnns() if wwnns: props['wwnns'] = wwnns return props class InitiatorConnector(executor.Executor): def __init__(self, root_helper, driver=None, execute=putils.execute, device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT, *args, **kwargs): super(InitiatorConnector, self).__init__(root_helper, execute=execute, *args, **kwargs) if not driver: driver = host_driver.HostDriver() self.set_driver(driver) self.device_scan_attempts = device_scan_attempts def set_driver(self, driver): """The driver is used to find used LUNs.""" self.driver = driver @staticmethod def factory(protocol, root_helper, driver=None, execute=putils.execute, use_multipath=False, device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT, *args, **kwargs): """Build a Connector object based upon protocol.""" LOG.debug("Factory for %s" % protocol) protocol = protocol.upper() if protocol == "ISCSI": return ISCSIConnector(root_helper=root_helper, driver=driver, execute=execute, use_multipath=use_multipath, device_scan_attempts=device_scan_attempts, *args, **kwargs) elif protocol == "ISER": return ISERConnector(root_helper=root_helper, driver=driver, execute=execute, use_multipath=use_multipath, device_scan_attempts=device_scan_attempts, *args, **kwargs) elif protocol == "FIBRE_CHANNEL": return FibreChannelConnector(root_helper=root_helper, driver=driver, execute=execute, use_multipath=use_multipath, device_scan_attempts= device_scan_attempts, *args, **kwargs) elif protocol == "AOE": return AoEConnector(root_helper=root_helper, driver=driver, execute=execute, device_scan_attempts=device_scan_attempts, *args, **kwargs) elif protocol == "NFS" or protocol == "GLUSTERFS": return RemoteFsConnector(mount_type=protocol.lower(), root_helper=root_helper, driver=driver, execute=execute, device_scan_attempts=device_scan_attempts, *args, **kwargs) elif protocol == "LOCAL": return LocalConnector(root_helper=root_helper, driver=driver, execute=execute, device_scan_attempts=device_scan_attempts, *args, **kwargs) else: msg = (_("Invalid InitiatorConnector protocol " "specified %(protocol)s") % dict(protocol=protocol)) raise ValueError(msg) def check_valid_device(self, path): cmd = ('dd', 'if=%(path)s' % {"path": path}, 'of=/dev/null', 'count=1') out, info = None, None try: out, info = self._execute(*cmd, run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as e: LOG.error(_("Failed to access the device on the path " "%(path)s: %(error)s %(info)s.") % {"path": path, "error": e.stderr, "info": info}) return False # If the info is none, the path does not exist. if info is None: return False return True def connect_volume(self, connection_properties): """Connect to a volume. The connection_properties describes the information needed by the specific protocol to use to make the connection. """ raise NotImplementedError() def disconnect_volume(self, connection_properties, device_info): """Disconnect a volume from the local host. The connection_properties are the same as from connect_volume. The device_info is returned from connect_volume. """ raise NotImplementedError() class ISCSIConnector(InitiatorConnector): """Connector class to attach/detach iSCSI volumes.""" def __init__(self, root_helper, driver=None, execute=putils.execute, use_multipath=False, device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT, *args, **kwargs): self._linuxscsi = linuxscsi.LinuxSCSI(root_helper, execute) super(ISCSIConnector, self).__init__(root_helper, driver=driver, execute=execute, device_scan_attempts= device_scan_attempts, *args, **kwargs) self.use_multipath = use_multipath def set_execute(self, execute): super(ISCSIConnector, self).set_execute(execute) self._linuxscsi.set_execute(execute) @synchronized('connect_volume') def connect_volume(self, connection_properties): """Attach the volume to instance_name. connection_properties for iSCSI must include: target_portal - ip and optional port target_iqn - iSCSI Qualified Name target_lun - LUN id of the volume """ device_info = {'type': 'block'} if self.use_multipath: #multipath installed, discovering other targets if available target_portal = connection_properties['target_portal'] out = self._run_iscsiadm_bare(['-m', 'discovery', '-t', 'sendtargets', '-p', target_portal], check_exit_code=[0, 255])[0] \ or "" for ip, iqn in self._get_target_portals_from_iscsiadm_output(out): props = connection_properties.copy() props['target_portal'] = ip props['target_iqn'] = iqn self._connect_to_iscsi_portal(props) self._rescan_iscsi() else: self._connect_to_iscsi_portal(connection_properties) host_device = self._get_device_path(connection_properties) # The /dev/disk/by-path/... node is not always present immediately # TODO(justinsb): This retry-with-delay is a pattern, move to utils? tries = 0 while not os.path.exists(host_device): if tries >= self.device_scan_attempts: raise exception.VolumeDeviceNotFound(device=host_device) LOG.warn(_("ISCSI volume not yet found at: %(host_device)s. " "Will rescan & retry. Try number: %(tries)s"), {'host_device': host_device, 'tries': tries}) # The rescan isn't documented as being necessary(?), but it helps self._run_iscsiadm(connection_properties, ("--rescan",)) tries = tries + 1 if not os.path.exists(host_device): time.sleep(tries ** 2) if tries != 0: LOG.debug(_("Found iSCSI node %(host_device)s " "(after %(tries)s rescans)"), {'host_device': host_device, 'tries': tries}) if self.use_multipath: #we use the multipath device instead of the single path device self._rescan_multipath() multipath_device = self._get_multipath_device_name(host_device) if multipath_device is not None: host_device = multipath_device device_info['path'] = host_device return device_info @synchronized('connect_volume') def disconnect_volume(self, connection_properties, device_info): """Detach the volume from instance_name. connection_properties for iSCSI must include: target_portal - IP and optional port target_iqn - iSCSI Qualified Name target_lun - LUN id of the volume """ # Moved _rescan_iscsi and _rescan_multipath # from _disconnect_volume_multipath_iscsi to here. # Otherwise, if we do rescan after _linuxscsi.remove_multipath_device # but before logging out, the removed devices under /dev/disk/by-path # will reappear after rescan. self._rescan_iscsi() host_device = self._get_device_path(connection_properties) multipath_device = None if self.use_multipath: self._rescan_multipath() multipath_device = self._get_multipath_device_name(host_device) if multipath_device: device_realpath = os.path.realpath(host_device) self._linuxscsi.remove_multipath_device(device_realpath) return self._disconnect_volume_multipath_iscsi( connection_properties, multipath_device) # remove the device from the scsi subsystem # this eliminates any stale entries until logout dev_name = self._linuxscsi.get_name_from_path(host_device) if dev_name: self._linuxscsi.remove_scsi_device(dev_name) # NOTE(vish): Only disconnect from the target if no luns from the # target are in use. device_prefix = ("/dev/disk/by-path/ip-%(portal)s-iscsi-%(iqn)s-lun-" % {'portal': connection_properties['target_portal'], 'iqn': connection_properties['target_iqn']}) devices = self.driver.get_all_block_devices() devices = [dev for dev in devices if dev.startswith(device_prefix)] if not devices: self._disconnect_from_iscsi_portal(connection_properties) def _get_device_path(self, connection_properties): path = ("/dev/disk/by-path/ip-%(portal)s-iscsi-%(iqn)s-lun-%(lun)s" % {'portal': connection_properties['target_portal'], 'iqn': connection_properties['target_iqn'], 'lun': connection_properties.get('target_lun', 0)}) return path def get_initiator(self): """Secure helper to read file as root.""" file_path = '/etc/iscsi/initiatorname.iscsi' try: lines, _err = self._execute('cat', file_path, run_as_root=True, root_helper=self._root_helper) for l in lines.split('\n'): if l.startswith('InitiatorName='): return l[l.index('=') + 1:].strip() except putils.ProcessExecutionError: msg = (_("Could not find the iSCSI Initiator File %s") % file_path) LOG.warn(msg) return None def _run_iscsiadm(self, connection_properties, iscsi_command, **kwargs): check_exit_code = kwargs.pop('check_exit_code', 0) (out, err) = self._execute('iscsiadm', '-m', 'node', '-T', connection_properties['target_iqn'], '-p', connection_properties['target_portal'], *iscsi_command, run_as_root=True, root_helper=self._root_helper, check_exit_code=check_exit_code) LOG.debug("iscsiadm %s: stdout=%s stderr=%s" % (iscsi_command, out, err)) return (out, err) def _iscsiadm_update(self, connection_properties, property_key, property_value, **kwargs): iscsi_command = ('--op', 'update', '-n', property_key, '-v', property_value) return self._run_iscsiadm(connection_properties, iscsi_command, **kwargs) def _get_target_portals_from_iscsiadm_output(self, output): # return both portals and iqns return [line.split() for line in output.splitlines()] def _disconnect_volume_multipath_iscsi(self, connection_properties, multipath_name): """This removes a multipath device and it's LUNs.""" LOG.debug("Disconnect multipath device %s" % multipath_name) block_devices = self.driver.get_all_block_devices() devices = [] for dev in block_devices: if "/mapper/" in dev: devices.append(dev) else: mpdev = self._get_multipath_device_name(dev) if mpdev: devices.append(mpdev) # Do a discovery to find all targets. # Targets for multiple paths for the same multipath device # may not be the same. out = self._run_iscsiadm_bare(['-m', 'discovery', '-t', 'sendtargets', '-p', connection_properties['target_portal']], check_exit_code=[0, 255])[0] \ or "" ips_iqns = self._get_target_portals_from_iscsiadm_output(out) if not devices: # disconnect if no other multipath devices self._disconnect_mpath(connection_properties, ips_iqns) return # Get a target for all other multipath devices other_iqns = [self._get_multipath_iqn(device) for device in devices] # Get all the targets for the current multipath device current_iqns = [iqn for ip, iqn in ips_iqns] in_use = False for current in current_iqns: if current in other_iqns: in_use = True break # If no other multipath device attached has the same iqn # as the current device if not in_use: # disconnect if no other multipath devices with same iqn self._disconnect_mpath(connection_properties, ips_iqns) return # else do not disconnect iscsi portals, # as they are used for other luns return def _connect_to_iscsi_portal(self, connection_properties): # NOTE(vish): If we are on the same host as nova volume, the # discovery makes the target so we don't need to # run --op new. Therefore, we check to see if the # target exists, and if we get 255 (Not Found), then # we run --op new. This will also happen if another # volume is using the same target. try: self._run_iscsiadm(connection_properties, ()) except putils.ProcessExecutionError as exc: # iscsiadm returns 21 for "No records found" after version 2.0-871 if exc.exit_code in [21, 255]: self._run_iscsiadm(connection_properties, ('--op', 'new')) else: raise if connection_properties.get('auth_method'): self._iscsiadm_update(connection_properties, "node.session.auth.authmethod", connection_properties['auth_method']) self._iscsiadm_update(connection_properties, "node.session.auth.username", connection_properties['auth_username']) self._iscsiadm_update(connection_properties, "node.session.auth.password", connection_properties['auth_password']) #duplicate logins crash iscsiadm after load, #so we scan active sessions to see if the node is logged in. out = self._run_iscsiadm_bare(["-m", "session"], run_as_root=True, check_exit_code=[0, 1, 21])[0] or "" portals = [{'portal': p.split(" ")[2], 'iqn': p.split(" ")[3]} for p in out.splitlines() if p.startswith("tcp:")] stripped_portal = connection_properties['target_portal'].split(",")[0] if len(portals) == 0 or len([s for s in portals if stripped_portal == s['portal'].split(",")[0] and s['iqn'] == connection_properties['target_iqn']] ) == 0: try: self._run_iscsiadm(connection_properties, ("--login",), check_exit_code=[0, 255]) except putils.ProcessExecutionError as err: #as this might be one of many paths, #only set successful logins to startup automatically if err.exit_code in [15]: self._iscsiadm_update(connection_properties, "node.startup", "automatic") return self._iscsiadm_update(connection_properties, "node.startup", "automatic") def _disconnect_from_iscsi_portal(self, connection_properties): self._iscsiadm_update(connection_properties, "node.startup", "manual", check_exit_code=[0, 21, 255]) self._run_iscsiadm(connection_properties, ("--logout",), check_exit_code=[0, 21, 255]) self._run_iscsiadm(connection_properties, ('--op', 'delete'), check_exit_code=[0, 21, 255]) def _get_multipath_device_name(self, single_path_device): device = os.path.realpath(single_path_device) out = self._run_multipath(['-ll', device], check_exit_code=[0, 1])[0] mpath_line = [line for line in out.splitlines() if "scsi_id" not in line] # ignore udev errors if len(mpath_line) > 0 and len(mpath_line[0]) > 0: return "/dev/mapper/%s" % mpath_line[0].split(" ")[0] return None def _get_iscsi_devices(self): try: devices = list(os.walk('/dev/disk/by-path'))[0][-1] except IndexError: return [] return [entry for entry in devices if entry.startswith("ip-")] def _disconnect_mpath(self, connection_properties, ips_iqns): for ip, iqn in ips_iqns: props = connection_properties.copy() props['target_portal'] = ip props['target_iqn'] = iqn self._disconnect_from_iscsi_portal(props) self._rescan_multipath() def _get_multipath_iqn(self, multipath_device): entries = self._get_iscsi_devices() for entry in entries: entry_real_path = os.path.realpath("/dev/disk/by-path/%s" % entry) entry_multipath = self._get_multipath_device_name(entry_real_path) if entry_multipath == multipath_device: return entry.split("iscsi-")[1].split("-lun")[0] return None def _run_iscsiadm_bare(self, iscsi_command, **kwargs): check_exit_code = kwargs.pop('check_exit_code', 0) (out, err) = self._execute('iscsiadm', *iscsi_command, run_as_root=True, root_helper=self._root_helper, check_exit_code=check_exit_code) LOG.debug("iscsiadm %s: stdout=%s stderr=%s" % (iscsi_command, out, err)) return (out, err) def _run_multipath(self, multipath_command, **kwargs): check_exit_code = kwargs.pop('check_exit_code', 0) (out, err) = self._execute('multipath', *multipath_command, run_as_root=True, root_helper=self._root_helper, check_exit_code=check_exit_code) LOG.debug("multipath %s: stdout=%s stderr=%s" % (multipath_command, out, err)) return (out, err) def _rescan_iscsi(self): self._run_iscsiadm_bare(('-m', 'node', '--rescan'), check_exit_code=[0, 1, 21, 255]) self._run_iscsiadm_bare(('-m', 'session', '--rescan'), check_exit_code=[0, 1, 21, 255]) def _rescan_multipath(self): self._run_multipath('-r', check_exit_code=[0, 1, 21]) class ISERConnector(ISCSIConnector): def _get_device_path(self, iser_properties): return ("/dev/disk/by-path/ip-%s-iser-%s-lun-%s" % (iser_properties['target_portal'], iser_properties['target_iqn'], iser_properties.get('target_lun', 0))) class FibreChannelConnector(InitiatorConnector): """Connector class to attach/detach Fibre Channel volumes.""" def __init__(self, root_helper, driver=None, execute=putils.execute, use_multipath=False, device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT, *args, **kwargs): self._linuxscsi = linuxscsi.LinuxSCSI(root_helper, execute) self._linuxfc = linuxfc.LinuxFibreChannel(root_helper, execute) super(FibreChannelConnector, self).__init__(root_helper, driver=driver, execute=execute, device_scan_attempts= device_scan_attempts, *args, **kwargs) self.use_multipath = use_multipath def set_execute(self, execute): super(FibreChannelConnector, self).set_execute(execute) self._linuxscsi.set_execute(execute) self._linuxfc.set_execute(execute) @synchronized('connect_volume') def connect_volume(self, connection_properties): """Attach the volume to instance_name. connection_properties for Fibre Channel must include: target_portal - ip and optional port target_iqn - iSCSI Qualified Name target_lun - LUN id of the volume """ LOG.debug("execute = %s" % self._execute) device_info = {'type': 'block'} ports = connection_properties['target_wwn'] wwns = [] # we support a list of wwns or a single wwn if isinstance(ports, list): for wwn in ports: wwns.append(str(wwn)) elif isinstance(ports, basestring): wwns.append(str(ports)) # We need to look for wwns on every hba # because we don't know ahead of time # where they will show up. hbas = self._linuxfc.get_fc_hbas_info() host_devices = [] for hba in hbas: pci_num = self._get_pci_num(hba) if pci_num is not None: for wwn in wwns: target_wwn = "0x%s" % wwn.lower() host_device = ("/dev/disk/by-path/pci-%s-fc-%s-lun-%s" % (pci_num, target_wwn, connection_properties.get('target_lun', 0))) host_devices.append(host_device) if len(host_devices) == 0: # this is empty because we don't have any FC HBAs msg = _("We are unable to locate any Fibre Channel devices") LOG.warn(msg) raise exception.NoFibreChannelHostsFound() # The /dev/disk/by-path/... node is not always present immediately # We only need to find the first device. Once we see the first device # multipath will have any others. def _wait_for_device_discovery(host_devices): tries = self.tries for device in host_devices: LOG.debug(_("Looking for Fibre Channel dev %(device)s"), {'device': device}) if os.path.exists(device): self.host_device = device # get the /dev/sdX device. This is used # to find the multipath device. self.device_name = os.path.realpath(device) raise loopingcall.LoopingCallDone() if self.tries >= self.device_scan_attempts: msg = _("Fibre Channel volume device not found.") LOG.error(msg) raise exception.NoFibreChannelVolumeDeviceFound() LOG.warn(_("Fibre volume not yet found. " "Will rescan & retry. Try number: %(tries)s"), {'tries': tries}) self._linuxfc.rescan_hosts(hbas) self.tries = self.tries + 1 self.host_device = None self.device_name = None self.tries = 0 timer = loopingcall.FixedIntervalLoopingCall( _wait_for_device_discovery, host_devices) timer.start(interval=2).wait() tries = self.tries if self.host_device is not None and self.device_name is not None: LOG.debug(_("Found Fibre Channel volume %(name)s " "(after %(tries)s rescans)"), {'name': self.device_name, 'tries': tries}) # see if the new drive is part of a multipath # device. If so, we'll use the multipath device. if self.use_multipath: mdev_info = self._linuxscsi.find_multipath_device(self.device_name) if mdev_info is not None: LOG.debug(_("Multipath device discovered %(device)s") % {'device': mdev_info['device']}) device_path = mdev_info['device'] devices = mdev_info['devices'] device_info['multipath_id'] = mdev_info['id'] else: # we didn't find a multipath device. # so we assume the kernel only sees 1 device device_path = self.host_device dev_info = self._linuxscsi.get_device_info(self.device_name) devices = [dev_info] else: device_path = self.host_device dev_info = self._linuxscsi.get_device_info(self.device_name) devices = [dev_info] device_info['path'] = device_path device_info['devices'] = devices return device_info @synchronized('connect_volume') def disconnect_volume(self, connection_properties, device_info): """Detach the volume from instance_name. connection_properties for Fibre Channel must include: target_wwn - iSCSI Qualified Name target_lun - LUN id of the volume """ devices = device_info['devices'] # If this is a multipath device, we need to search again # and make sure we remove all the devices. Some of them # might not have shown up at attach time. if self.use_multipath and 'multipath_id' in device_info: multipath_id = device_info['multipath_id'] mdev_info = self._linuxscsi.find_multipath_device(multipath_id) devices = mdev_info['devices'] LOG.debug("devices to remove = %s" % devices) self._linuxscsi.flush_multipath_device(multipath_id) # There may have been more than 1 device mounted # by the kernel for this volume. We have to remove # all of them for device in devices: self._linuxscsi.remove_scsi_device(device["device"]) def _get_pci_num(self, hba): # NOTE(walter-boring) # device path is in format of # /sys/devices/pci0000:00/0000:00:03.0/0000:05:00.3/host2/fc_host/host2 # sometimes an extra entry exists before the host2 value # we always want the value prior to the host2 value pci_num = None if hba is not None: if "device_path" in hba: index = 0 device_path = hba['device_path'].split('/') for value in device_path: if value.startswith('host'): break index = index + 1 if index > 0: pci_num = device_path[index - 1] return pci_num class AoEConnector(InitiatorConnector): """Connector class to attach/detach AoE volumes.""" def __init__(self, root_helper, driver=None, execute=putils.execute, device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT, *args, **kwargs): super(AoEConnector, self).__init__(root_helper, driver=driver, execute=execute, device_scan_attempts= device_scan_attempts, *args, **kwargs) def _get_aoe_info(self, connection_properties): shelf = connection_properties['target_shelf'] lun = connection_properties['target_lun'] aoe_device = 'e%(shelf)s.%(lun)s' % {'shelf': shelf, 'lun': lun} aoe_path = '/dev/etherd/%s' % (aoe_device) return aoe_device, aoe_path @lockutils.synchronized('aoe_control', 'aoe-') def connect_volume(self, connection_properties): """Discover and attach the volume. connection_properties for AoE must include: target_shelf - shelf id of volume target_lun - lun id of volume """ aoe_device, aoe_path = self._get_aoe_info(connection_properties) device_info = { 'type': 'block', 'device': aoe_device, 'path': aoe_path, } if os.path.exists(aoe_path): self._aoe_revalidate(aoe_device) else: self._aoe_discover() waiting_status = {'tries': 0} #NOTE(jbr_): Device path is not always present immediately def _wait_for_discovery(aoe_path): if os.path.exists(aoe_path): raise loopingcall.LoopingCallDone if waiting_status['tries'] >= self.device_scan_attempts: raise exception.VolumeDeviceNotFound(device=aoe_path) LOG.warn(_("AoE volume not yet found at: %(path)s. " "Try number: %(tries)s"), {'path': aoe_device, 'tries': waiting_status['tries']}) self._aoe_discover() waiting_status['tries'] += 1 timer = loopingcall.FixedIntervalLoopingCall(_wait_for_discovery, aoe_path) timer.start(interval=2).wait() if waiting_status['tries']: LOG.debug(_("Found AoE device %(path)s " "(after %(tries)s rediscover)"), {'path': aoe_path, 'tries': waiting_status['tries']}) return device_info @lockutils.synchronized('aoe_control', 'aoe-') def disconnect_volume(self, connection_properties, device_info): """Detach and flush the volume. connection_properties for AoE must include: target_shelf - shelf id of volume target_lun - lun id of volume """ aoe_device, aoe_path = self._get_aoe_info(connection_properties) if os.path.exists(aoe_path): self._aoe_flush(aoe_device) def _aoe_discover(self): (out, err) = self._execute('aoe-discover', run_as_root=True, root_helper=self._root_helper, check_exit_code=0) LOG.debug(_('aoe-discover: stdout=%(out)s stderr%(err)s') % {'out': out, 'err': err}) def _aoe_revalidate(self, aoe_device): (out, err) = self._execute('aoe-revalidate', aoe_device, run_as_root=True, root_helper=self._root_helper, check_exit_code=0) LOG.debug(_('aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s') % {'dev': aoe_device, 'out': out, 'err': err}) def _aoe_flush(self, aoe_device): (out, err) = self._execute('aoe-flush', aoe_device, run_as_root=True, root_helper=self._root_helper, check_exit_code=0) LOG.debug(_('aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s') % {'dev': aoe_device, 'out': out, 'err': err}) class RemoteFsConnector(InitiatorConnector): """Connector class to attach/detach NFS and GlusterFS volumes.""" def __init__(self, mount_type, root_helper, driver=None, execute=putils.execute, device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT, *args, **kwargs): kwargs = kwargs or {} conn = kwargs.get('conn') if conn: mount_point_base = conn.get('mount_point_base') if mount_type.lower() == 'nfs': kwargs['nfs_mount_point_base'] =\ kwargs.get('nfs_mount_point_base') or\ mount_point_base elif mount_type.lower() == 'glusterfs': kwargs['glusterfs_mount_point_base'] =\ kwargs.get('glusterfs_mount_point_base') or\ mount_point_base else: LOG.warn(_("Connection details not present." " RemoteFsClient may not initialize properly.")) self._remotefsclient = remotefs.RemoteFsClient(mount_type, root_helper, execute=execute, *args, **kwargs) super(RemoteFsConnector, self).__init__(root_helper, driver=driver, execute=execute, device_scan_attempts= device_scan_attempts, *args, **kwargs) def set_execute(self, execute): super(RemoteFsConnector, self).set_execute(execute) self._remotefsclient.set_execute(execute) def connect_volume(self, connection_properties): """Ensure that the filesystem containing the volume is mounted. connection_properties must include: export - remote filesystem device (e.g. '172.18.194.100:/var/nfs') name - file name within the filesystem connection_properties may optionally include: options - options to pass to mount """ mnt_flags = [] if connection_properties.get('options'): mnt_flags = connection_properties['options'].split() nfs_share = connection_properties['export'] self._remotefsclient.mount(nfs_share, mnt_flags) mount_point = self._remotefsclient.get_mount_point(nfs_share) path = mount_point + '/' + connection_properties['name'] return {'path': path} def disconnect_volume(self, connection_properties, device_info): """No need to do anything to disconnect a volume in a filesystem.""" class LocalConnector(InitiatorConnector): """"Connector class to attach/detach File System backed volumes.""" def __init__(self, root_helper, driver=None, execute=putils.execute, *args, **kwargs): super(LocalConnector, self).__init__(root_helper, driver=driver, execute=execute, *args, **kwargs) def connect_volume(self, connection_properties): """Connect to a volume. connection_properties must include: device_path - path to the volume to be connected """ if 'device_path' not in connection_properties: msg = (_("Invalid connection_properties specified " "no device_path attribute")) raise ValueError(msg) device_info = {'type': 'local', 'path': connection_properties['device_path']} return device_info def disconnect_volume(self, connection_properties, device_info): """Disconnect a volume from the local host.""" pass cinder-2014.1.5/cinder/brick/initiator/linuxscsi.py0000664000567000056700000001570312540642606023316 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. """Generic linux scsi subsystem and Multipath utilities. Note, this is not iSCSI. """ import os from cinder.brick import executor from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils LOG = logging.getLogger(__name__) class LinuxSCSI(executor.Executor): def __init__(self, root_helper, execute=putils.execute, *args, **kwargs): super(LinuxSCSI, self).__init__(root_helper, execute, *args, **kwargs) def echo_scsi_command(self, path, content): """Used to echo strings to scsi subsystem.""" args = ["-a", path] kwargs = dict(process_input=content, run_as_root=True, root_helper=self._root_helper) self._execute('tee', *args, **kwargs) def get_name_from_path(self, path): """Translates /dev/disk/by-path/ entry to /dev/sdX.""" name = os.path.realpath(path) if name.startswith("/dev/"): return name else: return None def remove_scsi_device(self, device): """Removes a scsi device based upon /dev/sdX name.""" path = "/sys/block/%s/device/delete" % device.replace("/dev/", "") if os.path.exists(path): # flush any outstanding IO first self.flush_device_io(device) LOG.debug("Remove SCSI device(%s) with %s" % (device, path)) self.echo_scsi_command(path, "1") def get_device_info(self, device): (out, err) = self._execute('sg_scan', device, run_as_root=True, root_helper=self._root_helper) dev_info = {'device': device, 'host': None, 'channel': None, 'id': None, 'lun': None} if out: line = out.strip() line = line.replace(device + ": ", "") info = line.split(" ") for item in info: if '=' in item: pair = item.split('=') dev_info[pair[0]] = pair[1] elif 'scsi' in item: dev_info['host'] = item.replace('scsi', '') return dev_info def remove_multipath_device(self, multipath_name): """This removes LUNs associated with a multipath device and the multipath device itself. """ LOG.debug("remove multipath device %s" % multipath_name) mpath_dev = self.find_multipath_device(multipath_name) if mpath_dev: devices = mpath_dev['devices'] LOG.debug("multipath LUNs to remove %s" % devices) for device in devices: self.remove_scsi_device(device['device']) self.flush_multipath_device(mpath_dev['id']) def flush_device_io(self, device): """This is used to flush any remaining IO in the buffers.""" try: LOG.debug("Flushing IO for device %s" % device) self._execute('blockdev', '--flushbufs', device, run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as exc: msg = _("Failed to flush IO buffers prior to removing" "device: (%(code)s)") % {'code': exc.exit_code} LOG.warn(msg) def flush_multipath_device(self, device): try: LOG.debug("Flush multipath device %s" % device) self._execute('multipath', '-f', device, run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as exc: LOG.warn(_("multipath call failed exit (%(code)s)") % {'code': exc.exit_code}) def flush_multipath_devices(self): try: self._execute('multipath', '-F', run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as exc: LOG.warn(_("multipath call failed exit (%(code)s)") % {'code': exc.exit_code}) def find_multipath_device(self, device): """Find a multipath device associated with a LUN device name. device can be either a /dev/sdX entry or a multipath id. """ mdev = None devices = [] out = None try: (out, err) = self._execute('multipath', '-l', device, run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as exc: LOG.warn(_("multipath call failed exit (%(code)s)") % {'code': exc.exit_code}) return None if out: lines = out.strip() lines = lines.split("\n") if lines: line = lines[0] info = line.split(" ") # device line output is different depending # on /etc/multipath.conf settings. if info[1][:2] == "dm": mdev = "/dev/%s" % info[1] mdev_id = info[0] elif info[2][:2] == "dm": mdev = "/dev/%s" % info[2] mdev_id = info[1].replace('(', '') mdev_id = mdev_id.replace(')', '') if mdev is None: LOG.warn(_("Couldn't find multipath device %(line)s") % {'line': line}) return None LOG.debug(_("Found multipath device = %(mdev)s") % {'mdev': mdev}) device_lines = lines[3:] for dev_line in device_lines: if dev_line.find("policy") != -1: continue dev_line = dev_line.lstrip(' |-`') dev_info = dev_line.split() address = dev_info[0].split(":") dev = {'device': '/dev/%s' % dev_info[1], 'host': address[0], 'channel': address[1], 'id': address[2], 'lun': address[3] } devices.append(dev) if mdev is not None: info = {"device": mdev, "id": mdev_id, "devices": devices} return info return None cinder-2014.1.5/cinder/api/0000775000567000056700000000000012540643114016365 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/versions.py0000664000567000056700000002140712540642606020620 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. import datetime from lxml import etree from oslo.config import cfg from cinder.api.openstack import wsgi from cinder.api.views import versions as views_versions from cinder.api import xmlutil CONF = cfg.CONF _KNOWN_VERSIONS = { "v2.0": { "id": "v2.0", "status": "CURRENT", "updated": "2012-11-21T11:33:21Z", "links": [ { "rel": "describedby", "type": "application/pdf", "href": "http://jorgew.github.com/block-storage-api/" "content/os-block-storage-1.0.pdf", }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", #(anthony) FIXME "href": "http://docs.rackspacecloud.com/" "servers/api/v1.1/application.wadl", }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.volume+xml;version=1", }, { "base": "application/json", "type": "application/vnd.openstack.volume+json;version=1", } ], }, "v1.0": { "id": "v1.0", "status": "CURRENT", "updated": "2012-01-04T11:33:21Z", "links": [ { "rel": "describedby", "type": "application/pdf", "href": "http://jorgew.github.com/block-storage-api/" "content/os-block-storage-1.0.pdf", }, { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", #(anthony) FIXME "href": "http://docs.rackspacecloud.com/" "servers/api/v1.1/application.wadl", }, ], "media-types": [ { "base": "application/xml", "type": "application/vnd.openstack.volume+xml;version=1", }, { "base": "application/json", "type": "application/vnd.openstack.volume+json;version=1", } ], } } def get_supported_versions(): versions = {} if CONF.enable_v1_api: versions['v1.0'] = _KNOWN_VERSIONS['v1.0'] if CONF.enable_v2_api: versions['v2.0'] = _KNOWN_VERSIONS['v2.0'] return versions class MediaTypesTemplateElement(xmlutil.TemplateElement): def will_render(self, datum): return 'media-types' in datum def make_version(elem): elem.set('id') elem.set('status') elem.set('updated') mts = MediaTypesTemplateElement('media-types') elem.append(mts) mt = xmlutil.SubTemplateElement(mts, 'media-type', selector='media-types') mt.set('base') mt.set('type') xmlutil.make_links(elem, 'links') version_nsmap = {None: xmlutil.XMLNS_COMMON_V10, 'atom': xmlutil.XMLNS_ATOM} class VersionTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('version', selector='version') make_version(root) return xmlutil.MasterTemplate(root, 1, nsmap=version_nsmap) class VersionsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('versions') elem = xmlutil.SubTemplateElement(root, 'version', selector='versions') make_version(elem) return xmlutil.MasterTemplate(root, 1, nsmap=version_nsmap) class ChoicesTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('choices') elem = xmlutil.SubTemplateElement(root, 'version', selector='choices') make_version(elem) return xmlutil.MasterTemplate(root, 1, nsmap=version_nsmap) class AtomSerializer(wsgi.XMLDictSerializer): NSMAP = {None: xmlutil.XMLNS_ATOM} def __init__(self, metadata=None, xmlns=None): self.metadata = metadata or {} if not xmlns: self.xmlns = wsgi.XMLNS_ATOM else: self.xmlns = xmlns def _get_most_recent_update(self, versions): recent = None for version in versions: updated = datetime.datetime.strptime(version['updated'], '%Y-%m-%dT%H:%M:%SZ') if not recent: recent = updated elif updated > recent: recent = updated return recent.strftime('%Y-%m-%dT%H:%M:%SZ') def _get_base_url(self, link_href): # Make sure no trailing / link_href = link_href.rstrip('/') return link_href.rsplit('/', 1)[0] + '/' def _create_feed(self, versions, feed_title, feed_id): feed = etree.Element('feed', nsmap=self.NSMAP) title = etree.SubElement(feed, 'title') title.set('type', 'text') title.text = feed_title # Set this updated to the most recently updated version recent = self._get_most_recent_update(versions) etree.SubElement(feed, 'updated').text = recent etree.SubElement(feed, 'id').text = feed_id link = etree.SubElement(feed, 'link') link.set('rel', 'self') link.set('href', feed_id) author = etree.SubElement(feed, 'author') etree.SubElement(author, 'name').text = 'Rackspace' etree.SubElement(author, 'uri').text = 'http://www.rackspace.com/' for version in versions: feed.append(self._create_version_entry(version)) return feed def _create_version_entry(self, version): entry = etree.Element('entry') etree.SubElement(entry, 'id').text = version['links'][0]['href'] title = etree.SubElement(entry, 'title') title.set('type', 'text') title.text = 'Version %s' % version['id'] etree.SubElement(entry, 'updated').text = version['updated'] for link in version['links']: link_elem = etree.SubElement(entry, 'link') link_elem.set('rel', link['rel']) link_elem.set('href', link['href']) if 'type' in link: link_elem.set('type', link['type']) content = etree.SubElement(entry, 'content') content.set('type', 'text') content.text = 'Version %s %s (%s)' % (version['id'], version['status'], version['updated']) return entry class VersionsAtomSerializer(AtomSerializer): def default(self, data): versions = data['versions'] feed_id = self._get_base_url(versions[0]['links'][0]['href']) feed = self._create_feed(versions, 'Available API Versions', feed_id) return self._to_xml(feed) class VersionAtomSerializer(AtomSerializer): def default(self, data): version = data['version'] feed_id = version['links'][0]['href'] feed = self._create_feed([version], 'About This Version', feed_id) return self._to_xml(feed) class Versions(wsgi.Resource): def __init__(self): super(Versions, self).__init__(None) @wsgi.serializers(xml=VersionsTemplate, atom=VersionsAtomSerializer) def index(self, req): """Return all versions.""" builder = views_versions.get_view_builder(req) return builder.build_versions(get_supported_versions()) @wsgi.serializers(xml=ChoicesTemplate) @wsgi.response(300) def multi(self, req): """Return multiple choices.""" builder = views_versions.get_view_builder(req) return builder.build_choices(get_supported_versions(), req) def get_action_args(self, request_environment): """Parse dictionary created by routes library.""" args = {} if request_environment['PATH_INFO'] == '/': args['action'] = 'index' else: args['action'] = 'multi' return args class VolumeVersionV1(object): @wsgi.serializers(xml=VersionTemplate, atom=VersionAtomSerializer) def show(self, req): builder = views_versions.get_view_builder(req) return builder.build_version(_KNOWN_VERSIONS['v1.0']) def create_resource(): return wsgi.Resource(VolumeVersionV1()) cinder-2014.1.5/cinder/api/middleware/0000775000567000056700000000000012540643114020502 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/middleware/auth.py0000664000567000056700000001353512540642606022031 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. """ Common Auth Middleware. """ import os from oslo.config import cfg import webob.dec import webob.exc from cinder.api.openstack import wsgi from cinder import context from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder.openstack.common.middleware import request_id from cinder import wsgi as base_wsgi use_forwarded_for_opt = cfg.BoolOpt( 'use_forwarded_for', default=False, help='Treat X-Forwarded-For as the canonical remote address. ' 'Only enable this if you have a sanitizing proxy.') CONF = cfg.CONF CONF.register_opt(use_forwarded_for_opt) LOG = logging.getLogger(__name__) def pipeline_factory(loader, global_conf, **local_conf): """A paste pipeline replica that keys off of auth_strategy.""" pipeline = local_conf[CONF.auth_strategy] if not CONF.api_rate_limit: limit_name = CONF.auth_strategy + '_nolimit' pipeline = local_conf.get(limit_name, pipeline) pipeline = pipeline.split() filters = [loader.get_filter(n) for n in pipeline[:-1]] app = loader.get_app(pipeline[-1]) filters.reverse() for filter in filters: app = filter(app) return app class InjectContext(base_wsgi.Middleware): """Add a 'cinder.context' to WSGI environ.""" def __init__(self, context, *args, **kwargs): self.context = context super(InjectContext, self).__init__(*args, **kwargs) @webob.dec.wsgify(RequestClass=base_wsgi.Request) def __call__(self, req): req.environ['cinder.context'] = self.context return self.application class CinderKeystoneContext(base_wsgi.Middleware): """Make a request context from keystone headers.""" @webob.dec.wsgify(RequestClass=base_wsgi.Request) def __call__(self, req): user_id = req.headers.get('X_USER') user_id = req.headers.get('X_USER_ID', user_id) if user_id is None: LOG.debug("Neither X_USER_ID nor X_USER found in request") return webob.exc.HTTPUnauthorized() # get the roles roles = [r.strip() for r in req.headers.get('X_ROLE', '').split(',')] if 'X_TENANT_ID' in req.headers: # This is the new header since Keystone went to ID/Name project_id = req.headers['X_TENANT_ID'] else: # This is for legacy compatibility project_id = req.headers['X_TENANT'] project_name = req.headers.get('X_TENANT_NAME') req_id = req.environ.get(request_id.ENV_REQUEST_ID) # Get the auth token auth_token = req.headers.get('X_AUTH_TOKEN', req.headers.get('X_STORAGE_TOKEN')) # Build a context, including the auth_token... remote_address = req.remote_addr service_catalog = None if req.headers.get('X_SERVICE_CATALOG') is not None: try: catalog_header = req.headers.get('X_SERVICE_CATALOG') service_catalog = jsonutils.loads(catalog_header) except ValueError: raise webob.exc.HTTPInternalServerError( _('Invalid service catalog json.')) if CONF.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) ctx = context.RequestContext(user_id, project_id, project_name=project_name, roles=roles, auth_token=auth_token, remote_address=remote_address, service_catalog=service_catalog, request_id=req_id) req.environ['cinder.context'] = ctx return self.application class NoAuthMiddleware(base_wsgi.Middleware): """Return a fake token if one isn't specified.""" @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, req): if 'X-Auth-Token' not in req.headers: user_id = req.headers.get('X-Auth-User', 'admin') project_id = req.headers.get('X-Auth-Project-Id', 'admin') os_url = os.path.join(req.url, project_id) res = webob.Response() # NOTE(vish): This is expecting and returning Auth(1.1), whereas # keystone uses 2.0 auth. We should probably allow # 2.0 auth here as well. res.headers['X-Auth-Token'] = '%s:%s' % (user_id, project_id) res.headers['X-Server-Management-Url'] = os_url res.content_type = 'text/plain' res.status = '204' return res token = req.headers['X-Auth-Token'] user_id, _sep, project_id = token.partition(':') project_id = project_id or user_id remote_address = getattr(req, 'remote_address', '127.0.0.1') if CONF.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) ctx = context.RequestContext(user_id, project_id, is_admin=True, remote_address=remote_address) req.environ['cinder.context'] = ctx return self.application cinder-2014.1.5/cinder/api/middleware/__init__.py0000664000567000056700000000000012540642603022603 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/middleware/sizelimit.py0000664000567000056700000000541312540642606023075 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # 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. """ Request Body limiting middleware. """ from oslo.config import cfg import webob.dec import webob.exc from cinder.openstack.common import log as logging from cinder import wsgi #default request size is 112k max_request_body_size_opt = cfg.IntOpt('osapi_max_request_body_size', default=114688, help='Max size for body of a request') CONF = cfg.CONF CONF.register_opt(max_request_body_size_opt) LOG = logging.getLogger(__name__) class LimitingReader(object): """Reader to limit the size of an incoming request.""" def __init__(self, data, limit): """Initialize LimitingReader. :param data: Underlying data object :param limit: maximum number of bytes the reader should allow """ self.data = data self.limit = limit self.bytes_read = 0 def __iter__(self): for chunk in self.data: self.bytes_read += len(chunk) if self.bytes_read > self.limit: msg = _("Request is too large.") raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg) else: yield chunk def read(self, i=None): result = self.data.read(i) self.bytes_read += len(result) if self.bytes_read > self.limit: msg = _("Request is too large.") raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg) return result class RequestBodySizeLimiter(wsgi.Middleware): """Add a 'cinder.context' to WSGI environ.""" def __init__(self, *args, **kwargs): super(RequestBodySizeLimiter, self).__init__(*args, **kwargs) @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, req): if req.content_length > CONF.osapi_max_request_body_size: msg = _("Request is too large.") raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg) if req.content_length is None and req.is_body_readable: limiter = LimitingReader(req.body_file, CONF.osapi_max_request_body_size) req.body_file = limiter return self.application cinder-2014.1.5/cinder/api/middleware/fault.py0000664000567000056700000000563012540642606022200 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import webob.dec import webob.exc from cinder.api.openstack import wsgi from cinder import exception from cinder.openstack.common import log as logging from cinder import utils from cinder import wsgi as base_wsgi LOG = logging.getLogger(__name__) class FaultWrapper(base_wsgi.Middleware): """Calls down the middleware stack, making exceptions into faults.""" _status_to_type = {} @staticmethod def status_to_type(status): if not FaultWrapper._status_to_type: for clazz in utils.walk_class_hierarchy(webob.exc.HTTPError): FaultWrapper._status_to_type[clazz.code] = clazz return FaultWrapper._status_to_type.get( status, webob.exc.HTTPInternalServerError)() def _error(self, inner, req): LOG.exception(_("Caught error: %s"), unicode(inner)) safe = getattr(inner, 'safe', False) headers = getattr(inner, 'headers', None) status = getattr(inner, 'code', 500) if status is None: status = 500 msg_dict = dict(url=req.url, status=status) LOG.info(_("%(url)s returned with HTTP %(status)d") % msg_dict) outer = self.status_to_type(status) if headers: outer.headers = headers # NOTE(johannes): We leave the explanation empty here on # purpose. It could possibly have sensitive information # that should not be returned back to the user. See # bugs 868360 and 874472 # NOTE(eglynn): However, it would be over-conservative and # inconsistent with the EC2 API to hide every exception, # including those that are safe to expose, see bug 1021373 if safe: msg = (inner.msg if isinstance(inner, exception.CinderException) else unicode(inner)) params = {'exception': inner.__class__.__name__, 'explanation': msg} outer.explanation = _('%(exception)s: %(explanation)s') % params return wsgi.Fault(outer) @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, req): try: return req.get_response(self.application) except Exception as ex: return self._error(ex, req) cinder-2014.1.5/cinder/api/extensions.py0000664000567000056700000003235512540642606021153 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. import os from oslo.config import cfg import webob.dec import webob.exc import cinder.api.openstack from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging import cinder.policy CONF = cfg.CONF LOG = logging.getLogger(__name__) class ExtensionDescriptor(object): """Base class that defines the contract for extensions. Note that you don't have to derive from this class to have a valid extension; it is purely a convenience. """ # The name of the extension, e.g., 'Fox In Socks' name = None # The alias for the extension, e.g., 'FOXNSOX' alias = None # Description comes from the docstring for the class # The XML namespace for the extension, e.g., # 'http://www.fox.in.socks/api/ext/pie/v1.0' namespace = None # The timestamp when the extension was last updated, e.g., # '2011-01-22T13:25:27-06:00' updated = None def __init__(self, ext_mgr): """Register extension with the extension manager.""" ext_mgr.register(self) self.ext_mgr = ext_mgr def get_resources(self): """List of extensions.ResourceExtension extension objects. Resources define new nouns, and are accessible through URLs. """ resources = [] return resources def get_controller_extensions(self): """List of extensions.ControllerExtension extension objects. Controller extensions are used to extend existing controllers. """ controller_exts = [] return controller_exts @classmethod def nsmap(cls): """Synthesize a namespace map from extension.""" # Start with a base nsmap nsmap = ext_nsmap.copy() # Add the namespace for the extension nsmap[cls.alias] = cls.namespace return nsmap @classmethod def xmlname(cls, name): """Synthesize element and attribute names.""" return '{%s}%s' % (cls.namespace, name) def make_ext(elem): elem.set('name') elem.set('namespace') elem.set('alias') elem.set('updated') desc = xmlutil.SubTemplateElement(elem, 'description') desc.text = 'description' xmlutil.make_links(elem, 'links') ext_nsmap = {None: xmlutil.XMLNS_COMMON_V10, 'atom': xmlutil.XMLNS_ATOM} class ExtensionTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('extension', selector='extension') make_ext(root) return xmlutil.MasterTemplate(root, 1, nsmap=ext_nsmap) class ExtensionsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('extensions') elem = xmlutil.SubTemplateElement(root, 'extension', selector='extensions') make_ext(elem) return xmlutil.MasterTemplate(root, 1, nsmap=ext_nsmap) class ExtensionsResource(wsgi.Resource): def __init__(self, extension_manager): self.extension_manager = extension_manager super(ExtensionsResource, self).__init__(None) def _translate(self, ext): ext_data = {} ext_data['name'] = ext.name ext_data['alias'] = ext.alias ext_data['description'] = ext.__doc__ ext_data['namespace'] = ext.namespace ext_data['updated'] = ext.updated ext_data['links'] = [] # TODO(dprince): implement extension links return ext_data @wsgi.serializers(xml=ExtensionsTemplate) def index(self, req): extensions = [] for _alias, ext in self.extension_manager.extensions.iteritems(): extensions.append(self._translate(ext)) return dict(extensions=extensions) @wsgi.serializers(xml=ExtensionTemplate) def show(self, req, id): try: # NOTE(dprince): the extensions alias is used as the 'id' for show ext = self.extension_manager.extensions[id] except KeyError: raise webob.exc.HTTPNotFound() return dict(extension=self._translate(ext)) def delete(self, req, id): raise webob.exc.HTTPNotFound() def create(self, req): raise webob.exc.HTTPNotFound() class ExtensionManager(object): """Load extensions from the configured extension path. See cinder/tests/api/extensions/foxinsocks/extension.py for an example extension implementation. """ def __init__(self): LOG.audit(_('Initializing extension manager.')) self.cls_list = CONF.osapi_volume_extension self.extensions = {} self._load_extensions() def is_loaded(self, alias): return alias in self.extensions def register(self, ext): # Do nothing if the extension doesn't check out if not self._check_extension(ext): return alias = ext.alias LOG.audit(_('Loaded extension: %s'), alias) if alias in self.extensions: raise exception.Error("Found duplicate extension: %s" % alias) self.extensions[alias] = ext def get_resources(self): """Returns a list of ResourceExtension objects.""" resources = [] resources.append(ResourceExtension('extensions', ExtensionsResource(self))) for ext in self.extensions.values(): try: resources.extend(ext.get_resources()) except AttributeError: # NOTE(dprince): Extension aren't required to have resource # extensions pass return resources def get_controller_extensions(self): """Returns a list of ControllerExtension objects.""" controller_exts = [] for ext in self.extensions.values(): try: get_ext_method = ext.get_controller_extensions except AttributeError: # NOTE(Vek): Extensions aren't required to have # controller extensions continue controller_exts.extend(get_ext_method()) return controller_exts def _check_extension(self, extension): """Checks for required methods in extension objects.""" try: LOG.debug(_('Ext name: %s'), extension.name) LOG.debug(_('Ext alias: %s'), extension.alias) LOG.debug(_('Ext description: %s'), ' '.join(extension.__doc__.strip().split())) LOG.debug(_('Ext namespace: %s'), extension.namespace) LOG.debug(_('Ext updated: %s'), extension.updated) except AttributeError as ex: LOG.exception(_("Exception loading extension: %s"), unicode(ex)) return False return True def load_extension(self, ext_factory): """Execute an extension factory. Loads an extension. The 'ext_factory' is the name of a callable that will be imported and called with one argument--the extension manager. The factory callable is expected to call the register() method at least once. """ LOG.debug(_("Loading extension %s"), ext_factory) # Load the factory factory = importutils.import_class(ext_factory) # Call it LOG.debug(_("Calling extension factory %s"), ext_factory) factory(self) def _load_extensions(self): """Load extensions specified on the command line.""" extensions = list(self.cls_list) # NOTE(thingee): Backwards compat for the old extension loader path. # We can drop this post-grizzly in the H release. old_contrib_path = ('cinder.api.openstack.volume.contrib.' 'standard_extensions') new_contrib_path = 'cinder.api.contrib.standard_extensions' if old_contrib_path in extensions: LOG.warn(_('osapi_volume_extension is set to deprecated path: %s'), old_contrib_path) LOG.warn(_('Please set your flag or cinder.conf settings for ' 'osapi_volume_extension to: %s'), new_contrib_path) extensions = [e.replace(old_contrib_path, new_contrib_path) for e in extensions] for ext_factory in extensions: try: self.load_extension(ext_factory) except Exception as exc: LOG.warn(_('Failed to load extension %(ext_factory)s: ' '%(exc)s'), {'ext_factory': ext_factory, 'exc': exc}) class ControllerExtension(object): """Extend core controllers of cinder OpenStack API. Provide a way to extend existing cinder OpenStack API core controllers. """ def __init__(self, extension, collection, controller): self.extension = extension self.collection = collection self.controller = controller class ResourceExtension(object): """Add top level resources to the OpenStack API in cinder.""" def __init__(self, collection, controller, parent=None, collection_actions=None, member_actions=None, custom_routes_fn=None): if not collection_actions: collection_actions = {} if not member_actions: member_actions = {} self.collection = collection self.controller = controller self.parent = parent self.collection_actions = collection_actions self.member_actions = member_actions self.custom_routes_fn = custom_routes_fn def load_standard_extensions(ext_mgr, logger, path, package, ext_list=None): """Registers all standard API extensions.""" # Walk through all the modules in our directory... our_dir = path[0] for dirpath, dirnames, filenames in os.walk(our_dir): # Compute the relative package name from the dirpath relpath = os.path.relpath(dirpath, our_dir) if relpath == '.': relpkg = '' else: relpkg = '.%s' % '.'.join(relpath.split(os.sep)) # Now, consider each file in turn, only considering .py files for fname in filenames: root, ext = os.path.splitext(fname) # Skip __init__ and anything that's not .py if ext != '.py' or root == '__init__': continue # Try loading it classname = "%s%s" % (root[0].upper(), root[1:]) classpath = ("%s%s.%s.%s" % (package, relpkg, root, classname)) if ext_list is not None and classname not in ext_list: logger.debug("Skipping extension: %s" % classpath) continue try: ext_mgr.load_extension(classpath) except Exception as exc: logger.warn(_('Failed to load extension %(classpath)s: ' '%(exc)s'), {'classpath': classpath, 'exc': exc}) # Now, let's consider any subdirectories we may have... subdirs = [] for dname in dirnames: # Skip it if it does not have __init__.py if not os.path.exists(os.path.join(dirpath, dname, '__init__.py')): continue # If it has extension(), delegate... ext_name = ("%s%s.%s.extension" % (package, relpkg, dname)) try: ext = importutils.import_class(ext_name) except ImportError: # extension() doesn't exist on it, so we'll explore # the directory for ourselves subdirs.append(dname) else: try: ext(ext_mgr) except Exception as exc: logger.warn(_('Failed to load extension %(ext_name)s: ' '%(exc)s'), {'ext_name': ext_name, 'exc': exc}) # Update the list of directories we'll explore... dirnames[:] = subdirs def extension_authorizer(api_name, extension_name): def authorize(context, target=None): if target is None: target = {'project_id': context.project_id, 'user_id': context.user_id} action = '%s_extension:%s' % (api_name, extension_name) cinder.policy.enforce(context, action, target) return authorize def soft_extension_authorizer(api_name, extension_name): hard_authorize = extension_authorizer(api_name, extension_name) def authorize(context): try: hard_authorize(context) return True except exception.NotAuthorized: return False return authorize cinder-2014.1.5/cinder/api/auth.py0000664000567000056700000000257712540642606017720 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # All Rights Reserved. # # 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. from cinder.api.middleware import auth from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class CinderKeystoneContext(auth.CinderKeystoneContext): def __init__(self, application): LOG.warn(_('cinder.api.auth:CinderKeystoneContext is deprecated. ' 'Please use ' 'cinder.api.middleware.auth:CinderKeystoneContext ' 'instead.')) super(CinderKeystoneContext, self).__init__(application) def pipeline_factory(loader, global_conf, **local_conf): LOG.warn(_('cinder.api.auth:pipeline_factory is deprecated. Please use ' 'cinder.api.middleware.auth:pipeline_factory instead.')) auth.pipeline_factory(loader, global_conf, **local_conf) cinder-2014.1.5/cinder/api/views/0000775000567000056700000000000012540643114017522 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/views/versions.py0000664000567000056700000000546412540642606021762 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # All Rights Reserved. # # 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. import copy import os def get_view_builder(req): base_url = req.application_url return ViewBuilder(base_url) class ViewBuilder(object): def __init__(self, base_url): """Initialize ViewBuilder. :param base_url: url of the root wsgi application """ self.base_url = base_url def build_choices(self, VERSIONS, req): version_objs = [] for version in VERSIONS: version = VERSIONS[version] version_objs.append({ "id": version['id'], "status": version['status'], "links": [{"rel": "self", "href": self.generate_href(version['id'], req.path), }, ], "media-types": version['media-types'], }) return dict(choices=version_objs) def build_versions(self, versions): version_objs = [] for version in sorted(versions.keys()): version = versions[version] version_objs.append({ "id": version['id'], "status": version['status'], "updated": version['updated'], "links": self._build_links(version), }) return dict(versions=version_objs) def build_version(self, version): reval = copy.deepcopy(version) reval['links'].insert(0, { "rel": "self", "href": self.base_url.rstrip('/') + '/', }) return dict(version=reval) def _build_links(self, version_data): """Generate a container of links that refer to the provided version.""" href = self.generate_href(version_data['id']) links = [{'rel': 'self', 'href': href, }, ] return links def generate_href(self, version, path=None): """Create an url that refers to a specific version_number.""" if version.find('v1.') == 0: version_number = 'v1' else: version_number = 'v2' if path: path = path.strip('/') return os.path.join(self.base_url, version_number, path) else: return os.path.join(self.base_url, version_number) + '/' cinder-2014.1.5/cinder/api/views/types.py0000664000567000056700000000245012540642606021246 0ustar jenkinsjenkins00000000000000# Copyright 2012 Red Hat, Inc. # All Rights Reserved. # # 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. from cinder.api import common class ViewBuilder(common.ViewBuilder): def show(self, request, volume_type, brief=False): """Trim away extraneous volume type attributes.""" trimmed = dict(id=volume_type.get('id'), name=volume_type.get('name'), extra_specs=volume_type.get('extra_specs')) return trimmed if brief else dict(volume_type=trimmed) def index(self, request, volume_types): """Index over trimmed volume types.""" volume_types_list = [self.show(request, volume_type, True) for volume_type in volume_types] return dict(volume_types=volume_types_list) cinder-2014.1.5/cinder/api/views/availability_zones.py0000664000567000056700000000207312540642603023770 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. import cinder.api.common class ViewBuilder(cinder.api.common.ViewBuilder): """Map cinder.volumes.api list_availability_zones response into dicts.""" def list(self, request, availability_zones): def fmt(az): return { 'zoneName': az['name'], 'zoneState': {'available': az['available']}, } return {'availabilityZoneInfo': [fmt(az) for az in availability_zones]} cinder-2014.1.5/cinder/api/views/__init__.py0000664000567000056700000000000012540642603021623 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/views/limits.py0000664000567000056700000000664312540642606021413 0ustar jenkinsjenkins00000000000000# Copyright 2010-2011 OpenStack Foundation # All Rights Reserved. # # 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. import datetime from cinder.openstack.common import timeutils class ViewBuilder(object): """OpenStack API base limits view builder.""" def build(self, rate_limits, absolute_limits): rate_limits = self._build_rate_limits(rate_limits) absolute_limits = self._build_absolute_limits(absolute_limits) output = { "limits": { "rate": rate_limits, "absolute": absolute_limits, }, } return output def _build_absolute_limits(self, absolute_limits): """Builder for absolute limits absolute_limits should be given as a dict of limits. For example: {"ram": 512, "gigabytes": 1024}. """ limit_names = { "ram": ["maxTotalRAMSize"], "instances": ["maxTotalInstances"], "cores": ["maxTotalCores"], "gigabytes": ["maxTotalVolumeGigabytes"], "volumes": ["maxTotalVolumes"], "snapshots": ["maxTotalSnapshots"], "key_pairs": ["maxTotalKeypairs"], "floating_ips": ["maxTotalFloatingIps"], "metadata_items": ["maxServerMeta", "maxImageMeta"], "injected_files": ["maxPersonality"], "injected_file_content_bytes": ["maxPersonalitySize"], } limits = {} for name, value in absolute_limits.iteritems(): if name in limit_names and value is not None: for name in limit_names[name]: limits[name] = value return limits def _build_rate_limits(self, rate_limits): limits = [] for rate_limit in rate_limits: _rate_limit_key = None _rate_limit = self._build_rate_limit(rate_limit) # check for existing key for limit in limits: if (limit["uri"] == rate_limit["URI"] and limit["regex"] == rate_limit["regex"]): _rate_limit_key = limit break # ensure we have a key if we didn't find one if not _rate_limit_key: _rate_limit_key = { "uri": rate_limit["URI"], "regex": rate_limit["regex"], "limit": [], } limits.append(_rate_limit_key) _rate_limit_key["limit"].append(_rate_limit) return limits def _build_rate_limit(self, rate_limit): _get_utc = datetime.datetime.utcfromtimestamp next_avail = _get_utc(rate_limit["resetTime"]) return { "verb": rate_limit["verb"], "value": rate_limit["value"], "remaining": int(rate_limit["remaining"]), "unit": rate_limit["unit"], "next-available": timeutils.isotime(at=next_avail), } cinder-2014.1.5/cinder/api/views/backups.py0000664000567000056700000000703012540642606021531 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. from cinder.api import common from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class ViewBuilder(common.ViewBuilder): """Model backup API responses as a python dictionary.""" _collection_name = "backups" def __init__(self): """Initialize view builder.""" super(ViewBuilder, self).__init__() def summary_list(self, request, backups): """Show a list of backups without many details.""" return self._list_view(self.summary, request, backups) def detail_list(self, request, backups): """Detailed view of a list of backups .""" return self._list_view(self.detail, request, backups) def summary(self, request, backup): """Generic, non-detailed view of a backup.""" return { 'backup': { 'id': backup['id'], 'name': backup['display_name'], 'links': self._get_links(request, backup['id']), }, } def restore_summary(self, request, restore): """Generic, non-detailed view of a restore.""" return { 'restore': { 'backup_id': restore['backup_id'], 'volume_id': restore['volume_id'], }, } def detail(self, request, backup): """Detailed view of a single backup.""" return { 'backup': { 'id': backup.get('id'), 'status': backup.get('status'), 'size': backup.get('size'), 'object_count': backup.get('object_count'), 'availability_zone': backup.get('availability_zone'), 'container': backup.get('container'), 'created_at': backup.get('created_at'), 'name': backup.get('display_name'), 'description': backup.get('display_description'), 'fail_reason': backup.get('fail_reason'), 'volume_id': backup.get('volume_id'), 'links': self._get_links(request, backup['id']) } } def _list_view(self, func, request, backups): """Provide a view for a list of backups.""" backups_list = [func(request, backup)['backup'] for backup in backups] backups_links = self._get_collection_links(request, backups, self._collection_name) backups_dict = dict(backups=backups_list) if backups_links: backups_dict['backups_links'] = backups_links return backups_dict def export_summary(self, request, export): """Generic view of an export.""" return { 'backup-record': { 'backup_service': export['backup_service'], 'backup_url': export['backup_url'], }, } cinder-2014.1.5/cinder/api/views/transfers.py0000664000567000056700000000640712540642606022117 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. from cinder.api import common from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class ViewBuilder(common.ViewBuilder): """Model transfer API responses as a python dictionary.""" _collection_name = "os-volume-transfer" def __init__(self): """Initialize view builder.""" super(ViewBuilder, self).__init__() def summary_list(self, request, transfers): """Show a list of transfers without many details.""" return self._list_view(self.summary, request, transfers) def detail_list(self, request, transfers): """Detailed view of a list of transfers .""" return self._list_view(self.detail, request, transfers) def summary(self, request, transfer): """Generic, non-detailed view of a transfer.""" return { 'transfer': { 'id': transfer['id'], 'volume_id': transfer.get('volume_id'), 'name': transfer['display_name'], 'links': self._get_links(request, transfer['id']), }, } def detail(self, request, transfer): """Detailed view of a single transfer.""" return { 'transfer': { 'id': transfer.get('id'), 'created_at': transfer.get('created_at'), 'name': transfer.get('display_name'), 'volume_id': transfer.get('volume_id'), 'links': self._get_links(request, transfer['id']) } } def create(self, request, transfer): """Detailed view of a single transfer when created.""" return { 'transfer': { 'id': transfer.get('id'), 'created_at': transfer.get('created_at'), 'name': transfer.get('display_name'), 'volume_id': transfer.get('volume_id'), 'auth_key': transfer.get('auth_key'), 'links': self._get_links(request, transfer['id']) } } def _list_view(self, func, request, transfers): """Provide a view for a list of transfers.""" transfers_list = [func(request, transfer)['transfer'] for transfer in transfers] transfers_links = self._get_collection_links(request, transfers, self._collection_name) transfers_dict = dict(transfers=transfers_list) if transfers_links: transfers_dict['transfers_links'] = transfers_links return transfers_dict cinder-2014.1.5/cinder/api/views/qos_specs.py0000664000567000056700000000417212540642606022104 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 eBay Inc. # All Rights Reserved. # # 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. from cinder.api import common from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class ViewBuilder(common.ViewBuilder): """Model QoS specs API responses as a python dictionary.""" _collection_name = "qos_specs" def __init__(self): """Initialize view builder.""" super(ViewBuilder, self).__init__() def summary_list(self, request, qos_specs): """Show a list of qos_specs without many details.""" return self._list_view(self.detail, request, qos_specs) def summary(self, request, qos_spec): """Generic, non-detailed view of a qos_specs.""" return { 'qos_specs': qos_spec, 'links': self._get_links(request, qos_spec['id']), } def detail(self, request, qos_spec): """Detailed view of a single qos_spec.""" #TODO(zhiteng) Add associations to detailed view return { 'qos_specs': qos_spec, 'links': self._get_links(request, qos_spec['id']), } def associations(self, request, associates): """View of qos specs associations.""" return { 'qos_associations': associates } def _list_view(self, func, request, qos_specs): """Provide a view for a list of qos_specs.""" specs_list = [func(request, specs)['qos_specs'] for specs in qos_specs] specs_dict = dict(qos_specs=specs_list) return specs_dict cinder-2014.1.5/cinder/api/openstack/0000775000567000056700000000000012540643114020354 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/openstack/wsgi.py0000664000567000056700000012555612540642606021722 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2013 IBM Corp. # All Rights Reserved. # # 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. import inspect import math import time from lxml import etree import six import webob from xml.dom import minidom from xml.parsers import expat from cinder import exception from cinder.openstack.common import gettextutils from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder import utils from cinder import wsgi XMLNS_V1 = 'http://docs.openstack.org/volume/api/v1' XMLNS_ATOM = 'http://www.w3.org/2005/Atom' LOG = logging.getLogger(__name__) SUPPORTED_CONTENT_TYPES = ( 'application/json', 'application/vnd.openstack.volume+json', 'application/xml', 'application/vnd.openstack.volume+xml', ) _MEDIA_TYPE_MAP = { 'application/vnd.openstack.volume+json': 'json', 'application/json': 'json', 'application/vnd.openstack.volume+xml': 'xml', 'application/xml': 'xml', 'application/atom+xml': 'atom', } class Request(webob.Request): """Add some OpenStack API-specific logic to the base webob.Request.""" def __init__(self, *args, **kwargs): super(Request, self).__init__(*args, **kwargs) self._resource_cache = {} def cache_resource(self, resource_to_cache, id_attribute='id', name=None): """Cache the given resource. Allow API methods to cache objects, such as results from a DB query, to be used by API extensions within the same API request. The resource_to_cache can be a list or an individual resource, but ultimately resources are cached individually using the given id_attribute. Different resources types might need to be cached during the same request, they can be cached using the name parameter. For example: Controller 1: request.cache_resource(db_volumes, 'volumes') request.cache_resource(db_volume_types, 'types') Controller 2: db_volumes = request.cached_resource('volumes') db_type_1 = request.cached_resource_by_id('1', 'types') If no name is given, a default name will be used for the resource. An instance of this class only lives for the lifetime of a single API request, so there's no need to implement full cache management. """ if not isinstance(resource_to_cache, list): resource_to_cache = [resource_to_cache] if not name: name = self.path cached_resources = self._resource_cache.setdefault(name, {}) for resource in resource_to_cache: cached_resources[resource[id_attribute]] = resource def cached_resource(self, name=None): """Get the cached resources cached under the given resource name. Allow an API extension to get previously stored objects within the same API request. Note that the object data will be slightly stale. :returns: a dict of id_attribute to the resource from the cached resources, an empty map if an empty collection was cached, or None if nothing has been cached yet under this name """ if not name: name = self.path if name not in self._resource_cache: # Nothing has been cached for this key yet return None return self._resource_cache[name] def cached_resource_by_id(self, resource_id, name=None): """Get a resource by ID cached under the given resource name. Allow an API extension to get a previously stored object within the same API request. This is basically a convenience method to lookup by ID on the dictionary of all cached resources. Note that the object data will be slightly stale. :returns: the cached resource or None if the item is not in the cache """ resources = self.cached_resource(name) if not resources: # Nothing has been cached yet for this key yet return None return resources.get(resource_id) def best_match_content_type(self): """Determine the requested response content-type.""" if 'cinder.best_content_type' not in self.environ: # Calculate the best MIME type content_type = None # Check URL path suffix parts = self.path.rsplit('.', 1) if len(parts) > 1: possible_type = 'application/' + parts[1] if possible_type in SUPPORTED_CONTENT_TYPES: content_type = possible_type if not content_type: content_type = self.accept.best_match(SUPPORTED_CONTENT_TYPES) self.environ['cinder.best_content_type'] = (content_type or 'application/json') return self.environ['cinder.best_content_type'] def get_content_type(self): """Determine content type of the request body. Does not do any body introspection, only checks header """ if "Content-Type" not in self.headers: return None allowed_types = SUPPORTED_CONTENT_TYPES content_type = self.content_type if content_type not in allowed_types: raise exception.InvalidContentType(content_type=content_type) return content_type def best_match_language(self): """Determines best available locale from the Accept-Language header. :returns: the best language match or None if the 'Accept-Language' header was not available in the request. """ if not self.accept_language: return None all_languages = gettextutils.get_available_languages('cinder') return self.accept_language.best_match(all_languages) class ActionDispatcher(object): """Maps method name to local methods through action name.""" def dispatch(self, *args, **kwargs): """Find and call local method.""" action = kwargs.pop('action', 'default') action_method = getattr(self, str(action), self.default) return action_method(*args, **kwargs) def default(self, data): raise NotImplementedError() class TextDeserializer(ActionDispatcher): """Default request body deserialization.""" def deserialize(self, datastring, action='default'): return self.dispatch(datastring, action=action) def default(self, datastring): return {} class JSONDeserializer(TextDeserializer): def _from_json(self, datastring): try: return jsonutils.loads(datastring) except ValueError: msg = _("cannot understand JSON") raise exception.MalformedRequestBody(reason=msg) def default(self, datastring): return {'body': self._from_json(datastring)} class XMLDeserializer(TextDeserializer): def __init__(self, metadata=None): """Initialize XMLDeserializer. :param metadata: information needed to deserialize xml into a dictionary. """ super(XMLDeserializer, self).__init__() self.metadata = metadata or {} def _from_xml(self, datastring): plurals = set(self.metadata.get('plurals', {})) try: node = utils.safe_minidom_parse_string(datastring).childNodes[0] return {node.nodeName: self._from_xml_node(node, plurals)} except expat.ExpatError: msg = _("cannot understand XML") raise exception.MalformedRequestBody(reason=msg) def _from_xml_node(self, node, listnames): """Convert a minidom node to a simple Python type. :param listnames: list of XML node names whose subnodes should be considered list items. """ if len(node.childNodes) == 1 and node.childNodes[0].nodeType == 3: return node.childNodes[0].nodeValue elif node.nodeName in listnames: return [self._from_xml_node(n, listnames) for n in node.childNodes] else: result = dict() for attr in node.attributes.keys(): result[attr] = node.attributes[attr].nodeValue for child in node.childNodes: if child.nodeType != node.TEXT_NODE: result[child.nodeName] = self._from_xml_node(child, listnames) return result def find_first_child_named_in_namespace(self, parent, namespace, name): """Search a nodes children for the first child with a given name.""" for node in parent.childNodes: if (node.localName == name and node.namespaceURI and node.namespaceURI == namespace): return node return None def find_first_child_named(self, parent, name): """Search a nodes children for the first child with a given name.""" for node in parent.childNodes: if node.nodeName == name: return node return None def find_children_named(self, parent, name): """Return all of a nodes children who have the given name.""" for node in parent.childNodes: if node.nodeName == name: yield node def extract_text(self, node): """Get the text field contained by the given node.""" text = [] # Cannot assume entire text will be in a single child node because SAX # parsers may split contiguous character data into multiple chunks for child in node.childNodes: if child.nodeType == child.TEXT_NODE: text.append(child.nodeValue) return ''.join(text) def find_attribute_or_element(self, parent, name): """Get an attribute value; fallback to an element if not found.""" if parent.hasAttribute(name): return parent.getAttribute(name) node = self.find_first_child_named(parent, name) if node: return self.extract_text(node) return None def default(self, datastring): return {'body': self._from_xml(datastring)} class MetadataXMLDeserializer(XMLDeserializer): def extract_metadata(self, metadata_node): """Marshal the metadata attribute of a parsed request.""" metadata = {} if metadata_node is not None: for meta_node in self.find_children_named(metadata_node, "meta"): key = meta_node.getAttribute("key") metadata[key] = self.extract_text(meta_node) return metadata class DictSerializer(ActionDispatcher): """Default request body serialization.""" def serialize(self, data, action='default'): return self.dispatch(data, action=action) def default(self, data): return "" class JSONDictSerializer(DictSerializer): """Default JSON request body serialization.""" def default(self, data): return jsonutils.dumps(data) class XMLDictSerializer(DictSerializer): def __init__(self, metadata=None, xmlns=None): """Initialize XMLDictSerializer. :param metadata: information needed to deserialize xml into a dictionary. :param xmlns: XML namespace to include with serialized xml """ super(XMLDictSerializer, self).__init__() self.metadata = metadata or {} self.xmlns = xmlns def default(self, data): # We expect data to contain a single key which is the XML root. root_key = data.keys()[0] doc = minidom.Document() node = self._to_xml_node(doc, self.metadata, root_key, data[root_key]) return self.to_xml_string(node) def to_xml_string(self, node, has_atom=False): self._add_xmlns(node, has_atom) return node.toxml('UTF-8') #NOTE (ameade): the has_atom should be removed after all of the # xml serializers and view builders have been updated to the current # spec that required all responses include the xmlns:atom, the has_atom # flag is to prevent current tests from breaking def _add_xmlns(self, node, has_atom=False): if self.xmlns is not None: node.setAttribute('xmlns', self.xmlns) if has_atom: node.setAttribute('xmlns:atom', "http://www.w3.org/2005/Atom") def _to_xml_node(self, doc, metadata, nodename, data): """Recursive method to convert data members to XML nodes.""" result = doc.createElement(nodename) # Set the xml namespace if one is specified # TODO(justinsb): We could also use prefixes on the keys xmlns = metadata.get('xmlns', None) if xmlns: result.setAttribute('xmlns', xmlns) #TODO(bcwaldon): accomplish this without a type-check if isinstance(data, list): collections = metadata.get('list_collections', {}) if nodename in collections: metadata = collections[nodename] for item in data: node = doc.createElement(metadata['item_name']) node.setAttribute(metadata['item_key'], str(item)) result.appendChild(node) return result singular = metadata.get('plurals', {}).get(nodename, None) if singular is None: if nodename.endswith('s'): singular = nodename[:-1] else: singular = 'item' for item in data: node = self._to_xml_node(doc, metadata, singular, item) result.appendChild(node) #TODO(bcwaldon): accomplish this without a type-check elif isinstance(data, dict): collections = metadata.get('dict_collections', {}) if nodename in collections: metadata = collections[nodename] for k, v in data.items(): node = doc.createElement(metadata['item_name']) node.setAttribute(metadata['item_key'], str(k)) text = doc.createTextNode(str(v)) node.appendChild(text) result.appendChild(node) return result attrs = metadata.get('attributes', {}).get(nodename, {}) for k, v in data.items(): if k in attrs: result.setAttribute(k, str(v)) else: node = self._to_xml_node(doc, metadata, k, v) result.appendChild(node) else: # Type is atom node = doc.createTextNode(str(data)) result.appendChild(node) return result def _create_link_nodes(self, xml_doc, links): link_nodes = [] for link in links: link_node = xml_doc.createElement('atom:link') link_node.setAttribute('rel', link['rel']) link_node.setAttribute('href', link['href']) if 'type' in link: link_node.setAttribute('type', link['type']) link_nodes.append(link_node) return link_nodes def _to_xml(self, root): """Convert the xml object to an xml string.""" return etree.tostring(root, encoding='UTF-8', xml_declaration=True) def serializers(**serializers): """Attaches serializers to a method. This decorator associates a dictionary of serializers with a method. Note that the function attributes are directly manipulated; the method is not wrapped. """ def decorator(func): if not hasattr(func, 'wsgi_serializers'): func.wsgi_serializers = {} func.wsgi_serializers.update(serializers) return func return decorator def deserializers(**deserializers): """Attaches deserializers to a method. This decorator associates a dictionary of deserializers with a method. Note that the function attributes are directly manipulated; the method is not wrapped. """ def decorator(func): if not hasattr(func, 'wsgi_deserializers'): func.wsgi_deserializers = {} func.wsgi_deserializers.update(deserializers) return func return decorator def response(code): """Attaches response code to a method. This decorator associates a response code with a method. Note that the function attributes are directly manipulated; the method is not wrapped. """ def decorator(func): func.wsgi_code = code return func return decorator class ResponseObject(object): """Bundles a response object with appropriate serializers. Object that app methods may return in order to bind alternate serializers with a response object to be serialized. Its use is optional. """ def __init__(self, obj, code=None, **serializers): """Binds serializers with an object. Takes keyword arguments akin to the @serializer() decorator for specifying serializers. Serializers specified will be given preference over default serializers or method-specific serializers on return. """ self.obj = obj self.serializers = serializers self._default_code = 200 self._code = code self._headers = {} self.serializer = None self.media_type = None def __getitem__(self, key): """Retrieves a header with the given name.""" return self._headers[key.lower()] def __setitem__(self, key, value): """Sets a header with the given name to the given value.""" self._headers[key.lower()] = value def __delitem__(self, key): """Deletes the header with the given name.""" del self._headers[key.lower()] def _bind_method_serializers(self, meth_serializers): """Binds method serializers with the response object. Binds the method serializers with the response object. Serializers specified to the constructor will take precedence over serializers specified to this method. :param meth_serializers: A dictionary with keys mapping to response types and values containing serializer objects. """ # We can't use update because that would be the wrong # precedence for mtype, serializer in meth_serializers.items(): self.serializers.setdefault(mtype, serializer) def get_serializer(self, content_type, default_serializers=None): """Returns the serializer for the wrapped object. Returns the serializer for the wrapped object subject to the indicated content type. If no serializer matching the content type is attached, an appropriate serializer drawn from the default serializers will be used. If no appropriate serializer is available, raises InvalidContentType. """ default_serializers = default_serializers or {} try: mtype = _MEDIA_TYPE_MAP.get(content_type, content_type) if mtype in self.serializers: return mtype, self.serializers[mtype] else: return mtype, default_serializers[mtype] except (KeyError, TypeError): raise exception.InvalidContentType(content_type=content_type) def preserialize(self, content_type, default_serializers=None): """Prepares the serializer that will be used to serialize. Determines the serializer that will be used and prepares an instance of it for later call. This allows the serializer to be accessed by extensions for, e.g., template extension. """ mtype, serializer = self.get_serializer(content_type, default_serializers) self.media_type = mtype self.serializer = serializer() def attach(self, **kwargs): """Attach slave templates to serializers.""" if self.media_type in kwargs: self.serializer.attach(kwargs[self.media_type]) def serialize(self, request, content_type, default_serializers=None): """Serializes the wrapped object. Utility method for serializing the wrapped object. Returns a webob.Response object. """ if self.serializer: serializer = self.serializer else: _mtype, _serializer = self.get_serializer(content_type, default_serializers) serializer = _serializer() response = webob.Response() response.status_int = self.code for hdr, value in self._headers.items(): response.headers[hdr] = value response.headers['Content-Type'] = content_type if self.obj is not None: response.body = serializer.serialize(self.obj) return response @property def code(self): """Retrieve the response status.""" return self._code or self._default_code @property def headers(self): """Retrieve the headers.""" return self._headers.copy() def action_peek_json(body): """Determine action to invoke.""" try: decoded = jsonutils.loads(body) except ValueError: msg = _("cannot understand JSON") raise exception.MalformedRequestBody(reason=msg) # Make sure there's exactly one key... if len(decoded) != 1: msg = _("too many body keys") raise exception.MalformedRequestBody(reason=msg) # Return the action and the decoded body... return decoded.keys()[0] def action_peek_xml(body): """Determine action to invoke.""" dom = utils.safe_minidom_parse_string(body) action_node = dom.childNodes[0] return action_node.tagName class ResourceExceptionHandler(object): """Context manager to handle Resource exceptions. Used when processing exceptions generated by API implementation methods (or their extensions). Converts most exceptions to Fault exceptions, with the appropriate logging. """ def __enter__(self): return None def __exit__(self, ex_type, ex_value, ex_traceback): if not ex_value: return True if isinstance(ex_value, exception.NotAuthorized): raise Fault(webob.exc.HTTPForbidden(explanation=ex_value.msg)) elif isinstance(ex_value, exception.Invalid): raise Fault(exception.ConvertedException( code=ex_value.code, explanation=ex_value.msg)) elif isinstance(ex_value, TypeError): exc_info = (ex_type, ex_value, ex_traceback) LOG.error(_( 'Exception handling resource: %s') % ex_value, exc_info=exc_info) raise Fault(webob.exc.HTTPBadRequest()) elif isinstance(ex_value, Fault): LOG.info(_("Fault thrown: %s"), unicode(ex_value)) raise ex_value elif isinstance(ex_value, webob.exc.HTTPException): LOG.info(_("HTTP exception thrown: %s"), unicode(ex_value)) raise Fault(ex_value) # We didn't handle the exception return False class Resource(wsgi.Application): """WSGI app that handles (de)serialization and controller dispatch. WSGI app that reads routing information supplied by RoutesMiddleware and calls the requested action method upon its controller. All controller action methods must accept a 'req' argument, which is the incoming wsgi.Request. If the operation is a PUT or POST, the controller method must also accept a 'body' argument (the deserialized request body). They may raise a webob.exc exception or return a dict, which will be serialized by requested content type. Exceptions derived from webob.exc.HTTPException will be automatically wrapped in Fault() to provide API friendly error responses. """ def __init__(self, controller, action_peek=None, **deserializers): """Initialize Resource. :param controller: object that implement methods created by routes lib :param action_peek: dictionary of routines for peeking into an action request body to determine the desired action """ self.controller = controller default_deserializers = dict(xml=XMLDeserializer, json=JSONDeserializer) default_deserializers.update(deserializers) self.default_deserializers = default_deserializers self.default_serializers = dict(xml=XMLDictSerializer, json=JSONDictSerializer) self.action_peek = dict(xml=action_peek_xml, json=action_peek_json) self.action_peek.update(action_peek or {}) # Copy over the actions dictionary self.wsgi_actions = {} if controller: self.register_actions(controller) # Save a mapping of extensions self.wsgi_extensions = {} self.wsgi_action_extensions = {} def register_actions(self, controller): """Registers controller actions with this resource.""" actions = getattr(controller, 'wsgi_actions', {}) for key, method_name in actions.items(): self.wsgi_actions[key] = getattr(controller, method_name) def register_extensions(self, controller): """Registers controller extensions with this resource.""" extensions = getattr(controller, 'wsgi_extensions', []) for method_name, action_name in extensions: # Look up the extending method extension = getattr(controller, method_name) if action_name: # Extending an action... if action_name not in self.wsgi_action_extensions: self.wsgi_action_extensions[action_name] = [] self.wsgi_action_extensions[action_name].append(extension) else: # Extending a regular method if method_name not in self.wsgi_extensions: self.wsgi_extensions[method_name] = [] self.wsgi_extensions[method_name].append(extension) def get_action_args(self, request_environment): """Parse dictionary created by routes library.""" # NOTE(Vek): Check for get_action_args() override in the # controller if hasattr(self.controller, 'get_action_args'): return self.controller.get_action_args(request_environment) try: args = request_environment['wsgiorg.routing_args'][1].copy() except (KeyError, IndexError, AttributeError): return {} try: del args['controller'] except KeyError: pass try: del args['format'] except KeyError: pass return args def get_body(self, request): if len(request.body) == 0: LOG.debug(_("Empty body provided in request")) return None, '' try: content_type = request.get_content_type() except exception.InvalidContentType: LOG.debug(_("Unrecognized Content-Type provided in request")) return None, '' if not content_type: LOG.debug(_("No Content-Type provided in request")) return None, '' return content_type, request.body def deserialize(self, meth, content_type, body): meth_deserializers = getattr(meth, 'wsgi_deserializers', {}) try: mtype = _MEDIA_TYPE_MAP.get(content_type, content_type) if mtype in meth_deserializers: deserializer = meth_deserializers[mtype] else: deserializer = self.default_deserializers[mtype] except (KeyError, TypeError): raise exception.InvalidContentType(content_type=content_type) return deserializer().deserialize(body) def pre_process_extensions(self, extensions, request, action_args): # List of callables for post-processing extensions post = [] for ext in extensions: if inspect.isgeneratorfunction(ext): response = None # If it's a generator function, the part before the # yield is the preprocessing stage try: with ResourceExceptionHandler(): gen = ext(req=request, **action_args) response = gen.next() except Fault as ex: response = ex # We had a response... if response: return response, [] # No response, queue up generator for post-processing post.append(gen) else: # Regular functions only perform post-processing post.append(ext) # Run post-processing in the reverse order return None, reversed(post) def post_process_extensions(self, extensions, resp_obj, request, action_args): for ext in extensions: response = None if inspect.isgenerator(ext): # If it's a generator, run the second half of # processing try: with ResourceExceptionHandler(): response = ext.send(resp_obj) except StopIteration: # Normal exit of generator continue except Fault as ex: response = ex else: # Regular functions get post-processing... try: with ResourceExceptionHandler(): response = ext(req=request, resp_obj=resp_obj, **action_args) except Fault as ex: response = ex # We had a response... if response: return response return None @webob.dec.wsgify(RequestClass=Request) def __call__(self, request): """WSGI method that controls (de)serialization and method dispatch.""" LOG.info("%(method)s %(url)s" % {"method": request.method, "url": request.url}) # Identify the action, its arguments, and the requested # content type action_args = self.get_action_args(request.environ) action = action_args.pop('action', None) content_type, body = self.get_body(request) accept = request.best_match_content_type() # NOTE(Vek): Splitting the function up this way allows for # auditing by external tools that wrap the existing # function. If we try to audit __call__(), we can # run into troubles due to the @webob.dec.wsgify() # decorator. return self._process_stack(request, action, action_args, content_type, body, accept) def _process_stack(self, request, action, action_args, content_type, body, accept): """Implement the processing stack.""" # Get the implementing method try: meth, extensions = self.get_method(request, action, content_type, body) except (AttributeError, TypeError): return Fault(webob.exc.HTTPNotFound()) except KeyError as ex: msg = _("There is no such action: %s") % ex.args[0] return Fault(webob.exc.HTTPBadRequest(explanation=msg)) except exception.MalformedRequestBody: msg = _("Malformed request body") return Fault(webob.exc.HTTPBadRequest(explanation=msg)) # Now, deserialize the request body... try: if content_type: contents = self.deserialize(meth, content_type, body) else: contents = {} except exception.InvalidContentType: msg = _("Unsupported Content-Type") return Fault(webob.exc.HTTPBadRequest(explanation=msg)) except exception.MalformedRequestBody: msg = _("Malformed request body") return Fault(webob.exc.HTTPBadRequest(explanation=msg)) # Update the action args action_args.update(contents) project_id = action_args.pop("project_id", None) context = request.environ.get('cinder.context') if (context and project_id and (project_id != context.project_id)): msg = _("Malformed request url") return Fault(webob.exc.HTTPBadRequest(explanation=msg)) # Run pre-processing extensions response, post = self.pre_process_extensions(extensions, request, action_args) if not response: try: with ResourceExceptionHandler(): action_result = self.dispatch(meth, request, action_args) except Fault as ex: response = ex if not response: # No exceptions; convert action_result into a # ResponseObject resp_obj = None if type(action_result) is dict or action_result is None: resp_obj = ResponseObject(action_result) elif isinstance(action_result, ResponseObject): resp_obj = action_result else: response = action_result # Run post-processing extensions if resp_obj: _set_request_id_header(request, resp_obj) # Do a preserialize to set up the response object serializers = getattr(meth, 'wsgi_serializers', {}) resp_obj._bind_method_serializers(serializers) if hasattr(meth, 'wsgi_code'): resp_obj._default_code = meth.wsgi_code resp_obj.preserialize(accept, self.default_serializers) # Process post-processing extensions response = self.post_process_extensions(post, resp_obj, request, action_args) if resp_obj and not response: response = resp_obj.serialize(request, accept, self.default_serializers) try: msg_dict = dict(url=request.url, status=response.status_int) msg = _("%(url)s returned with HTTP %(status)d") % msg_dict except AttributeError as e: msg_dict = dict(url=request.url, e=e) msg = _("%(url)s returned a fault: %(e)s") % msg_dict LOG.info(msg) return response def get_method(self, request, action, content_type, body): """Look up the action-specific method and its extensions.""" # Look up the method try: if not self.controller: meth = getattr(self, action) else: meth = getattr(self.controller, action) except AttributeError: if (not self.wsgi_actions or action not in ['action', 'create', 'delete']): # Propagate the error raise else: return meth, self.wsgi_extensions.get(action, []) if action == 'action': # OK, it's an action; figure out which action... mtype = _MEDIA_TYPE_MAP.get(content_type) action_name = self.action_peek[mtype](body) LOG.debug("Action body: %s" % body) else: action_name = action # Look up the action method return (self.wsgi_actions[action_name], self.wsgi_action_extensions.get(action_name, [])) def dispatch(self, method, request, action_args): """Dispatch a call to the action-specific method.""" return method(req=request, **action_args) def action(name): """Mark a function as an action. The given name will be taken as the action key in the body. This is also overloaded to allow extensions to provide non-extending definitions of create and delete operations. """ def decorator(func): func.wsgi_action = name return func return decorator def extends(*args, **kwargs): """Indicate a function extends an operation. Can be used as either:: @extends def index(...): pass or as:: @extends(action='resize') def _action_resize(...): pass """ def decorator(func): # Store enough information to find what we're extending func.wsgi_extends = (func.__name__, kwargs.get('action')) return func # If we have positional arguments, call the decorator if args: return decorator(*args) # OK, return the decorator instead return decorator class ControllerMetaclass(type): """Controller metaclass. This metaclass automates the task of assembling a dictionary mapping action keys to method names. """ def __new__(mcs, name, bases, cls_dict): """Adds the wsgi_actions dictionary to the class.""" # Find all actions actions = {} extensions = [] # start with wsgi actions from base classes for base in bases: actions.update(getattr(base, 'wsgi_actions', {})) for key, value in cls_dict.items(): if not callable(value): continue if getattr(value, 'wsgi_action', None): actions[value.wsgi_action] = key elif getattr(value, 'wsgi_extends', None): extensions.append(value.wsgi_extends) # Add the actions and extensions to the class dict cls_dict['wsgi_actions'] = actions cls_dict['wsgi_extensions'] = extensions return super(ControllerMetaclass, mcs).__new__(mcs, name, bases, cls_dict) @six.add_metaclass(ControllerMetaclass) class Controller(object): """Default controller.""" _view_builder_class = None def __init__(self, view_builder=None): """Initialize controller with a view builder instance.""" if view_builder: self._view_builder = view_builder elif self._view_builder_class: self._view_builder = self._view_builder_class() else: self._view_builder = None @staticmethod def is_valid_body(body, entity_name): if not (body and entity_name in body): return False def is_dict(d): try: d.get(None) return True except AttributeError: return False if not is_dict(body[entity_name]): return False return True class Fault(webob.exc.HTTPException): """Wrap webob.exc.HTTPException to provide API friendly response.""" _fault_names = {400: "badRequest", 401: "unauthorized", 403: "forbidden", 404: "itemNotFound", 405: "badMethod", 409: "conflictingRequest", 413: "overLimit", 415: "badMediaType", 501: "notImplemented", 503: "serviceUnavailable"} def __init__(self, exception): """Create a Fault for the given webob.exc.exception.""" self.wrapped_exc = exception self.status_int = exception.status_int @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): """Generate a WSGI response based on the exception passed to ctor.""" # Replace the body with fault details. locale = req.best_match_language() code = self.wrapped_exc.status_int fault_name = self._fault_names.get(code, "computeFault") explanation = self.wrapped_exc.explanation fault_data = { fault_name: { 'code': code, 'message': gettextutils.translate(explanation, locale)}} if code == 413: retry = self.wrapped_exc.headers.get('Retry-After', None) if retry: fault_data[fault_name]['retryAfter'] = retry # 'code' is an attribute on the fault tag itself metadata = {'attributes': {fault_name: 'code'}} xml_serializer = XMLDictSerializer(metadata, XMLNS_V1) content_type = req.best_match_content_type() serializer = { 'application/xml': xml_serializer, 'application/json': JSONDictSerializer(), }[content_type] self.wrapped_exc.body = serializer.serialize(fault_data) self.wrapped_exc.content_type = content_type _set_request_id_header(req, self.wrapped_exc.headers) return self.wrapped_exc def __str__(self): return self.wrapped_exc.__str__() def _set_request_id_header(req, headers): context = req.environ.get('cinder.context') if context: headers['x-compute-request-id'] = context.request_id class OverLimitFault(webob.exc.HTTPException): """Rate-limited request response.""" def __init__(self, message, details, retry_time): """Initialize new `OverLimitFault` with relevant information.""" hdrs = OverLimitFault._retry_after(retry_time) self.wrapped_exc = webob.exc.HTTPRequestEntityTooLarge(headers=hdrs) self.content = { "overLimitFault": { "code": self.wrapped_exc.status_int, "message": message, "details": details, }, } @staticmethod def _retry_after(retry_time): delay = int(math.ceil(retry_time - time.time())) retry_after = delay if delay > 0 else 0 headers = {'Retry-After': '%d' % retry_after} return headers @webob.dec.wsgify(RequestClass=Request) def __call__(self, request): """Serializes the wrapped exception conforming to our error format.""" content_type = request.best_match_content_type() metadata = {"attributes": {"overLimitFault": "code"}} def translate(msg): locale = request.best_match_language() return gettextutils.translate(msg, locale) self.content['overLimitFault']['message'] = \ translate(self.content['overLimitFault']['message']) self.content['overLimitFault']['details'] = \ translate(self.content['overLimitFault']['details']) xml_serializer = XMLDictSerializer(metadata, XMLNS_V1) serializer = { 'application/xml': xml_serializer, 'application/json': JSONDictSerializer(), }[content_type] content = serializer.serialize(self.content) self.wrapped_exc.body = content return self.wrapped_exc cinder-2014.1.5/cinder/api/openstack/urlmap.py0000664000567000056700000000177712540642606022247 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # All Rights Reserved. # # 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. from cinder.api import urlmap from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def urlmap_factory(loader, global_conf, **local_conf): LOG.warn(_('cinder.api.openstack.urlmap:urlmap_factory is deprecated. ' 'Please use cinder.api.urlmap:urlmap_factory instead.')) urlmap.urlmap_factory(loader, global_conf, **local_conf) cinder-2014.1.5/cinder/api/openstack/__init__.py0000664000567000056700000001140712540642606022475 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # All Rights Reserved. # # 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. """ WSGI middleware for OpenStack API controllers. """ import routes from cinder.api.openstack import wsgi from cinder.openstack.common import log as logging from cinder import wsgi as base_wsgi LOG = logging.getLogger(__name__) class APIMapper(routes.Mapper): def routematch(self, url=None, environ=None): if url is "": result = self._match("", environ) return result[0], result[1] return routes.Mapper.routematch(self, url, environ) class ProjectMapper(APIMapper): def resource(self, member_name, collection_name, **kwargs): if 'parent_resource' not in kwargs: kwargs['path_prefix'] = '{project_id}/' else: parent_resource = kwargs['parent_resource'] p_collection = parent_resource['collection_name'] p_member = parent_resource['member_name'] kwargs['path_prefix'] = '{project_id}/%s/:%s_id' % (p_collection, p_member) routes.Mapper.resource(self, member_name, collection_name, **kwargs) class APIRouter(base_wsgi.Router): """Routes requests on the API to the appropriate controller and method.""" ExtensionManager = None # override in subclasses @classmethod def factory(cls, global_config, **local_config): """Simple paste factory, :class:`cinder.wsgi.Router` doesn't have.""" return cls() def __init__(self, ext_mgr=None): if ext_mgr is None: if self.ExtensionManager: ext_mgr = self.ExtensionManager() else: raise Exception(_("Must specify an ExtensionManager class")) mapper = ProjectMapper() self.resources = {} self._setup_routes(mapper, ext_mgr) self._setup_ext_routes(mapper, ext_mgr) self._setup_extensions(ext_mgr) super(APIRouter, self).__init__(mapper) def _setup_ext_routes(self, mapper, ext_mgr): for resource in ext_mgr.get_resources(): LOG.debug(_('Extended resource: %s'), resource.collection) wsgi_resource = wsgi.Resource(resource.controller) self.resources[resource.collection] = wsgi_resource kargs = dict( controller=wsgi_resource, collection=resource.collection_actions, member=resource.member_actions) if resource.parent: kargs['parent_resource'] = resource.parent mapper.resource(resource.collection, resource.collection, **kargs) if resource.custom_routes_fn: resource.custom_routes_fn(mapper, wsgi_resource) def _setup_extensions(self, ext_mgr): for extension in ext_mgr.get_controller_extensions(): collection = extension.collection controller = extension.controller if collection not in self.resources: LOG.warning(_('Extension %(ext_name)s: Cannot extend ' 'resource %(collection)s: No such resource'), {'ext_name': extension.extension.name, 'collection': collection}) continue LOG.debug(_('Extension %(ext_name)s extending resource: ' '%(collection)s'), {'ext_name': extension.extension.name, 'collection': collection}) resource = self.resources[collection] resource.register_actions(controller) resource.register_extensions(controller) def _setup_routes(self, mapper, ext_mgr): raise NotImplementedError class FaultWrapper(base_wsgi.Middleware): def __init__(self, application): LOG.warn(_('cinder.api.openstack:FaultWrapper is deprecated. Please ' 'use cinder.api.middleware.fault:FaultWrapper instead.')) # Avoid circular imports from here. Can I just remove this class? from cinder.api.middleware import fault super(FaultWrapper, self).__init__(fault.FaultWrapper(application)) cinder-2014.1.5/cinder/api/openstack/volume/0000775000567000056700000000000012540643114021663 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/openstack/volume/versions.py0000664000567000056700000000202012540642606024104 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # All Rights Reserved. # # 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. from cinder.api import versions from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class Versions(versions.Versions): def __init__(self): LOG.warn(_('cinder.api.openstack.volume.versions.Versions is ' 'deprecated. Please use cinder.api.versions.Versions ' 'instead.')) super(Versions, self).__init__() cinder-2014.1.5/cinder/api/openstack/volume/__init__.py0000664000567000056700000000203012540642606023774 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # All Rights Reserved. # # 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. from cinder.api.v1.router import APIRouter as v1_router from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class APIRouter(v1_router): def __init__(self, ext_mgr=None): LOG.warn(_('cinder.api.openstack.volume:APIRouter is deprecated. ' 'Please use cinder.api.v1.router:APIRouter instead.')) super(APIRouter, self).__init__(ext_mgr) cinder-2014.1.5/cinder/api/schemas/0000775000567000056700000000000012540643114020010 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/schemas/atom-link.rng0000664000567000056700000000700112540642603022413 0ustar jenkinsjenkins00000000000000 1 [^:]* .+/.+ [A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})* xml:base xml:lang cinder-2014.1.5/cinder/api/schemas/v1.1/0000775000567000056700000000000012540643114020475 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/schemas/v1.1/limits.rng0000664000567000056700000000172312540642603022513 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/api/schemas/v1.1/extension.rng0000664000567000056700000000072112540642603023223 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/api/schemas/v1.1/metadata.rng0000664000567000056700000000043512540642603022771 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/api/schemas/v1.1/extensions.rng0000664000567000056700000000032212540642603023403 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/api/xmlutil.py0000664000567000056700000007265612540642606020462 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import os.path from lxml import etree from cinder import utils XMLNS_V10 = 'http://docs.rackspacecloud.com/servers/api/v1.0' XMLNS_V11 = 'http://docs.openstack.org/compute/api/v1.1' XMLNS_COMMON_V10 = 'http://docs.openstack.org/common/api/v1.0' XMLNS_ATOM = 'http://www.w3.org/2005/Atom' XMLNS_VOLUME_V1 = 'http://docs.openstack.org/volume/api/v1' XMLNS_VOLUME_V2 = ('http://docs.openstack.org/api/openstack-volume/2.0/' 'content') def validate_schema(xml, schema_name): if isinstance(xml, str): xml = etree.fromstring(xml) base_path = 'cinder/api/schemas/v1.1/' if schema_name in ('atom', 'atom-link'): base_path = 'cinder/api/schemas/' schema_path = os.path.join(utils.cinderdir(), '%s%s.rng' % (base_path, schema_name)) schema_doc = etree.parse(schema_path) relaxng = etree.RelaxNG(schema_doc) relaxng.assertValid(xml) class Selector(object): """Selects datum to operate on from an object.""" def __init__(self, *chain): """Initialize the selector. Each argument is a subsequent index into the object. """ self.chain = chain def __repr__(self): """Return a representation of the selector.""" return "Selector" + repr(self.chain) def __call__(self, obj, do_raise=False): """Select a datum to operate on. Selects the relevant datum within the object. :param obj: The object from which to select the object. :param do_raise: If False (the default), return None if the indexed datum does not exist. Otherwise, raise a KeyError. """ # Walk the selector list for elem in self.chain: # If it's callable, call it if callable(elem): obj = elem(obj) else: # Use indexing try: obj = obj[elem] except (KeyError, IndexError): # No sense going any further if do_raise: # Convert to a KeyError, for consistency raise KeyError(elem) return None # Return the finally-selected object return obj def get_items(obj): """Get items in obj.""" return list(obj.items()) class EmptyStringSelector(Selector): """Returns the empty string if Selector would return None.""" def __call__(self, obj, do_raise=False): """Returns empty string if the selected value does not exist.""" try: return super(EmptyStringSelector, self).__call__(obj, True) except KeyError: return "" class ConstantSelector(object): """Returns a constant.""" def __init__(self, value): """Initialize the selector. :param value: The value to return. """ self.value = value def __repr__(self): """Return a representation of the selector.""" return repr(self.value) def __call__(self, _obj, _do_raise=False): """Select a datum to operate on. Returns a constant value. Compatible with Selector.__call__(). """ return self.value class TemplateElement(object): """Represent an element in the template.""" def __init__(self, tag, attrib=None, selector=None, subselector=None, **extra): """Initialize an element. Initializes an element in the template. Keyword arguments specify attributes to be set on the element; values must be callables. See TemplateElement.set() for more information. :param tag: The name of the tag to create. :param attrib: An optional dictionary of element attributes. :param selector: An optional callable taking an object and optional boolean do_raise indicator and returning the object bound to the element. :param subselector: An optional callable taking an object and optional boolean do_raise indicator and returning the object bound to the element. This is used to further refine the datum object returned by selector in the event that it is a list of objects. """ # Convert selector into a Selector if selector is None: selector = Selector() elif not callable(selector): selector = Selector(selector) # Convert subselector into a Selector if subselector is not None and not callable(subselector): subselector = Selector(subselector) self.tag = tag self.selector = selector self.subselector = subselector self.attrib = {} self._text = None self._children = [] self._childmap = {} # Run the incoming attributes through set() so that they # become selectorized if not attrib: attrib = {} attrib.update(extra) for k, v in attrib.items(): self.set(k, v) def __repr__(self): """Return a representation of the template element.""" return ('<%s.%s %r at %#x>' % (self.__class__.__module__, self.__class__.__name__, self.tag, id(self))) def __len__(self): """Return the number of child elements.""" return len(self._children) def __contains__(self, key): """Determine whether a child node named by key exists.""" return key in self._childmap def __getitem__(self, idx): """Retrieve a child node by index or name.""" if isinstance(idx, basestring): # Allow access by node name return self._childmap[idx] else: return self._children[idx] def append(self, elem): """Append a child to the element.""" # Unwrap templates... elem = elem.unwrap() # Avoid duplications if elem.tag in self._childmap: raise KeyError(elem.tag) self._children.append(elem) self._childmap[elem.tag] = elem def extend(self, elems): """Append children to the element.""" # Pre-evaluate the elements elemmap = {} elemlist = [] for elem in elems: # Unwrap templates... elem = elem.unwrap() # Avoid duplications if elem.tag in self._childmap or elem.tag in elemmap: raise KeyError(elem.tag) elemmap[elem.tag] = elem elemlist.append(elem) # Update the children self._children.extend(elemlist) self._childmap.update(elemmap) def insert(self, idx, elem): """Insert a child element at the given index.""" # Unwrap templates... elem = elem.unwrap() # Avoid duplications if elem.tag in self._childmap: raise KeyError(elem.tag) self._children.insert(idx, elem) self._childmap[elem.tag] = elem def remove(self, elem): """Remove a child element.""" # Unwrap templates... elem = elem.unwrap() # Check if element exists if elem.tag not in self._childmap or self._childmap[elem.tag] != elem: raise ValueError(_('element is not a child')) self._children.remove(elem) del self._childmap[elem.tag] def get(self, key): """Get an attribute. Returns a callable which performs datum selection. :param key: The name of the attribute to get. """ return self.attrib[key] def set(self, key, value=None): """Set an attribute. :param key: The name of the attribute to set. :param value: A callable taking an object and optional boolean do_raise indicator and returning the datum bound to the attribute. If None, a Selector() will be constructed from the key. If a string, a Selector() will be constructed from the string. """ # Convert value to a selector if value is None: value = Selector(key) elif not callable(value): value = Selector(value) self.attrib[key] = value def keys(self): """Return the attribute names.""" return self.attrib.keys() def items(self): """Return the attribute names and values.""" return self.attrib.items() def unwrap(self): """Unwraps a template to return a template element.""" # We are a template element return self def wrap(self): """Wraps a template element to return a template.""" # Wrap in a basic Template return Template(self) def apply(self, elem, obj): """Apply text and attributes to an etree.Element. Applies the text and attribute instructions in the template element to an etree.Element instance. :param elem: An etree.Element instance. :param obj: The base object associated with this template element. """ # Start with the text... if self.text is not None: elem.text = unicode(self.text(obj)) # Now set up all the attributes... for key, value in self.attrib.items(): try: elem.set(key, unicode(value(obj, True))) except KeyError: # Attribute has no value, so don't include it pass def getAttrib(self, obj): """Get attribute.""" tmpattrib = {} #Now set up all the attributes... for key, value in self.attrib.items(): try: tmpattrib[key] = value(obj) except KeyError: # Attribute has no value, so don't include it pass return tmpattrib def _render(self, parent, datum, patches, nsmap): """Internal rendering. Renders the template node into an etree.Element object. Returns the etree.Element object. :param parent: The parent etree.Element instance. :param datum: The datum associated with this template element. :param patches: A list of other template elements that must also be applied. :param nsmap: An optional namespace dictionary to be associated with the etree.Element instance. """ # Allocate a node if callable(self.tag): tagname = self.tag(datum) else: tagname = self.tag # If the datum is None if datum is not None: tmpattrib = self.getAttrib(datum) else: tmpattrib = {} tagnameList = tagname.split(':') insertIndex = 0 #If parent is not none and has same tagname if parent is not None: for i in range(0, len(tagnameList)): tmpInsertPos = parent.find(tagnameList[i]) if tmpInsertPos is None: break elif not cmp(parent.attrib, tmpattrib) == 0: break parent = tmpInsertPos insertIndex = i + 1 if insertIndex >= len(tagnameList): insertIndex = insertIndex - 1 #Create root elem elem = etree.Element(tagnameList[insertIndex], nsmap=nsmap) rootelem = elem subelem = elem #Create subelem for i in range((insertIndex + 1), len(tagnameList)): subelem = etree.SubElement(elem, tagnameList[i]) elem = subelem # If we have a parent, append the node to the parent if parent is not None: #If we can merge this element, then insert if insertIndex > 0: parent.insert(len(list(parent)), rootelem) else: parent.append(rootelem) # If the datum is None, do nothing else if datum is None: return rootelem # Apply this template element to the element self.apply(subelem, datum) # Additionally, apply the patches for patch in patches: patch.apply(subelem, datum) # We have fully rendered the element; return it return rootelem def render(self, parent, obj, patches=[], nsmap=None): """Render an object. Renders an object against this template node. Returns a list of two-item tuples, where the first item is an etree.Element instance and the second item is the datum associated with that instance. :param parent: The parent for the etree.Element instances. :param obj: The object to render this template element against. :param patches: A list of other template elements to apply when rendering this template element. :param nsmap: An optional namespace dictionary to attach to the etree.Element instances. """ # First, get the datum we're rendering data = None if obj is None else self.selector(obj) # Check if we should render at all if not self.will_render(data): return [] elif data is None: return [(self._render(parent, None, patches, nsmap), None)] # Make the data into a list if it isn't already if not isinstance(data, list): data = [data] elif parent is None: raise ValueError(_('root element selecting a list')) # Render all the elements elems = [] for datum in data: if self.subselector is not None: datum = self.subselector(datum) elems.append((self._render(parent, datum, patches, nsmap), datum)) # Return all the elements rendered, as well as the # corresponding datum for the next step down the tree return elems def will_render(self, datum): """Hook method. An overridable hook method to determine whether this template element will be rendered at all. By default, returns False (inhibiting rendering) if the datum is None. :param datum: The datum associated with this template element. """ # Don't render if datum is None return datum is not None def _text_get(self): """Template element text. Either None or a callable taking an object and optional boolean do_raise indicator and returning the datum bound to the text of the template element. """ return self._text def _text_set(self, value): # Convert value to a selector if value is not None and not callable(value): value = Selector(value) self._text = value def _text_del(self): self._text = None text = property(_text_get, _text_set, _text_del) def tree(self): """Return string representation of the template tree. Returns a representation of the template rooted at this element as a string, suitable for inclusion in debug logs. """ # Build the inner contents of the tag... contents = [self.tag, '!selector=%r' % self.selector] # Add the text... if self.text is not None: contents.append('!text=%r' % self.text) # Add all the other attributes for key, value in self.attrib.items(): contents.append('%s=%r' % (key, value)) # If there are no children, return it as a closed tag if len(self) == 0: return '<%s/>' % ' '.join([str(i) for i in contents]) # OK, recurse to our children children = [c.tree() for c in self] # Return the result return ('<%s>%s' % (' '.join(contents), ''.join(children), self.tag)) def SubTemplateElement(parent, tag, attrib=None, selector=None, subselector=None, **extra): """Create a template element as a child of another. Corresponds to the etree.SubElement interface. Parameters are as for TemplateElement, with the addition of the parent. """ # Convert attributes attrib = attrib or {} attrib.update(extra) # Get a TemplateElement elem = TemplateElement(tag, attrib=attrib, selector=selector, subselector=subselector) # Append the parent safely if parent is not None: parent.append(elem) return elem class Template(object): """Represent a template.""" def __init__(self, root, nsmap=None): """Initialize a template. :param root: The root element of the template. :param nsmap: An optional namespace dictionary to be associated with the root element of the template. """ self.root = root.unwrap() if root is not None else None self.nsmap = nsmap or {} self.serialize_options = dict(encoding='UTF-8', xml_declaration=True) def _serialize(self, parent, obj, siblings, nsmap=None): """Internal serialization. Recursive routine to build a tree of etree.Element instances from an object based on the template. Returns the first etree.Element instance rendered, or None. :param parent: The parent etree.Element instance. Can be None. :param obj: The object to render. :param siblings: The TemplateElement instances against which to render the object. :param nsmap: An optional namespace dictionary to be associated with the etree.Element instance rendered. """ # First step, render the element elems = siblings[0].render(parent, obj, siblings[1:], nsmap) # Now, traverse all child elements seen = set() for idx, sibling in enumerate(siblings): for child in sibling: # Have we handled this child already? if child.tag in seen: continue seen.add(child.tag) # Determine the child's siblings nieces = [child] for sib in siblings[idx + 1:]: if child.tag in sib: nieces.append(sib[child.tag]) # Now call this function for all data elements recursively for elem, datum in elems: self._serialize(elem, datum, nieces) # Return the first element; at the top level, this will be the # root element if elems: return elems[0][0] def serialize(self, obj, *args, **kwargs): """Serialize an object. Serializes an object against the template. Returns a string with the serialized XML. Positional and keyword arguments are passed to etree.tostring(). :param obj: The object to serialize. """ elem = self.make_tree(obj) if elem is None: return '' for k, v in self.serialize_options.items(): kwargs.setdefault(k, v) # Serialize it into XML return etree.tostring(elem, *args, **kwargs) def make_tree(self, obj): """Create a tree. Serializes an object against the template. Returns an Element node with appropriate children. :param obj: The object to serialize. """ # If the template is empty, return the empty string if self.root is None: return None # Get the siblings and nsmap of the root element siblings = self._siblings() nsmap = self._nsmap() # Form the element tree return self._serialize(None, obj, siblings, nsmap) def _siblings(self): """Hook method for computing root siblings. An overridable hook method to return the siblings of the root element. By default, this is the root element itself. """ return [self.root] def _nsmap(self): """Hook method for computing the namespace dictionary. An overridable hook method to return the namespace dictionary. """ return self.nsmap.copy() def unwrap(self): """Unwraps a template to return a template element.""" # Return the root element return self.root def wrap(self): """Wraps a template element to return a template.""" # We are a template return self def apply(self, master): """Hook method for determining slave applicability. An overridable hook method used to determine if this template is applicable as a slave to a given master template. :param master: The master template to test. """ return True def tree(self): """Return string representation of the template tree. Returns a representation of the template as a string, suitable for inclusion in debug logs. """ return "%r: %s" % (self, self.root.tree()) class MasterTemplate(Template): """Represent a master template. Master templates are versioned derivatives of templates that additionally allow slave templates to be attached. Slave templates allow modification of the serialized result without directly changing the master. """ def __init__(self, root, version, nsmap=None): """Initialize a master template. :param root: The root element of the template. :param version: The version number of the template. :param nsmap: An optional namespace dictionary to be associated with the root element of the template. """ super(MasterTemplate, self).__init__(root, nsmap) self.version = version self.slaves = [] def __repr__(self): """Return string representation of the template.""" return ("<%s.%s object version %s at %#x>" % (self.__class__.__module__, self.__class__.__name__, self.version, id(self))) def _siblings(self): """Hook method for computing root siblings. An overridable hook method to return the siblings of the root element. This is the root element plus the root elements of all the slave templates. """ return [self.root] + [slave.root for slave in self.slaves] def _nsmap(self): """Hook method for computing the namespace dictionary. An overridable hook method to return the namespace dictionary. The namespace dictionary is computed by taking the master template's namespace dictionary and updating it from all the slave templates. """ nsmap = self.nsmap.copy() for slave in self.slaves: nsmap.update(slave._nsmap()) return nsmap def attach(self, *slaves): """Attach one or more slave templates. Attaches one or more slave templates to the master template. Slave templates must have a root element with the same tag as the master template. The slave template's apply() method will be called to determine if the slave should be applied to this master; if it returns False, that slave will be skipped. (This allows filtering of slaves based on the version of the master template.) """ slave_list = [] for slave in slaves: slave = slave.wrap() # Make sure we have a tree match if slave.root.tag != self.root.tag: msg = (_("Template tree mismatch; adding slave %(slavetag)s " "to master %(mastertag)s") % {'slavetag': slave.root.tag, 'mastertag': self.root.tag}) raise ValueError(msg) # Make sure slave applies to this template if not slave.apply(self): continue slave_list.append(slave) # Add the slaves self.slaves.extend(slave_list) def copy(self): """Return a copy of this master template.""" # Return a copy of the MasterTemplate tmp = self.__class__(self.root, self.version, self.nsmap) tmp.slaves = self.slaves[:] return tmp class SlaveTemplate(Template): """Represent a slave template. Slave templates are versioned derivatives of templates. Each slave has a minimum version and optional maximum version of the master template to which they can be attached. """ def __init__(self, root, min_vers, max_vers=None, nsmap=None): """Initialize a slave template. :param root: The root element of the template. :param min_vers: The minimum permissible version of the master template for this slave template to apply. :param max_vers: An optional upper bound for the master template version. :param nsmap: An optional namespace dictionary to be associated with the root element of the template. """ super(SlaveTemplate, self).__init__(root, nsmap) self.min_vers = min_vers self.max_vers = max_vers def __repr__(self): """Return string representation of the template.""" return ("<%s.%s object versions %s-%s at %#x>" % (self.__class__.__module__, self.__class__.__name__, self.min_vers, self.max_vers, id(self))) def apply(self, master): """Hook method for determining slave applicability. An overridable hook method used to determine if this template is applicable as a slave to a given master template. This version requires the master template to have a version number between min_vers and max_vers. :param master: The master template to test. """ # Does the master meet our minimum version requirement? if master.version < self.min_vers: return False # How about our maximum version requirement? if self.max_vers is not None and master.version > self.max_vers: return False return True class TemplateBuilder(object): """Template builder. This class exists to allow templates to be lazily built without having to build them each time they are needed. It must be subclassed, and the subclass must implement the construct() method, which must return a Template (or subclass) instance. The constructor will always return the template returned by construct(), or, if it has a copy() method, a copy of that template. """ _tmpl = None def __new__(cls, copy=True): """Construct and return a template. :param copy: If True (the default), a copy of the template will be constructed and returned, if possible. """ # Do we need to construct the template? if cls._tmpl is None: tmp = super(TemplateBuilder, cls).__new__(cls) # Construct the template cls._tmpl = tmp.construct() # If the template has a copy attribute, return the result of # calling it if copy and hasattr(cls._tmpl, 'copy'): return cls._tmpl.copy() # Return the template return cls._tmpl def construct(self): """Construct a template. Called to construct a template instance, which it must return. Only called once. """ raise NotImplementedError(_("subclasses must implement construct()!")) def make_links(parent, selector=None): """Attach an Atom element to the parent.""" elem = SubTemplateElement(parent, '{%s}link' % XMLNS_ATOM, selector=selector) elem.set('rel') elem.set('type') elem.set('href') # Just for completeness... return elem def make_flat_dict(name, selector=None, subselector=None, ns=None): """Utility for simple XML templates. Simple templates are templates that traditionally used XMLDictSerializer with no metadata. Returns a template element where the top-level element has the given tag name, and where sub-elements have tag names derived from the object's keys and text derived from the object's values. This only works for flat dictionary objects, not dictionaries containing nested lists or dictionaries. """ # Set up the names we need... if ns is None: elemname = name tagname = Selector(0) else: elemname = '{%s}%s' % (ns, name) tagname = lambda obj, do_raise=False: '{%s}%s' % (ns, obj[0]) if selector is None: selector = name # Build the root element root = TemplateElement(elemname, selector=selector, subselector=subselector) # Build an element to represent all the keys and values elem = SubTemplateElement(root, tagname, selector=get_items) elem.text = 1 # Return the template return root cinder-2014.1.5/cinder/api/urlmap.py0000664000567000056700000002446312540642606020255 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import paste.urlmap import re import urllib2 from cinder.api.openstack import wsgi from cinder.openstack.common import log as logging _quoted_string_re = r'"[^"\\]*(?:\\.[^"\\]*)*"' _option_header_piece_re = re.compile( r';\s*([^\s;=]+|%s)\s*' r'(?:=\s*([^;]+|%s))?\s*' % (_quoted_string_re, _quoted_string_re)) LOG = logging.getLogger(__name__) def unquote_header_value(value): """Unquotes a header value. This does not use the real unquoting but what browsers are actually using for quoting. :param value: the header value to unquote. """ if value and value[0] == value[-1] == '"': # this is not the real unquoting, but fixing this so that the # RFC is met will result in bugs with internet explorer and # probably some other browsers as well. IE for example is # uploading files with "C:\foo\bar.txt" as filename value = value[1:-1] return value def parse_list_header(value): """Parse lists as described by RFC 2068 Section 2. In particular, parse comma-separated lists where the elements of the list may include quoted-strings. A quoted-string could contain a comma. A non-quoted string could have quotes in the middle. Quotes are removed automatically after parsing. The return value is a standard :class:`list`: >>> parse_list_header('token, "quoted value"') ['token', 'quoted value'] :param value: a string with a list header. :return: :class:`list` """ result = [] for item in urllib2.parse_http_list(value): if item[:1] == item[-1:] == '"': item = unquote_header_value(item[1:-1]) result.append(item) return result def parse_options_header(value): """Parse a ``Content-Type`` like header into a tuple with the content type and the options: >>> parse_options_header('Content-Type: text/html; mimetype=text/html') ('Content-Type:', {'mimetype': 'text/html'}) :param value: the header to parse. :return: (str, options) """ def _tokenize(string): for match in _option_header_piece_re.finditer(string): key, value = match.groups() key = unquote_header_value(key) if value is not None: value = unquote_header_value(value) yield key, value if not value: return '', {} parts = _tokenize(';' + value) name = parts.next()[0] extra = dict(parts) return name, extra class Accept(object): def __init__(self, value): self._content_types = [parse_options_header(v) for v in parse_list_header(value)] def best_match(self, supported_content_types): # FIXME: Should we have a more sophisticated matching algorithm that # takes into account the version as well? best_quality = -1 best_content_type = None best_params = {} best_match = '*/*' for content_type in supported_content_types: for content_mask, params in self._content_types: try: quality = float(params.get('q', 1)) except ValueError: continue if quality < best_quality: continue elif best_quality == quality: if best_match.count('*') <= content_mask.count('*'): continue if self._match_mask(content_mask, content_type): best_quality = quality best_content_type = content_type best_params = params best_match = content_mask return best_content_type, best_params def content_type_params(self, best_content_type): """Find parameters in Accept header for given content type.""" for content_type, params in self._content_types: if best_content_type == content_type: return params return {} def _match_mask(self, mask, content_type): if '*' not in mask: return content_type == mask if mask == '*/*': return True mask_major = mask[:-2] content_type_major = content_type.split('/', 1)[0] return content_type_major == mask_major def urlmap_factory(loader, global_conf, **local_conf): if 'not_found_app' in local_conf: not_found_app = local_conf.pop('not_found_app') else: not_found_app = global_conf.get('not_found_app') if not_found_app: not_found_app = loader.get_app(not_found_app, global_conf=global_conf) urlmap = URLMap(not_found_app=not_found_app) for path, app_name in local_conf.items(): path = paste.urlmap.parse_path_expression(path) app = loader.get_app(app_name, global_conf=global_conf) urlmap[path] = app return urlmap class URLMap(paste.urlmap.URLMap): def _match(self, host, port, path_info): """Find longest match for a given URL path.""" for (domain, app_url), app in self.applications: if domain and domain != host and domain != host + ':' + port: continue if (path_info == app_url or path_info.startswith(app_url + '/')): return app, app_url return None, None def _set_script_name(self, app, app_url): def wrap(environ, start_response): environ['SCRIPT_NAME'] += app_url return app(environ, start_response) return wrap def _munge_path(self, app, path_info, app_url): def wrap(environ, start_response): environ['SCRIPT_NAME'] += app_url environ['PATH_INFO'] = path_info[len(app_url):] return app(environ, start_response) return wrap def _path_strategy(self, host, port, path_info): """Check path suffix for MIME type and path prefix for API version.""" mime_type = app = app_url = None parts = path_info.rsplit('.', 1) if len(parts) > 1: possible_type = 'application/' + parts[1] if possible_type in wsgi.SUPPORTED_CONTENT_TYPES: mime_type = possible_type parts = path_info.split('/') if len(parts) > 1: possible_app, possible_app_url = self._match(host, port, path_info) # Don't use prefix if it ends up matching default if possible_app and possible_app_url: app_url = possible_app_url app = self._munge_path(possible_app, path_info, app_url) return mime_type, app, app_url def _content_type_strategy(self, host, port, environ): """Check Content-Type header for API version.""" app = None params = parse_options_header(environ.get('CONTENT_TYPE', ''))[1] if 'version' in params: app, app_url = self._match(host, port, '/v' + params['version']) if app: app = self._set_script_name(app, app_url) return app def _accept_strategy(self, host, port, environ, supported_content_types): """Check Accept header for best matching MIME type and API version.""" accept = Accept(environ.get('HTTP_ACCEPT', '')) app = None # Find the best match in the Accept header mime_type, params = accept.best_match(supported_content_types) if 'version' in params: app, app_url = self._match(host, port, '/v' + params['version']) if app: app = self._set_script_name(app, app_url) return mime_type, app def __call__(self, environ, start_response): host = environ.get('HTTP_HOST', environ.get('SERVER_NAME')).lower() if ':' in host: host, port = host.split(':', 1) else: if environ['wsgi.url_scheme'] == 'http': port = '80' else: port = '443' path_info = environ['PATH_INFO'] path_info = self.normalize_url(path_info, False)[1] # The MIME type for the response is determined in one of two ways: # 1) URL path suffix (eg /servers/detail.json) # 2) Accept header (eg application/json;q=0.8, application/xml;q=0.2) # The API version is determined in one of three ways: # 1) URL path prefix (eg /v1.1/tenant/servers/detail) # 2) Content-Type header (eg application/json;version=1.1) # 3) Accept header (eg application/json;q=0.8;version=1.1) supported_content_types = list(wsgi.SUPPORTED_CONTENT_TYPES) mime_type, app, app_url = self._path_strategy(host, port, path_info) # Accept application/atom+xml for the index query of each API # version mount point as well as the root index if (app_url and app_url + '/' == path_info) or path_info == '/': supported_content_types.append('application/atom+xml') if not app: app = self._content_type_strategy(host, port, environ) if not mime_type or not app: possible_mime_type, possible_app = self._accept_strategy( host, port, environ, supported_content_types) if possible_mime_type and not mime_type: mime_type = possible_mime_type if possible_app and not app: app = possible_app if not mime_type: mime_type = 'application/json' if not app: # Didn't match a particular version, probably matches default app, app_url = self._match(host, port, path_info) if app: app = self._munge_path(app, path_info, app_url) if app: environ['cinder.best_content_type'] = mime_type return app(environ, start_response) environ['paste.urlmap_object'] = self return self.not_found_application(environ, start_response) cinder-2014.1.5/cinder/api/__init__.py0000664000567000056700000000203612540642606020504 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from oslo.config import cfg import paste.urlmap CONF = cfg.CONF def root_app_factory(loader, global_conf, **local_conf): if not CONF.enable_v1_api: del local_conf['/v1'] if not CONF.enable_v2_api: del local_conf['/v2'] return paste.urlmap.urlmap_factory(loader, global_conf, **local_conf) cinder-2014.1.5/cinder/api/sizelimit.py0000664000567000056700000000217512540642606020762 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # # All Rights Reserved. # # 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. from cinder.api.middleware import sizelimit from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class RequestBodySizeLimiter(sizelimit.RequestBodySizeLimiter): def __init__(self, *args, **kwargs): LOG.warn(_('cinder.api.sizelimit:RequestBodySizeLimiter is ' 'deprecated. Please use cinder.api.middleware.sizelimit:' 'RequestBodySizeLimiter instead')) super(RequestBodySizeLimiter, self).__init__(*args, **kwargs) cinder-2014.1.5/cinder/api/common.py0000664000567000056700000003152112540642606020236 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. import os import re from oslo.config import cfg import six.moves.urllib.parse as urlparse import webob from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder.openstack.common import log as logging from cinder import utils api_common_opts = [ cfg.IntOpt('osapi_max_limit', default=1000, help='the maximum number of items returned in a single ' 'response from a collection resource'), cfg.StrOpt('osapi_volume_base_URL', default=None, help='Base URL that will be presented to users in links ' 'to the OpenStack Volume API', deprecated_name='osapi_compute_link_prefix'), ] CONF = cfg.CONF CONF.register_opts(api_common_opts) LOG = logging.getLogger(__name__) XML_NS_V1 = 'http://docs.openstack.org/volume/api/v1' # Regex that matches alphanumeric characters, periods, hypens, # colons and underscores: # ^ assert position at start of the string # [\w\.\-\:\_] match expression # $ assert position at end of the string VALID_KEY_NAME_REGEX = re.compile(r"^[\w\.\-\:\_]+$", re.UNICODE) def validate_key_names(key_names_list): """Validate each item of the list to match key name regex.""" for key_name in key_names_list: if not VALID_KEY_NAME_REGEX.match(key_name): return False return True def get_pagination_params(request): """Return marker, limit tuple from request. :param request: `wsgi.Request` possibly containing 'marker' and 'limit' GET variables. 'marker' is the id of the last element the client has seen, and 'limit' is the maximum number of items to return. If 'limit' is not specified, 0, or > max_limit, we default to max_limit. Negative values for either marker or limit will cause exc.HTTPBadRequest() exceptions to be raised. """ params = {} if 'limit' in request.GET: params['limit'] = _get_limit_param(request) if 'marker' in request.GET: params['marker'] = _get_marker_param(request) return params def _get_limit_param(request): """Extract integer limit from request or fail.""" try: limit = int(request.GET['limit']) except ValueError: msg = _('limit param must be an integer') raise webob.exc.HTTPBadRequest(explanation=msg) if limit < 0: msg = _('limit param must be positive') raise webob.exc.HTTPBadRequest(explanation=msg) return limit def _get_marker_param(request): """Extract marker id from request or fail.""" return request.GET['marker'] def limited(items, request, max_limit=CONF.osapi_max_limit): """Return a slice of items according to requested offset and limit. :param items: A sliceable entity :param request: ``wsgi.Request`` possibly containing 'offset' and 'limit' GET variables. 'offset' is where to start in the list, and 'limit' is the maximum number of items to return. If 'limit' is not specified, 0, or > max_limit, we default to max_limit. Negative values for either offset or limit will cause exc.HTTPBadRequest() exceptions to be raised. :kwarg max_limit: The maximum number of items to return from 'items' """ try: offset = int(request.GET.get('offset', 0)) except ValueError: msg = _('offset param must be an integer') raise webob.exc.HTTPBadRequest(explanation=msg) try: limit = int(request.GET.get('limit', max_limit)) except ValueError: msg = _('limit param must be an integer') raise webob.exc.HTTPBadRequest(explanation=msg) if limit < 0: msg = _('limit param must be positive') raise webob.exc.HTTPBadRequest(explanation=msg) if offset < 0: msg = _('offset param must be positive') raise webob.exc.HTTPBadRequest(explanation=msg) limit = min(max_limit, limit or max_limit) range_end = offset + limit return items[offset:range_end] def limited_by_marker(items, request, max_limit=CONF.osapi_max_limit): """Return a slice of items according to the requested marker and limit.""" params = get_pagination_params(request) limit = params.get('limit', max_limit) marker = params.get('marker') limit = min(max_limit, limit) start_index = 0 if marker: start_index = -1 for i, item in enumerate(items): if 'flavorid' in item: if item['flavorid'] == marker: start_index = i + 1 break elif item['id'] == marker or item.get('uuid') == marker: start_index = i + 1 break if start_index < 0: msg = _('marker [%s] not found') % marker raise webob.exc.HTTPBadRequest(explanation=msg) range_end = start_index + limit return items[start_index:range_end] def remove_version_from_href(href): """Removes the first api version from the href. Given: 'http://www.cinder.com/v1.1/123' Returns: 'http://www.cinder.com/123' Given: 'http://www.cinder.com/v1.1' Returns: 'http://www.cinder.com' """ parsed_url = urlparse.urlsplit(href) url_parts = parsed_url.path.split('/', 2) # NOTE: this should match vX.X or vX expression = re.compile(r'^v([0-9]+|[0-9]+\.[0-9]+)(/.*|$)') if expression.match(url_parts[1]): del url_parts[1] new_path = '/'.join(url_parts) if new_path == parsed_url.path: msg = _('href %s does not contain version') % href LOG.debug(msg) raise ValueError(msg) parsed_url = list(parsed_url) parsed_url[2] = new_path return urlparse.urlunsplit(parsed_url) def dict_to_query_str(params): # TODO(throughnothing): we should just use urllib.urlencode instead of this # But currently we don't work with urlencoded url's param_str = "" for key, val in params.iteritems(): param_str = param_str + '='.join([str(key), str(val)]) + '&' return param_str.rstrip('&') class ViewBuilder(object): """Model API responses as dictionaries.""" _collection_name = None def _get_links(self, request, identifier): return [{"rel": "self", "href": self._get_href_link(request, identifier), }, {"rel": "bookmark", "href": self._get_bookmark_link(request, identifier), }] def _get_next_link(self, request, identifier, collection_name): """Return href string with proper limit and marker params.""" params = request.params.copy() params["marker"] = identifier prefix = self._update_link_prefix(request.application_url, CONF.osapi_volume_base_URL) url = os.path.join(prefix, request.environ["cinder.context"].project_id, collection_name) return "%s?%s" % (url, dict_to_query_str(params)) def _get_href_link(self, request, identifier): """Return an href string pointing to this object.""" prefix = self._update_link_prefix(request.application_url, CONF.osapi_volume_base_URL) return os.path.join(prefix, request.environ["cinder.context"].project_id, self._collection_name, str(identifier)) def _get_bookmark_link(self, request, identifier): """Create a URL that refers to a specific resource.""" base_url = remove_version_from_href(request.application_url) base_url = self._update_link_prefix(base_url, CONF.osapi_volume_base_URL) return os.path.join(base_url, request.environ["cinder.context"].project_id, self._collection_name, str(identifier)) def _get_collection_links(self, request, items, collection_name, id_key="uuid"): """Retrieve 'next' link, if applicable. The next link is included if: 1) 'limit' param is specified and equals the number of volumes. 2) 'limit' param is specified but it exceeds CONF.osapi_max_limit, in this case the number of volumes is CONF.osapi_max_limit. 3) 'limit' param is NOT specified but the number of volumes is CONF.osapi_max_limit. :param request: API request :param items: List of collection items :param collection_name: Name of collection, used to generate the next link for a pagination query :param id_key: Attribute key used to retrieve the unique ID, used to generate the next link marker for a pagination query :returns links """ links = [] max_items = min( int(request.params.get("limit", CONF.osapi_max_limit)), CONF.osapi_max_limit) if max_items and max_items == len(items): last_item = items[-1] if id_key in last_item: last_item_id = last_item[id_key] else: last_item_id = last_item["id"] links.append({ "rel": "next", "href": self._get_next_link(request, last_item_id, collection_name), }) return links def _update_link_prefix(self, orig_url, prefix): if not prefix: return orig_url url_parts = list(urlparse.urlsplit(orig_url)) prefix_parts = list(urlparse.urlsplit(prefix)) url_parts[0:2] = prefix_parts[0:2] return urlparse.urlunsplit(url_parts) class MetadataDeserializer(wsgi.MetadataXMLDeserializer): def deserialize(self, text): dom = utils.safe_minidom_parse_string(text) metadata_node = self.find_first_child_named(dom, "metadata") metadata = self.extract_metadata(metadata_node) return {'body': {'metadata': metadata}} class MetaItemDeserializer(wsgi.MetadataXMLDeserializer): def deserialize(self, text): dom = utils.safe_minidom_parse_string(text) metadata_item = self.extract_metadata(dom) return {'body': {'meta': metadata_item}} class MetadataXMLDeserializer(wsgi.XMLDeserializer): def extract_metadata(self, metadata_node): """Marshal the metadata attribute of a parsed request.""" if metadata_node is None: return {} metadata = {} for meta_node in self.find_children_named(metadata_node, "meta"): key = meta_node.getAttribute("key") metadata[key] = self.extract_text(meta_node) return metadata def _extract_metadata_container(self, datastring): dom = utils.safe_minidom_parse_string(datastring) metadata_node = self.find_first_child_named(dom, "metadata") metadata = self.extract_metadata(metadata_node) return {'body': {'metadata': metadata}} def create(self, datastring): return self._extract_metadata_container(datastring) def update_all(self, datastring): return self._extract_metadata_container(datastring) def update(self, datastring): dom = utils.safe_minidom_parse_string(datastring) metadata_item = self.extract_metadata(dom) return {'body': {'meta': metadata_item}} metadata_nsmap = {None: xmlutil.XMLNS_V11} class MetaItemTemplate(xmlutil.TemplateBuilder): def construct(self): sel = xmlutil.Selector('meta', xmlutil.get_items, 0) root = xmlutil.TemplateElement('meta', selector=sel) root.set('key', 0) root.text = 1 return xmlutil.MasterTemplate(root, 1, nsmap=metadata_nsmap) class MetadataTemplateElement(xmlutil.TemplateElement): def will_render(self, datum): return True class MetadataTemplate(xmlutil.TemplateBuilder): def construct(self): root = MetadataTemplateElement('metadata', selector='metadata') elem = xmlutil.SubTemplateElement(root, 'meta', selector=xmlutil.get_items) elem.set('key', 0) elem.text = 1 return xmlutil.MasterTemplate(root, 1, nsmap=metadata_nsmap) cinder-2014.1.5/cinder/api/v2/0000775000567000056700000000000012540643114016714 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/v2/volume_metadata.py0000664000567000056700000001401412540642606022442 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation. # All Rights Reserved. # # 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. import webob from cinder.api import common from cinder.api.openstack import wsgi from cinder import exception from cinder import volume class Controller(wsgi.Controller): """The volume metadata API controller for the OpenStack API.""" def __init__(self): self.volume_api = volume.API() super(Controller, self).__init__() def _get_metadata(self, context, volume_id): try: volume = self.volume_api.get(context, volume_id) meta = self.volume_api.get_volume_metadata(context, volume) except exception.VolumeNotFound: msg = _('volume does not exist') raise webob.exc.HTTPNotFound(explanation=msg) return meta @wsgi.serializers(xml=common.MetadataTemplate) def index(self, req, volume_id): """Returns the list of metadata for a given volume.""" context = req.environ['cinder.context'] return {'metadata': self._get_metadata(context, volume_id)} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def create(self, req, volume_id, body): try: metadata = body['metadata'] except (KeyError, TypeError): msg = _("Malformed request body") raise webob.exc.HTTPBadRequest(explanation=msg) context = req.environ['cinder.context'] new_metadata = self._update_volume_metadata(context, volume_id, metadata, delete=False) return {'metadata': new_metadata} @wsgi.serializers(xml=common.MetaItemTemplate) @wsgi.deserializers(xml=common.MetaItemDeserializer) def update(self, req, volume_id, id, body): try: meta_item = body['meta'] except (TypeError, KeyError): expl = _('Malformed request body') raise webob.exc.HTTPBadRequest(explanation=expl) if id not in meta_item: expl = _('Request body and URI mismatch') raise webob.exc.HTTPBadRequest(explanation=expl) if len(meta_item) > 1: expl = _('Request body contains too many items') raise webob.exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] self._update_volume_metadata(context, volume_id, meta_item, delete=False) return {'meta': meta_item} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def update_all(self, req, volume_id, body): try: metadata = body['metadata'] except (TypeError, KeyError): expl = _('Malformed request body') raise webob.exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] new_metadata = self._update_volume_metadata(context, volume_id, metadata, delete=True) return {'metadata': new_metadata} def _update_volume_metadata(self, context, volume_id, metadata, delete=False): try: volume = self.volume_api.get(context, volume_id) return self.volume_api.update_volume_metadata(context, volume, metadata, delete) except exception.VolumeNotFound: msg = _('volume does not exist') raise webob.exc.HTTPNotFound(explanation=msg) except (ValueError, AttributeError): msg = _("Malformed request body") raise webob.exc.HTTPBadRequest(explanation=msg) except exception.InvalidVolumeMetadata as error: raise webob.exc.HTTPBadRequest(explanation=error.msg) except exception.InvalidVolumeMetadataSize as error: raise webob.exc.HTTPRequestEntityTooLarge(explanation=error.msg) @wsgi.serializers(xml=common.MetaItemTemplate) def show(self, req, volume_id, id): """Return a single metadata item.""" context = req.environ['cinder.context'] data = self._get_metadata(context, volume_id) try: return {'meta': {id: data[id]}} except KeyError: msg = _("Metadata item was not found") raise webob.exc.HTTPNotFound(explanation=msg) def delete(self, req, volume_id, id): """Deletes an existing metadata.""" context = req.environ['cinder.context'] metadata = self._get_metadata(context, volume_id) if id not in metadata: msg = _("Metadata item was not found") raise webob.exc.HTTPNotFound(explanation=msg) try: volume = self.volume_api.get(context, volume_id) self.volume_api.delete_volume_metadata(context, volume, id) except exception.VolumeNotFound: msg = _('volume does not exist') raise webob.exc.HTTPNotFound(explanation=msg) return webob.Response(status_int=200) def create_resource(): return wsgi.Resource(Controller()) cinder-2014.1.5/cinder/api/v2/types.py0000664000567000056700000000527112540642606020444 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # # 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. """The volume type & volume types extra specs extension.""" from webob import exc from cinder.api.openstack import wsgi from cinder.api.views import types as views_types from cinder.api import xmlutil from cinder import exception from cinder.volume import volume_types def make_voltype(elem): elem.set('id') elem.set('name') extra_specs = xmlutil.make_flat_dict('extra_specs', selector='extra_specs') elem.append(extra_specs) class VolumeTypeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume_type', selector='volume_type') make_voltype(root) return xmlutil.MasterTemplate(root, 1) class VolumeTypesTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume_types') elem = xmlutil.SubTemplateElement(root, 'volume_type', selector='volume_types') make_voltype(elem) return xmlutil.MasterTemplate(root, 1) class VolumeTypesController(wsgi.Controller): """The volume types API controller for the OpenStack API.""" _view_builder_class = views_types.ViewBuilder @wsgi.serializers(xml=VolumeTypesTemplate) def index(self, req): """Returns the list of volume types.""" context = req.environ['cinder.context'] vol_types = volume_types.get_all_types(context).values() return self._view_builder.index(req, vol_types) @wsgi.serializers(xml=VolumeTypeTemplate) def show(self, req, id): """Return a single volume type item.""" context = req.environ['cinder.context'] try: vol_type = volume_types.get_volume_type(context, id) except exception.NotFound: msg = _("Volume type not found") raise exc.HTTPNotFound(explanation=msg) # TODO(bcwaldon): remove str cast once we use uuids vol_type['id'] = str(vol_type['id']) return self._view_builder.show(req, vol_type) def create_resource(): return wsgi.Resource(VolumeTypesController()) cinder-2014.1.5/cinder/api/v2/views/0000775000567000056700000000000012540643114020051 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/v2/views/volumes.py0000664000567000056700000001233212540642606022123 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. from cinder.api import common from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class ViewBuilder(common.ViewBuilder): """Model a server API response as a python dictionary.""" _collection_name = "volumes" def __init__(self): """Initialize view builder.""" super(ViewBuilder, self).__init__() def summary_list(self, request, volumes): """Show a list of volumes without many details.""" return self._list_view(self.summary, request, volumes) def detail_list(self, request, volumes): """Detailed view of a list of volumes.""" return self._list_view(self.detail, request, volumes, coll_name=self._collection_name + '/detail') def summary(self, request, volume): """Generic, non-detailed view of an volume.""" return { 'volume': { 'id': volume['id'], 'name': volume['display_name'], 'links': self._get_links(request, volume['id']), }, } def detail(self, request, volume): """Detailed view of a single volume.""" return { 'volume': { 'id': volume.get('id'), 'status': volume.get('status'), 'size': volume.get('size'), 'availability_zone': volume.get('availability_zone'), 'created_at': volume.get('created_at'), 'attachments': self._get_attachments(volume), 'name': volume.get('display_name'), 'description': volume.get('display_description'), 'volume_type': self._get_volume_type(volume), 'snapshot_id': volume.get('snapshot_id'), 'source_volid': volume.get('source_volid'), 'metadata': self._get_volume_metadata(volume), 'links': self._get_links(request, volume['id']), 'user_id': volume.get('user_id'), 'bootable': str(volume.get('bootable')).lower(), 'encrypted': self._is_volume_encrypted(volume) } } def _is_volume_encrypted(self, volume): """Determine if volume is encrypted.""" return volume.get('encryption_key_id') is not None def _get_attachments(self, volume): """Retrieve the attachments of the volume object.""" attachments = [] if volume['attach_status'] == 'attached': d = {} volume_id = volume['id'] # note(justinsb): we use the volume id as the id of the attachments # object d['id'] = volume_id d['volume_id'] = volume_id d['server_id'] = volume['instance_uuid'] d['host_name'] = volume['attached_host'] if volume.get('mountpoint'): d['device'] = volume['mountpoint'] attachments.append(d) return attachments def _get_volume_metadata(self, volume): """Retrieve the metadata of the volume object.""" if volume.get('volume_metadata'): metadata = volume.get('volume_metadata') return dict((item['key'], item['value']) for item in metadata) # avoid circular ref when vol is a Volume instance elif volume.get('metadata') and isinstance(volume.get('metadata'), dict): return volume['metadata'] return {} def _get_volume_type(self, volume): """Retrieve the type the volume object.""" if volume['volume_type_id'] and volume.get('volume_type'): return volume['volume_type']['name'] else: return volume['volume_type_id'] def _list_view(self, func, request, volumes, coll_name=_collection_name): """Provide a view for a list of volumes. :param func: Function used to format the volume data :param request: API request :param servers: List of volumes in dictionary format :param coll_name: Name of collection, used to generate the next link for a pagination query :returns: Volume data in dictionary format """ volumes_list = [func(request, volume)['volume'] for volume in volumes] volumes_links = self._get_collection_links(request, volumes, coll_name) volumes_dict = dict(volumes=volumes_list) if volumes_links: volumes_dict['volumes_links'] = volumes_links return volumes_dict cinder-2014.1.5/cinder/api/v2/views/__init__.py0000664000567000056700000000000012540642603022152 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/v2/volumes.py0000664000567000056700000003643312540642606020776 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """The volumes api.""" import ast import webob from webob import exc from cinder.api import common from cinder.api.openstack import wsgi from cinder.api.v2.views import volumes as volume_views from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import uuidutils from cinder import utils from cinder import volume as cinder_volume from cinder.volume import utils as volume_utils from cinder.volume import volume_types LOG = logging.getLogger(__name__) SCHEDULER_HINTS_NAMESPACE =\ "http://docs.openstack.org/block-service/ext/scheduler-hints/api/v2" def make_attachment(elem): elem.set('id') elem.set('server_id') elem.set('host_name') elem.set('volume_id') elem.set('device') def make_volume(elem): elem.set('id') elem.set('status') elem.set('size') elem.set('availability_zone') elem.set('created_at') elem.set('name') elem.set('bootable') elem.set('description') elem.set('volume_type') elem.set('snapshot_id') elem.set('source_volid') attachments = xmlutil.SubTemplateElement(elem, 'attachments') attachment = xmlutil.SubTemplateElement(attachments, 'attachment', selector='attachments') make_attachment(attachment) # Attach metadata node elem.append(common.MetadataTemplate()) volume_nsmap = {None: xmlutil.XMLNS_VOLUME_V2, 'atom': xmlutil.XMLNS_ATOM} class VolumeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume', selector='volume') make_volume(root) return xmlutil.MasterTemplate(root, 1, nsmap=volume_nsmap) class VolumesTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volumes') elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes') make_volume(elem) return xmlutil.MasterTemplate(root, 1, nsmap=volume_nsmap) class CommonDeserializer(wsgi.MetadataXMLDeserializer): """Common deserializer to handle xml-formatted volume requests. Handles standard volume attributes as well as the optional metadata attribute """ metadata_deserializer = common.MetadataXMLDeserializer() def _extract_scheduler_hints(self, volume_node): """Marshal the scheduler hints attribute of a parsed request.""" node =\ self.find_first_child_named_in_namespace(volume_node, SCHEDULER_HINTS_NAMESPACE, "scheduler_hints") if node: scheduler_hints = {} for child in self.extract_elements(node): scheduler_hints.setdefault(child.nodeName, []) value = self.extract_text(child).strip() scheduler_hints[child.nodeName].append(value) return scheduler_hints else: return None def _extract_volume(self, node): """Marshal the volume attribute of a parsed request.""" volume = {} volume_node = self.find_first_child_named(node, 'volume') attributes = ['name', 'description', 'size', 'volume_type', 'availability_zone', 'imageRef', 'snapshot_id', 'source_volid'] for attr in attributes: if volume_node.getAttribute(attr): volume[attr] = volume_node.getAttribute(attr) metadata_node = self.find_first_child_named(volume_node, 'metadata') if metadata_node is not None: volume['metadata'] = self.extract_metadata(metadata_node) scheduler_hints = self._extract_scheduler_hints(volume_node) if scheduler_hints: volume['scheduler_hints'] = scheduler_hints return volume class CreateDeserializer(CommonDeserializer): """Deserializer to handle xml-formatted create volume requests. Handles standard volume attributes as well as the optional metadata attribute """ def default(self, string): """Deserialize an xml-formatted volume create request.""" dom = utils.safe_minidom_parse_string(string) volume = self._extract_volume(dom) return {'body': {'volume': volume}} class VolumeController(wsgi.Controller): """The Volumes API controller for the OpenStack API.""" _view_builder_class = volume_views.ViewBuilder def __init__(self, ext_mgr): self.volume_api = cinder_volume.API() self.ext_mgr = ext_mgr super(VolumeController, self).__init__() @wsgi.serializers(xml=VolumeTemplate) def show(self, req, id): """Return data about the given volume.""" context = req.environ['cinder.context'] try: vol = self.volume_api.get(context, id, viewable_admin_meta=True) req.cache_resource(vol) except exception.NotFound: msg = _("Volume could not be found") raise exc.HTTPNotFound(explanation=msg) utils.add_visible_admin_metadata(vol) return self._view_builder.detail(req, vol) def delete(self, req, id): """Delete a volume.""" context = req.environ['cinder.context'] LOG.audit(_("Delete volume with id: %s"), id, context=context) try: volume = self.volume_api.get(context, id) self.volume_api.delete(context, volume) except exception.NotFound: msg = _("Volume could not be found") raise exc.HTTPNotFound(explanation=msg) except exception.VolumeAttached: msg = _("Volume cannot be deleted while in attached state") raise exc.HTTPBadRequest(explanation=msg) return webob.Response(status_int=202) @wsgi.serializers(xml=VolumesTemplate) def index(self, req): """Returns a summary list of volumes.""" return self._get_volumes(req, is_detail=False) @wsgi.serializers(xml=VolumesTemplate) def detail(self, req): """Returns a detailed list of volumes.""" return self._get_volumes(req, is_detail=True) def _get_volumes(self, req, is_detail): """Returns a list of volumes, transformed through view builder.""" context = req.environ['cinder.context'] params = req.params.copy() marker = params.pop('marker', None) limit = params.pop('limit', None) sort_key = params.pop('sort_key', 'created_at') sort_dir = params.pop('sort_dir', 'desc') params.pop('offset', None) filters = params remove_invalid_options(context, filters, self._get_volume_filter_options()) # NOTE(thingee): v2 API allows name instead of display_name if 'name' in filters: filters['display_name'] = filters['name'] del filters['name'] if 'metadata' in filters: filters['metadata'] = ast.literal_eval(filters['metadata']) volumes = self.volume_api.get_all(context, marker, limit, sort_key, sort_dir, filters, viewable_admin_meta=True) volumes = [dict(vol.iteritems()) for vol in volumes] for volume in volumes: utils.add_visible_admin_metadata(volume) limited_list = common.limited(volumes, req) if is_detail: volumes = self._view_builder.detail_list(req, limited_list) else: volumes = self._view_builder.summary_list(req, limited_list) req.cache_resource(limited_list) return volumes def _image_uuid_from_href(self, image_href): # If the image href was generated by nova api, strip image_href # down to an id. try: image_uuid = image_href.split('/').pop() except (TypeError, AttributeError): msg = _("Invalid imageRef provided.") raise exc.HTTPBadRequest(explanation=msg) if not uuidutils.is_uuid_like(image_uuid): msg = _("Invalid imageRef provided.") raise exc.HTTPBadRequest(explanation=msg) return image_uuid @wsgi.response(202) @wsgi.serializers(xml=VolumeTemplate) @wsgi.deserializers(xml=CreateDeserializer) def create(self, req, body): """Creates a new volume.""" if not self.is_valid_body(body, 'volume'): msg = _("Missing required element '%s' in request body") % 'volume' raise exc.HTTPBadRequest(explanation=msg) LOG.debug('Create volume request body: %s', body) context = req.environ['cinder.context'] volume = body['volume'] kwargs = {} # NOTE(thingee): v2 API allows name instead of display_name if volume.get('name'): volume['display_name'] = volume.get('name') del volume['name'] # NOTE(thingee): v2 API allows description instead of # display_description if volume.get('description'): volume['display_description'] = volume.get('description') del volume['description'] req_volume_type = volume.get('volume_type', None) if req_volume_type: try: if not uuidutils.is_uuid_like(req_volume_type): kwargs['volume_type'] = \ volume_types.get_volume_type_by_name( context, req_volume_type) else: kwargs['volume_type'] = volume_types.get_volume_type( context, req_volume_type) except exception.VolumeTypeNotFound: msg = _("Volume type not found.") raise exc.HTTPNotFound(explanation=msg) kwargs['metadata'] = volume.get('metadata', None) snapshot_id = volume.get('snapshot_id') if snapshot_id is not None: try: kwargs['snapshot'] = self.volume_api.get_snapshot(context, snapshot_id) except exception.NotFound: explanation = _('snapshot id:%s not found') % snapshot_id raise exc.HTTPNotFound(explanation=explanation) else: kwargs['snapshot'] = None source_volid = volume.get('source_volid') if source_volid is not None: try: kwargs['source_volume'] = \ self.volume_api.get_volume(context, source_volid) except exception.NotFound: explanation = _('source volume id:%s not found') % source_volid raise exc.HTTPNotFound(explanation=explanation) else: kwargs['source_volume'] = None size = volume.get('size', None) if size is None and kwargs['snapshot'] is not None: size = kwargs['snapshot']['volume_size'] elif size is None and kwargs['source_volume'] is not None: size = kwargs['source_volume']['size'] LOG.audit(_("Create volume of %s GB"), size, context=context) if self.ext_mgr.is_loaded('os-image-create'): image_href = volume.get('imageRef') if image_href: image_uuid = self._image_uuid_from_href(image_href) kwargs['image_id'] = image_uuid kwargs['availability_zone'] = volume.get('availability_zone', None) kwargs['scheduler_hints'] = volume.get('scheduler_hints', None) new_volume = self.volume_api.create(context, size, volume.get('display_name'), volume.get('display_description'), **kwargs) # TODO(vish): Instance should be None at db layer instead of # trying to lazy load, but for now we turn it into # a dict to avoid an error. new_volume = dict(new_volume.iteritems()) retval = self._view_builder.detail(req, new_volume) return retval def _get_volume_filter_options(self): """Return volume search options allowed by non-admin.""" return ('name', 'status', 'metadata') @wsgi.serializers(xml=VolumeTemplate) def update(self, req, id, body): """Update a volume.""" context = req.environ['cinder.context'] if not body: msg = _("Missing request body") raise exc.HTTPBadRequest(explanation=msg) if 'volume' not in body: msg = _("Missing required element '%s' in request body") % 'volume' raise exc.HTTPBadRequest(explanation=msg) volume = body['volume'] update_dict = {} valid_update_keys = ( 'name', 'description', 'display_name', 'display_description', 'metadata', ) for key in valid_update_keys: if key in volume: update_dict[key] = volume[key] # NOTE(thingee): v2 API allows name instead of display_name if 'name' in update_dict: update_dict['display_name'] = update_dict['name'] del update_dict['name'] # NOTE(thingee): v2 API allows name instead of display_name if 'description' in update_dict: update_dict['display_description'] = update_dict['description'] del update_dict['description'] try: volume = self.volume_api.get(context, id, viewable_admin_meta=True) volume_utils.notify_about_volume_usage(context, volume, 'update.start') self.volume_api.update(context, volume, update_dict) except exception.NotFound: msg = _("Volume could not be found") raise exc.HTTPNotFound(explanation=msg) volume.update(update_dict) utils.add_visible_admin_metadata(volume) volume_utils.notify_about_volume_usage(context, volume, 'update.end') return self._view_builder.detail(req, volume) def create_resource(ext_mgr): return wsgi.Resource(VolumeController(ext_mgr)) def remove_invalid_options(context, filters, allowed_search_options): """Remove search options that are not valid for non-admin API/context.""" if context.is_admin: # Allow all options return # Otherwise, strip out all unknown options unknown_options = [opt for opt in filters if opt not in allowed_search_options] bad_options = ", ".join(unknown_options) log_msg = _("Removing options '%s' from query") % bad_options LOG.debug(log_msg) for opt in unknown_options: del filters[opt] cinder-2014.1.5/cinder/api/v2/router.py0000664000567000056700000000762412540642606020624 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ WSGI middleware for OpenStack Volume API. """ from cinder.api import extensions import cinder.api.openstack from cinder.api.v2 import limits from cinder.api.v2 import snapshot_metadata from cinder.api.v2 import snapshots from cinder.api.v2 import types from cinder.api.v2 import volume_metadata from cinder.api.v2 import volumes from cinder.api import versions from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class APIRouter(cinder.api.openstack.APIRouter): """Routes requests on the API to the appropriate controller and method.""" ExtensionManager = extensions.ExtensionManager def _setup_routes(self, mapper, ext_mgr): self.resources['versions'] = versions.create_resource() mapper.connect("versions", "/", controller=self.resources['versions'], action='show') mapper.redirect("", "/") self.resources['volumes'] = volumes.create_resource(ext_mgr) mapper.resource("volume", "volumes", controller=self.resources['volumes'], collection={'detail': 'GET'}, member={'action': 'POST'}) self.resources['types'] = types.create_resource() mapper.resource("type", "types", controller=self.resources['types']) self.resources['snapshots'] = snapshots.create_resource(ext_mgr) mapper.resource("snapshot", "snapshots", controller=self.resources['snapshots'], collection={'detail': 'GET'}, member={'action': 'POST'}) self.resources['limits'] = limits.create_resource() mapper.resource("limit", "limits", controller=self.resources['limits']) self.resources['snapshot_metadata'] = \ snapshot_metadata.create_resource() snapshot_metadata_controller = self.resources['snapshot_metadata'] mapper.resource("snapshot_metadata", "metadata", controller=snapshot_metadata_controller, parent_resource=dict(member_name='snapshot', collection_name='snapshots')) mapper.connect("metadata", "/{project_id}/snapshots/{snapshot_id}/metadata", controller=snapshot_metadata_controller, action='update_all', conditions={"method": ['PUT']}) self.resources['volume_metadata'] = \ volume_metadata.create_resource() volume_metadata_controller = self.resources['volume_metadata'] mapper.resource("volume_metadata", "metadata", controller=volume_metadata_controller, parent_resource=dict(member_name='volume', collection_name='volumes')) mapper.connect("metadata", "/{project_id}/volumes/{volume_id}/metadata", controller=volume_metadata_controller, action='update_all', conditions={"method": ['PUT']}) cinder-2014.1.5/cinder/api/v2/__init__.py0000664000567000056700000000000012540642603021015 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/v2/limits.py0000664000567000056700000003535112540642606020603 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Module dedicated functions/classes dealing with rate limiting requests. """ import collections import copy import httplib import math import re import time import webob.dec import webob.exc from cinder.api.openstack import wsgi from cinder.api.views import limits as limits_views from cinder.api import xmlutil from cinder.openstack.common import importutils from cinder.openstack.common import jsonutils from cinder import quota from cinder import wsgi as base_wsgi QUOTAS = quota.QUOTAS LIMITS_PREFIX = "limits." # Convenience constants for the limits dictionary passed to Limiter(). PER_SECOND = 1 PER_MINUTE = 60 PER_HOUR = 60 * 60 PER_DAY = 60 * 60 * 24 limits_nsmap = {None: xmlutil.XMLNS_COMMON_V10, 'atom': xmlutil.XMLNS_ATOM} class LimitsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('limits', selector='limits') rates = xmlutil.SubTemplateElement(root, 'rates') rate = xmlutil.SubTemplateElement(rates, 'rate', selector='rate') rate.set('uri', 'uri') rate.set('regex', 'regex') limit = xmlutil.SubTemplateElement(rate, 'limit', selector='limit') limit.set('value', 'value') limit.set('verb', 'verb') limit.set('remaining', 'remaining') limit.set('unit', 'unit') limit.set('next-available', 'next-available') absolute = xmlutil.SubTemplateElement(root, 'absolute', selector='absolute') limit = xmlutil.SubTemplateElement(absolute, 'limit', selector=xmlutil.get_items) limit.set('name', 0) limit.set('value', 1) return xmlutil.MasterTemplate(root, 1, nsmap=limits_nsmap) class LimitsController(wsgi.Controller): """Controller for accessing limits in the OpenStack API.""" @wsgi.serializers(xml=LimitsTemplate) def index(self, req): """Return all global and rate limit information.""" context = req.environ['cinder.context'] quotas = QUOTAS.get_project_quotas(context, context.project_id, usages=False) abs_limits = dict((k, v['limit']) for k, v in quotas.items()) rate_limits = req.environ.get("cinder.limits", []) builder = self._get_view_builder(req) return builder.build(rate_limits, abs_limits) def _get_view_builder(self, req): return limits_views.ViewBuilder() def create_resource(): return wsgi.Resource(LimitsController()) class Limit(object): """Stores information about a limit for HTTP requests.""" UNITS = { 1: "SECOND", 60: "MINUTE", 60 * 60: "HOUR", 60 * 60 * 24: "DAY", } UNIT_MAP = dict([(v, k) for k, v in UNITS.items()]) def __init__(self, verb, uri, regex, value, unit): """Initialize a new `Limit`. @param verb: HTTP verb (POST, PUT, etc.) @param uri: Human-readable URI @param regex: Regular expression format for this limit @param value: Integer number of requests which can be made @param unit: Unit of measure for the value parameter """ self.verb = verb self.uri = uri self.regex = regex self.value = int(value) self.unit = unit self.unit_string = self.display_unit().lower() self.remaining = int(value) if value <= 0: raise ValueError("Limit value must be > 0") self.last_request = None self.next_request = None self.water_level = 0 self.capacity = self.unit self.request_value = float(self.capacity) / float(self.value) msg = _("Only %(value)s %(verb)s request(s) can be " "made to %(uri)s every %(unit_string)s.") self.error_message = msg % self.__dict__ def __call__(self, verb, url): """Represent a call to this limit from a relevant request. @param verb: string http verb (POST, GET, etc.) @param url: string URL """ if self.verb != verb or not re.match(self.regex, url): return now = self._get_time() if self.last_request is None: self.last_request = now leak_value = now - self.last_request self.water_level -= leak_value self.water_level = max(self.water_level, 0) self.water_level += self.request_value difference = self.water_level - self.capacity self.last_request = now if difference > 0: self.water_level -= self.request_value self.next_request = now + difference return difference cap = self.capacity water = self.water_level val = self.value self.remaining = math.floor(((cap - water) / cap) * val) self.next_request = now def _get_time(self): """Retrieve the current time. Broken out for testability.""" return time.time() def display_unit(self): """Display the string name of the unit.""" return self.UNITS.get(self.unit, "UNKNOWN") def display(self): """Return a useful representation of this class.""" return { "verb": self.verb, "URI": self.uri, "regex": self.regex, "value": self.value, "remaining": int(self.remaining), "unit": self.display_unit(), "resetTime": int(self.next_request or self._get_time()), } # "Limit" format is a dictionary with the HTTP verb, human-readable URI, # a regular-expression to match, value and unit of measure (PER_DAY, etc.) DEFAULT_LIMITS = [ Limit("POST", "*", ".*", 10, PER_MINUTE), Limit("POST", "*/servers", "^/servers", 50, PER_DAY), Limit("PUT", "*", ".*", 10, PER_MINUTE), Limit("GET", "*changes-since*", ".*changes-since.*", 3, PER_MINUTE), Limit("DELETE", "*", ".*", 100, PER_MINUTE), ] class RateLimitingMiddleware(base_wsgi.Middleware): """Rate-limits requests passing through this middleware. All limit information is stored in memory for this implementation. """ def __init__(self, application, limits=None, limiter=None, **kwargs): """Initialize new `RateLimitingMiddleware`, which wraps the given WSGI application and sets up the given limits. @param application: WSGI application to wrap @param limits: String describing limits @param limiter: String identifying class for representing limits Other parameters are passed to the constructor for the limiter. """ base_wsgi.Middleware.__init__(self, application) # Select the limiter class if limiter is None: limiter = Limiter else: limiter = importutils.import_class(limiter) # Parse the limits, if any are provided if limits is not None: limits = limiter.parse_limits(limits) self._limiter = limiter(limits or DEFAULT_LIMITS, **kwargs) @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, req): """Represents a single call through this middleware. We should record the request if we have a limit relevant to it. If no limit is relevant to the request, ignore it. If the request should be rate limited, return a fault telling the user they are over the limit and need to retry later. """ verb = req.method url = req.url context = req.environ.get("cinder.context") if context: username = context.user_id else: username = None delay, error = self._limiter.check_for_delay(verb, url, username) if delay: msg = _("This request was rate-limited.") retry = time.time() + delay return wsgi.OverLimitFault(msg, error, retry) req.environ["cinder.limits"] = self._limiter.get_limits(username) return self.application class Limiter(object): """Rate-limit checking class which handles limits in memory.""" def __init__(self, limits, **kwargs): """Initialize the new `Limiter`. @param limits: List of `Limit` objects """ self.limits = copy.deepcopy(limits) self.levels = collections.defaultdict(lambda: copy.deepcopy(limits)) # Pick up any per-user limit information for key, value in kwargs.items(): if key.startswith(LIMITS_PREFIX): username = key[len(LIMITS_PREFIX):] self.levels[username] = self.parse_limits(value) def get_limits(self, username=None): """Return the limits for a given user.""" return [limit.display() for limit in self.levels[username]] def check_for_delay(self, verb, url, username=None): """Check the given verb/user/user triplet for limit. @return: Tuple of delay (in seconds) and error message (or None, None) """ delays = [] for limit in self.levels[username]: delay = limit(verb, url) if delay: delays.append((delay, limit.error_message)) if delays: delays.sort() return delays[0] return None, None # Note: This method gets called before the class is instantiated, # so this must be either a static method or a class method. It is # used to develop a list of limits to feed to the constructor. We # put this in the class so that subclasses can override the # default limit parsing. @staticmethod def parse_limits(limits): """Convert a string into a list of Limit instances. This implementation expects a semicolon-separated sequence of parenthesized groups, where each group contains a comma-separated sequence consisting of HTTP method, user-readable URI, a URI reg-exp, an integer number of requests which can be made, and a unit of measure. Valid values for the latter are "SECOND", "MINUTE", "HOUR", and "DAY". @return: List of Limit instances. """ # Handle empty limit strings limits = limits.strip() if not limits: return [] # Split up the limits by semicolon result = [] for group in limits.split(';'): group = group.strip() if group[:1] != '(' or group[-1:] != ')': raise ValueError("Limit rules must be surrounded by " "parentheses") group = group[1:-1] # Extract the Limit arguments args = [a.strip() for a in group.split(',')] if len(args) != 5: raise ValueError("Limit rules must contain the following " "arguments: verb, uri, regex, value, unit") # Pull out the arguments verb, uri, regex, value, unit = args # Upper-case the verb verb = verb.upper() # Convert value--raises ValueError if it's not integer value = int(value) # Convert unit unit = unit.upper() if unit not in Limit.UNIT_MAP: raise ValueError("Invalid units specified") unit = Limit.UNIT_MAP[unit] # Build a limit result.append(Limit(verb, uri, regex, value, unit)) return result class WsgiLimiter(object): """Rate-limit checking from a WSGI application. Uses an in-memory `Limiter`. To use, POST ``/`` with JSON data such as:: { "verb" : GET, "path" : "/servers" } and receive a 204 No Content, or a 403 Forbidden with an X-Wait-Seconds header containing the number of seconds to wait before the action would succeed. """ def __init__(self, limits=None): """Initialize the new `WsgiLimiter`. @param limits: List of `Limit` objects """ self._limiter = Limiter(limits or DEFAULT_LIMITS) @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, request): """Handles a call to this application. Returns 204 if the request is acceptable to the limiter, else a 403 is returned with a relevant header indicating when the request *will* succeed. """ if request.method != "POST": raise webob.exc.HTTPMethodNotAllowed() try: info = dict(jsonutils.loads(request.body)) except ValueError: raise webob.exc.HTTPBadRequest() username = request.path_info_pop() verb = info.get("verb") path = info.get("path") delay, error = self._limiter.check_for_delay(verb, path, username) if delay: headers = {"X-Wait-Seconds": "%.2f" % delay} return webob.exc.HTTPForbidden(headers=headers, explanation=error) else: return webob.exc.HTTPNoContent() class WsgiLimiterProxy(object): """Rate-limit requests based on answers from a remote source.""" def __init__(self, limiter_address): """Initialize the new `WsgiLimiterProxy`. @param limiter_address: IP/port combination of where to request limit """ self.limiter_address = limiter_address def check_for_delay(self, verb, path, username=None): body = jsonutils.dumps({"verb": verb, "path": path}) headers = {"Content-Type": "application/json"} conn = httplib.HTTPConnection(self.limiter_address) if username: conn.request("POST", "/%s" % (username), body, headers) else: conn.request("POST", "/", body, headers) resp = conn.getresponse() if 200 >= resp.status < 300: return None, None return resp.getheader("X-Wait-Seconds"), resp.read() or None # Note: This method gets called before the class is instantiated, # so this must be either a static method or a class method. It is # used to develop a list of limits to feed to the constructor. # This implementation returns an empty list, since all limit # decisions are made by a remote server. @staticmethod def parse_limits(limits): """Ignore a limits string--simply doesn't apply for the limit proxy. @return: Empty list. """ return [] cinder-2014.1.5/cinder/api/v2/snapshots.py0000664000567000056700000002251012540642606021315 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """The volumes snapshots api.""" import webob from webob import exc from cinder.api import common from cinder.api.openstack import wsgi from cinder.api.v2 import volumes from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import utils from cinder import volume LOG = logging.getLogger(__name__) def _translate_snapshot_detail_view(context, snapshot): """Maps keys for snapshots details view.""" d = _translate_snapshot_summary_view(context, snapshot) # NOTE(gagupta): No additional data / lookups at the moment return d def _translate_snapshot_summary_view(context, snapshot): """Maps keys for snapshots summary view.""" d = {} d['id'] = snapshot['id'] d['created_at'] = snapshot['created_at'] d['name'] = snapshot['display_name'] d['description'] = snapshot['display_description'] d['volume_id'] = snapshot['volume_id'] d['status'] = snapshot['status'] d['size'] = snapshot['volume_size'] if snapshot.get('snapshot_metadata'): metadata = snapshot.get('snapshot_metadata') d['metadata'] = dict((item['key'], item['value']) for item in metadata) # avoid circular ref when vol is a Volume instance elif snapshot.get('metadata') and isinstance(snapshot.get('metadata'), dict): d['metadata'] = snapshot['metadata'] else: d['metadata'] = {} return d def make_snapshot(elem): elem.set('id') elem.set('status') elem.set('size') elem.set('created_at') elem.set('name') elem.set('description') elem.set('volume_id') elem.append(common.MetadataTemplate()) class SnapshotTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('snapshot', selector='snapshot') make_snapshot(root) return xmlutil.MasterTemplate(root, 1) class SnapshotsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('snapshots') elem = xmlutil.SubTemplateElement(root, 'snapshot', selector='snapshots') make_snapshot(elem) return xmlutil.MasterTemplate(root, 1) class SnapshotsController(wsgi.Controller): """The Volumes API controller for the OpenStack API.""" def __init__(self, ext_mgr=None): self.volume_api = volume.API() self.ext_mgr = ext_mgr super(SnapshotsController, self).__init__() @wsgi.serializers(xml=SnapshotTemplate) def show(self, req, id): """Return data about the given snapshot.""" context = req.environ['cinder.context'] try: vol = self.volume_api.get_snapshot(context, id) req.cache_resource(vol) except exception.NotFound: msg = _("Snapshot could not be found") raise exc.HTTPNotFound(explanation=msg) return {'snapshot': _translate_snapshot_detail_view(context, vol)} def delete(self, req, id): """Delete a snapshot.""" context = req.environ['cinder.context'] LOG.audit(_("Delete snapshot with id: %s"), id, context=context) try: snapshot = self.volume_api.get_snapshot(context, id) self.volume_api.delete_snapshot(context, snapshot) except exception.NotFound: msg = _("Snapshot could not be found") raise exc.HTTPNotFound(explanation=msg) return webob.Response(status_int=202) @wsgi.serializers(xml=SnapshotsTemplate) def index(self, req): """Returns a summary list of snapshots.""" return self._items(req, entity_maker=_translate_snapshot_summary_view) @wsgi.serializers(xml=SnapshotsTemplate) def detail(self, req): """Returns a detailed list of snapshots.""" return self._items(req, entity_maker=_translate_snapshot_detail_view) def _items(self, req, entity_maker): """Returns a list of snapshots, transformed through entity_maker.""" context = req.environ['cinder.context'] #pop out limit and offset , they are not search_opts search_opts = req.GET.copy() search_opts.pop('limit', None) search_opts.pop('offset', None) #filter out invalid option allowed_search_options = ('status', 'volume_id', 'name') volumes.remove_invalid_options(context, search_opts, allowed_search_options) # NOTE(thingee): v2 API allows name instead of display_name if 'name' in search_opts: search_opts['display_name'] = search_opts['name'] del search_opts['name'] snapshots = self.volume_api.get_all_snapshots(context, search_opts=search_opts) limited_list = common.limited(snapshots, req) req.cache_resource(limited_list) res = [entity_maker(context, snapshot) for snapshot in limited_list] return {'snapshots': res} @wsgi.response(202) @wsgi.serializers(xml=SnapshotTemplate) def create(self, req, body): """Creates a new snapshot.""" kwargs = {} context = req.environ['cinder.context'] if not self.is_valid_body(body, 'snapshot'): msg = (_("Missing required element '%s' in request body") % 'snapshot') raise exc.HTTPBadRequest(explanation=msg) snapshot = body['snapshot'] kwargs['metadata'] = snapshot.get('metadata', None) try: volume_id = snapshot['volume_id'] except KeyError: msg = _("'volume_id' must be specified") raise exc.HTTPBadRequest(explanation=msg) try: volume = self.volume_api.get(context, volume_id) except exception.NotFound: msg = _("Volume could not be found") raise exc.HTTPNotFound(explanation=msg) force = snapshot.get('force', False) msg = _("Create snapshot from volume %s") LOG.audit(msg, volume_id, context=context) # NOTE(thingee): v2 API allows name instead of display_name if 'name' in snapshot: snapshot['display_name'] = snapshot.get('name') del snapshot['name'] if not utils.is_valid_boolstr(force): msg = _("Invalid value '%s' for force. ") % force raise exception.InvalidParameterValue(err=msg) if strutils.bool_from_string(force): new_snapshot = self.volume_api.create_snapshot_force( context, volume, snapshot.get('display_name'), snapshot.get('description'), **kwargs) else: new_snapshot = self.volume_api.create_snapshot( context, volume, snapshot.get('display_name'), snapshot.get('description'), **kwargs) retval = _translate_snapshot_detail_view(context, new_snapshot) return {'snapshot': retval} @wsgi.serializers(xml=SnapshotTemplate) def update(self, req, id, body): """Update a snapshot.""" context = req.environ['cinder.context'] if not body: msg = _("Missing request body") raise exc.HTTPBadRequest(explanation=msg) if 'snapshot' not in body: msg = (_("Missing required element '%s' in request body") % 'snapshot') raise exc.HTTPBadRequest(explanation=msg) snapshot = body['snapshot'] update_dict = {} valid_update_keys = ( 'name', 'description', 'display_name', 'display_description', ) # NOTE(thingee): v2 API allows name instead of display_name if 'name' in snapshot: snapshot['display_name'] = snapshot['name'] del snapshot['name'] # NOTE(thingee): v2 API allows description instead of # display_description if 'description' in snapshot: snapshot['display_description'] = snapshot['description'] del snapshot['description'] for key in valid_update_keys: if key in snapshot: update_dict[key] = snapshot[key] try: snapshot = self.volume_api.get_snapshot(context, id) self.volume_api.update_snapshot(context, snapshot, update_dict) except exception.NotFound: msg = _("Snapshot could not be found") raise exc.HTTPNotFound(explanation=msg) snapshot.update(update_dict) return {'snapshot': _translate_snapshot_detail_view(context, snapshot)} def create_resource(ext_mgr): return wsgi.Resource(SnapshotsController(ext_mgr)) cinder-2014.1.5/cinder/api/v2/snapshot_metadata.py0000664000567000056700000001412612540642606022776 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import webob from cinder.api import common from cinder.api.openstack import wsgi from cinder import exception from cinder import volume from webob import exc class Controller(wsgi.Controller): """The snapshot metadata API controller for the OpenStack API.""" def __init__(self): self.volume_api = volume.API() super(Controller, self).__init__() def _get_metadata(self, context, snapshot_id): try: snapshot = self.volume_api.get_snapshot(context, snapshot_id) meta = self.volume_api.get_snapshot_metadata(context, snapshot) except exception.SnapshotNotFound: msg = _('snapshot does not exist') raise exc.HTTPNotFound(explanation=msg) return meta @wsgi.serializers(xml=common.MetadataTemplate) def index(self, req, snapshot_id): """Returns the list of metadata for a given snapshot.""" context = req.environ['cinder.context'] return {'metadata': self._get_metadata(context, snapshot_id)} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def create(self, req, snapshot_id, body): try: metadata = body['metadata'] except (KeyError, TypeError): msg = _("Malformed request body") raise exc.HTTPBadRequest(explanation=msg) context = req.environ['cinder.context'] new_metadata = self._update_snapshot_metadata(context, snapshot_id, metadata, delete=False) return {'metadata': new_metadata} @wsgi.serializers(xml=common.MetaItemTemplate) @wsgi.deserializers(xml=common.MetaItemDeserializer) def update(self, req, snapshot_id, id, body): try: meta_item = body['meta'] except (TypeError, KeyError): expl = _('Malformed request body') raise exc.HTTPBadRequest(explanation=expl) if id not in meta_item: expl = _('Request body and URI mismatch') raise exc.HTTPBadRequest(explanation=expl) if len(meta_item) > 1: expl = _('Request body contains too many items') raise exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] self._update_snapshot_metadata(context, snapshot_id, meta_item, delete=False) return {'meta': meta_item} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def update_all(self, req, snapshot_id, body): try: metadata = body['metadata'] except (TypeError, KeyError): expl = _('Malformed request body') raise exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] new_metadata = self._update_snapshot_metadata(context, snapshot_id, metadata, delete=True) return {'metadata': new_metadata} def _update_snapshot_metadata(self, context, snapshot_id, metadata, delete=False): try: snapshot = self.volume_api.get_snapshot(context, snapshot_id) return self.volume_api.update_snapshot_metadata(context, snapshot, metadata, delete) except exception.SnapshotNotFound: msg = _('snapshot does not exist') raise exc.HTTPNotFound(explanation=msg) except (ValueError, AttributeError): msg = _("Malformed request body") raise exc.HTTPBadRequest(explanation=msg) except exception.InvalidVolumeMetadata as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.InvalidVolumeMetadataSize as error: raise exc.HTTPRequestEntityTooLarge(explanation=error.msg) @wsgi.serializers(xml=common.MetaItemTemplate) def show(self, req, snapshot_id, id): """Return a single metadata item.""" context = req.environ['cinder.context'] data = self._get_metadata(context, snapshot_id) try: return {'meta': {id: data[id]}} except KeyError: msg = _("Metadata item was not found") raise exc.HTTPNotFound(explanation=msg) def delete(self, req, snapshot_id, id): """Deletes an existing metadata.""" context = req.environ['cinder.context'] metadata = self._get_metadata(context, snapshot_id) if id not in metadata: msg = _("Metadata item was not found") raise exc.HTTPNotFound(explanation=msg) try: snapshot = self.volume_api.get_snapshot(context, snapshot_id) self.volume_api.delete_snapshot_metadata(context, snapshot, id) except exception.SnapshotNotFound: msg = _('snapshot does not exist') raise exc.HTTPNotFound(explanation=msg) return webob.Response(status_int=200) def create_resource(): return wsgi.Resource(Controller()) cinder-2014.1.5/cinder/api/v1/0000775000567000056700000000000012540643114016713 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/v1/volume_metadata.py0000664000567000056700000001372312540642606022447 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import webob from cinder.api import common from cinder.api.openstack import wsgi from cinder import exception from cinder import volume from webob import exc class Controller(wsgi.Controller): """The volume metadata API controller for the OpenStack API.""" def __init__(self): self.volume_api = volume.API() super(Controller, self).__init__() def _get_metadata(self, context, volume_id): try: volume = self.volume_api.get(context, volume_id) meta = self.volume_api.get_volume_metadata(context, volume) except exception.VolumeNotFound: msg = _('volume does not exist') raise exc.HTTPNotFound(explanation=msg) return meta @wsgi.serializers(xml=common.MetadataTemplate) def index(self, req, volume_id): """Returns the list of metadata for a given volume.""" context = req.environ['cinder.context'] return {'metadata': self._get_metadata(context, volume_id)} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def create(self, req, volume_id, body): try: metadata = body['metadata'] except (KeyError, TypeError): msg = _("Malformed request body") raise exc.HTTPBadRequest(explanation=msg) context = req.environ['cinder.context'] new_metadata = self._update_volume_metadata(context, volume_id, metadata, delete=False) return {'metadata': new_metadata} @wsgi.serializers(xml=common.MetaItemTemplate) @wsgi.deserializers(xml=common.MetaItemDeserializer) def update(self, req, volume_id, id, body): try: meta_item = body['meta'] except (TypeError, KeyError): expl = _('Malformed request body') raise exc.HTTPBadRequest(explanation=expl) if id not in meta_item: expl = _('Request body and URI mismatch') raise exc.HTTPBadRequest(explanation=expl) if len(meta_item) > 1: expl = _('Request body contains too many items') raise exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] self._update_volume_metadata(context, volume_id, meta_item, delete=False) return {'meta': meta_item} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def update_all(self, req, volume_id, body): try: metadata = body['metadata'] except (TypeError, KeyError): expl = _('Malformed request body') raise exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] new_metadata = self._update_volume_metadata(context, volume_id, metadata, delete=True) return {'metadata': new_metadata} def _update_volume_metadata(self, context, volume_id, metadata, delete=False): try: volume = self.volume_api.get(context, volume_id) return self.volume_api.update_volume_metadata(context, volume, metadata, delete) except exception.VolumeNotFound: msg = _('volume does not exist') raise exc.HTTPNotFound(explanation=msg) except (ValueError, AttributeError): msg = _("Malformed request body") raise exc.HTTPBadRequest(explanation=msg) except exception.InvalidVolumeMetadata as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.InvalidVolumeMetadataSize as error: raise exc.HTTPRequestEntityTooLarge(explanation=error.msg) @wsgi.serializers(xml=common.MetaItemTemplate) def show(self, req, volume_id, id): """Return a single metadata item.""" context = req.environ['cinder.context'] data = self._get_metadata(context, volume_id) try: return {'meta': {id: data[id]}} except KeyError: msg = _("Metadata item was not found") raise exc.HTTPNotFound(explanation=msg) def delete(self, req, volume_id, id): """Deletes an existing metadata.""" context = req.environ['cinder.context'] metadata = self._get_metadata(context, volume_id) if id not in metadata: msg = _("Metadata item was not found") raise exc.HTTPNotFound(explanation=msg) try: volume = self.volume_api.get(context, volume_id) self.volume_api.delete_volume_metadata(context, volume, id) except exception.VolumeNotFound: msg = _('volume does not exist') raise exc.HTTPNotFound(explanation=msg) return webob.Response(status_int=200) def create_resource(): return wsgi.Resource(Controller()) cinder-2014.1.5/cinder/api/v1/types.py0000664000567000056700000000517512540642606020446 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # # 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. """The volume type & volume types extra specs extension.""" from webob import exc from cinder.api.openstack import wsgi from cinder.api.views import types as views_types from cinder.api import xmlutil from cinder import exception from cinder.volume import volume_types def make_voltype(elem): elem.set('id') elem.set('name') extra_specs = xmlutil.make_flat_dict('extra_specs', selector='extra_specs') elem.append(extra_specs) class VolumeTypeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume_type', selector='volume_type') make_voltype(root) return xmlutil.MasterTemplate(root, 1) class VolumeTypesTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume_types') elem = xmlutil.SubTemplateElement(root, 'volume_type', selector='volume_types') make_voltype(elem) return xmlutil.MasterTemplate(root, 1) class VolumeTypesController(wsgi.Controller): """The volume types API controller for the OpenStack API.""" _view_builder_class = views_types.ViewBuilder @wsgi.serializers(xml=VolumeTypesTemplate) def index(self, req): """Returns the list of volume types.""" context = req.environ['cinder.context'] vol_types = volume_types.get_all_types(context).values() return self._view_builder.index(req, vol_types) @wsgi.serializers(xml=VolumeTypeTemplate) def show(self, req, id): """Return a single volume type item.""" context = req.environ['cinder.context'] try: vol_type = volume_types.get_volume_type(context, id) except exception.NotFound: raise exc.HTTPNotFound() # TODO(bcwaldon): remove str cast once we use uuids vol_type['id'] = str(vol_type['id']) return self._view_builder.show(req, vol_type) def create_resource(): return wsgi.Resource(VolumeTypesController()) cinder-2014.1.5/cinder/api/v1/volumes.py0000664000567000056700000003633112540642606020772 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """The volumes api.""" import ast import webob from webob import exc from cinder.api import common from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import uuidutils from cinder import utils from cinder import volume as cinder_volume from cinder.volume import utils as volume_utils from cinder.volume import volume_types LOG = logging.getLogger(__name__) def _translate_attachment_detail_view(_context, vol): """Maps keys for attachment details view.""" d = _translate_attachment_summary_view(_context, vol) # No additional data / lookups at the moment return d def _translate_attachment_summary_view(_context, vol): """Maps keys for attachment summary view.""" d = {} volume_id = vol['id'] # NOTE(justinsb): We use the volume id as the id of the attachment object d['id'] = volume_id d['volume_id'] = volume_id d['server_id'] = vol['instance_uuid'] d['host_name'] = vol['attached_host'] if vol.get('mountpoint'): d['device'] = vol['mountpoint'] return d def _translate_volume_detail_view(context, vol, image_id=None): """Maps keys for volumes details view.""" d = _translate_volume_summary_view(context, vol, image_id) # No additional data / lookups at the moment return d def _translate_volume_summary_view(context, vol, image_id=None): """Maps keys for volumes summary view.""" d = {} d['id'] = vol['id'] d['status'] = vol['status'] d['size'] = vol['size'] d['availability_zone'] = vol['availability_zone'] d['created_at'] = vol['created_at'] # Need to form the string true/false explicitly here to # maintain our API contract if vol['bootable']: d['bootable'] = 'true' else: d['bootable'] = 'false' d['attachments'] = [] if vol['attach_status'] == 'attached': attachment = _translate_attachment_detail_view(context, vol) d['attachments'].append(attachment) d['display_name'] = vol['display_name'] d['display_description'] = vol['display_description'] if vol['volume_type_id'] and vol.get('volume_type'): d['volume_type'] = vol['volume_type']['name'] else: # TODO(bcwaldon): remove str cast once we use uuids d['volume_type'] = str(vol['volume_type_id']) d['snapshot_id'] = vol['snapshot_id'] d['source_volid'] = vol['source_volid'] d['encrypted'] = vol['encryption_key_id'] is not None if image_id: d['image_id'] = image_id LOG.audit(_("vol=%s"), vol, context=context) if vol.get('volume_metadata'): metadata = vol.get('volume_metadata') d['metadata'] = dict((item['key'], item['value']) for item in metadata) # avoid circular ref when vol is a Volume instance elif vol.get('metadata') and isinstance(vol.get('metadata'), dict): d['metadata'] = vol['metadata'] else: d['metadata'] = {} return d def make_attachment(elem): elem.set('id') elem.set('server_id') elem.set('host_name') elem.set('volume_id') elem.set('device') def make_volume(elem): elem.set('id') elem.set('status') elem.set('size') elem.set('availability_zone') elem.set('created_at') elem.set('display_name') elem.set('bootable') elem.set('display_description') elem.set('volume_type') elem.set('snapshot_id') elem.set('source_volid') attachments = xmlutil.SubTemplateElement(elem, 'attachments') attachment = xmlutil.SubTemplateElement(attachments, 'attachment', selector='attachments') make_attachment(attachment) # Attach metadata node elem.append(common.MetadataTemplate()) volume_nsmap = {None: xmlutil.XMLNS_VOLUME_V1, 'atom': xmlutil.XMLNS_ATOM} class VolumeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume', selector='volume') make_volume(root) return xmlutil.MasterTemplate(root, 1, nsmap=volume_nsmap) class VolumesTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volumes') elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes') make_volume(elem) return xmlutil.MasterTemplate(root, 1, nsmap=volume_nsmap) class CommonDeserializer(wsgi.MetadataXMLDeserializer): """Common deserializer to handle xml-formatted volume requests. Handles standard volume attributes as well as the optional metadata attribute """ metadata_deserializer = common.MetadataXMLDeserializer() def _extract_volume(self, node): """Marshal the volume attribute of a parsed request.""" volume = {} volume_node = self.find_first_child_named(node, 'volume') attributes = ['display_name', 'display_description', 'size', 'volume_type', 'availability_zone', 'imageRef', 'snapshot_id', 'source_volid'] for attr in attributes: if volume_node.getAttribute(attr): volume[attr] = volume_node.getAttribute(attr) metadata_node = self.find_first_child_named(volume_node, 'metadata') if metadata_node is not None: volume['metadata'] = self.extract_metadata(metadata_node) return volume class CreateDeserializer(CommonDeserializer): """Deserializer to handle xml-formatted create volume requests. Handles standard volume attributes as well as the optional metadata attribute """ def default(self, string): """Deserialize an xml-formatted volume create request.""" dom = utils.safe_minidom_parse_string(string) volume = self._extract_volume(dom) return {'body': {'volume': volume}} class VolumeController(wsgi.Controller): """The Volumes API controller for the OpenStack API.""" def __init__(self, ext_mgr): self.volume_api = cinder_volume.API() self.ext_mgr = ext_mgr super(VolumeController, self).__init__() @wsgi.serializers(xml=VolumeTemplate) def show(self, req, id): """Return data about the given volume.""" context = req.environ['cinder.context'] try: vol = self.volume_api.get(context, id, viewable_admin_meta=True) req.cache_resource(vol) except exception.NotFound: raise exc.HTTPNotFound() utils.add_visible_admin_metadata(vol) return {'volume': _translate_volume_detail_view(context, vol)} def delete(self, req, id): """Delete a volume.""" context = req.environ['cinder.context'] LOG.audit(_("Delete volume with id: %s"), id, context=context) try: volume = self.volume_api.get(context, id) self.volume_api.delete(context, volume) except exception.NotFound: raise exc.HTTPNotFound() return webob.Response(status_int=202) @wsgi.serializers(xml=VolumesTemplate) def index(self, req): """Returns a summary list of volumes.""" return self._items(req, entity_maker=_translate_volume_summary_view) @wsgi.serializers(xml=VolumesTemplate) def detail(self, req): """Returns a detailed list of volumes.""" return self._items(req, entity_maker=_translate_volume_detail_view) def _items(self, req, entity_maker): """Returns a list of volumes, transformed through entity_maker.""" #pop out limit and offset , they are not search_opts search_opts = req.GET.copy() search_opts.pop('limit', None) search_opts.pop('offset', None) if 'metadata' in search_opts: search_opts['metadata'] = ast.literal_eval(search_opts['metadata']) context = req.environ['cinder.context'] remove_invalid_options(context, search_opts, self._get_volume_search_options()) volumes = self.volume_api.get_all(context, marker=None, limit=None, sort_key='created_at', sort_dir='desc', filters=search_opts, viewable_admin_meta=True) volumes = [dict(vol.iteritems()) for vol in volumes] for volume in volumes: utils.add_visible_admin_metadata(volume) limited_list = common.limited(volumes, req) req.cache_resource(limited_list) res = [entity_maker(context, vol) for vol in limited_list] return {'volumes': res} def _image_uuid_from_href(self, image_href): # If the image href was generated by nova api, strip image_href # down to an id. try: image_uuid = image_href.split('/').pop() except (TypeError, AttributeError): msg = _("Invalid imageRef provided.") raise exc.HTTPBadRequest(explanation=msg) if not uuidutils.is_uuid_like(image_uuid): msg = _("Invalid imageRef provided.") raise exc.HTTPBadRequest(explanation=msg) return image_uuid @wsgi.serializers(xml=VolumeTemplate) @wsgi.deserializers(xml=CreateDeserializer) def create(self, req, body): """Creates a new volume.""" if not self.is_valid_body(body, 'volume'): raise exc.HTTPUnprocessableEntity() LOG.debug('Create volume request body: %s', body) context = req.environ['cinder.context'] volume = body['volume'] kwargs = {} req_volume_type = volume.get('volume_type', None) if req_volume_type: try: if not uuidutils.is_uuid_like(req_volume_type): kwargs['volume_type'] = \ volume_types.get_volume_type_by_name( context, req_volume_type) else: kwargs['volume_type'] = volume_types.get_volume_type( context, req_volume_type) except exception.VolumeTypeNotFound: explanation = 'Volume type not found.' raise exc.HTTPNotFound(explanation=explanation) kwargs['metadata'] = volume.get('metadata', None) snapshot_id = volume.get('snapshot_id') if snapshot_id is not None: try: kwargs['snapshot'] = self.volume_api.get_snapshot(context, snapshot_id) except exception.NotFound: explanation = _('snapshot id:%s not found') % snapshot_id raise exc.HTTPNotFound(explanation=explanation) else: kwargs['snapshot'] = None source_volid = volume.get('source_volid') if source_volid is not None: try: kwargs['source_volume'] = \ self.volume_api.get_volume(context, source_volid) except exception.NotFound: explanation = _('source vol id:%s not found') % source_volid raise exc.HTTPNotFound(explanation=explanation) else: kwargs['source_volume'] = None size = volume.get('size', None) if size is None and kwargs['snapshot'] is not None: size = kwargs['snapshot']['volume_size'] elif size is None and kwargs['source_volume'] is not None: size = kwargs['source_volume']['size'] LOG.audit(_("Create volume of %s GB"), size, context=context) image_href = None image_uuid = None if self.ext_mgr.is_loaded('os-image-create'): # NOTE(jdg): misleading name "imageRef" as it's an image-id image_href = volume.get('imageRef') if image_href: image_uuid = self._image_uuid_from_href(image_href) kwargs['image_id'] = image_uuid kwargs['availability_zone'] = volume.get('availability_zone', None) new_volume = self.volume_api.create(context, size, volume.get('display_name'), volume.get('display_description'), **kwargs) # TODO(vish): Instance should be None at db layer instead of # trying to lazy load, but for now we turn it into # a dict to avoid an error. new_volume = dict(new_volume.iteritems()) retval = _translate_volume_detail_view(context, new_volume, image_uuid) return {'volume': retval} def _get_volume_search_options(self): """Return volume search options allowed by non-admin.""" return ('display_name', 'status', 'metadata') @wsgi.serializers(xml=VolumeTemplate) def update(self, req, id, body): """Update a volume.""" context = req.environ['cinder.context'] if not body: raise exc.HTTPUnprocessableEntity() if 'volume' not in body: raise exc.HTTPUnprocessableEntity() volume = body['volume'] update_dict = {} valid_update_keys = ( 'display_name', 'display_description', 'metadata', ) for key in valid_update_keys: if key in volume: update_dict[key] = volume[key] try: volume = self.volume_api.get(context, id, viewable_admin_meta=True) volume_utils.notify_about_volume_usage(context, volume, 'update.start') self.volume_api.update(context, volume, update_dict) except exception.NotFound: raise exc.HTTPNotFound() volume.update(update_dict) utils.add_visible_admin_metadata(volume) volume_utils.notify_about_volume_usage(context, volume, 'update.end') return {'volume': _translate_volume_detail_view(context, volume)} def create_resource(ext_mgr): return wsgi.Resource(VolumeController(ext_mgr)) def remove_invalid_options(context, search_options, allowed_search_options): """Remove search options that are not valid for non-admin API/context.""" if context.is_admin: # Allow all options return # Otherwise, strip out all unknown options unknown_options = [opt for opt in search_options if opt not in allowed_search_options] bad_options = ", ".join(unknown_options) log_msg = _("Removing options '%(bad_options)s'" " from query") % {'bad_options': bad_options} LOG.debug(log_msg) for opt in unknown_options: del search_options[opt] cinder-2014.1.5/cinder/api/v1/router.py0000664000567000056700000000762312540642606020622 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ WSGI middleware for OpenStack Volume API. """ from cinder.api import extensions import cinder.api.openstack from cinder.api.v1 import limits from cinder.api.v1 import snapshot_metadata from cinder.api.v1 import snapshots from cinder.api.v1 import types from cinder.api.v1 import volume_metadata from cinder.api.v1 import volumes from cinder.api import versions from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class APIRouter(cinder.api.openstack.APIRouter): """Routes requests on the API to the appropriate controller and method.""" ExtensionManager = extensions.ExtensionManager def _setup_routes(self, mapper, ext_mgr): self.resources['versions'] = versions.create_resource() mapper.connect("versions", "/", controller=self.resources['versions'], action='show') mapper.redirect("", "/") self.resources['volumes'] = volumes.create_resource(ext_mgr) mapper.resource("volume", "volumes", controller=self.resources['volumes'], collection={'detail': 'GET'}, member={'action': 'POST'}) self.resources['types'] = types.create_resource() mapper.resource("type", "types", controller=self.resources['types']) self.resources['snapshots'] = snapshots.create_resource(ext_mgr) mapper.resource("snapshot", "snapshots", controller=self.resources['snapshots'], collection={'detail': 'GET'}, member={'action': 'POST'}) self.resources['snapshot_metadata'] = \ snapshot_metadata.create_resource() snapshot_metadata_controller = self.resources['snapshot_metadata'] mapper.resource("snapshot_metadata", "metadata", controller=snapshot_metadata_controller, parent_resource=dict(member_name='snapshot', collection_name='snapshots')) mapper.connect("metadata", "/{project_id}/snapshots/{snapshot_id}/metadata", controller=snapshot_metadata_controller, action='update_all', conditions={"method": ['PUT']}) self.resources['limits'] = limits.create_resource() mapper.resource("limit", "limits", controller=self.resources['limits']) self.resources['volume_metadata'] = \ volume_metadata.create_resource() volume_metadata_controller = self.resources['volume_metadata'] mapper.resource("volume_metadata", "metadata", controller=volume_metadata_controller, parent_resource=dict(member_name='volume', collection_name='volumes')) mapper.connect("metadata", "/{project_id}/volumes/{volume_id}/metadata", controller=volume_metadata_controller, action='update_all', conditions={"method": ['PUT']}) cinder-2014.1.5/cinder/api/v1/__init__.py0000664000567000056700000000000012540642603021014 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/v1/limits.py0000664000567000056700000003543312540642606020603 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Module dedicated functions/classes dealing with rate limiting requests. """ import collections import copy import httplib import math import re import time import webob.dec import webob.exc from cinder.api.openstack import wsgi from cinder.api.views import limits as limits_views from cinder.api import xmlutil from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import importutils from cinder.openstack.common import jsonutils from cinder import quota from cinder import wsgi as base_wsgi QUOTAS = quota.QUOTAS LIMITS_PREFIX = "limits." # Convenience constants for the limits dictionary passed to Limiter(). PER_SECOND = 1 PER_MINUTE = 60 PER_HOUR = 60 * 60 PER_DAY = 60 * 60 * 24 limits_nsmap = {None: xmlutil.XMLNS_COMMON_V10, 'atom': xmlutil.XMLNS_ATOM} class LimitsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('limits', selector='limits') rates = xmlutil.SubTemplateElement(root, 'rates') rate = xmlutil.SubTemplateElement(rates, 'rate', selector='rate') rate.set('uri', 'uri') rate.set('regex', 'regex') limit = xmlutil.SubTemplateElement(rate, 'limit', selector='limit') limit.set('value', 'value') limit.set('verb', 'verb') limit.set('remaining', 'remaining') limit.set('unit', 'unit') limit.set('next-available', 'next-available') absolute = xmlutil.SubTemplateElement(root, 'absolute', selector='absolute') limit = xmlutil.SubTemplateElement(absolute, 'limit', selector=xmlutil.get_items) limit.set('name', 0) limit.set('value', 1) return xmlutil.MasterTemplate(root, 1, nsmap=limits_nsmap) class LimitsController(wsgi.Controller): """Controller for accessing limits in the OpenStack API.""" @wsgi.serializers(xml=LimitsTemplate) def index(self, req): """Return all global and rate limit information.""" context = req.environ['cinder.context'] quotas = QUOTAS.get_project_quotas(context, context.project_id, usages=False) abs_limits = dict((k, v['limit']) for k, v in quotas.items()) rate_limits = req.environ.get("cinder.limits", []) builder = self._get_view_builder(req) return builder.build(rate_limits, abs_limits) def _get_view_builder(self, req): return limits_views.ViewBuilder() def create_resource(): return wsgi.Resource(LimitsController()) class Limit(object): """Stores information about a limit for HTTP requests.""" UNITS = { 1: "SECOND", 60: "MINUTE", 60 * 60: "HOUR", 60 * 60 * 24: "DAY", } UNIT_MAP = dict([(v, k) for k, v in UNITS.items()]) def __init__(self, verb, uri, regex, value, unit): """Initialize a new `Limit`. @param verb: HTTP verb (POST, PUT, etc.) @param uri: Human-readable URI @param regex: Regular expression format for this limit @param value: Integer number of requests which can be made @param unit: Unit of measure for the value parameter """ self.verb = verb self.uri = uri self.regex = regex self.value = int(value) self.unit = unit self.unit_string = self.display_unit().lower() self.remaining = int(value) if value <= 0: raise ValueError("Limit value must be > 0") self.last_request = None self.next_request = None self.water_level = 0 self.capacity = self.unit self.request_value = float(self.capacity) / float(self.value) msg = _("Only %(value)s %(verb)s request(s) can be " "made to %(uri)s every %(unit_string)s.") self.error_message = msg % self.__dict__ def __call__(self, verb, url): """Represent a call to this limit from a relevant request. @param verb: string http verb (POST, GET, etc.) @param url: string URL """ if self.verb != verb or not re.match(self.regex, url): return now = self._get_time() if self.last_request is None: self.last_request = now leak_value = now - self.last_request self.water_level -= leak_value self.water_level = max(self.water_level, 0) self.water_level += self.request_value difference = self.water_level - self.capacity self.last_request = now if difference > 0: self.water_level -= self.request_value self.next_request = now + difference return difference cap = self.capacity water = self.water_level val = self.value self.remaining = math.floor(((cap - water) / cap) * val) self.next_request = now def _get_time(self): """Retrieve the current time. Broken out for testability.""" return time.time() def display_unit(self): """Display the string name of the unit.""" return self.UNITS.get(self.unit, "UNKNOWN") def display(self): """Return a useful representation of this class.""" return { "verb": self.verb, "URI": self.uri, "regex": self.regex, "value": self.value, "remaining": int(self.remaining), "unit": self.display_unit(), "resetTime": int(self.next_request or self._get_time()), } # "Limit" format is a dictionary with the HTTP verb, human-readable URI, # a regular-expression to match, value and unit of measure (PER_DAY, etc.) DEFAULT_LIMITS = [ Limit("POST", "*", ".*", 10, PER_MINUTE), Limit("POST", "*/servers", "^/servers", 50, PER_DAY), Limit("PUT", "*", ".*", 10, PER_MINUTE), Limit("GET", "*changes-since*", ".*changes-since.*", 3, PER_MINUTE), Limit("DELETE", "*", ".*", 100, PER_MINUTE), ] class RateLimitingMiddleware(base_wsgi.Middleware): """Rate-limits requests passing through this middleware. All limit information is stored in memory for this implementation. """ def __init__(self, application, limits=None, limiter=None, **kwargs): """Initialize new `RateLimitingMiddleware` This wraps the given WSGI application and sets up the given limits. @param application: WSGI application to wrap @param limits: String describing limits @param limiter: String identifying class for representing limits Other parameters are passed to the constructor for the limiter. """ base_wsgi.Middleware.__init__(self, application) # Select the limiter class if limiter is None: limiter = Limiter else: limiter = importutils.import_class(limiter) # Parse the limits, if any are provided if limits is not None: limits = limiter.parse_limits(limits) self._limiter = limiter(limits or DEFAULT_LIMITS, **kwargs) @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, req): """Represent a single call through this middleware. We should record the request if we have a limit relevant to it. If no limit is relevant to the request, ignore it. If the request should be rate limited, return a fault telling the user they are over the limit and need to retry later. """ verb = req.method url = req.url context = req.environ.get("cinder.context") if context: username = context.user_id else: username = None delay, error = self._limiter.check_for_delay(verb, url, username) if delay: msg = _("This request was rate-limited.") retry = time.time() + delay return wsgi.OverLimitFault(msg, error, retry) req.environ["cinder.limits"] = self._limiter.get_limits(username) return self.application class Limiter(object): """Rate-limit checking class which handles limits in memory.""" def __init__(self, limits, **kwargs): """Initialize the new `Limiter`. @param limits: List of `Limit` objects """ self.limits = copy.deepcopy(limits) self.levels = collections.defaultdict(lambda: copy.deepcopy(limits)) # Pick up any per-user limit information for key, value in kwargs.items(): if key.startswith(LIMITS_PREFIX): username = key[len(LIMITS_PREFIX):] self.levels[username] = self.parse_limits(value) def get_limits(self, username=None): """Return the limits for a given user.""" return [limit.display() for limit in self.levels[username]] def check_for_delay(self, verb, url, username=None): """Check the given verb/user/user triplet for limit. @return: Tuple of delay (in seconds) and error message (or None, None) """ delays = [] for limit in self.levels[username]: delay = limit(verb, url) if delay: delays.append((delay, limit.error_message)) if delays: delays.sort() return delays[0] return None, None # Note: This method gets called before the class is instantiated, # so this must be either a static method or a class method. It is # used to develop a list of limits to feed to the constructor. We # put this in the class so that subclasses can override the # default limit parsing. @staticmethod def parse_limits(limits): """Convert a string into a list of Limit instances. This implementation expects a semicolon-separated sequence of parenthesized groups, where each group contains a comma-separated sequence consisting of HTTP method, user-readable URI, a URI reg-exp, an integer number of requests which can be made, and a unit of measure. Valid values for the latter are "SECOND", "MINUTE", "HOUR", and "DAY". @return: List of Limit instances. """ # Handle empty limit strings limits = limits.strip() if not limits: return [] # Split up the limits by semicolon result = [] for group in limits.split(';'): group = group.strip() if group[:1] != '(' or group[-1:] != ')': raise ValueError("Limit rules must be surrounded by " "parentheses") group = group[1:-1] # Extract the Limit arguments args = [a.strip() for a in group.split(',')] if len(args) != 5: raise ValueError("Limit rules must contain the following " "arguments: verb, uri, regex, value, unit") # Pull out the arguments verb, uri, regex, value, unit = args # Upper-case the verb verb = verb.upper() # Convert value--raises ValueError if it's not integer value = int(value) # Convert unit unit = unit.upper() if unit not in Limit.UNIT_MAP: raise ValueError("Invalid units specified") unit = Limit.UNIT_MAP[unit] # Build a limit result.append(Limit(verb, uri, regex, value, unit)) return result class WsgiLimiter(object): """Rate-limit checking from a WSGI application. Uses an in-memory `Limiter`. To use, POST ``/`` with JSON data such as:: { "verb" : GET, "path" : "/servers" } and receive a 204 No Content, or a 403 Forbidden with an X-Wait-Seconds header containing the number of seconds to wait before the action would succeed. """ def __init__(self, limits=None): """Initialize the new `WsgiLimiter`. @param limits: List of `Limit` objects """ self._limiter = Limiter(limits or DEFAULT_LIMITS) @webob.dec.wsgify(RequestClass=wsgi.Request) def __call__(self, request): """Handles a call to this application. Returns 204 if the request is acceptable to the limiter, else a 403 is returned with a relevant header indicating when the request *will* succeed. """ if request.method != "POST": raise webob.exc.HTTPMethodNotAllowed() try: info = dict(jsonutils.loads(request.body)) except ValueError: raise webob.exc.HTTPBadRequest() username = request.path_info_pop() verb = info.get("verb") path = info.get("path") delay, error = self._limiter.check_for_delay(verb, path, username) if delay: headers = {"X-Wait-Seconds": "%.2f" % delay} return webob.exc.HTTPForbidden(headers=headers, explanation=error) else: return webob.exc.HTTPNoContent() class WsgiLimiterProxy(object): """Rate-limit requests based on answers from a remote source.""" def __init__(self, limiter_address): """Initialize the new `WsgiLimiterProxy`. @param limiter_address: IP/port combination of where to request limit """ self.limiter_address = limiter_address def check_for_delay(self, verb, path, username=None): body = jsonutils.dumps({"verb": verb, "path": path}) headers = {"Content-Type": "application/json"} conn = httplib.HTTPConnection(self.limiter_address) if username: conn.request("POST", "/%s" % (username), body, headers) else: conn.request("POST", "/", body, headers) resp = conn.getresponse() if 200 >= resp.status < 300: return None, None return resp.getheader("X-Wait-Seconds"), resp.read() or None # Note: This method gets called before the class is instantiated, # so this must be either a static method or a class method. It is # used to develop a list of limits to feed to the constructor. # This implementation returns an empty list, since all limit # decisions are made by a remote server. @staticmethod def parse_limits(limits): """Ignore a limits string--simply doesn't apply for the limit proxy. @return: Empty list. """ return [] cinder-2014.1.5/cinder/api/v1/snapshots.py0000664000567000056700000001775712540642606021335 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """The volumes snapshots api.""" import webob from webob import exc from cinder.api import common from cinder.api.openstack import wsgi from cinder.api.v1 import volumes from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import utils from cinder import volume LOG = logging.getLogger(__name__) def _translate_snapshot_detail_view(context, snapshot): """Maps keys for snapshots details view.""" d = _translate_snapshot_summary_view(context, snapshot) # NOTE(gagupta): No additional data / lookups at the moment return d def _translate_snapshot_summary_view(context, snapshot): """Maps keys for snapshots summary view.""" d = {} d['id'] = snapshot['id'] d['created_at'] = snapshot['created_at'] d['display_name'] = snapshot['display_name'] d['display_description'] = snapshot['display_description'] d['volume_id'] = snapshot['volume_id'] d['status'] = snapshot['status'] d['size'] = snapshot['volume_size'] if snapshot.get('snapshot_metadata'): metadata = snapshot.get('snapshot_metadata') d['metadata'] = dict((item['key'], item['value']) for item in metadata) # avoid circular ref when vol is a Volume instance elif snapshot.get('metadata') and isinstance(snapshot.get('metadata'), dict): d['metadata'] = snapshot['metadata'] else: d['metadata'] = {} return d def make_snapshot(elem): elem.set('id') elem.set('status') elem.set('size') elem.set('created_at') elem.set('display_name') elem.set('display_description') elem.set('volume_id') elem.append(common.MetadataTemplate()) class SnapshotTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('snapshot', selector='snapshot') make_snapshot(root) return xmlutil.MasterTemplate(root, 1) class SnapshotsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('snapshots') elem = xmlutil.SubTemplateElement(root, 'snapshot', selector='snapshots') make_snapshot(elem) return xmlutil.MasterTemplate(root, 1) class SnapshotsController(wsgi.Controller): """The Volumes API controller for the OpenStack API.""" def __init__(self, ext_mgr=None): self.volume_api = volume.API() self.ext_mgr = ext_mgr super(SnapshotsController, self).__init__() @wsgi.serializers(xml=SnapshotTemplate) def show(self, req, id): """Return data about the given snapshot.""" context = req.environ['cinder.context'] try: vol = self.volume_api.get_snapshot(context, id) req.cache_resource(vol) except exception.NotFound: raise exc.HTTPNotFound() return {'snapshot': _translate_snapshot_detail_view(context, vol)} def delete(self, req, id): """Delete a snapshot.""" context = req.environ['cinder.context'] LOG.audit(_("Delete snapshot with id: %s"), id, context=context) try: snapshot = self.volume_api.get_snapshot(context, id) self.volume_api.delete_snapshot(context, snapshot) except exception.NotFound: raise exc.HTTPNotFound() return webob.Response(status_int=202) @wsgi.serializers(xml=SnapshotsTemplate) def index(self, req): """Returns a summary list of snapshots.""" return self._items(req, entity_maker=_translate_snapshot_summary_view) @wsgi.serializers(xml=SnapshotsTemplate) def detail(self, req): """Returns a detailed list of snapshots.""" return self._items(req, entity_maker=_translate_snapshot_detail_view) def _items(self, req, entity_maker): """Returns a list of snapshots, transformed through entity_maker.""" context = req.environ['cinder.context'] #pop out limit and offset , they are not search_opts search_opts = req.GET.copy() search_opts.pop('limit', None) search_opts.pop('offset', None) #filter out invalid option allowed_search_options = ('status', 'volume_id', 'display_name') volumes.remove_invalid_options(context, search_opts, allowed_search_options) snapshots = self.volume_api.get_all_snapshots(context, search_opts=search_opts) limited_list = common.limited(snapshots, req) req.cache_resource(limited_list) res = [entity_maker(context, snapshot) for snapshot in limited_list] return {'snapshots': res} @wsgi.serializers(xml=SnapshotTemplate) def create(self, req, body): """Creates a new snapshot.""" kwargs = {} context = req.environ['cinder.context'] if not self.is_valid_body(body, 'snapshot'): raise exc.HTTPUnprocessableEntity() snapshot = body['snapshot'] kwargs['metadata'] = snapshot.get('metadata', None) try: volume_id = snapshot['volume_id'] except KeyError: msg = _("'volume_id' must be specified") raise exc.HTTPBadRequest(explanation=msg) try: volume = self.volume_api.get(context, volume_id) except exception.NotFound: raise exc.HTTPNotFound() force = snapshot.get('force', False) msg = _("Create snapshot from volume %s") LOG.audit(msg, volume_id, context=context) if not utils.is_valid_boolstr(force): msg = _("Invalid value '%s' for force. ") % force raise exception.InvalidParameterValue(err=msg) if strutils.bool_from_string(force): new_snapshot = self.volume_api.create_snapshot_force( context, volume, snapshot.get('display_name'), snapshot.get('display_description'), **kwargs) else: new_snapshot = self.volume_api.create_snapshot( context, volume, snapshot.get('display_name'), snapshot.get('display_description'), **kwargs) retval = _translate_snapshot_detail_view(context, new_snapshot) return {'snapshot': retval} @wsgi.serializers(xml=SnapshotTemplate) def update(self, req, id, body): """Update a snapshot.""" context = req.environ['cinder.context'] if not body: raise exc.HTTPUnprocessableEntity() if 'snapshot' not in body: raise exc.HTTPUnprocessableEntity() snapshot = body['snapshot'] update_dict = {} valid_update_keys = ( 'display_name', 'display_description', ) for key in valid_update_keys: if key in snapshot: update_dict[key] = snapshot[key] try: snapshot = self.volume_api.get_snapshot(context, id) self.volume_api.update_snapshot(context, snapshot, update_dict) except exception.NotFound: raise exc.HTTPNotFound() snapshot.update(update_dict) return {'snapshot': _translate_snapshot_detail_view(context, snapshot)} def create_resource(ext_mgr): return wsgi.Resource(SnapshotsController(ext_mgr)) cinder-2014.1.5/cinder/api/v1/snapshot_metadata.py0000664000567000056700000001412612540642606022775 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import webob from cinder.api import common from cinder.api.openstack import wsgi from cinder import exception from cinder import volume from webob import exc class Controller(wsgi.Controller): """The snapshot metadata API controller for the OpenStack API.""" def __init__(self): self.volume_api = volume.API() super(Controller, self).__init__() def _get_metadata(self, context, snapshot_id): try: snapshot = self.volume_api.get_snapshot(context, snapshot_id) meta = self.volume_api.get_snapshot_metadata(context, snapshot) except exception.SnapshotNotFound: msg = _('snapshot does not exist') raise exc.HTTPNotFound(explanation=msg) return meta @wsgi.serializers(xml=common.MetadataTemplate) def index(self, req, snapshot_id): """Returns the list of metadata for a given snapshot.""" context = req.environ['cinder.context'] return {'metadata': self._get_metadata(context, snapshot_id)} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def create(self, req, snapshot_id, body): try: metadata = body['metadata'] except (KeyError, TypeError): msg = _("Malformed request body") raise exc.HTTPBadRequest(explanation=msg) context = req.environ['cinder.context'] new_metadata = self._update_snapshot_metadata(context, snapshot_id, metadata, delete=False) return {'metadata': new_metadata} @wsgi.serializers(xml=common.MetaItemTemplate) @wsgi.deserializers(xml=common.MetaItemDeserializer) def update(self, req, snapshot_id, id, body): try: meta_item = body['meta'] except (TypeError, KeyError): expl = _('Malformed request body') raise exc.HTTPBadRequest(explanation=expl) if id not in meta_item: expl = _('Request body and URI mismatch') raise exc.HTTPBadRequest(explanation=expl) if len(meta_item) > 1: expl = _('Request body contains too many items') raise exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] self._update_snapshot_metadata(context, snapshot_id, meta_item, delete=False) return {'meta': meta_item} @wsgi.serializers(xml=common.MetadataTemplate) @wsgi.deserializers(xml=common.MetadataDeserializer) def update_all(self, req, snapshot_id, body): try: metadata = body['metadata'] except (TypeError, KeyError): expl = _('Malformed request body') raise exc.HTTPBadRequest(explanation=expl) context = req.environ['cinder.context'] new_metadata = self._update_snapshot_metadata(context, snapshot_id, metadata, delete=True) return {'metadata': new_metadata} def _update_snapshot_metadata(self, context, snapshot_id, metadata, delete=False): try: snapshot = self.volume_api.get_snapshot(context, snapshot_id) return self.volume_api.update_snapshot_metadata(context, snapshot, metadata, delete) except exception.SnapshotNotFound: msg = _('snapshot does not exist') raise exc.HTTPNotFound(explanation=msg) except (ValueError, AttributeError): msg = _("Malformed request body") raise exc.HTTPBadRequest(explanation=msg) except exception.InvalidVolumeMetadata as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.InvalidVolumeMetadataSize as error: raise exc.HTTPRequestEntityTooLarge(explanation=error.msg) @wsgi.serializers(xml=common.MetaItemTemplate) def show(self, req, snapshot_id, id): """Return a single metadata item.""" context = req.environ['cinder.context'] data = self._get_metadata(context, snapshot_id) try: return {'meta': {id: data[id]}} except KeyError: msg = _("Metadata item was not found") raise exc.HTTPNotFound(explanation=msg) def delete(self, req, snapshot_id, id): """Deletes an existing metadata.""" context = req.environ['cinder.context'] metadata = self._get_metadata(context, snapshot_id) if id not in metadata: msg = _("Metadata item was not found") raise exc.HTTPNotFound(explanation=msg) try: snapshot = self.volume_api.get_snapshot(context, snapshot_id) self.volume_api.delete_snapshot_metadata(context, snapshot, id) except exception.SnapshotNotFound: msg = _('snapshot does not exist') raise exc.HTTPNotFound(explanation=msg) return webob.Response(status_int=200) def create_resource(): return wsgi.Resource(Controller()) cinder-2014.1.5/cinder/api/contrib/0000775000567000056700000000000012540643114020025 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/api/contrib/volume_manage.py0000775000567000056700000001503312540642606023230 0ustar jenkinsjenkins00000000000000# 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. from oslo.config import cfg from webob import exc from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api.v2.views import volumes as volume_views from cinder.api.v2 import volumes from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import uuidutils from cinder import utils from cinder import volume as cinder_volume from cinder.volume import volume_types LOG = logging.getLogger(__name__) CONF = cfg.CONF authorize = extensions.extension_authorizer('volume', 'volume_manage') class VolumeManageController(wsgi.Controller): """The /os-volume-manage controller for the OpenStack API.""" _view_builder_class = volume_views.ViewBuilder def __init__(self, *args, **kwargs): super(VolumeManageController, self).__init__(*args, **kwargs) self.volume_api = cinder_volume.API() @wsgi.response(202) @wsgi.serializers(xml=volumes.VolumeTemplate) @wsgi.deserializers(xml=volumes.CreateDeserializer) def create(self, req, body): """Instruct Cinder to manage a storage object. Manages an existing backend storage object (e.g. a Linux logical volume or a SAN disk) by creating the Cinder objects required to manage it, and possibly renaming the backend storage object (driver dependent) From an API perspective, this operation behaves very much like a volume creation operation, except that properties such as image, snapshot and volume references don't make sense, because we are taking an existing storage object into Cinder management. Required HTTP Body: { 'volume': { 'host': , 'ref': , } } See the appropriate Cinder drivers' implementations of the manage_volume method to find out the accepted format of 'ref'. This API call will return with an error if any of the above elements are missing from the request, or if the 'host' element refers to a cinder host that is not registered. The volume will later enter the error state if it is discovered that 'ref' is bad. Optional elements to 'volume' are: name A name for the new volume. description A description for the new volume. volume_type ID or name of a volume type to associate with the new Cinder volume. Does not necessarily guarantee that the managed volume will have the properties described in the volume_type. The driver may choose to fail if it identifies that the specified volume_type is not compatible with the backend storage object. metadata Key/value pairs to be associated with the new volume. availability_zone The availability zone to associate with the new volume. """ context = req.environ['cinder.context'] authorize(context) if not self.is_valid_body(body, 'volume'): msg = _("Missing required element '%s' in request body") % 'volume' raise exc.HTTPBadRequest(explanation=msg) volume = body['volume'] # Check that the required keys are present, return an error if they # are not. required_keys = set(['ref', 'host']) missing_keys = list(required_keys - set(volume.keys())) if missing_keys: msg = _("The following elements are required: %s") % \ ', '.join(missing_keys) raise exc.HTTPBadRequest(explanation=msg) LOG.debug('Manage volume request body: %s', body) kwargs = {} req_volume_type = volume.get('volume_type', None) if req_volume_type: try: if not uuidutils.is_uuid_like(req_volume_type): kwargs['volume_type'] = \ volume_types.get_volume_type_by_name( context, req_volume_type) else: kwargs['volume_type'] = volume_types.get_volume_type( context, req_volume_type) except exception.VolumeTypeNotFound: msg = _("Volume type not found.") raise exc.HTTPNotFound(explanation=msg) else: kwargs['volume_type'] = {} kwargs['name'] = volume.get('name', None) kwargs['description'] = volume.get('description', None) kwargs['metadata'] = volume.get('metadata', None) kwargs['availability_zone'] = volume.get('availability_zone', None) try: new_volume = self.volume_api.manage_existing(context, volume['host'], volume['ref'], **kwargs) except exception.ServiceNotFound: msg = _("Service not found.") raise exc.HTTPNotFound(explanation=msg) new_volume = dict(new_volume.iteritems()) utils.add_visible_admin_metadata(new_volume) return self._view_builder.detail(req, new_volume) class Volume_manage(extensions.ExtensionDescriptor): """Allows existing backend storage to be 'managed' by Cinder.""" name = 'VolumeManage' alias = 'os-volume-manage' namespace = ('http://docs.openstack.org/volume/ext/' 'os-volume-manage/api/v1') updated = '2014-02-10T00:00:00+00:00' def get_resources(self): controller = VolumeManageController() res = extensions.ResourceExtension(Volume_manage.alias, controller) return [res] cinder-2014.1.5/cinder/api/contrib/volume_host_attribute.py0000664000567000056700000000661512540642606025043 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder.openstack.common import log as logging from cinder import volume LOG = logging.getLogger(__name__) authorize = extensions.soft_extension_authorizer('volume', 'volume_host_attribute') class VolumeHostAttributeController(wsgi.Controller): def __init__(self, *args, **kwargs): super(VolumeHostAttributeController, self).__init__(*args, **kwargs) self.volume_api = volume.API() def _add_volume_host_attribute(self, context, req, resp_volume): db_volume = req.cached_resource_by_id(resp_volume['id']) key = "%s:host" % Volume_host_attribute.alias resp_volume[key] = db_volume['host'] @wsgi.extends def show(self, req, resp_obj, id): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeHostAttributeTemplate()) volume = resp_obj.obj['volume'] self._add_volume_host_attribute(context, req, volume) @wsgi.extends def detail(self, req, resp_obj): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeListHostAttributeTemplate()) for volume in list(resp_obj.obj['volumes']): self._add_volume_host_attribute(context, req, volume) class Volume_host_attribute(extensions.ExtensionDescriptor): """Expose host as an attribute of a volume.""" name = "VolumeHostAttribute" alias = "os-vol-host-attr" namespace = ("http://docs.openstack.org/volume/ext/" "volume_host_attribute/api/v1") updated = "2011-11-03T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeHostAttributeController() extension = extensions.ControllerExtension(self, 'volumes', controller) return [extension] def make_volume(elem): elem.set('{%s}host' % Volume_host_attribute.namespace, '%s:host' % Volume_host_attribute.alias) class VolumeHostAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume', selector='volume') make_volume(root) alias = Volume_host_attribute.alias namespace = Volume_host_attribute.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) class VolumeListHostAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volumes') elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes') make_volume(elem) alias = Volume_host_attribute.alias namespace = Volume_host_attribute.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) cinder-2014.1.5/cinder/api/contrib/volume_encryption_metadata.py0000664000567000056700000000637112540642606026034 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """The volume encryption metadata extension.""" from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder.volume import volume_types authorize = extensions.extension_authorizer('volume', 'volume_encryption_metadata') class VolumeEncryptionMetadataTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.make_flat_dict('encryption', selector='encryption') return xmlutil.MasterTemplate(root, 1) class VolumeEncryptionMetadataController(wsgi.Controller): """The volume encryption metadata API extension.""" def _get_volume_encryption_metadata(self, context, volume_id): return db.volume_encryption_metadata_get(context, volume_id) def _is_volume_type_encrypted(self, context, volume_id): volume_ref = db.volume_get(context, volume_id) volume_type_id = volume_ref['volume_type_id'] return volume_types.is_encrypted(context, volume_type_id) def _get_metadata(self, req, volume_id): context = req.environ['cinder.context'] authorize(context) if self._is_volume_type_encrypted(context, volume_id): return self._get_volume_encryption_metadata(context, volume_id) else: return { 'encryption_key_id': None, # Additional metadata defaults could go here. } @wsgi.serializers(xml=VolumeEncryptionMetadataTemplate) def index(self, req, volume_id): """Returns the encryption metadata for a given volume.""" return self._get_metadata(req, volume_id) @wsgi.serializers(xml=VolumeEncryptionMetadataTemplate) def show(self, req, volume_id, id): """Return a single encryption item.""" encryption_item = self.index(req, volume_id) if encryption_item is not None: return encryption_item[id] else: return None class Volume_encryption_metadata(extensions.ExtensionDescriptor): """Volume encryption metadata retrieval support.""" name = "VolumeEncryptionMetadata" alias = "os-volume-encryption-metadata" namespace = ("http://docs.openstack.org/volume/ext/" "os-volume-encryption-metadata/api/v1") updated = "2013-07-10T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension( 'encryption', VolumeEncryptionMetadataController(), parent=dict(member_name='volume', collection_name='volumes')) resources.append(res) return resources cinder-2014.1.5/cinder/api/contrib/volume_unmanage.py0000775000567000056700000000551412540642606023576 0ustar jenkinsjenkins00000000000000# 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. import webob from webob import exc from cinder.api import extensions from cinder.api.openstack import wsgi from cinder import exception from cinder.openstack.common import log as logging from cinder import volume LOG = logging.getLogger(__name__) authorize = extensions.extension_authorizer('volume', 'volume_unmanage') class VolumeUnmanageController(wsgi.Controller): def __init__(self, *args, **kwargs): super(VolumeUnmanageController, self).__init__(*args, **kwargs) self.volume_api = volume.API() @wsgi.response(202) @wsgi.action('os-unmanage') def unmanage(self, req, id, body): """Stop managing a volume. This action is very much like a delete, except that a different method (unmanage) is called on the Cinder driver. This has the effect of removing the volume from Cinder management without actually removing the backend storage object associated with it. There are no required parameters. A Not Found error is returned if the specified volume does not exist. A Bad Request error is returned if the specified volume is still attached to an instance. """ context = req.environ['cinder.context'] authorize(context) LOG.audit(_("Unmanage volume with id: %s"), id, context=context) try: vol = self.volume_api.get(context, id) self.volume_api.delete(context, vol, unmanage_only=True) except exception.NotFound: msg = _("Volume could not be found") raise exc.HTTPNotFound(explanation=msg) except exception.VolumeAttached: msg = _("Volume cannot be deleted while in attached state") raise exc.HTTPBadRequest(explanation=msg) return webob.Response(status_int=202) class Volume_unmanage(extensions.ExtensionDescriptor): """Enable volume unmanage operation.""" name = "VolumeUnmanage" alias = "os-volume-unmanage" namespace = "http://docs.openstack.org/volume/ext/volume-unmanage/api/v1.1" updated = "2012-05-31T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeUnmanageController() extension = extensions.ControllerExtension(self, 'volumes', controller) return [extension] cinder-2014.1.5/cinder/api/contrib/image_create.py0000664000567000056700000000204612540642603023010 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NTT. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """The Create Volume from Image extension.""" from cinder.api import extensions class Image_create(extensions.ExtensionDescriptor): """Allow creating a volume from an image in the Create Volume v1 API.""" name = "CreateVolumeExtension" alias = "os-image-create" namespace = "http://docs.openstack.org/volume/ext/image-create/api/v1" updated = "2012-08-13T00:00:00+00:00" cinder-2014.1.5/cinder/api/contrib/volume_type_encryption.py0000664000567000056700000002032712540642606025232 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """The volume types encryption extension.""" import webob from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder import exception from cinder import rpc from cinder.volume import volume_types authorize = extensions.extension_authorizer('volume', 'volume_type_encryption') CONTROL_LOCATION = ['front-end', 'back-end'] class VolumeTypeEncryptionTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.make_flat_dict('encryption', selector='encryption') return xmlutil.MasterTemplate(root, 1) class VolumeTypeEncryptionController(wsgi.Controller): """The volume type encryption API controller for the OpenStack API.""" def _get_volume_type_encryption(self, context, type_id): encryption_ref = db.volume_type_encryption_get(context, type_id) encryption_specs = {} if not encryption_ref: return encryption_specs for key, value in encryption_ref.iteritems(): encryption_specs[key] = value return encryption_specs def _check_type(self, context, type_id): try: volume_types.get_volume_type(context, type_id) except exception.NotFound as ex: raise webob.exc.HTTPNotFound(explanation=ex.msg) def _check_encryption_input(self, encryption, create=True): if 'key_size' in encryption.keys(): key_size = encryption['key_size'] if key_size is not None: if isinstance(key_size, (int, long)): if key_size < 0: msg = _('key_size must be non-negative') raise exception.InvalidInput(reason=msg) else: msg = _('key_size must be an integer') raise exception.InvalidInput(reason=msg) if create: msg = None if 'provider' not in encryption.keys(): msg = _('provider must be defined') elif 'control_location' not in encryption.keys(): msg = _('control_location must be defined') if msg is not None: raise exception.InvalidInput(reason=msg) # Check control location if 'control_location' in encryption.keys(): if encryption['control_location'] not in CONTROL_LOCATION: msg = _("Valid control location are: %s") % CONTROL_LOCATION raise exception.InvalidInput(reason=msg) def _encrypted_type_in_use(self, context, volume_type_id): volume_list = db.volume_type_encryption_volume_get(context, volume_type_id) # If there is at least one volume in the list # returned, this type is in use by a volume. if len(volume_list) > 0: return True else: return False @wsgi.serializers(xml=VolumeTypeEncryptionTemplate) def index(self, req, type_id): """Returns the encryption specs for a given volume type.""" context = req.environ['cinder.context'] authorize(context) self._check_type(context, type_id) return self._get_volume_type_encryption(context, type_id) @wsgi.serializers(xml=VolumeTypeEncryptionTemplate) def create(self, req, type_id, body=None): """Create encryption specs for an existing volume type.""" context = req.environ['cinder.context'] authorize(context) if self._encrypted_type_in_use(context, type_id): expl = _('Cannot create encryption specs. Volume type in use.') raise webob.exc.HTTPBadRequest(explanation=expl) if not self.is_valid_body(body, 'encryption'): expl = _('Create body is not valid.') raise webob.exc.HTTPBadRequest(explanation=expl) self._check_type(context, type_id) encryption_specs = self._get_volume_type_encryption(context, type_id) if encryption_specs: raise exception.VolumeTypeEncryptionExists(type_id=type_id) encryption_specs = body['encryption'] self._check_encryption_input(encryption_specs) db.volume_type_encryption_create(context, type_id, encryption_specs) notifier_info = dict(type_id=type_id, specs=encryption_specs) notifier = rpc.get_notifier('volumeTypeEncryption') notifier.info(context, 'volume_type_encryption.create', notifier_info) return body @wsgi.serializers(xml=VolumeTypeEncryptionTemplate) def update(self, req, type_id, id, body=None): """Update encryption specs for a given volume type.""" context = req.environ['cinder.context'] authorize(context) if not body: expl = _('Request body empty.') raise webob.exc.HTTPBadRequest(explanation=expl) if not self.is_valid_body(body, 'encryption'): expl = _('Update body is not valid. It must contain "encryption."') raise webob.exc.HTTPBadRequest(explanation=expl) if len(body) > 1: expl = _('Request body contains too many items.') raise webob.exc.HTTPBadRequest(explanation=expl) self._check_type(context, type_id) if self._encrypted_type_in_use(context, type_id): expl = _('Cannot update encryption specs. Volume type in use.') raise webob.exc.HTTPBadRequest(explanation=expl) encryption_specs = body['encryption'] self._check_encryption_input(encryption_specs, create=False) db.volume_type_encryption_update(context, type_id, encryption_specs) notifier_info = dict(type_id=type_id, id=id) notifier = rpc.get_notifier('volumeTypeEncryption') notifier.info(context, 'volume_type_encryption.update', notifier_info) return body @wsgi.serializers(xml=VolumeTypeEncryptionTemplate) def show(self, req, type_id, id): """Return a single encryption item.""" context = req.environ['cinder.context'] authorize(context) self._check_type(context, type_id) encryption_specs = self._get_volume_type_encryption(context, type_id) if id not in encryption_specs: raise webob.exc.HTTPNotFound() return {id: encryption_specs[id]} def delete(self, req, type_id, id): """Delete encryption specs for a given volume type.""" context = req.environ['cinder.context'] authorize(context) if self._encrypted_type_in_use(context, type_id): expl = _('Cannot delete encryption specs. Volume type in use.') raise webob.exc.HTTPBadRequest(explanation=expl) else: db.volume_type_encryption_delete(context, type_id) return webob.Response(status_int=202) class Volume_type_encryption(extensions.ExtensionDescriptor): """Encryption support for volume types.""" name = "VolumeTypeEncryption" alias = "encryption" namespace = ("http://docs.openstack.org/volume/ext/" "volume-type-encryption/api/v1") updated = "2013-07-01T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension( Volume_type_encryption.alias, VolumeTypeEncryptionController(), parent=dict(member_name='type', collection_name='types')) resources.append(res) return resources def get_controller_extensions(self): controller = VolumeTypeEncryptionController() extension = extensions.ControllerExtension(self, 'types', controller) return [extension] cinder-2014.1.5/cinder/api/contrib/scheduler_hints.py0000664000567000056700000000357112540642606023575 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # 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. import webob.exc from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api.v2 import volumes from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class SchedulerHintsController(wsgi.Controller): @staticmethod def _extract_scheduler_hints(body): hints = {} attr = '%s:scheduler_hints' % Scheduler_hints.alias try: if attr in body: hints.update(body[attr]) except ValueError: msg = _("Malformed scheduler_hints attribute") raise webob.exc.HTTPBadRequest(explanation=msg) return hints @wsgi.extends def create(self, req, body): hints = self._extract_scheduler_hints(body) if 'volume' in body: body['volume']['scheduler_hints'] = hints yield class Scheduler_hints(extensions.ExtensionDescriptor): """Pass arbitrary key/value pairs to the scheduler.""" name = "SchedulerHints" alias = "OS-SCH-HNT" namespace = volumes.SCHEDULER_HINTS_NAMESPACE updated = "2013-04-18T00:00:00+00:00" def get_controller_extensions(self): controller = SchedulerHintsController() ext = extensions.ControllerExtension(self, 'volumes', controller) return [ext] cinder-2014.1.5/cinder/api/contrib/types_manage.py0000664000567000056700000001126312540642606023063 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # # 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. """The volume types manage extension.""" import six import webob from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api.v1 import types from cinder.api.views import types as views_types from cinder import exception from cinder import rpc from cinder.volume import volume_types authorize = extensions.extension_authorizer('volume', 'types_manage') class VolumeTypesManageController(wsgi.Controller): """The volume types API controller for the OpenStack API.""" _view_builder_class = views_types.ViewBuilder def _notify_volume_type_error(self, context, method, payload): rpc.get_notifier('volumeType').error(context, method, payload) @wsgi.action("create") @wsgi.serializers(xml=types.VolumeTypeTemplate) def _create(self, req, body): """Creates a new volume type.""" context = req.environ['cinder.context'] authorize(context) if not self.is_valid_body(body, 'volume_type'): raise webob.exc.HTTPBadRequest() vol_type = body['volume_type'] name = vol_type.get('name', None) specs = vol_type.get('extra_specs', {}) if name is None or name == "": raise webob.exc.HTTPBadRequest() try: volume_types.create(context, name, specs) vol_type = volume_types.get_volume_type_by_name(context, name) notifier_info = dict(volume_types=vol_type) rpc.get_notifier('volumeType').info(context, 'volume_type.create', notifier_info) except exception.VolumeTypeExists as err: notifier_err = dict(volume_types=vol_type, error_message=err) self._notify_volume_type_error(context, 'volume_type.create', notifier_err) raise webob.exc.HTTPConflict(explanation=six.text_type(err)) except exception.NotFound as err: notifier_err = dict(volume_types=vol_type, error_message=err) self._notify_volume_type_error(context, 'volume_type.create', notifier_err) raise webob.exc.HTTPNotFound() return self._view_builder.show(req, vol_type) @wsgi.action("delete") def _delete(self, req, id): """Deletes an existing volume type.""" context = req.environ['cinder.context'] authorize(context) try: vol_type = volume_types.get_volume_type(context, id) volume_types.destroy(context, vol_type['id']) notifier_info = dict(volume_types=vol_type) rpc.get_notifier('volumeType').info(context, 'volume_type.delete', notifier_info) except exception.VolumeTypeInUse as err: notifier_err = dict(id=id, error_message=err) self._notify_volume_type_error(context, 'volume_type.delete', notifier_err) msg = _('Target volume type is still in use.') raise webob.exc.HTTPBadRequest(explanation=msg) except exception.NotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_volume_type_error(context, 'volume_type.delete', notifier_err) raise webob.exc.HTTPNotFound() return webob.Response(status_int=202) class Types_manage(extensions.ExtensionDescriptor): """Types manage support.""" name = "TypesManage" alias = "os-types-manage" namespace = "http://docs.openstack.org/volume/ext/types-manage/api/v1" updated = "2011-08-24T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeTypesManageController() extension = extensions.ControllerExtension(self, 'types', controller) return [extension] cinder-2014.1.5/cinder/api/contrib/availability_zones.py0000664000567000056700000000477612540642603024307 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. from cinder.api import extensions from cinder.api.openstack import wsgi import cinder.api.views.availability_zones from cinder.api import xmlutil import cinder.exception import cinder.volume.api def make_availability_zone(elem): elem.set('name', 'zoneName') zoneStateElem = xmlutil.SubTemplateElement(elem, 'zoneState', selector='zoneState') zoneStateElem.set('available') class ListTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('availabilityZones') elem = xmlutil.SubTemplateElement(root, 'availabilityZone', selector='availabilityZoneInfo') make_availability_zone(elem) alias = Availability_zones.alias namespace = Availability_zones.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class Controller(wsgi.Controller): _view_builder_class = cinder.api.views.availability_zones.ViewBuilder def __init__(self, *args, **kwargs): super(Controller, self).__init__(*args, **kwargs) self.volume_api = cinder.volume.api.API() @wsgi.serializers(xml=ListTemplate) def index(self, req): """Describe all known availability zones.""" azs = self.volume_api.list_availability_zones() return self._view_builder.list(req, azs) class Availability_zones(extensions.ExtensionDescriptor): """Describe Availability Zones.""" name = 'AvailabilityZones' alias = 'os-availability-zone' namespace = ('http://docs.openstack.org/volume/ext/' 'os-availability-zone/api/v1') updated = '2013-06-27T00:00:00+00:00' def get_resources(self): controller = Controller() res = extensions.ResourceExtension(Availability_zones.alias, controller) return [res] cinder-2014.1.5/cinder/api/contrib/hosts.py0000664000567000056700000002372012540642606021550 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """The hosts admin extension.""" from oslo.config import cfg import webob.exc from xml.parsers import expat from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import utils from cinder.volume import api as volume_api CONF = cfg.CONF LOG = logging.getLogger(__name__) authorize = extensions.extension_authorizer('volume', 'hosts') class HostIndexTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('hosts') elem = xmlutil.SubTemplateElement(root, 'host', selector='hosts') elem.set('service-status') elem.set('service') elem.set('zone') elem.set('service-state') elem.set('host_name') elem.set('last-update') return xmlutil.MasterTemplate(root, 1) class HostUpdateTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('host') root.set('host') root.set('status') return xmlutil.MasterTemplate(root, 1) class HostActionTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('host') root.set('host') return xmlutil.MasterTemplate(root, 1) class HostShowTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('host') elem = xmlutil.make_flat_dict('resource', selector='host', subselector='resource') root.append(elem) return xmlutil.MasterTemplate(root, 1) class HostDeserializer(wsgi.XMLDeserializer): def default(self, string): try: node = utils.safe_minidom_parse_string(string) except expat.ExpatError: msg = _("cannot understand XML") raise exception.MalformedRequestBody(reason=msg) updates = {} for child in node.childNodes[0].childNodes: updates[child.tagName] = self.extract_text(child) return dict(body=updates) def _list_hosts(req, service=None): """Returns a summary list of hosts.""" curr_time = timeutils.utcnow() context = req.environ['cinder.context'] services = db.service_get_all(context, False) zone = '' if 'zone' in req.GET: zone = req.GET['zone'] if zone: services = [s for s in services if s['availability_zone'] == zone] hosts = [] for host in services: delta = curr_time - (host['updated_at'] or host['created_at']) alive = abs(utils.total_seconds(delta)) <= CONF.service_down_time status = (alive and "available") or "unavailable" active = 'enabled' if host['disabled']: active = 'disabled' LOG.debug('status, active and update: %s, %s, %s' % (status, active, host['updated_at'])) hosts.append({'host_name': host['host'], 'service': host['topic'], 'zone': host['availability_zone'], 'service-status': status, 'service-state': active, 'last-update': host['updated_at']}) if service: hosts = [host for host in hosts if host["service"] == service] return hosts def check_host(fn): """Makes sure that the host exists.""" def wrapped(self, req, id, service=None, *args, **kwargs): listed_hosts = _list_hosts(req, service) hosts = [h["host_name"] for h in listed_hosts] if id in hosts: return fn(self, req, id, *args, **kwargs) else: message = _("Host '%s' could not be found.") % id raise webob.exc.HTTPNotFound(explanation=message) return wrapped class HostController(wsgi.Controller): """The Hosts API controller for the OpenStack API.""" def __init__(self): self.api = volume_api.HostAPI() super(HostController, self).__init__() @wsgi.serializers(xml=HostIndexTemplate) def index(self, req): authorize(req.environ['cinder.context']) return {'hosts': _list_hosts(req)} @wsgi.serializers(xml=HostUpdateTemplate) @wsgi.deserializers(xml=HostDeserializer) @check_host def update(self, req, id, body): authorize(req.environ['cinder.context']) update_values = {} for raw_key, raw_val in body.iteritems(): key = raw_key.lower().strip() val = raw_val.lower().strip() if key == "status": if val in ("enable", "disable"): update_values['status'] = val.startswith("enable") else: explanation = _("Invalid status: '%s'") % raw_val raise webob.exc.HTTPBadRequest(explanation=explanation) else: explanation = _("Invalid update setting: '%s'") % raw_key raise webob.exc.HTTPBadRequest(explanation=explanation) update_setters = {'status': self._set_enabled_status} result = {} for key, value in update_values.iteritems(): result.update(update_setters[key](req, id, value)) return result def _set_enabled_status(self, req, host, enabled): """Sets the specified host's ability to accept new volumes.""" context = req.environ['cinder.context'] state = "enabled" if enabled else "disabled" LOG.audit(_("Setting host %(host)s to %(state)s."), {'host': host, 'state': state}) result = self.api.set_host_enabled(context, host=host, enabled=enabled) if result not in ("enabled", "disabled"): # An error message was returned raise webob.exc.HTTPBadRequest(explanation=result) return {"host": host, "status": result} @wsgi.serializers(xml=HostShowTemplate) def show(self, req, id): """Shows the volume usage info given by hosts. :param context: security context :param host: hostname :returns: expected to use HostShowTemplate. ex.:: {'host': {'resource':D},..} D: {'host': 'hostname','project': 'admin', 'volume_count': 1, 'total_volume_gb': 2048} """ host = id context = req.environ['cinder.context'] if not context.is_admin: msg = _("Describe-resource is admin only functionality") raise webob.exc.HTTPForbidden(explanation=msg) try: host_ref = db.service_get_by_host_and_topic(context, host, CONF.volume_topic) except exception.ServiceNotFound: raise webob.exc.HTTPNotFound(explanation=_("Host not found")) # Getting total available/used resource # TODO(jdg): Add summary info for Snapshots volume_refs = db.volume_get_all_by_host(context, host_ref['host']) (count, sum) = db.volume_data_get_for_host(context, host_ref['host']) snap_count_total = 0 snap_sum_total = 0 resources = [{'resource': {'host': host, 'project': '(total)', 'volume_count': str(count), 'total_volume_gb': str(sum), 'snapshot_count': str(snap_count_total), 'total_snapshot_gb': str(snap_sum_total)}}] project_ids = [v['project_id'] for v in volume_refs] project_ids = list(set(project_ids)) for project_id in project_ids: (count, sum) = db.volume_data_get_for_project(context, project_id) (snap_count, snap_sum) = db.snapshot_data_get_for_project( context, project_id) resources.append( {'resource': {'host': host, 'project': project_id, 'volume_count': str(count), 'total_volume_gb': str(sum), 'snapshot_count': str(snap_count), 'total_snapshot_gb': str(snap_sum)}}) snap_count_total += int(snap_count) snap_sum_total += int(snap_sum) resources[0]['resource']['snapshot_count'] = str(snap_count_total) resources[0]['resource']['total_snapshot_gb'] = str(snap_sum_total) return {"host": resources} class Hosts(extensions.ExtensionDescriptor): """Admin-only host administration.""" name = "Hosts" alias = "os-hosts" namespace = "http://docs.openstack.org/volume/ext/hosts/api/v1.1" updated = "2011-06-29T00:00:00+00:00" def get_resources(self): resources = [extensions.ResourceExtension('os-hosts', HostController(), collection_actions={ 'update': 'PUT'}, member_actions={ 'startup': 'GET', 'shutdown': 'GET', 'reboot': 'GET'})] return resources cinder-2014.1.5/cinder/api/contrib/snapshot_actions.py0000664000567000056700000001015212540642606023762 0ustar jenkinsjenkins00000000000000# Copyright 2013, Red Hat, Inc. # # 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. import webob from cinder.api import extensions from cinder.api.openstack import wsgi from cinder import db from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) def authorize(context, action_name): action = 'snapshot_actions:%s' % action_name extensions.extension_authorizer('snapshot', action)(context) class SnapshotActionsController(wsgi.Controller): def __init__(self, *args, **kwargs): super(SnapshotActionsController, self).__init__(*args, **kwargs) LOG.debug("SnapshotActionsController initialized") @wsgi.action('os-update_snapshot_status') def _update_snapshot_status(self, req, id, body): """Update database fields related to status of a snapshot. Intended for creation of snapshots, so snapshot state must start as 'creating' and be changed to 'available', 'creating', or 'error'. """ context = req.environ['cinder.context'] authorize(context, 'update_snapshot_status') LOG.debug("body: %s" % body) try: status = body['os-update_snapshot_status']['status'] except KeyError: msg = _("'status' must be specified.") raise webob.exc.HTTPBadRequest(explanation=msg) # Allowed state transitions status_map = {'creating': ['creating', 'available', 'error'], 'deleting': ['deleting', 'error_deleting']} current_snapshot = db.snapshot_get(context, id) if current_snapshot['status'] not in status_map: msg = _("Snapshot status %(cur)s not allowed for " "update_snapshot_status") % { 'cur': current_snapshot['status']} raise webob.exc.HTTPBadRequest(explanation=msg) if status not in status_map[current_snapshot['status']]: msg = _("Provided snapshot status %(provided)s not allowed for " "snapshot with status %(current)s.") % \ {'provided': status, 'current': current_snapshot['status']} raise webob.exc.HTTPBadRequest(explanation=msg) update_dict = {'id': id, 'status': status} progress = body['os-update_snapshot_status'].get('progress', None) if progress: # This is expected to be a string like '73%' msg = _('progress must be an integer percentage') try: integer = int(progress[:-1]) except ValueError: raise webob.exc.HTTPBadRequest(explanation=msg) if integer < 0 or integer > 100 or progress[-1] != '%': raise webob.exc.HTTPBadRequest(explanation=msg) update_dict.update({'progress': progress}) LOG.info("Updating snapshot %(id)s with info %(dict)s" % {'id': id, 'dict': update_dict}) db.snapshot_update(context, id, update_dict) return webob.Response(status_int=202) class Snapshot_actions(extensions.ExtensionDescriptor): """Enable snapshot manager actions.""" name = "SnapshotActions" alias = "os-snapshot-actions" namespace = \ "http://docs.openstack.org/volume/ext/snapshot-actions/api/v1.1" updated = "2013-07-16T00:00:00+00:00" def get_controller_extensions(self): controller = SnapshotActionsController() extension = extensions.ControllerExtension(self, 'snapshots', controller) return [extension] cinder-2014.1.5/cinder/api/contrib/used_limits.py0000664000567000056700000000373112540642606022731 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from cinder.api import extensions from cinder.api.openstack import wsgi from cinder import quota QUOTAS = quota.QUOTAS authorize = extensions.extension_authorizer('limits', 'used_limits') class UsedLimitsController(wsgi.Controller): @wsgi.extends def index(self, req, resp_obj): context = req.environ['cinder.context'] authorize(context) quotas = QUOTAS.get_project_quotas(context, context.project_id, usages=True) quota_map = { 'totalVolumesUsed': 'volumes', 'totalGigabytesUsed': 'gigabytes', 'totalSnapshotsUsed': 'snapshots', } used_limits = {} for display_name, quota in quota_map.iteritems(): if quota in quotas: used_limits[display_name] = quotas[quota]['in_use'] resp_obj.obj['limits']['absolute'].update(used_limits) class Used_limits(extensions.ExtensionDescriptor): """Provide data on limited resources that are being used.""" name = "UsedLimits" alias = 'os-used-limits' namespace = "http://docs.openstack.org/volume/ext/used-limits/api/v1.1" updated = "2013-10-03T00:00:00+00:00" def get_controller_extensions(self): controller = UsedLimitsController() extension = extensions.ControllerExtension(self, 'limits', controller) return [extension] cinder-2014.1.5/cinder/api/contrib/volume_transfer.py0000664000567000056700000002056112540642606023623 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import webob from webob import exc from cinder.api import common from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api.views import transfers as transfer_view from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder import transfer as transferAPI from cinder import utils LOG = logging.getLogger(__name__) def make_transfer(elem): elem.set('id') elem.set('volume_id') elem.set('created_at') elem.set('name') elem.set('auth_key') class TransferTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('transfer', selector='transfer') make_transfer(root) alias = Volume_transfer.alias namespace = Volume_transfer.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class TransfersTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('transfers') elem = xmlutil.SubTemplateElement(root, 'transfer', selector='transfers') make_transfer(elem) alias = Volume_transfer.alias namespace = Volume_transfer.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class CreateDeserializer(wsgi.MetadataXMLDeserializer): def default(self, string): dom = utils.safe_minidom_parse_string(string) transfer = self._extract_transfer(dom) return {'body': {'transfer': transfer}} def _extract_transfer(self, node): transfer = {} transfer_node = self.find_first_child_named(node, 'transfer') attributes = ['volume_id', 'name'] for attr in attributes: if transfer_node.getAttribute(attr): transfer[attr] = transfer_node.getAttribute(attr) return transfer class AcceptDeserializer(wsgi.MetadataXMLDeserializer): def default(self, string): dom = utils.safe_minidom_parse_string(string) transfer = self._extract_transfer(dom) return {'body': {'accept': transfer}} def _extract_transfer(self, node): transfer = {} transfer_node = self.find_first_child_named(node, 'accept') attributes = ['auth_key'] for attr in attributes: if transfer_node.getAttribute(attr): transfer[attr] = transfer_node.getAttribute(attr) return transfer class VolumeTransferController(wsgi.Controller): """The Volume Transfer API controller for the OpenStack API.""" _view_builder_class = transfer_view.ViewBuilder def __init__(self): self.transfer_api = transferAPI.API() super(VolumeTransferController, self).__init__() @wsgi.serializers(xml=TransferTemplate) def show(self, req, id): """Return data about active transfers.""" context = req.environ['cinder.context'] try: transfer = self.transfer_api.get(context, transfer_id=id) except exception.TransferNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) return self._view_builder.detail(req, transfer) @wsgi.serializers(xml=TransfersTemplate) def index(self, req): """Returns a summary list of transfers.""" return self._get_transfers(req, is_detail=False) @wsgi.serializers(xml=TransfersTemplate) def detail(self, req): """Returns a detailed list of transfers.""" return self._get_transfers(req, is_detail=True) def _get_transfers(self, req, is_detail): """Returns a list of transfers, transformed through view builder.""" context = req.environ['cinder.context'] LOG.debug(_('Listing volume transfers')) transfers = self.transfer_api.get_all(context) limited_list = common.limited(transfers, req) if is_detail: transfers = self._view_builder.detail_list(req, limited_list) else: transfers = self._view_builder.summary_list(req, limited_list) return transfers @wsgi.response(202) @wsgi.serializers(xml=TransferTemplate) @wsgi.deserializers(xml=CreateDeserializer) def create(self, req, body): """Create a new volume transfer.""" LOG.debug(_('Creating new volume transfer %s'), body) if not self.is_valid_body(body, 'transfer'): raise exc.HTTPBadRequest() context = req.environ['cinder.context'] try: transfer = body['transfer'] volume_id = transfer['volume_id'] except KeyError: msg = _("Incorrect request body format") raise exc.HTTPBadRequest(explanation=msg) name = transfer.get('name', None) LOG.audit(_("Creating transfer of volume %s"), volume_id, context=context) try: new_transfer = self.transfer_api.create(context, volume_id, name) except exception.InvalidVolume as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.VolumeNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) transfer = self._view_builder.create(req, dict(new_transfer.iteritems())) return transfer @wsgi.response(202) @wsgi.serializers(xml=TransferTemplate) @wsgi.deserializers(xml=AcceptDeserializer) def accept(self, req, id, body): """Accept a new volume transfer.""" transfer_id = id LOG.debug(_('Accepting volume transfer %s'), transfer_id) if not self.is_valid_body(body, 'accept'): raise exc.HTTPBadRequest() context = req.environ['cinder.context'] try: accept = body['accept'] auth_key = accept['auth_key'] except KeyError: msg = _("Incorrect request body format") raise exc.HTTPBadRequest(explanation=msg) LOG.audit(_("Accepting transfer %s"), transfer_id, context=context) try: accepted_transfer = self.transfer_api.accept(context, transfer_id, auth_key) except exception.VolumeSizeExceedsAvailableQuota as error: raise exc.HTTPRequestEntityTooLarge( explanation=error.msg, headers={'Retry-After': 0}) except exception.InvalidVolume as error: raise exc.HTTPBadRequest(explanation=error.msg) transfer = \ self._view_builder.summary(req, dict(accepted_transfer.iteritems())) return transfer def delete(self, req, id): """Delete a transfer.""" context = req.environ['cinder.context'] LOG.audit(_("Delete transfer with id: %s"), id, context=context) try: self.transfer_api.delete(context, transfer_id=id) except exception.TransferNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) return webob.Response(status_int=202) class Volume_transfer(extensions.ExtensionDescriptor): """Volume transfer management support.""" name = "VolumeTransfer" alias = "os-volume-transfer" namespace = "http://docs.openstack.org/volume/ext/volume-transfer/" + \ "api/v1.1" updated = "2013-05-29T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension(Volume_transfer.alias, VolumeTransferController(), collection_actions={'detail': 'GET'}, member_actions={'accept': 'POST'}) resources.append(res) return resources cinder-2014.1.5/cinder/api/contrib/extended_snapshot_attributes.py0000664000567000056700000001025112540642606026370 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. """The Extended Snapshot Attributes API extension.""" from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder.openstack.common import log as logging from cinder import volume LOG = logging.getLogger(__name__) authorize = extensions.soft_extension_authorizer( 'volume', 'extended_snapshot_attributes') class ExtendedSnapshotAttributesController(wsgi.Controller): def __init__(self, *args, **kwargs): super(ExtendedSnapshotAttributesController, self).__init__(*args, **kwargs) self.volume_api = volume.API() def _get_snapshots(self, context): snapshots = self.volume_api.get_all_snapshots(context) rval = dict((snapshot['id'], snapshot) for snapshot in snapshots) return rval def _extend_snapshot(self, req, resp_snap): db_snap = req.cached_resource_by_id(resp_snap['id']) for attr in ['project_id', 'progress']: key = "%s:%s" % (Extended_snapshot_attributes.alias, attr) resp_snap[key] = db_snap[attr] @wsgi.extends def show(self, req, resp_obj, id): context = req.environ['cinder.context'] if authorize(context): # Attach our slave template to the response object resp_obj.attach(xml=ExtendedSnapshotAttributeTemplate()) snapshot = resp_obj.obj['snapshot'] self._extend_snapshot(req, snapshot) @wsgi.extends def detail(self, req, resp_obj): context = req.environ['cinder.context'] if authorize(context): # Attach our slave template to the response object resp_obj.attach(xml=ExtendedSnapshotAttributesTemplate()) for snapshot in list(resp_obj.obj['snapshots']): self._extend_snapshot(req, snapshot) class Extended_snapshot_attributes(extensions.ExtensionDescriptor): """Extended SnapshotAttributes support.""" name = "ExtendedSnapshotAttributes" alias = "os-extended-snapshot-attributes" namespace = ("http://docs.openstack.org/volume/ext/" "extended_snapshot_attributes/api/v1") updated = "2012-06-19T00:00:00+00:00" def get_controller_extensions(self): controller = ExtendedSnapshotAttributesController() extension = extensions.ControllerExtension(self, 'snapshots', controller) return [extension] def make_snapshot(elem): elem.set('{%s}project_id' % Extended_snapshot_attributes.namespace, '%s:project_id' % Extended_snapshot_attributes.alias) elem.set('{%s}progress' % Extended_snapshot_attributes.namespace, '%s:progress' % Extended_snapshot_attributes.alias) class ExtendedSnapshotAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('snapshot', selector='snapshot') make_snapshot(root) alias = Extended_snapshot_attributes.alias namespace = Extended_snapshot_attributes.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) class ExtendedSnapshotAttributesTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('snapshots') elem = xmlutil.SubTemplateElement(root, 'snapshot', selector='snapshots') make_snapshot(elem) alias = Extended_snapshot_attributes.alias namespace = Extended_snapshot_attributes.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) cinder-2014.1.5/cinder/api/contrib/quotas.py0000664000567000056700000001267412540642606021732 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import webob from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder.db.sqlalchemy import api as sqlalchemy_api from cinder import exception from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import strutils from cinder import quota QUOTAS = quota.QUOTAS NON_QUOTA_KEYS = ['tenant_id', 'id'] authorize_update = extensions.extension_authorizer('volume', 'quotas:update') authorize_show = extensions.extension_authorizer('volume', 'quotas:show') authorize_delete = extensions.extension_authorizer('volume', 'quotas:delete') class QuotaTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('quota_set', selector='quota_set') root.set('id') for resource in QUOTAS.resources: elem = xmlutil.SubTemplateElement(root, resource) elem.text = resource return xmlutil.MasterTemplate(root, 1) class QuotaSetsController(wsgi.Controller): def _format_quota_set(self, project_id, quota_set): """Convert the quota object to a result dict.""" quota_set['id'] = str(project_id) return dict(quota_set=quota_set) def _validate_quota_limit(self, limit): try: limit = int(limit) except ValueError: msg = _("Quota limit must be specified as an integer value.") raise webob.exc.HTTPBadRequest(explanation=msg) # NOTE: -1 is a flag value for unlimited if limit < -1: msg = _("Quota limit must be -1 or greater.") raise webob.exc.HTTPBadRequest(explanation=msg) return limit def _get_quotas(self, context, id, usages=False): values = QUOTAS.get_project_quotas(context, id, usages=usages) if usages: return values else: return dict((k, v['limit']) for k, v in values.items()) @wsgi.serializers(xml=QuotaTemplate) def show(self, req, id): context = req.environ['cinder.context'] authorize_show(context) params = req.params if not hasattr(params, '__call__') and 'usage' in params: usage = strutils.bool_from_string(params['usage']) else: usage = False try: sqlalchemy_api.authorize_project_context(context, id) except exception.NotAuthorized: raise webob.exc.HTTPForbidden() return self._format_quota_set(id, self._get_quotas(context, id, usage)) @wsgi.serializers(xml=QuotaTemplate) def update(self, req, id, body): context = req.environ['cinder.context'] authorize_update(context) project_id = id if not self.is_valid_body(body, 'quota_set'): msg = (_("Missing required element quota_set in request body.")) raise webob.exc.HTTPBadRequest(explanation=msg) bad_keys = [] for key, value in body['quota_set'].items(): if (key not in QUOTAS and key not in NON_QUOTA_KEYS): bad_keys.append(key) continue if len(bad_keys) > 0: msg = _("Bad key(s) in quota set: %s") % ",".join(bad_keys) raise webob.exc.HTTPBadRequest(explanation=msg) for key in body['quota_set'].keys(): if key in NON_QUOTA_KEYS: continue value = self._validate_quota_limit(body['quota_set'][key]) try: db.quota_update(context, project_id, key, value) except exception.ProjectQuotaNotFound: db.quota_create(context, project_id, key, value) except exception.AdminRequired: raise webob.exc.HTTPForbidden() return {'quota_set': self._get_quotas(context, id)} @wsgi.serializers(xml=QuotaTemplate) def defaults(self, req, id): context = req.environ['cinder.context'] authorize_show(context) return self._format_quota_set(id, QUOTAS.get_defaults(context)) @wsgi.serializers(xml=QuotaTemplate) def delete(self, req, id): context = req.environ['cinder.context'] authorize_delete(context) try: db.quota_destroy_all_by_project(context, id) except exception.AdminRequired: raise webob.exc.HTTPForbidden() class Quotas(extensions.ExtensionDescriptor): """Quota management support.""" name = "Quotas" alias = "os-quota-sets" namespace = "http://docs.openstack.org/volume/ext/quotas-sets/api/v1.1" updated = "2011-08-08T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension('os-quota-sets', QuotaSetsController(), member_actions={'defaults': 'GET'}) resources.append(res) return resources cinder-2014.1.5/cinder/api/contrib/volume_tenant_attribute.py0000664000567000056700000000661412540642606025356 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import volume authorize = extensions.soft_extension_authorizer('volume', 'volume_tenant_attribute') class VolumeTenantAttributeController(wsgi.Controller): def __init__(self, *args, **kwargs): super(VolumeTenantAttributeController, self).__init__(*args, **kwargs) self.volume_api = volume.API() def _add_volume_tenant_attribute(self, context, req, resp_volume): db_volume = req.cached_resource_by_id(resp_volume['id']) key = "%s:tenant_id" % Volume_tenant_attribute.alias resp_volume[key] = db_volume['project_id'] @wsgi.extends def show(self, req, resp_obj, id): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeTenantAttributeTemplate()) volume = resp_obj.obj['volume'] self._add_volume_tenant_attribute(context, req, volume) @wsgi.extends def detail(self, req, resp_obj): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeListTenantAttributeTemplate()) for volume in list(resp_obj.obj['volumes']): self._add_volume_tenant_attribute(context, req, volume) class Volume_tenant_attribute(extensions.ExtensionDescriptor): """Expose the internal project_id as an attribute of a volume.""" name = "VolumeTenantAttribute" alias = "os-vol-tenant-attr" namespace = ("http://docs.openstack.org/volume/ext/" "volume_tenant_attribute/api/v1") updated = "2011-11-03T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeTenantAttributeController() extension = extensions.ControllerExtension(self, 'volumes', controller) return [extension] def make_volume(elem): elem.set('{%s}tenant_id' % Volume_tenant_attribute.namespace, '%s:tenant_id' % Volume_tenant_attribute.alias) class VolumeTenantAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume', selector='volume') make_volume(root) alias = Volume_tenant_attribute.alias namespace = Volume_tenant_attribute.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) class VolumeListTenantAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volumes') elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes') make_volume(elem) alias = Volume_tenant_attribute.alias namespace = Volume_tenant_attribute.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) cinder-2014.1.5/cinder/api/contrib/qos_specs_manage.py0000664000567000056700000004432512540642606023723 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 eBay Inc. # Copyright (c) 2013 OpenStack Foundation # # 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. """The QoS specs extension""" import six import webob from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api.views import qos_specs as view_qos_specs from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import rpc from cinder.volume import qos_specs LOG = logging.getLogger(__name__) authorize = extensions.extension_authorizer('volume', 'qos_specs_manage') def make_qos_specs(elem): elem.set('id') elem.set('name') elem.set('consumer') elem.append(SpecsTemplate()) def make_associations(elem): elem.set('association_type') elem.set('name') elem.set('id') class SpecsTemplate(xmlutil.TemplateBuilder): def construct(self): return xmlutil.MasterTemplate(xmlutil.make_flat_dict('specs'), 1) class QoSSpecsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('qos_specs') elem = xmlutil.SubTemplateElement(root, 'qos_spec', selector='qos_specs') make_qos_specs(elem) return xmlutil.MasterTemplate(root, 1) class AssociationsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('qos_associations') elem = xmlutil.SubTemplateElement(root, 'associations', selector='qos_associations') make_associations(elem) return xmlutil.MasterTemplate(root, 1) def _check_specs(context, specs_id): try: qos_specs.get_qos_specs(context, specs_id) except exception.NotFound as ex: raise webob.exc.HTTPNotFound(explanation=six.text_type(ex)) class QoSSpecsController(wsgi.Controller): """The volume type extra specs API controller for the OpenStack API.""" _view_builder_class = view_qos_specs.ViewBuilder @staticmethod def _notify_qos_specs_error(context, method, payload): rpc.get_notifier('QoSSpecs').error(context, method, payload) @wsgi.serializers(xml=QoSSpecsTemplate) def index(self, req): """Returns the list of qos_specs.""" context = req.environ['cinder.context'] authorize(context) specs = qos_specs.get_all_specs(context) return self._view_builder.summary_list(req, specs) @wsgi.serializers(xml=QoSSpecsTemplate) def create(self, req, body=None): context = req.environ['cinder.context'] authorize(context) if not self.is_valid_body(body, 'qos_specs'): raise webob.exc.HTTPBadRequest() specs = body['qos_specs'] name = specs.get('name', None) if name is None or name == "": msg = _("Please specify a name for QoS specs.") raise webob.exc.HTTPBadRequest(explanation=msg) try: qos_specs.create(context, name, specs) spec = qos_specs.get_qos_specs_by_name(context, name) notifier_info = dict(name=name, specs=specs) rpc.get_notifier('QoSSpecs').info(context, 'QoSSpecs.create', notifier_info) except exception.InvalidInput as err: notifier_err = dict(name=name, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.create', notifier_err) raise webob.exc.HTTPBadRequest(explanation=six.text_type(err)) except exception.QoSSpecsExists as err: notifier_err = dict(name=name, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.create', notifier_err) raise webob.exc.HTTPConflict(explanation=six.text_type(err)) except exception.QoSSpecsCreateFailed as err: notifier_err = dict(name=name, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.create', notifier_err) raise webob.exc.HTTPInternalServerError( explanation=six.text_type(err)) return self._view_builder.detail(req, spec) @wsgi.serializers(xml=QoSSpecsTemplate) def update(self, req, id, body=None): context = req.environ['cinder.context'] authorize(context) if not self.is_valid_body(body, 'qos_specs'): raise webob.exc.HTTPBadRequest() specs = body['qos_specs'] try: qos_specs.update(context, id, specs) notifier_info = dict(id=id, specs=specs) rpc.get_notifier('QoSSpecs').info(context, 'qos_specs.update', notifier_info) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.update', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.InvalidQoSSpecs as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.update', notifier_err) raise webob.exc.HTTPBadRequest(explanation=six.text_type(err)) except exception.QoSSpecsUpdateFailed as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.update', notifier_err) raise webob.exc.HTTPInternalServerError( explanation=six.text_type(err)) return body @wsgi.serializers(xml=QoSSpecsTemplate) def show(self, req, id): """Return a single qos spec item.""" context = req.environ['cinder.context'] authorize(context) try: spec = qos_specs.get_qos_specs(context, id) except exception.QoSSpecsNotFound as err: raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) return self._view_builder.detail(req, spec) def delete(self, req, id): """Deletes an existing qos specs.""" context = req.environ['cinder.context'] authorize(context) force = req.params.get('force', None) #convert string to bool type in strict manner force = strutils.bool_from_string(force) LOG.debug("Delete qos_spec: %(id)s, force: %(force)s" % {'id': id, 'force': force}) try: qos_specs.delete(context, id, force) notifier_info = dict(id=id) rpc.get_notifier('QoSSpecs').info(context, 'qos_specs.delete', notifier_info) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.delete', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.QoSSpecsInUse as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.delete', notifier_err) if force: msg = _('Failed to disassociate qos specs.') raise webob.exc.HTTPInternalServerError(explanation=msg) msg = _('Qos specs still in use.') raise webob.exc.HTTPBadRequest(explanation=msg) return webob.Response(status_int=202) def delete_keys(self, req, id, body): """Deletes specified keys in qos specs.""" context = req.environ['cinder.context'] authorize(context) if not (body and 'keys' in body and isinstance(body.get('keys'), list)): raise webob.exc.HTTPBadRequest() keys = body['keys'] LOG.debug("Delete_key spec: %(id)s, keys: %(keys)s" % {'id': id, 'keys': keys}) try: qos_specs.delete_keys(context, id, keys) notifier_info = dict(id=id) rpc.get_notifier().info(context, 'qos_specs.delete_keys', notifier_info) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.delete_keys', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.QoSSpecsKeyNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.delete_keys', notifier_err) raise webob.exc.HTTPBadRequest(explanation=six.text_type(err)) return webob.Response(status_int=202) @wsgi.serializers(xml=AssociationsTemplate) def associations(self, req, id): """List all associations of given qos specs.""" context = req.environ['cinder.context'] authorize(context) LOG.debug("Get associations for qos_spec id: %s" % id) try: associates = qos_specs.get_associations(context, id) notifier_info = dict(id=id) rpc.get_notifier('QoSSpecs').info(context, 'qos_specs.associations', notifier_info) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.associations', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.CinderException as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.associations', notifier_err) raise webob.exc.HTTPInternalServerError( explanation=six.text_type(err)) return self._view_builder.associations(req, associates) def associate(self, req, id): """Associate a qos specs with a volume type.""" context = req.environ['cinder.context'] authorize(context) type_id = req.params.get('vol_type_id', None) if not type_id: msg = _('Volume Type id must not be None.') notifier_err = dict(id=id, error_message=msg) self._notify_qos_specs_error(context, 'qos_specs.delete', notifier_err) raise webob.exc.HTTPBadRequest(explanation=msg) LOG.debug("Associate qos_spec: %(id)s with type: %(type_id)s" % {'id': id, 'type_id': type_id}) try: qos_specs.associate_qos_with_type(context, id, type_id) notifier_info = dict(id=id, type_id=type_id) rpc.get_notifier('QoSSpecs').info(context, 'qos_specs.associate', notifier_info) except exception.VolumeTypeNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.associate', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.associate', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.InvalidVolumeType as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.associate', notifier_err) self._notify_qos_specs_error(context, 'qos_specs.associate', notifier_err) raise webob.exc.HTTPBadRequest(explanation=six.text_type(err)) except exception.QoSSpecsAssociateFailed as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.associate', notifier_err) raise webob.exc.HTTPInternalServerError( explanation=six.text_type(err)) return webob.Response(status_int=202) def disassociate(self, req, id): """Disassociate a qos specs from a volume type.""" context = req.environ['cinder.context'] authorize(context) type_id = req.params.get('vol_type_id', None) if not type_id: msg = _('Volume Type id must not be None.') notifier_err = dict(id=id, error_message=msg) self._notify_qos_specs_error(context, 'qos_specs.delete', notifier_err) raise webob.exc.HTTPBadRequest(explanation=msg) LOG.debug("Disassociate qos_spec: %(id)s from type: %(type_id)s" % {'id': id, 'type_id': type_id}) try: qos_specs.disassociate_qos_specs(context, id, type_id) notifier_info = dict(id=id, type_id=type_id) rpc.get_notifier('QoSSpecs').info(context, 'qos_specs.disassociate', notifier_info) except exception.VolumeTypeNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.disassociate', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.disassociate', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.QoSSpecsDisassociateFailed as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.disassociate', notifier_err) raise webob.exc.HTTPInternalServerError( explanation=six.text_type(err)) return webob.Response(status_int=202) def disassociate_all(self, req, id): """Disassociate a qos specs from all volume types.""" context = req.environ['cinder.context'] authorize(context) LOG.debug("Disassociate qos_spec: %s from all." % id) try: qos_specs.disassociate_all(context, id) notifier_info = dict(id=id) rpc.get_notifier('QoSSpecs').info(context, 'qos_specs.disassociate_all', notifier_info) except exception.QoSSpecsNotFound as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.disassociate_all', notifier_err) raise webob.exc.HTTPNotFound(explanation=six.text_type(err)) except exception.QoSSpecsDisassociateFailed as err: notifier_err = dict(id=id, error_message=err) self._notify_qos_specs_error(context, 'qos_specs.disassociate_all', notifier_err) raise webob.exc.HTTPInternalServerError( explanation=six.text_type(err)) return webob.Response(status_int=202) class Qos_specs_manage(extensions.ExtensionDescriptor): """QoS specs support.""" name = "Qos_specs_manage" alias = "qos-specs" namespace = "http://docs.openstack.org/volume/ext/qos-specs/api/v1" updated = "2013-08-02T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension( Qos_specs_manage.alias, QoSSpecsController(), member_actions={"associations": "GET", "associate": "GET", "disassociate": "GET", "disassociate_all": "GET", "delete_keys": "PUT"}) resources.append(res) return resources cinder-2014.1.5/cinder/api/contrib/__init__.py0000664000567000056700000000232412540642606022144 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """Contrib contains extensions that are shipped with cinder. It can't be called 'extensions' because that causes namespacing problems. """ from oslo.config import cfg from cinder.api import extensions from cinder.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) def standard_extensions(ext_mgr): extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__) def select_extensions(ext_mgr): extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__, CONF.osapi_volume_ext_list) cinder-2014.1.5/cinder/api/contrib/admin_actions.py0000664000567000056700000002045412540642606023221 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. import webob from webob import exc from cinder.api import extensions from cinder.api.openstack import wsgi from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import rpc from cinder import volume LOG = logging.getLogger(__name__) class AdminController(wsgi.Controller): """Abstract base class for AdminControllers.""" collection = None # api collection to extend # FIXME(clayg): this will be hard to keep up-to-date # Concrete classes can expand or over-ride valid_status = set([ 'creating', 'available', 'deleting', 'error', 'error_deleting', ]) def __init__(self, *args, **kwargs): super(AdminController, self).__init__(*args, **kwargs) # singular name of the resource self.resource_name = self.collection.rstrip('s') self.volume_api = volume.API() def _update(self, *args, **kwargs): raise NotImplementedError() def _get(self, *args, **kwargs): raise NotImplementedError() def _delete(self, *args, **kwargs): raise NotImplementedError() def validate_update(self, body): update = {} try: update['status'] = body['status'] except (TypeError, KeyError): raise exc.HTTPBadRequest("Must specify 'status'") if update['status'] not in self.valid_status: raise exc.HTTPBadRequest("Must specify a valid status") return update def authorize(self, context, action_name): # e.g. "snapshot_admin_actions:reset_status" action = '%s_admin_actions:%s' % (self.resource_name, action_name) extensions.extension_authorizer('volume', action)(context) @wsgi.action('os-reset_status') def _reset_status(self, req, id, body): """Reset status on the resource.""" context = req.environ['cinder.context'] self.authorize(context, 'reset_status') update = self.validate_update(body['os-reset_status']) msg = _("Updating %(resource)s '%(id)s' with '%(update)r'") LOG.debug(msg, {'resource': self.resource_name, 'id': id, 'update': update}) notifier_info = dict(id=id, update=update) notifier = rpc.get_notifier('volumeStatusUpdate') notifier.info(context, self.collection + '.reset_status.start', notifier_info) try: self._update(context, id, update) except exception.NotFound as e: raise exc.HTTPNotFound(e) notifier.info(context, self.collection + '.reset_status.end', notifier_info) return webob.Response(status_int=202) @wsgi.action('os-force_delete') def _force_delete(self, req, id, body): """Delete a resource, bypassing the check that it must be available.""" context = req.environ['cinder.context'] self.authorize(context, 'force_delete') try: resource = self._get(context, id) except exception.NotFound: raise exc.HTTPNotFound() self._delete(context, resource, force=True) return webob.Response(status_int=202) class VolumeAdminController(AdminController): """AdminController for Volumes.""" collection = 'volumes' valid_status = AdminController.valid_status.union( set(['attaching', 'in-use', 'detaching'])) def _update(self, *args, **kwargs): db.volume_update(*args, **kwargs) def _get(self, *args, **kwargs): return self.volume_api.get(*args, **kwargs) def _delete(self, *args, **kwargs): return self.volume_api.delete(*args, **kwargs) def validate_update(self, body): update = super(VolumeAdminController, self).validate_update(body) if 'attach_status' in body: if body['attach_status'] not in ('detached', 'attached'): raise exc.HTTPBadRequest("Must specify a valid attach_status") update['attach_status'] = body['attach_status'] return update @wsgi.action('os-force_detach') def _force_detach(self, req, id, body): """Roll back a bad detach after the volume been disconnected.""" context = req.environ['cinder.context'] self.authorize(context, 'force_detach') try: volume = self._get(context, id) except exception.NotFound: raise exc.HTTPNotFound() self.volume_api.terminate_connection(context, volume, {}, force=True) self.volume_api.detach(context, volume) return webob.Response(status_int=202) @wsgi.action('os-migrate_volume') def _migrate_volume(self, req, id, body): """Migrate a volume to the specified host.""" context = req.environ['cinder.context'] self.authorize(context, 'migrate_volume') try: volume = self._get(context, id) except exception.NotFound: raise exc.HTTPNotFound() params = body['os-migrate_volume'] try: host = params['host'] except KeyError: raise exc.HTTPBadRequest("Must specify 'host'") force_host_copy = params.get('force_host_copy', False) if isinstance(force_host_copy, basestring): try: force_host_copy = strutils.bool_from_string(force_host_copy, strict=True) except ValueError: raise exc.HTTPBadRequest("Bad value for 'force_host_copy'") elif not isinstance(force_host_copy, bool): raise exc.HTTPBadRequest("'force_host_copy' not string or bool") self.volume_api.migrate_volume(context, volume, host, force_host_copy) return webob.Response(status_int=202) @wsgi.action('os-migrate_volume_completion') def _migrate_volume_completion(self, req, id, body): """Complete an in-progress migration.""" context = req.environ['cinder.context'] self.authorize(context, 'migrate_volume_completion') try: volume = self._get(context, id) except exception.NotFound: raise exc.HTTPNotFound() params = body['os-migrate_volume_completion'] try: new_volume_id = params['new_volume'] except KeyError: raise exc.HTTPBadRequest("Must specify 'new_volume'") try: new_volume = self._get(context, new_volume_id) except exception.NotFound: raise exc.HTTPNotFound() error = params.get('error', False) ret = self.volume_api.migrate_volume_completion(context, volume, new_volume, error) return {'save_volume_id': ret} class SnapshotAdminController(AdminController): """AdminController for Snapshots.""" collection = 'snapshots' def _update(self, *args, **kwargs): db.snapshot_update(*args, **kwargs) def _get(self, *args, **kwargs): return self.volume_api.get_snapshot(*args, **kwargs) def _delete(self, *args, **kwargs): return self.volume_api.delete_snapshot(*args, **kwargs) class Admin_actions(extensions.ExtensionDescriptor): """Enable admin actions.""" name = "AdminActions" alias = "os-admin-actions" namespace = "http://docs.openstack.org/volume/ext/admin-actions/api/v1.1" updated = "2012-08-25T00:00:00+00:00" def get_controller_extensions(self): exts = [] for class_ in (VolumeAdminController, SnapshotAdminController): controller = class_() extension = extensions.ControllerExtension( self, class_.collection, controller) exts.append(extension) return exts cinder-2014.1.5/cinder/api/contrib/volume_mig_status_attribute.py0000664000567000056700000000754412540642606026247 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import volume authorize = extensions.soft_extension_authorizer('volume', 'volume_mig_status_attribute') class VolumeMigStatusAttributeController(wsgi.Controller): def __init__(self, *args, **kwargs): super(VolumeMigStatusAttributeController, self).__init__(*args, **kwargs) self.volume_api = volume.API() def _add_volume_mig_status_attribute(self, context, resp_volume): try: db_volume = self.volume_api.get(context, resp_volume['id']) except Exception: return else: key = "%s:migstat" % Volume_mig_status_attribute.alias resp_volume[key] = db_volume['migration_status'] key = "%s:name_id" % Volume_mig_status_attribute.alias resp_volume[key] = db_volume['_name_id'] @wsgi.extends def show(self, req, resp_obj, id): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeMigStatusAttributeTemplate()) self._add_volume_mig_status_attribute(context, resp_obj.obj['volume']) @wsgi.extends def detail(self, req, resp_obj): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeListMigStatusAttributeTemplate()) for volume in list(resp_obj.obj['volumes']): self._add_volume_mig_status_attribute(context, volume) class Volume_mig_status_attribute(extensions.ExtensionDescriptor): """Expose migration_status as an attribute of a volume.""" name = "VolumeMigStatusAttribute" alias = "os-vol-mig-status-attr" namespace = ("http://docs.openstack.org/volume/ext/" "volume_mig_status_attribute/api/v1") updated = "2013-08-08T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeMigStatusAttributeController() extension = extensions.ControllerExtension(self, 'volumes', controller) return [extension] def make_volume(elem): elem.set('{%s}migstat' % Volume_mig_status_attribute.namespace, '%s:migstat' % Volume_mig_status_attribute.alias) elem.set('{%s}name_id' % Volume_mig_status_attribute.namespace, '%s:name_id' % Volume_mig_status_attribute.alias) class VolumeMigStatusAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume', selector='volume') make_volume(root) alias = Volume_mig_status_attribute.alias namespace = Volume_mig_status_attribute.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) class VolumeListMigStatusAttributeTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volumes') elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes') make_volume(elem) alias = Volume_mig_status_attribute.alias namespace = Volume_mig_status_attribute.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) cinder-2014.1.5/cinder/api/contrib/backups.py0000664000567000056700000003251312540642606022040 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """The backups api.""" import webob from webob import exc from cinder.api import common from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api.views import backups as backup_views from cinder.api import xmlutil from cinder import backup as backupAPI from cinder import exception from cinder.openstack.common import log as logging from cinder import utils LOG = logging.getLogger(__name__) def make_backup(elem): elem.set('id') elem.set('status') elem.set('size') elem.set('container') elem.set('volume_id') elem.set('object_count') elem.set('availability_zone') elem.set('created_at') elem.set('name') elem.set('description') elem.set('fail_reason') def make_backup_restore(elem): elem.set('backup_id') elem.set('volume_id') def make_backup_export_import_record(elem): elem.set('backup_service') elem.set('backup_url') class BackupTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('backup', selector='backup') make_backup(root) alias = Backups.alias namespace = Backups.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class BackupsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('backups') elem = xmlutil.SubTemplateElement(root, 'backup', selector='backups') make_backup(elem) alias = Backups.alias namespace = Backups.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class BackupRestoreTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('restore', selector='restore') make_backup_restore(root) alias = Backups.alias namespace = Backups.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class BackupExportImportTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('backup-record', selector='backup-record') make_backup_export_import_record(root) alias = Backups.alias namespace = Backups.namespace return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace}) class CreateDeserializer(wsgi.MetadataXMLDeserializer): def default(self, string): dom = utils.safe_minidom_parse_string(string) backup = self._extract_backup(dom) return {'body': {'backup': backup}} def _extract_backup(self, node): backup = {} backup_node = self.find_first_child_named(node, 'backup') attributes = ['container', 'display_name', 'display_description', 'volume_id'] for attr in attributes: if backup_node.getAttribute(attr): backup[attr] = backup_node.getAttribute(attr) return backup class RestoreDeserializer(wsgi.MetadataXMLDeserializer): def default(self, string): dom = utils.safe_minidom_parse_string(string) restore = self._extract_restore(dom) return {'body': {'restore': restore}} def _extract_restore(self, node): restore = {} restore_node = self.find_first_child_named(node, 'restore') if restore_node.getAttribute('volume_id'): restore['volume_id'] = restore_node.getAttribute('volume_id') return restore class BackupImportDeserializer(wsgi.MetadataXMLDeserializer): def default(self, string): dom = utils.safe_minidom_parse_string(string) backup = self._extract_backup(dom) retval = {'body': {'backup-record': backup}} return retval def _extract_backup(self, node): backup = {} backup_node = self.find_first_child_named(node, 'backup-record') attributes = ['backup_service', 'backup_url'] for attr in attributes: if backup_node.getAttribute(attr): backup[attr] = backup_node.getAttribute(attr) return backup class BackupsController(wsgi.Controller): """The Backups API controller for the OpenStack API.""" _view_builder_class = backup_views.ViewBuilder def __init__(self): self.backup_api = backupAPI.API() super(BackupsController, self).__init__() @wsgi.serializers(xml=BackupTemplate) def show(self, req, id): """Return data about the given backup.""" LOG.debug(_('show called for member %s'), id) context = req.environ['cinder.context'] try: backup = self.backup_api.get(context, backup_id=id) except exception.BackupNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) return self._view_builder.detail(req, backup) def delete(self, req, id): """Delete a backup.""" LOG.debug(_('delete called for member %s'), id) context = req.environ['cinder.context'] LOG.audit(_('Delete backup with id: %s'), id, context=context) try: self.backup_api.delete(context, id) except exception.BackupNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) except exception.InvalidBackup as error: raise exc.HTTPBadRequest(explanation=error.msg) return webob.Response(status_int=202) @wsgi.serializers(xml=BackupsTemplate) def index(self, req): """Returns a summary list of backups.""" return self._get_backups(req, is_detail=False) @wsgi.serializers(xml=BackupsTemplate) def detail(self, req): """Returns a detailed list of backups.""" return self._get_backups(req, is_detail=True) def _get_backups(self, req, is_detail): """Returns a list of backups, transformed through view builder.""" context = req.environ['cinder.context'] backups = self.backup_api.get_all(context) limited_list = common.limited(backups, req) if is_detail: backups = self._view_builder.detail_list(req, limited_list) else: backups = self._view_builder.summary_list(req, limited_list) return backups # TODO(frankm): Add some checks here including # - whether requested volume_id exists so we can return some errors # immediately # - maybe also do validation of swift container name @wsgi.response(202) @wsgi.serializers(xml=BackupTemplate) @wsgi.deserializers(xml=CreateDeserializer) def create(self, req, body): """Create a new backup.""" LOG.debug(_('Creating new backup %s'), body) if not self.is_valid_body(body, 'backup'): raise exc.HTTPBadRequest() context = req.environ['cinder.context'] try: backup = body['backup'] volume_id = backup['volume_id'] except KeyError: msg = _("Incorrect request body format") raise exc.HTTPBadRequest(explanation=msg) container = backup.get('container', None) name = backup.get('name', None) description = backup.get('description', None) LOG.audit(_("Creating backup of volume %(volume_id)s in container" " %(container)s"), {'volume_id': volume_id, 'container': container}, context=context) try: new_backup = self.backup_api.create(context, name, description, volume_id, container) except exception.InvalidVolume as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.VolumeNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) except exception.ServiceNotFound as error: raise exc.HTTPInternalServerError(explanation=error.msg) retval = self._view_builder.summary(req, dict(new_backup.iteritems())) return retval @wsgi.response(202) @wsgi.serializers(xml=BackupRestoreTemplate) @wsgi.deserializers(xml=RestoreDeserializer) def restore(self, req, id, body): """Restore an existing backup to a volume.""" LOG.debug(_('Restoring backup %(backup_id)s (%(body)s)'), {'backup_id': id, 'body': body}) if not self.is_valid_body(body, 'restore'): msg = _("Incorrect request body format") raise exc.HTTPBadRequest(explanation=msg) context = req.environ['cinder.context'] restore = body['restore'] volume_id = restore.get('volume_id', None) LOG.audit(_("Restoring backup %(backup_id)s to volume %(volume_id)s"), {'backup_id': id, 'volume_id': volume_id}, context=context) try: new_restore = self.backup_api.restore(context, backup_id=id, volume_id=volume_id) except exception.InvalidInput as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.InvalidVolume as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.InvalidBackup as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.BackupNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) except exception.VolumeNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) except exception.VolumeSizeExceedsAvailableQuota as error: raise exc.HTTPRequestEntityTooLarge( explanation=error.msg, headers={'Retry-After': 0}) except exception.VolumeLimitExceeded as error: raise exc.HTTPRequestEntityTooLarge( explanation=error.msg, headers={'Retry-After': 0}) retval = self._view_builder.restore_summary( req, dict(new_restore.iteritems())) return retval @wsgi.response(200) @wsgi.serializers(xml=BackupExportImportTemplate) def export_record(self, req, id): """Export a backup.""" LOG.debug(_('export record called for member %s.'), id) context = req.environ['cinder.context'] try: backup_info = self.backup_api.export_record(context, id) except exception.BackupNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) except exception.InvalidBackup as error: raise exc.HTTPBadRequest(explanation=error.msg) retval = self._view_builder.export_summary( req, dict(backup_info.iteritems())) LOG.debug(_('export record output: %s.'), retval) return retval @wsgi.response(201) @wsgi.serializers(xml=BackupTemplate) @wsgi.deserializers(xml=BackupImportDeserializer) def import_record(self, req, body): """Import a backup.""" LOG.debug(_('Importing record from %s.'), body) if not self.is_valid_body(body, 'backup-record'): msg = _("Incorrect request body format.") raise exc.HTTPBadRequest(explanation=msg) context = req.environ['cinder.context'] import_data = body['backup-record'] #Verify that body elements are provided try: backup_service = import_data['backup_service'] backup_url = import_data['backup_url'] except KeyError: msg = _("Incorrect request body format.") raise exc.HTTPBadRequest(explanation=msg) LOG.debug(_('Importing backup using %(service)s and url %(url)s.'), {'service': backup_service, 'url': backup_url}) try: new_backup = self.backup_api.import_record(context, backup_service, backup_url) except exception.BackupNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) except exception.InvalidBackup as error: raise exc.HTTPBadRequest(explanation=error.msg) except exception.ServiceNotFound as error: raise exc.HTTPInternalServerError(explanation=error.msg) retval = self._view_builder.summary(req, dict(new_backup.iteritems())) LOG.debug(_('import record output: %s.'), retval) return retval class Backups(extensions.ExtensionDescriptor): """Backups support.""" name = 'Backups' alias = 'backups' namespace = 'http://docs.openstack.org/volume/ext/backups/api/v1' updated = '2012-12-12T00:00:00+00:00' def get_resources(self): resources = [] res = extensions.ResourceExtension( Backups.alias, BackupsController(), collection_actions={'detail': 'GET', 'import_record': 'POST'}, member_actions={'restore': 'POST', 'export_record': 'GET'}) resources.append(res) return resources cinder-2014.1.5/cinder/api/contrib/volume_image_metadata.py0000664000567000056700000001160612540642606024721 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. """The Volume Image Metadata API extension.""" import logging from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import volume LOG = logging.getLogger(__name__) authorize = extensions.soft_extension_authorizer('volume', 'volume_image_metadata') class VolumeImageMetadataController(wsgi.Controller): def __init__(self, *args, **kwargs): super(VolumeImageMetadataController, self).__init__(*args, **kwargs) self.volume_api = volume.API() def _get_all_images_metadata(self, context): """Returns the image metadata for all volumes.""" try: all_metadata = self.volume_api.get_volumes_image_metadata(context) except Exception as e: LOG.debug('Problem retrieving volume image metadata. ' 'It will be skipped. Error: %s', e) all_metadata = {} return all_metadata def _add_image_metadata(self, context, resp_volume, image_meta=None): """Appends the image metadata to the given volume. :param context: the request context :param resp_volume: the response volume :param image_meta: The image metadata to append, if None is provided it will be retrieved from the database. An empty dict means there is no metadata and it should not be retrieved from the db. """ if image_meta is None: try: image_meta = self.volume_api.get_volume_image_metadata( context, resp_volume) except Exception: return if image_meta: resp_volume['volume_image_metadata'] = dict( image_meta.iteritems()) @wsgi.extends def show(self, req, resp_obj, id): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumeImageMetadataTemplate()) self._add_image_metadata(context, resp_obj.obj['volume']) @wsgi.extends def detail(self, req, resp_obj): context = req.environ['cinder.context'] if authorize(context): resp_obj.attach(xml=VolumesImageMetadataTemplate()) all_meta = self._get_all_images_metadata(context) for volume in list(resp_obj.obj.get('volumes', [])): image_meta = all_meta.get(volume['id'], {}) self._add_image_metadata(context, volume, image_meta) class Volume_image_metadata(extensions.ExtensionDescriptor): """Show image metadata associated with the volume.""" name = "VolumeImageMetadata" alias = "os-vol-image-meta" namespace = ("http://docs.openstack.org/volume/ext/" "volume_image_metadata/api/v1") updated = "2012-12-07T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeImageMetadataController() extension = extensions.ControllerExtension(self, 'volumes', controller) return [extension] class VolumeImageMetadataMetadataTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume_image_metadata', selector='volume_image_metadata') elem = xmlutil.SubTemplateElement(root, 'meta', selector=xmlutil.get_items) elem.set('key', 0) elem.text = 1 return xmlutil.MasterTemplate(root, 1) class VolumeImageMetadataTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volume', selector='volume') root.append(VolumeImageMetadataMetadataTemplate()) alias = Volume_image_metadata.alias namespace = Volume_image_metadata.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) class VolumesImageMetadataTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('volumes') elem = xmlutil.SubTemplateElement(root, 'volume', selector='volume') elem.append(VolumeImageMetadataMetadataTemplate()) alias = Volume_image_metadata.alias namespace = Volume_image_metadata.namespace return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace}) cinder-2014.1.5/cinder/api/contrib/services.py0000664000567000056700000001556012540642606022236 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # All Rights Reserved. # # 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. from oslo.config import cfg import webob.exc from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import utils CONF = cfg.CONF LOG = logging.getLogger(__name__) authorize = extensions.extension_authorizer('volume', 'services') class ServicesIndexTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('services') elem = xmlutil.SubTemplateElement(root, 'service', selector='services') elem.set('binary') elem.set('host') elem.set('zone') elem.set('status') elem.set('state') elem.set('update_at') elem.set('disabled_reason') return xmlutil.MasterTemplate(root, 1) class ServicesUpdateTemplate(xmlutil.TemplateBuilder): def construct(self): # TODO(uni): template elements of 'host', 'service' and 'disabled' # should be deprecated to make ServicesUpdateTemplate consistent # with ServicesIndexTemplate. Still keeping it here for API # compatibility sake. root = xmlutil.TemplateElement('host') root.set('host') root.set('service') root.set('disabled') root.set('binary') root.set('status') root.set('disabled_reason') return xmlutil.MasterTemplate(root, 1) class ServiceController(wsgi.Controller): def __init__(self, ext_mgr=None): self.ext_mgr = ext_mgr super(ServiceController, self).__init__() @wsgi.serializers(xml=ServicesIndexTemplate) def index(self, req): """Return a list of all running services. Filter by host & service name. """ context = req.environ['cinder.context'] authorize(context) detailed = self.ext_mgr.is_loaded('os-extended-services') now = timeutils.utcnow() services = db.service_get_all(context) host = '' if 'host' in req.GET: host = req.GET['host'] service = '' if 'service' in req.GET: service = req.GET['service'] LOG.deprecated(_("Query by service parameter is deprecated. " "Please use binary parameter instead.")) binary = '' if 'binary' in req.GET: binary = req.GET['binary'] if host: services = [s for s in services if s['host'] == host] # NOTE(uni): deprecating service request key, binary takes precedence binary_key = binary or service if binary_key: services = [s for s in services if s['binary'] == binary_key] svcs = [] for svc in services: delta = now - (svc['updated_at'] or svc['created_at']) alive = abs(utils.total_seconds(delta)) <= CONF.service_down_time art = (alive and "up") or "down" active = 'enabled' if svc['disabled']: active = 'disabled' ret_fields = {'binary': svc['binary'], 'host': svc['host'], 'zone': svc['availability_zone'], 'status': active, 'state': art, 'updated_at': svc['updated_at']} if detailed: ret_fields['disabled_reason'] = svc['disabled_reason'] svcs.append(ret_fields) return {'services': svcs} def _is_valid_as_reason(self, reason): if not reason: return False try: utils.check_string_length(reason.strip(), 'Disabled reason', min_length=1, max_length=255) except exception.InvalidInput: return False return True @wsgi.serializers(xml=ServicesUpdateTemplate) def update(self, req, id, body): """Enable/Disable scheduling for a service.""" context = req.environ['cinder.context'] authorize(context) ext_loaded = self.ext_mgr.is_loaded('os-extended-services') ret_val = {} if id == "enable": disabled = False status = "enabled" if ext_loaded: ret_val['disabled_reason'] = None elif (id == "disable" or (id == "disable-log-reason" and ext_loaded)): disabled = True status = "disabled" else: raise webob.exc.HTTPNotFound("Unknown action") try: host = body['host'] except (TypeError, KeyError): raise webob.exc.HTTPBadRequest() ret_val['disabled'] = disabled if id == "disable-log-reason" and ext_loaded: reason = body.get('disabled_reason') if not self._is_valid_as_reason(reason): msg = _('Disabled reason contains invalid characters ' 'or is too long') raise webob.exc.HTTPBadRequest(explanation=msg) ret_val['disabled_reason'] = reason # NOTE(uni): deprecating service request key, binary takes precedence # Still keeping service key here for API compatibility sake. service = body.get('service', '') binary = body.get('binary', '') binary_key = binary or service if not binary_key: raise webob.exc.HTTPBadRequest() try: svc = db.service_get_by_args(context, host, binary_key) if not svc: raise webob.exc.HTTPNotFound('Unknown service') db.service_update(context, svc['id'], ret_val) except exception.ServiceNotFound: raise webob.exc.HTTPNotFound("service not found") ret_val.update({'host': host, 'service': service, 'binary': binary, 'status': status}) return ret_val class Services(extensions.ExtensionDescriptor): """Services support.""" name = "Services" alias = "os-services" namespace = "http://docs.openstack.org/volume/ext/services/api/v2" updated = "2012-10-28T00:00:00-00:00" def get_resources(self): resources = [] controller = ServiceController(self.ext_mgr) resource = extensions.ResourceExtension('os-services', controller) resources.append(resource) return resources cinder-2014.1.5/cinder/api/contrib/volume_actions.py0000664000567000056700000003343212540642606023440 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. import webob from oslo import messaging from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import utils from cinder import volume LOG = logging.getLogger(__name__) def authorize(context, action_name): action = 'volume_actions:%s' % action_name extensions.extension_authorizer('volume', action)(context) class VolumeToImageSerializer(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('os-volume_upload_image', selector='os-volume_upload_image') root.set('id') root.set('updated_at') root.set('status') root.set('display_description') root.set('size') root.set('volume_type') root.set('image_id') root.set('container_format') root.set('disk_format') root.set('image_name') return xmlutil.MasterTemplate(root, 1) class VolumeToImageDeserializer(wsgi.XMLDeserializer): """Deserializer to handle xml-formatted requests.""" def default(self, string): dom = utils.safe_minidom_parse_string(string) action_node = dom.childNodes[0] action_name = action_node.tagName action_data = {} attributes = ["force", "image_name", "container_format", "disk_format"] for attr in attributes: if action_node.hasAttribute(attr): action_data[attr] = action_node.getAttribute(attr) if 'force' in action_data and action_data['force'] == 'True': action_data['force'] = True return {'body': {action_name: action_data}} class VolumeActionsController(wsgi.Controller): def __init__(self, *args, **kwargs): super(VolumeActionsController, self).__init__(*args, **kwargs) self.volume_api = volume.API() @wsgi.action('os-attach') def _attach(self, req, id, body): """Add attachment metadata.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) # instance uuid is an option now instance_uuid = None if 'instance_uuid' in body['os-attach']: instance_uuid = body['os-attach']['instance_uuid'] host_name = None # Keep API backward compatibility if 'host_name' in body['os-attach']: host_name = body['os-attach']['host_name'] mountpoint = body['os-attach']['mountpoint'] if 'mode' in body['os-attach']: mode = body['os-attach']['mode'] else: mode = 'rw' if instance_uuid and host_name: msg = _("Invalid request to attach volume to an " "instance %(instance_uuid)s and a " "host %(host_name)s simultaneously") % { 'instance_uuid': instance_uuid, 'host_name': host_name, } raise webob.exc.HTTPBadRequest(explanation=msg) elif instance_uuid is None and host_name is None: msg = _("Invalid request to attach volume to an invalid target") raise webob.exc.HTTPBadRequest(explanation=msg) if mode not in ('rw', 'ro'): msg = _("Invalid request to attach volume with an invalid mode. " "Attaching mode should be 'rw' or 'ro'") raise webob.exc.HTTPBadRequest(explanation=msg) self.volume_api.attach(context, volume, instance_uuid, host_name, mountpoint, mode) return webob.Response(status_int=202) @wsgi.action('os-detach') def _detach(self, req, id, body): """Clear attachment metadata.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) self.volume_api.detach(context, volume) return webob.Response(status_int=202) @wsgi.action('os-reserve') def _reserve(self, req, id, body): """Mark volume as reserved.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) self.volume_api.reserve_volume(context, volume) return webob.Response(status_int=202) @wsgi.action('os-unreserve') def _unreserve(self, req, id, body): """Unmark volume as reserved.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) self.volume_api.unreserve_volume(context, volume) return webob.Response(status_int=202) @wsgi.action('os-begin_detaching') def _begin_detaching(self, req, id, body): """Update volume status to 'detaching'.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) self.volume_api.begin_detaching(context, volume) return webob.Response(status_int=202) @wsgi.action('os-roll_detaching') def _roll_detaching(self, req, id, body): """Roll back volume status to 'in-use'.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) self.volume_api.roll_detaching(context, volume) return webob.Response(status_int=202) @wsgi.action('os-initialize_connection') def _initialize_connection(self, req, id, body): """Initialize volume attachment.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) try: connector = body['os-initialize_connection']['connector'] except KeyError: raise webob.exc.HTTPBadRequest("Must specify 'connector'") try: info = self.volume_api.initialize_connection(context, volume, connector) except exception.VolumeBackendAPIException as error: msg = _("Unable to fetch connection information from backend.") raise webob.exc.HTTPInternalServerError(msg) return {'connection_info': info} @wsgi.action('os-terminate_connection') def _terminate_connection(self, req, id, body): """Terminate volume attachment.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) try: connector = body['os-terminate_connection']['connector'] except KeyError: raise webob.exc.HTTPBadRequest("Must specify 'connector'") try: self.volume_api.terminate_connection(context, volume, connector) except exception.VolumeBackendAPIException as error: msg = _("Unable to terminate volume connection from backend.") raise webob.exc.HTTPInternalServerError(explanation=msg) return webob.Response(status_int=202) @wsgi.response(202) @wsgi.action('os-volume_upload_image') @wsgi.serializers(xml=VolumeToImageSerializer) @wsgi.deserializers(xml=VolumeToImageDeserializer) def _volume_upload_image(self, req, id, body): """Uploads the specified volume to image service.""" context = req.environ['cinder.context'] params = body['os-volume_upload_image'] if not params.get("image_name"): msg = _("No image_name was specified in request.") raise webob.exc.HTTPBadRequest(explanation=msg) force = params.get('force', False) if isinstance(force, basestring): try: force = strutils.bool_from_string(force, strict=False) except ValueError: msg = _("Bad value for 'force' parameter.") raise webob.exc.HTTPBadRequest(explanation=msg) elif not isinstance(force, bool): msg = _("'force' is not string or bool.") raise webob.exc.HTTPBadRequest(explanation=msg) try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) authorize(context, "upload_image") image_metadata = {"container_format": params.get("container_format", "bare"), "disk_format": params.get("disk_format", "raw"), "name": params["image_name"]} try: response = self.volume_api.copy_volume_to_image(context, volume, image_metadata, force) except exception.InvalidVolume as error: raise webob.exc.HTTPBadRequest(explanation=error.msg) except ValueError as error: raise webob.exc.HTTPBadRequest(explanation=unicode(error)) except messaging.RemoteError as error: msg = "%(err_type)s: %(err_msg)s" % {'err_type': error.exc_type, 'err_msg': error.value} raise webob.exc.HTTPBadRequest(explanation=msg) except Exception as error: raise webob.exc.HTTPBadRequest(explanation=unicode(error)) return {'os-volume_upload_image': response} @wsgi.action('os-extend') def _extend(self, req, id, body): """Extend size of volume.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) try: int(body['os-extend']['new_size']) except (KeyError, ValueError, TypeError): msg = _("New volume size must be specified as an integer.") raise webob.exc.HTTPBadRequest(explanation=msg) size = int(body['os-extend']['new_size']) self.volume_api.extend(context, volume, size) return webob.Response(status_int=202) @wsgi.action('os-update_readonly_flag') def _volume_readonly_update(self, req, id, body): """Update volume readonly flag.""" context = req.environ['cinder.context'] try: volume = self.volume_api.get(context, id) except exception.VolumeNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) try: readonly_flag = body['os-update_readonly_flag']['readonly'] except KeyError: msg = _("Must specify readonly in request.") raise webob.exc.HTTPBadRequest(explanation=msg) if isinstance(readonly_flag, basestring): try: readonly_flag = strutils.bool_from_string(readonly_flag, strict=True) except ValueError: msg = _("Bad value for 'readonly'") raise webob.exc.HTTPBadRequest(explanation=msg) elif not isinstance(readonly_flag, bool): msg = _("'readonly' not string or bool") raise webob.exc.HTTPBadRequest(explanation=msg) self.volume_api.update_readonly_flag(context, volume, readonly_flag) return webob.Response(status_int=202) @wsgi.action('os-retype') def _retype(self, req, id, body): """Change type of existing volume.""" context = req.environ['cinder.context'] volume = self.volume_api.get(context, id) try: new_type = body['os-retype']['new_type'] except KeyError: msg = _("New volume type must be specified.") raise webob.exc.HTTPBadRequest(explanation=msg) policy = body['os-retype'].get('migration_policy') self.volume_api.retype(context, volume, new_type, policy) return webob.Response(status_int=202) class Volume_actions(extensions.ExtensionDescriptor): """Enable volume actions """ name = "VolumeActions" alias = "os-volume-actions" namespace = "http://docs.openstack.org/volume/ext/volume-actions/api/v1.1" updated = "2012-05-31T00:00:00+00:00" def get_controller_extensions(self): controller = VolumeActionsController() extension = extensions.ControllerExtension(self, 'volumes', controller) return [extension] cinder-2014.1.5/cinder/api/contrib/extended_services.py0000664000567000056700000000165612540642603024114 0ustar jenkinsjenkins00000000000000# 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. from cinder.api import extensions class Extended_services(extensions.ExtensionDescriptor): """Extended services support.""" name = "ExtendedServices" alias = "os-extended-services" namespace = ("http://docs.openstack.org/volume/ext/" "extended_services/api/v2") updated = "2014-01-10T00:00:00-00:00" cinder-2014.1.5/cinder/api/contrib/quota_classes.py0000664000567000056700000000767212540642606023266 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. import webob from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder import exception from cinder import quota QUOTAS = quota.QUOTAS authorize = extensions.extension_authorizer('volume', 'quota_classes') class QuotaClassTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.TemplateElement('quota_class_set', selector='quota_class_set') root.set('id') for resource in QUOTAS.resources: elem = xmlutil.SubTemplateElement(root, resource) elem.text = resource return xmlutil.MasterTemplate(root, 1) class QuotaClassSetsController(wsgi.Controller): def _format_quota_set(self, quota_class, quota_set): """Convert the quota object to a result dict.""" quota_set['id'] = str(quota_class) return dict(quota_class_set=quota_set) @wsgi.serializers(xml=QuotaClassTemplate) def show(self, req, id): context = req.environ['cinder.context'] authorize(context) try: db.sqlalchemy.api.authorize_quota_class_context(context, id) except exception.NotAuthorized: raise webob.exc.HTTPForbidden() return self._format_quota_set(id, QUOTAS.get_class_quotas(context, id)) @wsgi.serializers(xml=QuotaClassTemplate) def update(self, req, id, body): context = req.environ['cinder.context'] authorize(context) quota_class = id if not self.is_valid_body(body, 'quota_class_set'): msg = (_("Missing required element quota_class_set" " in request body.")) raise webob.exc.HTTPBadRequest(explanation=msg) for key in body['quota_class_set'].keys(): if key in QUOTAS: try: value = int(body['quota_class_set'][key]) except ValueError: msg = _("Quota class limit must be specified as an" " integer value.") raise webob.exc.HTTPBadRequest(explanation=msg) if value < -1: msg = _("Quota class limit must be -1 or greater.") raise webob.exc.HTTPBadRequest(explanation=msg) try: db.quota_class_update(context, quota_class, key, value) except exception.QuotaClassNotFound: db.quota_class_create(context, quota_class, key, value) except exception.AdminRequired: raise webob.exc.HTTPForbidden() return {'quota_class_set': QUOTAS.get_class_quotas(context, quota_class)} class Quota_classes(extensions.ExtensionDescriptor): """Quota classes management support.""" name = "QuotaClasses" alias = "os-quota-class-sets" namespace = ("http://docs.openstack.org/volume/ext/" "quota-classes-sets/api/v1.1") updated = "2012-03-12T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension('os-quota-class-sets', QuotaClassSetsController()) resources.append(res) return resources cinder-2014.1.5/cinder/api/contrib/types_extra_specs.py0000664000567000056700000001517012540642606024154 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # # 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. """The volume types extra specs extension""" import webob from cinder.api import common from cinder.api import extensions from cinder.api.openstack import wsgi from cinder.api import xmlutil from cinder import db from cinder import exception from cinder import rpc from cinder.volume import volume_types authorize = extensions.extension_authorizer('volume', 'types_extra_specs') class VolumeTypeExtraSpecsTemplate(xmlutil.TemplateBuilder): def construct(self): root = xmlutil.make_flat_dict('extra_specs', selector='extra_specs') return xmlutil.MasterTemplate(root, 1) class VolumeTypeExtraSpecTemplate(xmlutil.TemplateBuilder): def construct(self): tagname = xmlutil.Selector('key') def extraspec_sel(obj, do_raise=False): # Have to extract the key and value for later use... key, value = obj.items()[0] return dict(key=key, value=value) root = xmlutil.TemplateElement(tagname, selector=extraspec_sel) root.text = 'value' return xmlutil.MasterTemplate(root, 1) class VolumeTypeExtraSpecsController(wsgi.Controller): """The volume type extra specs API controller for the OpenStack API.""" def _get_extra_specs(self, context, type_id): extra_specs = db.volume_type_extra_specs_get(context, type_id) specs_dict = {} for key, value in extra_specs.iteritems(): specs_dict[key] = value return dict(extra_specs=specs_dict) def _check_type(self, context, type_id): try: volume_types.get_volume_type(context, type_id) except exception.NotFound as ex: raise webob.exc.HTTPNotFound(explanation=ex.msg) @wsgi.serializers(xml=VolumeTypeExtraSpecsTemplate) def index(self, req, type_id): """Returns the list of extra specs for a given volume type.""" context = req.environ['cinder.context'] authorize(context) self._check_type(context, type_id) return self._get_extra_specs(context, type_id) @wsgi.serializers(xml=VolumeTypeExtraSpecsTemplate) def create(self, req, type_id, body=None): context = req.environ['cinder.context'] authorize(context) if not self.is_valid_body(body, 'extra_specs'): raise webob.exc.HTTPBadRequest() self._check_type(context, type_id) specs = body['extra_specs'] self._check_key_names(specs.keys()) db.volume_type_extra_specs_update_or_create(context, type_id, specs) notifier_info = dict(type_id=type_id, specs=specs) notifier = rpc.get_notifier('volumeTypeExtraSpecs') notifier.info(context, 'volume_type_extra_specs.create', notifier_info) return body @wsgi.serializers(xml=VolumeTypeExtraSpecTemplate) def update(self, req, type_id, id, body=None): context = req.environ['cinder.context'] authorize(context) if not body: expl = _('Request body empty') raise webob.exc.HTTPBadRequest(explanation=expl) self._check_type(context, type_id) if id not in body: expl = _('Request body and URI mismatch') raise webob.exc.HTTPBadRequest(explanation=expl) if len(body) > 1: expl = _('Request body contains too many items') raise webob.exc.HTTPBadRequest(explanation=expl) db.volume_type_extra_specs_update_or_create(context, type_id, body) notifier_info = dict(type_id=type_id, id=id) notifier = rpc.get_notifier('volumeTypeExtraSpecs') notifier.info(context, 'volume_type_extra_specs.update', notifier_info) return body @wsgi.serializers(xml=VolumeTypeExtraSpecTemplate) def show(self, req, type_id, id): """Return a single extra spec item.""" context = req.environ['cinder.context'] authorize(context) self._check_type(context, type_id) specs = self._get_extra_specs(context, type_id) if id in specs['extra_specs']: return {id: specs['extra_specs'][id]} else: raise webob.exc.HTTPNotFound() def delete(self, req, type_id, id): """Deletes an existing extra spec.""" context = req.environ['cinder.context'] self._check_type(context, type_id) authorize(context) try: db.volume_type_extra_specs_delete(context, type_id, id) except exception.VolumeTypeExtraSpecsNotFound as error: raise webob.exc.HTTPNotFound(explanation=error.msg) notifier_info = dict(type_id=type_id, id=id) notifier = rpc.get_notifier('volumeTypeExtraSpecs') notifier.info(context, 'volume_type_extra_specs.delete', notifier_info) return webob.Response(status_int=202) def _check_key_names(self, keys): if not common.validate_key_names(keys): expl = _('Key names can only contain alphanumeric characters, ' 'underscores, periods, colons and hyphens.') raise webob.exc.HTTPBadRequest(explanation=expl) class Types_extra_specs(extensions.ExtensionDescriptor): """Type extra specs support.""" name = "TypesExtraSpecs" alias = "os-types-extra-specs" namespace = "http://docs.openstack.org/volume/ext/types-extra-specs/api/v1" updated = "2011-08-24T00:00:00+00:00" def get_resources(self): resources = [] res = extensions.ResourceExtension('extra_specs', VolumeTypeExtraSpecsController(), parent=dict(member_name='type', collection_name='types') ) resources.append(res) return resources cinder-2014.1.5/cinder/manager.py0000664000567000056700000001157712540642606017620 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Base Manager class. Managers are responsible for a certain aspect of the system. It is a logical grouping of code relating to a portion of the system. In general other components should be using the manager to make changes to the components that it is responsible for. For example, other components that need to deal with volumes in some way, should do so by calling methods on the VolumeManager instead of directly changing fields in the database. This allows us to keep all of the code relating to volumes in the same place. We have adopted a basic strategy of Smart managers and dumb data, which means rather than attaching methods to data objects, components should call manager methods that act on the data. Methods on managers that can be executed locally should be called directly. If a particular method must execute on a remote host, this should be done via rpc to the service that wraps the manager Managers should be responsible for most of the db access, and non-implementation specific data. Anything implementation specific that can't be generalized should be done by the Driver. In general, we prefer to have one manager with multiple drivers for different implementations, but sometimes it makes sense to have multiple managers. You can think of it this way: Abstract different overall strategies at the manager level(FlatNetwork vs VlanNetwork), and different implementations at the driver level(LinuxNetDriver vs CiscoNetDriver). Managers will often provide methods for initial setup of a host or periodic tasks to a wrapping service. This module provides Manager, a base class for managers. """ from oslo.config import cfg from oslo import messaging from cinder.db import base from cinder.openstack.common import log as logging from cinder.openstack.common import periodic_task from cinder.scheduler import rpcapi as scheduler_rpcapi from cinder import version CONF = cfg.CONF LOG = logging.getLogger(__name__) class Manager(base.Base, periodic_task.PeriodicTasks): # Set RPC API version to 1.0 by default. RPC_API_VERSION = '1.0' target = messaging.Target(version=RPC_API_VERSION) def __init__(self, host=None, db_driver=None): if not host: host = CONF.host self.host = host self.additional_endpoints = [] super(Manager, self).__init__(db_driver) def periodic_tasks(self, context, raise_on_error=False): """Tasks to be run at a periodic interval.""" return self.run_periodic_tasks(context, raise_on_error=raise_on_error) def init_host(self): """Handle initialization if this is a standalone service. Child classes should override this method. """ pass def service_version(self, context): return version.version_string() def service_config(self, context): config = {} for key in CONF: config[key] = CONF.get(key, None) return config class SchedulerDependentManager(Manager): """Periodically send capability updates to the Scheduler services. Services that need to update the Scheduler of their capabilities should derive from this class. Otherwise they can derive from manager.Manager directly. Updates are only sent after update_service_capabilities is called with non-None values. """ def __init__(self, host=None, db_driver=None, service_name='undefined'): self.last_capabilities = None self.service_name = service_name self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() super(SchedulerDependentManager, self).__init__(host, db_driver) def update_service_capabilities(self, capabilities): """Remember these capabilities to send on next periodic update.""" self.last_capabilities = capabilities @periodic_task.periodic_task def _publish_service_capabilities(self, context): """Pass data back to the scheduler at a periodic interval.""" if self.last_capabilities: LOG.debug(_('Notifying Schedulers of capabilities ...')) self.scheduler_rpcapi.update_service_capabilities( context, self.service_name, self.host, self.last_capabilities) cinder-2014.1.5/cinder/quota.py0000664000567000056700000010725512540642606017336 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Quotas for volumes.""" import datetime from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils LOG = logging.getLogger(__name__) quota_opts = [ cfg.IntOpt('quota_volumes', default=10, help='number of volumes allowed per project'), cfg.IntOpt('quota_snapshots', default=10, help='number of volume snapshots allowed per project'), cfg.IntOpt('quota_gigabytes', default=1000, help='number of volume gigabytes (snapshots are also included) ' 'allowed per project'), cfg.IntOpt('reservation_expire', default=86400, help='number of seconds until a reservation expires'), cfg.IntOpt('until_refresh', default=0, help='count of reservations until usage is refreshed'), cfg.IntOpt('max_age', default=0, help='number of seconds between subsequent usage refreshes'), cfg.StrOpt('quota_driver', default='cinder.quota.DbQuotaDriver', help='default driver to use for quota checks'), cfg.BoolOpt('use_default_quota_class', default=True, help='whether to use default quota class for default quota'), ] CONF = cfg.CONF CONF.register_opts(quota_opts) class DbQuotaDriver(object): """Driver to perform check to enforcement of quotas. Also allows to obtain quota information. The default driver utilizes the local database. """ def get_by_project(self, context, project_id, resource_name): """Get a specific quota by project.""" return db.quota_get(context, project_id, resource_name) def get_by_class(self, context, quota_class, resource_name): """Get a specific quota by quota class.""" return db.quota_class_get(context, quota_class, resource_name) def get_default(self, context, resource): """Get a specific default quota for a resource.""" default_quotas = db.quota_class_get_default(context) return default_quotas.get(resource.name, resource.default) def get_defaults(self, context, resources): """Given a list of resources, retrieve the default quotas. Use the class quotas named `_DEFAULT_QUOTA_NAME` as default quotas, if it exists. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. """ quotas = {} default_quotas = {} if CONF.use_default_quota_class: default_quotas = db.quota_class_get_default(context) for resource in resources.values(): if resource.name not in default_quotas: LOG.deprecated(_("Default quota for resource: %(res)s is set " "by the default quota flag: quota_%(res)s, " "it is now deprecated. Please use the " "the default quota class for default " "quota.") % {'res': resource.name}) quotas[resource.name] = default_quotas.get(resource.name, resource.default) return quotas def get_class_quotas(self, context, resources, quota_class, defaults=True): """Given list of resources, retrieve the quotas for given quota class. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param quota_class: The name of the quota class to return quotas for. :param defaults: If True, the default value will be reported if there is no specific value for the resource. """ quotas = {} default_quotas = {} class_quotas = db.quota_class_get_all_by_name(context, quota_class) if defaults: default_quotas = db.quota_class_get_default(context) for resource in resources.values(): if resource.name in class_quotas: quotas[resource.name] = class_quotas[resource.name] continue if defaults: quotas[resource.name] = default_quotas.get(resource.name, resource.default) return quotas def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=True): """Given a list of resources, retrieve the quotas for the given project. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param project_id: The ID of the project to return quotas for. :param quota_class: If project_id != context.project_id, the quota class cannot be determined. This parameter allows it to be specified. It will be ignored if project_id == context.project_id. :param defaults: If True, the quota class value (or the default value, if there is no value from the quota class) will be reported if there is no specific value for the resource. :param usages: If True, the current in_use and reserved counts will also be returned. """ quotas = {} project_quotas = db.quota_get_all_by_project(context, project_id) if usages: project_usages = db.quota_usage_get_all_by_project(context, project_id) # Get the quotas for the appropriate class. If the project ID # matches the one in the context, we use the quota_class from # the context, otherwise, we use the provided quota_class (if # any) if project_id == context.project_id: quota_class = context.quota_class if quota_class: class_quotas = db.quota_class_get_all_by_name(context, quota_class) else: class_quotas = {} default_quotas = self.get_defaults(context, resources) for resource in resources.values(): # Omit default/quota class values if not defaults and resource.name not in project_quotas: continue quotas[resource.name] = dict( limit=project_quotas.get( resource.name, class_quotas.get(resource.name, default_quotas[resource.name])), ) # Include usages if desired. This is optional because one # internal consumer of this interface wants to access the # usages directly from inside a transaction. if usages: usage = project_usages.get(resource.name, {}) quotas[resource.name].update( in_use=usage.get('in_use', 0), reserved=usage.get('reserved', 0), ) return quotas def _get_quotas(self, context, resources, keys, has_sync, project_id=None): """A helper method which retrieves the quotas for specific resources. This specific resource is identified by keys, and which apply to the current context. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param keys: A list of the desired quotas to retrieve. :param has_sync: If True, indicates that the resource must have a sync attribute; if False, indicates that the resource must NOT have a sync attribute. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ # Filter resources if has_sync: sync_filt = lambda x: hasattr(x, 'sync') else: sync_filt = lambda x: not hasattr(x, 'sync') desired = set(keys) sub_resources = dict((k, v) for k, v in resources.items() if k in desired and sync_filt(v)) # Make sure we accounted for all of them... if len(keys) != len(sub_resources): unknown = desired - set(sub_resources.keys()) raise exception.QuotaResourceUnknown(unknown=sorted(unknown)) # Grab and return the quotas (without usages) quotas = self.get_project_quotas(context, sub_resources, project_id, context.quota_class, usages=False) return dict((k, v['limit']) for k, v in quotas.items()) def limit_check(self, context, resources, values, project_id=None): """Check simple quota limits. For limits--those quotas for which there is no usage synchronization function--this method checks that a set of proposed values are permitted by the limit restriction. This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it is not a simple limit resource. If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns nothing. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param values: A dictionary of the values to check against the quota. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ # Ensure no value is less than zero unders = [key for key, val in values.items() if val < 0] if unders: raise exception.InvalidQuotaValue(unders=sorted(unders)) # If project_id is None, then we use the project_id in context if project_id is None: project_id = context.project_id # Get the applicable quotas quotas = self._get_quotas(context, resources, values.keys(), has_sync=False, project_id=project_id) # Check the quotas and construct a list of the resources that # would be put over limit by the desired values overs = [key for key, val in values.items() if quotas[key] >= 0 and quotas[key] < val] if overs: raise exception.OverQuota(overs=sorted(overs), quotas=quotas, usages={}) def reserve(self, context, resources, deltas, expire=None, project_id=None): """Check quotas and reserve resources. For counting quotas--those quotas for which there is a usage synchronization function--this method checks quotas against current usage and the desired deltas. This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it does not have a usage synchronization function. If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns a list of reservation UUIDs which were created. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param deltas: A dictionary of the proposed delta changes. :param expire: An optional parameter specifying an expiration time for the reservations. If it is a simple number, it is interpreted as a number of seconds and added to the current time; if it is a datetime.timedelta object, it will also be added to the current time. A datetime.datetime object will be interpreted as the absolute expiration time. If None is specified, the default expiration time set by --default-reservation-expire will be used (this value will be treated as a number of seconds). :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ # Set up the reservation expiration if expire is None: expire = CONF.reservation_expire if isinstance(expire, (int, long)): expire = datetime.timedelta(seconds=expire) if isinstance(expire, datetime.timedelta): expire = timeutils.utcnow() + expire if not isinstance(expire, datetime.datetime): raise exception.InvalidReservationExpiration(expire=expire) # If project_id is None, then we use the project_id in context if project_id is None: project_id = context.project_id # Get the applicable quotas. # NOTE(Vek): We're not worried about races at this point. # Yes, the admin may be in the process of reducing # quotas, but that's a pretty rare thing. quotas = self._get_quotas(context, resources, deltas.keys(), has_sync=True, project_id=project_id) # NOTE(Vek): Most of the work here has to be done in the DB # API, because we have to do it in a transaction, # which means access to the session. Since the # session isn't available outside the DBAPI, we # have to do the work there. return db.quota_reserve(context, resources, quotas, deltas, expire, CONF.until_refresh, CONF.max_age, project_id=project_id) def commit(self, context, reservations, project_id=None): """Commit reservations. :param context: The request context, for access checks. :param reservations: A list of the reservation UUIDs, as returned by the reserve() method. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ # If project_id is None, then we use the project_id in context if project_id is None: project_id = context.project_id db.reservation_commit(context, reservations, project_id=project_id) def rollback(self, context, reservations, project_id=None): """Roll back reservations. :param context: The request context, for access checks. :param reservations: A list of the reservation UUIDs, as returned by the reserve() method. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ # If project_id is None, then we use the project_id in context if project_id is None: project_id = context.project_id db.reservation_rollback(context, reservations, project_id=project_id) def destroy_all_by_project(self, context, project_id): """Destroy all that is associated with a project. This includes quotas, usages and reservations. :param context: The request context, for access checks. :param project_id: The ID of the project being deleted. """ db.quota_destroy_all_by_project(context, project_id) def expire(self, context): """Expire reservations. Explores all currently existing reservations and rolls back any that have expired. :param context: The request context, for access checks. """ db.reservation_expire(context) class BaseResource(object): """Describe a single resource for quota checking.""" def __init__(self, name, flag=None): """Initializes a Resource. :param name: The name of the resource, i.e., "volumes". :param flag: The name of the flag or configuration option which specifies the default value of the quota for this resource. """ self.name = name self.flag = flag def quota(self, driver, context, **kwargs): """Given a driver and context, obtain the quota for this resource. :param driver: A quota driver. :param context: The request context. :param project_id: The project to obtain the quota value for. If not provided, it is taken from the context. If it is given as None, no project-specific quota will be searched for. :param quota_class: The quota class corresponding to the project, or for which the quota is to be looked up. If not provided, it is taken from the context. If it is given as None, no quota class-specific quota will be searched for. Note that the quota class defaults to the value in the context, which may not correspond to the project if project_id is not the same as the one in the context. """ # Get the project ID project_id = kwargs.get('project_id', context.project_id) # Ditto for the quota class quota_class = kwargs.get('quota_class', context.quota_class) # Look up the quota for the project if project_id: try: return driver.get_by_project(context, project_id, self.name) except exception.ProjectQuotaNotFound: pass # Try for the quota class if quota_class: try: return driver.get_by_class(context, quota_class, self.name) except exception.QuotaClassNotFound: pass # OK, return the default return driver.get_default(context, self) @property def default(self): """Return the default value of the quota.""" return CONF[self.flag] if self.flag else -1 class ReservableResource(BaseResource): """Describe a reservable resource.""" def __init__(self, name, sync, flag=None): """Initializes a ReservableResource. Reservable resources are those resources which directly correspond to objects in the database, i.e., volumes, gigabytes, etc. A ReservableResource must be constructed with a usage synchronization function, which will be called to determine the current counts of one or more resources. The usage synchronization function will be passed three arguments: an admin context, the project ID, and an opaque session object, which should in turn be passed to the underlying database function. Synchronization functions should return a dictionary mapping resource names to the current in_use count for those resources; more than one resource and resource count may be returned. Note that synchronization functions may be associated with more than one ReservableResource. :param name: The name of the resource, i.e., "volumes". :param sync: A dbapi methods name which returns a dictionary to resynchronize the in_use count for one or more resources, as described above. :param flag: The name of the flag or configuration option which specifies the default value of the quota for this resource. """ super(ReservableResource, self).__init__(name, flag=flag) self.sync = sync class AbsoluteResource(BaseResource): """Describe a non-reservable resource.""" pass class CountableResource(AbsoluteResource): """Describe a resource where counts aren't based only on the project ID.""" def __init__(self, name, count, flag=None): """Initializes a CountableResource. Countable resources are those resources which directly correspond to objects in the database, i.e., volumes, gigabytes, etc., but for which a count by project ID is inappropriate. A CountableResource must be constructed with a counting function, which will be called to determine the current counts of the resource. The counting function will be passed the context, along with the extra positional and keyword arguments that are passed to Quota.count(). It should return an integer specifying the count. Note that this counting is not performed in a transaction-safe manner. This resource class is a temporary measure to provide required functionality, until a better approach to solving this problem can be evolved. :param name: The name of the resource, i.e., "volumes". :param count: A callable which returns the count of the resource. The arguments passed are as described above. :param flag: The name of the flag or configuration option which specifies the default value of the quota for this resource. """ super(CountableResource, self).__init__(name, flag=flag) self.count = count class VolumeTypeResource(ReservableResource): """ReservableResource for a specific volume type.""" def __init__(self, part_name, volume_type): """Initializes a VolumeTypeResource. :param part_name: The kind of resource, i.e., "volumes". :param volume_type: The volume type for this resource. """ self.volume_type_name = volume_type['name'] self.volume_type_id = volume_type['id'] name = "%s_%s" % (part_name, self.volume_type_name) super(VolumeTypeResource, self).__init__(name, "_sync_%s" % part_name) class QuotaEngine(object): """Represent the set of recognized quotas.""" def __init__(self, quota_driver_class=None): """Initialize a Quota object.""" if not quota_driver_class: quota_driver_class = CONF.quota_driver if isinstance(quota_driver_class, basestring): quota_driver_class = importutils.import_object(quota_driver_class) self._resources = {} self._driver = quota_driver_class def __contains__(self, resource): return resource in self.resources def register_resource(self, resource): """Register a resource.""" self._resources[resource.name] = resource def register_resources(self, resources): """Register a list of resources.""" for resource in resources: self.register_resource(resource) def get_by_project(self, context, project_id, resource_name): """Get a specific quota by project.""" return self._driver.get_by_project(context, project_id, resource_name) def get_by_class(self, context, quota_class, resource_name): """Get a specific quota by quota class.""" return self._driver.get_by_class(context, quota_class, resource_name) def get_default(self, context, resource): """Get a specific default quota for a resource.""" return self._driver.get_default(context, resource) def get_defaults(self, context): """Retrieve the default quotas. :param context: The request context, for access checks. """ return self._driver.get_defaults(context, self.resources) def get_class_quotas(self, context, quota_class, defaults=True): """Retrieve the quotas for the given quota class. :param context: The request context, for access checks. :param quota_class: The name of the quota class to return quotas for. :param defaults: If True, the default value will be reported if there is no specific value for the resource. """ return self._driver.get_class_quotas(context, self.resources, quota_class, defaults=defaults) def get_project_quotas(self, context, project_id, quota_class=None, defaults=True, usages=True): """Retrieve the quotas for the given project. :param context: The request context, for access checks. :param project_id: The ID of the project to return quotas for. :param quota_class: If project_id != context.project_id, the quota class cannot be determined. This parameter allows it to be specified. :param defaults: If True, the quota class value (or the default value, if there is no value from the quota class) will be reported if there is no specific value for the resource. :param usages: If True, the current in_use and reserved counts will also be returned. """ return self._driver.get_project_quotas(context, self.resources, project_id, quota_class=quota_class, defaults=defaults, usages=usages) def count(self, context, resource, *args, **kwargs): """Count a resource. For countable resources, invokes the count() function and returns its result. Arguments following the context and resource are passed directly to the count function declared by the resource. :param context: The request context, for access checks. :param resource: The name of the resource, as a string. """ # Get the resource res = self.resources.get(resource) if not res or not hasattr(res, 'count'): raise exception.QuotaResourceUnknown(unknown=[resource]) return res.count(context, *args, **kwargs) def limit_check(self, context, project_id=None, **values): """Check simple quota limits. For limits--those quotas for which there is no usage synchronization function--this method checks that a set of proposed values are permitted by the limit restriction. The values to check are given as keyword arguments, where the key identifies the specific quota limit to check, and the value is the proposed value. This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it is not a simple limit resource. If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns nothing. :param context: The request context, for access checks. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ return self._driver.limit_check(context, self.resources, values, project_id=project_id) def reserve(self, context, expire=None, project_id=None, **deltas): """Check quotas and reserve resources. For counting quotas--those quotas for which there is a usage synchronization function--this method checks quotas against current usage and the desired deltas. The deltas are given as keyword arguments, and current usage and other reservations are factored into the quota check. This method will raise a QuotaResourceUnknown exception if a given resource is unknown or if it does not have a usage synchronization function. If any of the proposed values is over the defined quota, an OverQuota exception will be raised with the sorted list of the resources which are too high. Otherwise, the method returns a list of reservation UUIDs which were created. :param context: The request context, for access checks. :param expire: An optional parameter specifying an expiration time for the reservations. If it is a simple number, it is interpreted as a number of seconds and added to the current time; if it is a datetime.timedelta object, it will also be added to the current time. A datetime.datetime object will be interpreted as the absolute expiration time. If None is specified, the default expiration time set by --default-reservation-expire will be used (this value will be treated as a number of seconds). :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ reservations = self._driver.reserve(context, self.resources, deltas, expire=expire, project_id=project_id) LOG.debug(_("Created reservations %s") % reservations) return reservations def commit(self, context, reservations, project_id=None): """Commit reservations. :param context: The request context, for access checks. :param reservations: A list of the reservation UUIDs, as returned by the reserve() method. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ try: self._driver.commit(context, reservations, project_id=project_id) except Exception: # NOTE(Vek): Ignoring exceptions here is safe, because the # usage resynchronization and the reservation expiration # mechanisms will resolve the issue. The exception is # logged, however, because this is less than optimal. LOG.exception(_("Failed to commit reservations %s") % reservations) def rollback(self, context, reservations, project_id=None): """Roll back reservations. :param context: The request context, for access checks. :param reservations: A list of the reservation UUIDs, as returned by the reserve() method. :param project_id: Specify the project_id if current context is admin and admin wants to impact on common user's tenant. """ try: self._driver.rollback(context, reservations, project_id=project_id) except Exception: # NOTE(Vek): Ignoring exceptions here is safe, because the # usage resynchronization and the reservation expiration # mechanisms will resolve the issue. The exception is # logged, however, because this is less than optimal. LOG.exception(_("Failed to roll back reservations " "%s") % reservations) def destroy_all_by_project(self, context, project_id): """Destroy all quotas, usages, and reservations associated with a project. :param context: The request context, for access checks. :param project_id: The ID of the project being deleted. """ self._driver.destroy_all_by_project(context, project_id) def expire(self, context): """Expire reservations. Explores all currently existing reservations and rolls back any that have expired. :param context: The request context, for access checks. """ self._driver.expire(context) def add_volume_type_opts(self, context, opts, volume_type_id): """Add volume type resource options. Adds elements to the opts hash for volume type quotas. If a resource is being reserved ('gigabytes', etc) and the volume type is set up for its own quotas, these reservations are copied into keys for 'gigabytes_', etc. :param context: The request context, for access checks. :param opts: The reservations options hash. :param volume_type_id: The volume type id for this reservation. """ if not volume_type_id: return # NOTE(jdg): set inactive to True in volume_type_get, as we # may be operating on a volume that was created with a type # that has since been deleted. volume_type = db.volume_type_get(context, volume_type_id, True) for quota in ('volumes', 'gigabytes', 'snapshots'): if quota in opts: vtype_quota = "%s_%s" % (quota, volume_type['name']) opts[vtype_quota] = opts[quota] @property def resource_names(self): return sorted(self.resources.keys()) @property def resources(self): return self._resources class VolumeTypeQuotaEngine(QuotaEngine): """Represent the set of all quotas.""" @property def resources(self): """Fetches all possible quota resources.""" result = {} # Global quotas. argses = [('volumes', '_sync_volumes', 'quota_volumes'), ('snapshots', '_sync_snapshots', 'quota_snapshots'), ('gigabytes', '_sync_gigabytes', 'quota_gigabytes'), ] for args in argses: resource = ReservableResource(*args) result[resource.name] = resource # Volume type quotas. volume_types = db.volume_type_get_all(context.get_admin_context(), False) for volume_type in volume_types.values(): for part_name in ('volumes', 'gigabytes', 'snapshots'): resource = VolumeTypeResource(part_name, volume_type) result[resource.name] = resource return result def register_resource(self, resource): raise NotImplementedError(_("Cannot register resource")) def register_resources(self, resources): raise NotImplementedError(_("Cannot register resources")) QUOTAS = VolumeTypeQuotaEngine() cinder-2014.1.5/cinder/rpc.py0000664000567000056700000001051012540642606016754 0ustar jenkinsjenkins00000000000000# Copyright 2013 Red Hat, Inc. # # 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. __all__ = [ 'init', 'cleanup', 'set_defaults', 'add_extra_exmods', 'clear_extra_exmods', 'get_allowed_exmods', 'RequestContextSerializer', 'get_client', 'get_server', 'get_notifier', 'TRANSPORT_ALIASES', ] from oslo.config import cfg from oslo import messaging import cinder.context import cinder.exception from cinder.openstack.common import jsonutils CONF = cfg.CONF TRANSPORT = None NOTIFIER = None ALLOWED_EXMODS = [ cinder.exception.__name__, ] EXTRA_EXMODS = [] # NOTE(flaper87): The cinder.openstack.common.rpc entries are # for backwards compat with Havana rpc_backend configuration # values. The cinder.rpc entries are for compat with Folsom values. TRANSPORT_ALIASES = { 'cinder.openstack.common.rpc.impl_kombu': 'rabbit', 'cinder.openstack.common.rpc.impl_qpid': 'qpid', 'cinder.openstack.common.rpc.impl_zmq': 'zmq', 'cinder.rpc.impl_kombu': 'rabbit', 'cinder.rpc.impl_qpid': 'qpid', 'cinder.rpc.impl_zmq': 'zmq', } def init(conf): global TRANSPORT, NOTIFIER exmods = get_allowed_exmods() TRANSPORT = messaging.get_transport(conf, allowed_remote_exmods=exmods, aliases=TRANSPORT_ALIASES) serializer = RequestContextSerializer(JsonPayloadSerializer()) NOTIFIER = messaging.Notifier(TRANSPORT, serializer=serializer) def initialized(): return None not in [TRANSPORT, NOTIFIER] def cleanup(): global TRANSPORT, NOTIFIER assert TRANSPORT is not None assert NOTIFIER is not None TRANSPORT.cleanup() TRANSPORT = NOTIFIER = None def set_defaults(control_exchange): messaging.set_transport_defaults(control_exchange) def add_extra_exmods(*args): EXTRA_EXMODS.extend(args) def clear_extra_exmods(): del EXTRA_EXMODS[:] def get_allowed_exmods(): return ALLOWED_EXMODS + EXTRA_EXMODS class JsonPayloadSerializer(messaging.NoOpSerializer): @staticmethod def serialize_entity(context, entity): return jsonutils.to_primitive(entity, convert_instances=True) class RequestContextSerializer(messaging.Serializer): def __init__(self, base): self._base = base def serialize_entity(self, context, entity): if not self._base: return entity return self._base.serialize_entity(context, entity) def deserialize_entity(self, context, entity): if not self._base: return entity return self._base.deserialize_entity(context, entity) def serialize_context(self, context): return context.to_dict() def deserialize_context(self, context): return cinder.context.RequestContext.from_dict(context) def get_transport_url(url_str=None): return messaging.TransportURL.parse(CONF, url_str, TRANSPORT_ALIASES) def get_client(target, version_cap=None, serializer=None): assert TRANSPORT is not None serializer = RequestContextSerializer(serializer) return messaging.RPCClient(TRANSPORT, target, version_cap=version_cap, serializer=serializer) def get_server(target, endpoints, serializer=None): assert TRANSPORT is not None serializer = RequestContextSerializer(serializer) return messaging.get_rpc_server(TRANSPORT, target, endpoints, executor='eventlet', serializer=serializer) def get_notifier(service=None, host=None, publisher_id=None): assert NOTIFIER is not None if not publisher_id: publisher_id = "%s.%s" % (service, host or CONF.host) return NOTIFIER.prepare(publisher_id=publisher_id) cinder-2014.1.5/cinder/wsgi.py0000664000567000056700000004157012540642606017153 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. """Utility methods for working with WSGI servers.""" from __future__ import print_function import errno import os import socket import ssl import sys import time import eventlet import eventlet.wsgi import greenlet from oslo.config import cfg from paste import deploy import routes.middleware import webob.dec import webob.exc from cinder import exception from cinder.openstack.common import log as logging from cinder import utils socket_opts = [ cfg.IntOpt('tcp_keepidle', default=600, help="Sets the value of TCP_KEEPIDLE in seconds for each " "server socket. Not supported on OS X."), cfg.StrOpt('ssl_ca_file', default=None, help="CA certificate file to use to verify " "connecting clients"), cfg.StrOpt('ssl_cert_file', default=None, help="Certificate file to use when starting " "the server securely"), cfg.StrOpt('ssl_key_file', default=None, help="Private key file to use when starting " "the server securely"), ] eventlet_opts = [ cfg.IntOpt('max_header_line', default=16384, help="Maximum line size of message headers to be accepted. " "max_header_line may need to be increased when using " "large tokens (typically those generated by the " "Keystone v3 API with big service catalogs)."), cfg.BoolOpt('wsgi_keep_alive', default=True, help='If False, closes the client socket connection ' 'explicitly. Setting it to True to maintain backward ' 'compatibility. Recommended setting is set it to False.'), ] CONF = cfg.CONF CONF.register_opts(socket_opts) CONF.register_opts(eventlet_opts) LOG = logging.getLogger(__name__) class Server(object): """Server class to manage a WSGI server, serving a WSGI application.""" default_pool_size = 1000 def __init__(self, name, app, host=None, port=None, pool_size=None, protocol=eventlet.wsgi.HttpProtocol, backlog=128): """Initialize, but do not start, a WSGI server. :param name: Pretty name for logging. :param app: The WSGI application to serve. :param host: IP address to serve the application. :param port: Port number to server the application. :param pool_size: Maximum number of eventlets to spawn concurrently. :returns: None """ # Allow operators to customize http requests max header line size. eventlet.wsgi.MAX_HEADER_LINE = CONF.max_header_line self.name = name self.app = app self._host = host or "0.0.0.0" self._port = port or 0 self._server = None self._socket = None self._protocol = protocol self._pool = eventlet.GreenPool(pool_size or self.default_pool_size) self._logger = logging.getLogger("eventlet.wsgi.server") self._wsgi_logger = logging.WritableLogger(self._logger) if backlog < 1: raise exception.InvalidInput( reason='The backlog must be more than 1') self._socket = self._get_socket(self._host, self._port, backlog=backlog) def _get_socket(self, host, port, backlog): bind_addr = (host, port) # TODO(dims): eventlet's green dns/socket module does not actually # support IPv6 in getaddrinfo(). We need to get around this in the # future or monitor upstream for a fix try: info = socket.getaddrinfo(bind_addr[0], bind_addr[1], socket.AF_UNSPEC, socket.SOCK_STREAM)[0] family = info[0] bind_addr = info[-1] except Exception: family = socket.AF_INET cert_file = CONF.ssl_cert_file key_file = CONF.ssl_key_file ca_file = CONF.ssl_ca_file use_ssl = cert_file or key_file if cert_file and not os.path.exists(cert_file): raise RuntimeError(_("Unable to find cert_file : %s") % cert_file) if ca_file and not os.path.exists(ca_file): raise RuntimeError(_("Unable to find ca_file : %s") % ca_file) if key_file and not os.path.exists(key_file): raise RuntimeError(_("Unable to find key_file : %s") % key_file) if use_ssl and (not cert_file or not key_file): raise RuntimeError(_("When running server in SSL mode, you must " "specify both a cert_file and key_file " "option value in your configuration file")) def wrap_ssl(sock): ssl_kwargs = { 'server_side': True, 'certfile': cert_file, 'keyfile': key_file, 'cert_reqs': ssl.CERT_NONE, } if CONF.ssl_ca_file: ssl_kwargs['ca_certs'] = ca_file ssl_kwargs['cert_reqs'] = ssl.CERT_REQUIRED return ssl.wrap_socket(sock, **ssl_kwargs) sock = None retry_until = time.time() + 30 while not sock and time.time() < retry_until: try: sock = eventlet.listen(bind_addr, backlog=backlog, family=family) if use_ssl: sock = wrap_ssl(sock) except socket.error as err: if err.args[0] != errno.EADDRINUSE: raise eventlet.sleep(0.1) if not sock: raise RuntimeError(_("Could not bind to %(host)s:%(port)s " "after trying for 30 seconds") % {'host': host, 'port': port}) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # sockets can hang around forever without keepalive sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # This option isn't available in the OS X version of eventlet if hasattr(socket, 'TCP_KEEPIDLE'): sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, CONF.tcp_keepidle) return sock def _start(self): """Run the blocking eventlet WSGI server. :returns: None """ eventlet.wsgi.server(self._socket, self.app, protocol=self._protocol, custom_pool=self._pool, log=self._wsgi_logger, keepalive=CONF.wsgi_keep_alive) def start(self, backlog=128): """Start serving a WSGI application. :param backlog: Maximum number of queued connections. :returns: None :raises: cinder.exception.InvalidInput """ self._server = eventlet.spawn(self._start) (self._host, self._port) = self._socket.getsockname()[0:2] LOG.info(_("Started %(name)s on %(host)s:%(port)s") % {'name': self.name, 'host': self.host, 'port': self.port}) @property def host(self): return self._host @property def port(self): return self._port def stop(self): """Stop this server. This is not a very nice action, as currently the method by which a server is stopped is by killing its eventlet. :returns: None """ LOG.info(_("Stopping WSGI server.")) if self._server is not None: # Resize pool to stop new requests from being processed self._pool.resize(0) self._server.kill() def wait(self): """Block, until the server has stopped. Waits on the server's eventlet to finish, then returns. :returns: None """ try: if self._server is not None: self._pool.waitall() self._server.wait() except greenlet.GreenletExit: LOG.info(_("WSGI server has stopped.")) class Request(webob.Request): pass class Application(object): """Base WSGI application wrapper. Subclasses need to implement __call__.""" @classmethod def factory(cls, global_config, **local_config): """Used for paste app factories in paste.deploy config files. Any local configuration (that is, values under the [app:APPNAME] section of the paste config) will be passed into the `__init__` method as kwargs. A hypothetical configuration would look like: [app:wadl] latest_version = 1.3 paste.app_factory = cinder.api.fancy_api:Wadl.factory which would result in a call to the `Wadl` class as import cinder.api.fancy_api fancy_api.Wadl(latest_version='1.3') You could of course re-implement the `factory` method in subclasses, but using the kwarg passing it shouldn't be necessary. """ return cls(**local_config) def __call__(self, environ, start_response): r"""Subclasses will probably want to implement __call__ like this: @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): # Any of the following objects work as responses: # Option 1: simple string res = 'message\n' # Option 2: a nicely formatted HTTP exception page res = exc.HTTPForbidden(explanation='Nice try') # Option 3: a webob Response object (in case you need to play with # headers, or you want to be treated like an iterable, or or or) res = Response(); res.app_iter = open('somefile') # Option 4: any wsgi app to be run next res = self.application # Option 5: you can get a Response object for a wsgi app, too, to # play with headers etc res = req.get_response(self.application) # You can then just return your response... return res # ... or set req.response and return None. req.response = res See the end of http://pythonpaste.org/webob/modules/dec.html for more info. """ raise NotImplementedError(_('You must implement __call__')) class Middleware(Application): """Base WSGI middleware. These classes require an application to be initialized that will be called next. By default the middleware will simply call its wrapped app, or you can override __call__ to customize its behavior. """ @classmethod def factory(cls, global_config, **local_config): """Used for paste app factories in paste.deploy config files. Any local configuration (that is, values under the [filter:APPNAME] section of the paste config) will be passed into the `__init__` method as kwargs. A hypothetical configuration would look like: [filter:analytics] redis_host = 127.0.0.1 paste.filter_factory = cinder.api.analytics:Analytics.factory which would result in a call to the `Analytics` class as import cinder.api.analytics analytics.Analytics(app_from_paste, redis_host='127.0.0.1') You could of course re-implement the `factory` method in subclasses, but using the kwarg passing it shouldn't be necessary. """ def _factory(app): return cls(app, **local_config) return _factory def __init__(self, application): self.application = application def process_request(self, req): """Called on each request. If this returns None, the next application down the stack will be executed. If it returns a response then that response will be returned and execution will stop here. """ return None def process_response(self, response): """Do whatever you'd like to the response.""" return response @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): response = self.process_request(req) if response: return response response = req.get_response(self.application) return self.process_response(response) class Debug(Middleware): """Helper class for debugging a WSGI application. Can be inserted into any WSGI application chain to get information about the request and response. """ @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): print(('*' * 40) + ' REQUEST ENVIRON') for key, value in req.environ.items(): print(key, '=', value) print() resp = req.get_response(self.application) print(('*' * 40) + ' RESPONSE HEADERS') for (key, value) in resp.headers.iteritems(): print(key, '=', value) print() resp.app_iter = self.print_generator(resp.app_iter) return resp @staticmethod def print_generator(app_iter): """Iterator that prints the contents of a wrapper string.""" print(('*' * 40) + ' BODY') for part in app_iter: sys.stdout.write(part) sys.stdout.flush() yield part print() class Router(object): """WSGI middleware that maps incoming requests to WSGI apps.""" def __init__(self, mapper): """Create a router for the given routes.Mapper. Each route in `mapper` must specify a 'controller', which is a WSGI app to call. You'll probably want to specify an 'action' as well and have your controller be an object that can route the request to the action-specific method. Examples: mapper = routes.Mapper() sc = ServerController() # Explicit mapping of one route to a controller+action mapper.connect(None, '/svrlist', controller=sc, action='list') # Actions are all implicitly defined mapper.resource('server', 'servers', controller=sc) # Pointing to an arbitrary WSGI app. You can specify the # {path_info:.*} parameter so the target app can be handed just that # section of the URL. mapper.connect(None, '/v1.0/{path_info:.*}', controller=BlogApp()) """ self.map = mapper self._router = routes.middleware.RoutesMiddleware(self._dispatch, self.map) @webob.dec.wsgify(RequestClass=Request) def __call__(self, req): """Route the incoming request to a controller based on self.map. If no match, return a 404. """ return self._router @staticmethod @webob.dec.wsgify(RequestClass=Request) def _dispatch(req): """Dispatch the request to the appropriate controller. Called by self._router after matching the incoming request to a route and putting the information into req.environ. Either returns 404 or the routed WSGI app's response. """ match = req.environ['wsgiorg.routing_args'][1] if not match: return webob.exc.HTTPNotFound() app = match['controller'] return app class Loader(object): """Used to load WSGI applications from paste configurations.""" def __init__(self, config_path=None): """Initialize the loader, and attempt to find the config. :param config_path: Full or relative path to the paste config. :returns: None """ config_path = config_path or CONF.api_paste_config self.config_path = utils.find_config(config_path) def load_app(self, name): """Return the paste URLMap wrapped WSGI application. :param name: Name of the application to load. :returns: Paste URLMap object wrapping the requested application. :raises: `cinder.exception.PasteAppNotFound` """ try: return deploy.loadapp("config:%s" % self.config_path, name=name) except LookupError as err: LOG.error(err) raise exception.PasteAppNotFound(name=name, path=self.config_path) cinder-2014.1.5/cinder/__init__.py0000664000567000056700000000232512540642603017731 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ :mod:`cinder` -- Cloud IaaS Platform =================================== .. automodule:: cinder :platform: Unix :synopsis: Infrastructure-as-a-Service Cloud platform. .. moduleauthor:: Jesse Andrews .. moduleauthor:: Devin Carlen .. moduleauthor:: Vishvananda Ishaya .. moduleauthor:: Joshua McKenty .. moduleauthor:: Manish Singh .. moduleauthor:: Andy Smith """ cinder-2014.1.5/cinder/volume/0000775000567000056700000000000012540643114017123 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/configuration.py0000664000567000056700000000465312540642606022361 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # 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. """ Configuration support for all drivers. This module allows support for setting configurations either from default or from a particular FLAGS group, to be able to set multiple configurations for a given set of values. For instance, two lvm configurations can be set by naming them in groups as [lvm1] volume_group=lvm-group-1 ... [lvm2] volume_group=lvm-group-2 ... And the configuration group name will be passed in so that all calls to configuration.volume_group within that instance will be mapped to the proper named group. This class also ensures the implementation's configuration is grafted into the option group. This is due to the way cfg works. All cfg options must be defined and registered in the group in which they are used. """ from oslo.config import cfg from cinder.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) class Configuration(object): def __init__(self, volume_opts, config_group=None): """This takes care of grafting the implementation's config values into the config group """ self.config_group = config_group # set the local conf so that __call__'s know what to use if self.config_group: self._ensure_config_values(volume_opts) self.local_conf = CONF._get(self.config_group) else: self.local_conf = CONF def _ensure_config_values(self, volume_opts): CONF.register_opts(volume_opts, group=self.config_group) def append_config_values(self, volume_opts): self._ensure_config_values(volume_opts) def safe_get(self, value): try: return self.__getattr__(value) except cfg.NoSuchOptError: return None def __getattr__(self, value): return getattr(self.local_conf, value) cinder-2014.1.5/cinder/volume/iscsi.py0000664000567000056700000002451012540642606020616 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Mirantis, Inc. # All Rights Reserved. # # 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. import os import re from oslo.config import cfg from cinder.brick.iscsi import iscsi from cinder import exception from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils from cinder import utils LOG = logging.getLogger(__name__) CONF = cfg.CONF class _ExportMixin(object): def __init__(self, *args, **kwargs): self.db = kwargs.pop('db', None) super(_ExportMixin, self).__init__(*args, **kwargs) def create_export(self, context, volume, volume_path): """Creates an export for a logical volume.""" iscsi_name = "%s%s" % (CONF.iscsi_target_prefix, volume['name']) iscsi_target, lun = self._get_target_and_lun(context, volume) chap_username = utils.generate_username() chap_password = utils.generate_password() chap_auth = self._iscsi_authentication('IncomingUser', chap_username, chap_password) # NOTE(jdg): For TgtAdm case iscsi_name is the ONLY param we need # should clean this all up at some point in the future tid = self.create_iscsi_target(iscsi_name, iscsi_target, 0, volume_path, chap_auth) data = {} data['location'] = self._iscsi_location( CONF.iscsi_ip_address, tid, iscsi_name, lun) data['auth'] = self._iscsi_authentication( 'CHAP', chap_username, chap_password) return data def remove_export(self, context, volume): try: iscsi_target = self._get_iscsi_target(context, volume['id']) except exception.NotFound: LOG.info(_("Skipping remove_export. No iscsi_target " "provisioned for volume: %s"), volume['id']) return try: # NOTE: provider_location may be unset if the volume hasn't # been exported location = volume['provider_location'].split(' ') iqn = location[1] # ietadm show will exit with an error # this export has already been removed self.show_target(iscsi_target, iqn=iqn) except Exception: LOG.info(_("Skipping remove_export. No iscsi_target " "is presently exported for volume: %s"), volume['id']) return self.remove_iscsi_target(iscsi_target, 0, volume['id'], volume['name']) def ensure_export(self, context, volume, iscsi_name, volume_path, old_name=None): iscsi_target = self._get_target_for_ensure_export(context, volume['id']) if iscsi_target is None: LOG.info(_("Skipping remove_export. No iscsi_target " "provisioned for volume: %s"), volume['id']) return chap_auth = None # Check for https://bugs.launchpad.net/cinder/+bug/1065702 old_name = None if (volume['provider_location'] is not None and volume['name'] not in volume['provider_location']): msg = _('Detected inconsistency in provider_location id') LOG.debug(_('%s'), msg) old_name = self._fix_id_migration(context, volume) if 'in-use' in volume['status']: old_name = None self.create_iscsi_target(iscsi_name, iscsi_target, 0, volume_path, chap_auth, check_exit_code=False, old_name=old_name) def _ensure_iscsi_targets(self, context, host): """Ensure that target ids have been created in datastore.""" # NOTE(jdg): tgtadm doesn't use the iscsi_targets table # TODO(jdg): In the future move all of the dependent stuff into the # cooresponding target admin class host_iscsi_targets = self.db.iscsi_target_count_by_host(context, host) if host_iscsi_targets >= CONF.iscsi_num_targets: return # NOTE(vish): Target ids start at 1, not 0. target_end = CONF.iscsi_num_targets + 1 for target_num in xrange(1, target_end): target = {'host': host, 'target_num': target_num} self.db.iscsi_target_create_safe(context, target) def _get_target_for_ensure_export(self, context, volume_id): try: iscsi_target = self.db.volume_get_iscsi_target_num(context, volume_id) return iscsi_target except exception.NotFound: return None def _get_target_and_lun(self, context, volume): lun = 0 self._ensure_iscsi_targets(context, volume['host']) iscsi_target = self.db.volume_allocate_iscsi_target(context, volume['id'], volume['host']) return iscsi_target, lun def _get_iscsi_target(self, context, vol_id): return self.db.volume_get_iscsi_target_num(context, vol_id) def _iscsi_authentication(self, chap, name, password): return "%s %s %s" % (chap, name, password) def _iscsi_location(self, ip, target, iqn, lun=None): return "%s:%s,%s %s %s" % (ip, CONF.iscsi_port, target, iqn, lun) def _fix_id_migration(self, context, volume): """Fix provider_location and dev files to address bug 1065702. For volumes that the provider_location has NOT been updated and are not currently in-use we'll create a new iscsi target and remove the persist file. If the volume is in-use, we'll just stick with the old name and when detach is called we'll feed back into ensure_export again if necessary and fix things up then. Details at: https://bugs.launchpad.net/cinder/+bug/1065702 """ model_update = {} pattern = re.compile(r":|\s") fields = pattern.split(volume['provider_location']) old_name = fields[3] volume['provider_location'] = \ volume['provider_location'].replace(old_name, volume['name']) model_update['provider_location'] = volume['provider_location'] self.db.volume_update(context, volume['id'], model_update) start = os.getcwd() os.chdir('/dev/%s' % CONF.volume_group) try: (out, err) = self._execute('readlink', old_name) except putils.ProcessExecutionError: link_path = '/dev/%s/%s' % (CONF.volume_group, old_name) LOG.debug(_('Symbolic link %s not found') % link_path) os.chdir(start) return rel_path = out.rstrip() self._execute('ln', '-s', rel_path, volume['name'], run_as_root=True) os.chdir(start) return old_name class TgtAdm(_ExportMixin, iscsi.TgtAdm): def _get_target_and_lun(self, context, volume): lun = 1 # For tgtadm the controller is lun 0, dev starts at lun 1 iscsi_target = 0 # NOTE(jdg): Not used by tgtadm return iscsi_target, lun def _get_iscsi_target(self, context, vol_id): return 0 def _get_target_for_ensure_export(self, context, volume_id): return 1 class FakeIscsiHelper(_ExportMixin, iscsi.FakeIscsiHelper): def create_export(self, context, volume, volume_path): return { 'location': "fake_location", 'auth': "fake_auth" } def remove_export(self, context, volume): pass def ensure_export(self, context, volume_id, iscsi_name, volume_path, old_name=None): pass class LioAdm(_ExportMixin, iscsi.LioAdm): def remove_export(self, context, volume): try: iscsi_target = self.db.volume_get_iscsi_target_num(context, volume['id']) except exception.NotFound: LOG.info(_("Skipping remove_export. No iscsi_target " "provisioned for volume: %s"), volume['id']) return self.remove_iscsi_target(iscsi_target, 0, volume['id'], volume['name']) def ensure_export(self, context, volume_id, iscsi_name, volume_path, old_name=None): try: volume_info = self.db.volume_get(context, volume_id) (auth_method, auth_user, auth_pass) = volume_info['provider_auth'].split(' ', 3) chap_auth = self._iscsi_authentication(auth_method, auth_user, auth_pass) except exception.NotFound: LOG.debug(_("volume_info:%s"), volume_info) LOG.info(_("Skipping ensure_export. No iscsi_target " "provision for volume: %s"), volume_id) iscsi_target = 1 self.create_iscsi_target(iscsi_name, iscsi_target, 0, volume_path, chap_auth, check_exit_code=False) class IetAdm(_ExportMixin, iscsi.IetAdm): pass class ISERTgtAdm(_ExportMixin, iscsi.ISERTgtAdm): def _get_target_and_lun(self, context, volume): lun = 1 # For tgtadm the controller is lun 0, dev starts at lun 1 iscsi_target = 0 return iscsi_target, lun def _get_iscsi_target(self, context, vol_id): return 0 def _get_target_for_ensure_export(self, context, volume_id): return 1 cinder-2014.1.5/cinder/volume/driver.py0000664000567000056700000012021212540642606020773 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Drivers for volumes. """ import time from oslo.config import cfg from cinder import exception from cinder.image import image_utils from cinder.openstack.common import excutils from cinder.openstack.common import fileutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import utils from cinder.volume import iscsi from cinder.volume import rpcapi as volume_rpcapi from cinder.volume import utils as volume_utils LOG = logging.getLogger(__name__) volume_opts = [ cfg.IntOpt('num_shell_tries', default=3, help='number of times to attempt to run flakey shell commands'), cfg.IntOpt('reserved_percentage', default=0, help='The percentage of backend capacity is reserved'), cfg.IntOpt('iscsi_num_targets', default=100, help='The maximum number of iscsi target ids per host'), cfg.StrOpt('iscsi_target_prefix', default='iqn.2010-10.org.openstack:', help='prefix for iscsi volumes'), cfg.StrOpt('iscsi_ip_address', default='$my_ip', help='The IP address that the iSCSI daemon is listening on'), cfg.IntOpt('iscsi_port', default=3260, help='The port that the iSCSI daemon is listening on'), cfg.IntOpt('num_volume_device_scan_tries', deprecated_name='num_iscsi_scan_tries', default=3, help='The maximum number of times to rescan targets' ' to find volume'), cfg.StrOpt('volume_backend_name', default=None, help='The backend name for a given driver implementation'), cfg.BoolOpt('use_multipath_for_image_xfer', default=False, help='Do we attach/detach volumes in cinder using multipath ' 'for volume to image and image to volume transfers?'), cfg.StrOpt('volume_clear', default='zero', help='Method used to wipe old voumes (valid options are: ' 'none, zero, shred)'), cfg.IntOpt('volume_clear_size', default=0, help='Size in MiB to wipe at start of old volumes. 0 => all'), cfg.StrOpt('volume_clear_ionice', default=None, help='The flag to pass to ionice to alter the i/o priority ' 'of the process used to zero a volume after deletion, ' 'for example "-c3" for idle only priority.'), cfg.StrOpt('iscsi_helper', default='tgtadm', help='iscsi target user-land tool to use'), cfg.StrOpt('volumes_dir', default='$state_path/volumes', help='Volume configuration file storage ' 'directory'), cfg.StrOpt('iet_conf', default='/etc/iet/ietd.conf', help='IET configuration file'), cfg.StrOpt('lio_initiator_iqns', default='', help=('Comma-separated list of initiator IQNs ' 'allowed to connect to the ' 'iSCSI target. (From Nova compute nodes.)')), cfg.StrOpt('iscsi_iotype', default='fileio', help=('Sets the behavior of the iSCSI target ' 'to either perform blockio or fileio ' 'optionally, auto can be set and Cinder ' 'will autodetect type of backing device')), cfg.StrOpt('volume_dd_blocksize', default='1M', help='The default block size used when copying/clearing ' 'volumes'), ] # for backward compatibility iser_opts = [ cfg.IntOpt('num_iser_scan_tries', default=3, help='The maximum number of times to rescan iSER target' 'to find volume'), cfg.IntOpt('iser_num_targets', default=100, help='The maximum number of iser target ids per host'), cfg.StrOpt('iser_target_prefix', default='iqn.2010-10.org.openstack:', help='prefix for iser volumes'), cfg.StrOpt('iser_ip_address', default='$my_ip', help='The IP address that the iSER daemon is listening on'), cfg.IntOpt('iser_port', default=3260, help='The port that the iSER daemon is listening on'), cfg.StrOpt('iser_helper', default='tgtadm', help='iser target user-land tool to use'), ] CONF = cfg.CONF CONF.register_opts(volume_opts) CONF.register_opts(iser_opts) class VolumeDriver(object): """Executes commands relating to Volumes.""" VERSION = "N/A" def __init__(self, execute=utils.execute, *args, **kwargs): # NOTE(vish): db is set by Manager self.db = kwargs.get('db') self.host = kwargs.get('host') self.configuration = kwargs.get('configuration', None) if self.configuration: self.configuration.append_config_values(volume_opts) self.configuration.append_config_values(iser_opts) self.set_execute(execute) self._stats = {} # set True by manager after successful check_for_setup self._initialized = False def set_execute(self, execute): self._execute = execute def set_initialized(self): self._initialized = True @property def initialized(self): return self._initialized def get_version(self): """Get the current version of this driver.""" return self.VERSION def _is_non_recoverable(self, err, non_recoverable_list): for item in non_recoverable_list: if item in err: return True return False def _try_execute(self, *command, **kwargs): # NOTE(vish): Volume commands can partially fail due to timing, but # running them a second time on failure will usually # recover nicely. non_recoverable = kwargs.pop('no_retry_list', []) tries = 0 while True: try: self._execute(*command, **kwargs) return True except processutils.ProcessExecutionError as ex: tries = tries + 1 if tries >= self.configuration.num_shell_tries or\ self._is_non_recoverable(ex.stderr, non_recoverable): raise LOG.exception(_("Recovering from a failed execute. " "Try number %s"), tries) time.sleep(tries ** 2) def check_for_setup_error(self): raise NotImplementedError() def create_volume(self, volume): """Creates a volume. Can optionally return a Dictionary of changes to the volume object to be persisted. """ raise NotImplementedError() def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" raise NotImplementedError() def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" raise NotImplementedError() def delete_volume(self, volume): """Deletes a volume.""" raise NotImplementedError() def create_snapshot(self, snapshot): """Creates a snapshot.""" raise NotImplementedError() def delete_snapshot(self, snapshot): """Deletes a snapshot.""" raise NotImplementedError() def local_path(self, volume): raise NotImplementedError() def ensure_export(self, context, volume): """Synchronously recreates an export for a volume.""" raise NotImplementedError() def create_export(self, context, volume): """Exports the volume. Can optionally return a Dictionary of changes to the volume object to be persisted. """ raise NotImplementedError() def remove_export(self, context, volume): """Removes an export for a volume.""" raise NotImplementedError() def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info.""" raise NotImplementedError() def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector""" raise NotImplementedError() def attach_volume(self, context, volume, instance_uuid, host_name, mountpoint): """Callback for volume attached to instance or host.""" pass def detach_volume(self, context, volume): """Callback for volume detached.""" pass def get_volume_stats(self, refresh=False): """Return the current state of the volume service. If 'refresh' is True, run the update first. """ return None def do_setup(self, context): """Any initialization the volume driver does while starting.""" pass def validate_connector(self, connector): """Fail if connector doesn't contain all the data needed by driver.""" pass def copy_volume_data(self, context, src_vol, dest_vol, remote=None): """Copy data from src_vol to dest_vol.""" LOG.debug(_('copy_data_between_volumes %(src)s -> %(dest)s.') % {'src': src_vol['name'], 'dest': dest_vol['name']}) properties = utils.brick_get_connector_properties() dest_remote = True if remote in ['dest', 'both'] else False dest_orig_status = dest_vol['status'] try: dest_attach_info = self._attach_volume(context, dest_vol, properties, remote=dest_remote) except Exception: with excutils.save_and_reraise_exception(): msg = _("Failed to attach volume %(vol)s") LOG.error(msg % {'vol': dest_vol['id']}) self.db.volume_update(context, dest_vol['id'], {'status': dest_orig_status}) src_remote = True if remote in ['src', 'both'] else False src_orig_status = src_vol['status'] try: src_attach_info = self._attach_volume(context, src_vol, properties, remote=src_remote) except Exception: with excutils.save_and_reraise_exception(): msg = _("Failed to attach volume %(vol)s") LOG.error(msg % {'vol': src_vol['id']}) self.db.volume_update(context, src_vol['id'], {'status': src_orig_status}) self._detach_volume(context, dest_attach_info, dest_vol, properties, force=True, remote=dest_remote) try: size_in_mb = int(src_vol['size']) * 1024 # vol size is in GB volume_utils.copy_volume( src_attach_info['device']['path'], dest_attach_info['device']['path'], size_in_mb, self.configuration.volume_dd_blocksize) copy_error = False except Exception: with excutils.save_and_reraise_exception(): msg = _("Failed to copy volume %(src)s to %(dest)d") LOG.error(msg % {'src': src_vol['id'], 'dest': dest_vol['id']}) copy_error = True finally: self._detach_volume(context, dest_attach_info, dest_vol, properties, force=copy_error, remote=dest_remote) self._detach_volume(context, src_attach_info, src_vol, properties, force=copy_error, remote=src_remote) def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" LOG.debug(_('copy_image_to_volume %s.') % volume['name']) properties = utils.brick_get_connector_properties() attach_info = self._attach_volume(context, volume, properties) try: image_utils.fetch_to_raw(context, image_service, image_id, attach_info['device']['path'], self.configuration.volume_dd_blocksize, size=volume['size']) finally: self._detach_volume(context, attach_info, volume, properties) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" LOG.debug(_('copy_volume_to_image %s.') % volume['name']) properties = utils.brick_get_connector_properties() attach_info = self._attach_volume(context, volume, properties) try: image_utils.upload_volume(context, image_service, image_meta, attach_info['device']['path']) finally: self._detach_volume(context, attach_info, volume, properties) def _attach_volume(self, context, volume, properties, remote=False): """Attach the volume.""" if remote: # Call remote manager's initialize_connection which includes # driver's create_export and initialize_connection rpcapi = volume_rpcapi.VolumeAPI() conn = rpcapi.initialize_connection(context, volume, properties) else: # Call local driver's create_export and initialize_connection. # NOTE(avishay) This is copied from the manager's code - need to # clean this up in the future. model_update = None try: LOG.debug(_("Volume %s: creating export"), volume['id']) model_update = self.create_export(context, volume) if model_update: volume = self.db.volume_update(context, volume['id'], model_update) except exception.CinderException as ex: if model_update: LOG.exception(_("Failed updating model of volume " "%(volume_id)s with driver provided model " "%(model)s") % {'volume_id': volume['id'], 'model': model_update}) raise exception.ExportFailure(reason=ex) try: conn = self.initialize_connection(volume, properties) except Exception as err: try: err_msg = (_('Unable to fetch connection information from ' 'backend: %(err)s') % {'err': err}) LOG.error(err_msg) LOG.debug("Cleaning up failed connect initialization.") self.remove_export(context, volume) except Exception as ex: ex_msg = (_('Error encountered during cleanup ' 'of a failed attach: %(ex)s') % {'ex': ex}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=ex_msg) raise exception.VolumeBackendAPIException(data=err_msg) # Use Brick's code to do attach/detach use_multipath = self.configuration.use_multipath_for_image_xfer device_scan_attempts = self.configuration.num_volume_device_scan_tries protocol = conn['driver_volume_type'] connector = utils.brick_get_connector(protocol, use_multipath=use_multipath, device_scan_attempts= device_scan_attempts, conn=conn) device = connector.connect_volume(conn['data']) host_device = device['path'] if not connector.check_valid_device(host_device): raise exception.DeviceUnavailable(path=host_device, reason=(_("Unable to access " "the backend storage " "via the path " "%(path)s.") % {'path': host_device})) return {'conn': conn, 'device': device, 'connector': connector} def _detach_volume(self, context, attach_info, volume, properties, force=False, remote=False): """Disconnect the volume from the host.""" # Use Brick's code to do attach/detach connector = attach_info['connector'] connector.disconnect_volume(attach_info['conn']['data'], attach_info['device']) if remote: # Call remote manager's terminate_connection which includes # driver's terminate_connection and remove export rpcapi = volume_rpcapi.VolumeAPI() rpcapi.terminate_connection(context, volume, properties, force=force) else: # Call local driver's terminate_connection and remove export. # NOTE(avishay) This is copied from the manager's code - need to # clean this up in the future. try: self.terminate_connection(volume, properties, force=force) except Exception as err: err_msg = (_('Unable to terminate volume connection: %(err)s') % {'err': err}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) try: LOG.debug(_("volume %s: removing export"), volume['id']) self.remove_export(context, volume) except Exception as ex: LOG.exception(_("Error detaching volume %(volume)s, " "due to remove export failure."), {"volume": volume['id']}) raise exception.RemoveExportException(volume=volume['id'], reason=ex) def clone_image(self, volume, image_location, image_id, image_meta): """Create a volume efficiently from an existing image. image_location is a string whose format depends on the image service backend in use. The driver should use it to determine whether cloning is possible. image_id is a string which represents id of the image. It can be used by the driver to introspect internal stores or registry to do an efficient image clone. image_meta is a dictionary that includes 'disk_format' (e.g. raw, qcow2) and other image attributes that allow drivers to decide whether they can clone the image without first requiring conversion. Returns a dict of volume properties eg. provider_location, boolean indicating whether cloning occurred """ return None, False def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" volume = self.db.volume_get(context, backup['volume_id']) LOG.debug(_('Creating a new backup for volume %s.') % volume['name']) properties = utils.brick_get_connector_properties() attach_info = self._attach_volume(context, volume, properties) try: volume_path = attach_info['device']['path'] with utils.temporary_chown(volume_path): with fileutils.file_open(volume_path) as volume_file: backup_service.backup(backup, volume_file) finally: self._detach_volume(context, attach_info, volume, properties) def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" LOG.debug(_('Restoring backup %(backup)s to ' 'volume %(volume)s.') % {'backup': backup['id'], 'volume': volume['name']}) properties = utils.brick_get_connector_properties() attach_info = self._attach_volume(context, volume, properties) try: volume_path = attach_info['device']['path'] with utils.temporary_chown(volume_path): with fileutils.file_open(volume_path, 'wb') as volume_file: backup_service.restore(backup, volume['id'], volume_file) finally: self._detach_volume(context, attach_info, volume, properties) def clear_download(self, context, volume): """Clean up after an interrupted image copy.""" pass def extend_volume(self, volume, new_size): msg = _("Extend volume not implemented") raise NotImplementedError(msg) def migrate_volume(self, context, volume, host): """Migrate the volume to the specified host. Returns a boolean indicating whether the migration occurred, as well as model_update. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ return (False, None) def retype(self, context, volume, new_type, diff, host): """Convert the volume to be of the new type. Returns a boolean indicating whether the retype occurred. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param new_type: A dictionary describing the volume type to convert to :param diff: A dictionary with the difference between the two types :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ return False def accept_transfer(self, context, volume, new_user, new_project): """Accept the transfer of a volume for a new user/project.""" pass def manage_existing(self, volume, existing_ref): """Brings an existing backend storage object under Cinder management. existing_ref is passed straight through from the API request's manage_existing_ref value, and it is up to the driver how this should be interpreted. It should be sufficient to identify a storage object that the driver should somehow associate with the newly-created cinder volume structure. There are two ways to do this: 1. Rename the backend storage object so that it matches the, volume['name'] which is how drivers traditionally map between a cinder volume and the associated backend storage object. 2. Place some metadata on the volume, or somewhere in the backend, that allows other driver requests (e.g. delete, clone, attach, detach...) to locate the backend storage object when required. If the existing_ref doesn't make sense, or doesn't refer to an existing backend storage object, raise a ManageExistingInvalidReference exception. The volume may have a volume_type, and the driver can inspect that and compare against the properties of the referenced backend storage object. If they are incompatible, raise a ManageExistingVolumeTypeMismatch, specifying a reason for the failure. """ msg = _("Manage existing volume not implemented.") raise NotImplementedError(msg) def manage_existing_get_size(self, volume, existing_ref): """Return size of volume to be managed by manage_existing. When calculating the size, round up to the next GB. """ msg = _("Manage existing volume not implemented.") raise NotImplementedError(msg) def unmanage(self, volume): """Removes the specified volume from Cinder management. Does not delete the underlying backend storage object. For most drivers, this will not need to do anything. However, some drivers might use this call as an opportunity to clean up any Cinder-specific configuration that they have associated with the backend storage object. """ pass class ISCSIDriver(VolumeDriver): """Executes commands relating to ISCSI volumes. We make use of model provider properties as follows: ``provider_location`` if present, contains the iSCSI target information in the same format as an ietadm discovery i.e. ':, ' ``provider_auth`` if present, contains a space-separated triple: ' '. `CHAP` is the only auth_method in use at the moment. """ def __init__(self, *args, **kwargs): super(ISCSIDriver, self).__init__(*args, **kwargs) def _do_iscsi_discovery(self, volume): #TODO(justinsb): Deprecate discovery and use stored info #NOTE(justinsb): Discovery won't work with CHAP-secured targets (?) LOG.warn(_("ISCSI provider_location not stored, using discovery")) volume_name = volume['name'] try: # NOTE(griff) We're doing the split straight away which should be # safe since using '@' in hostname is considered invalid (out, _err) = self._execute('iscsiadm', '-m', 'discovery', '-t', 'sendtargets', '-p', volume['host'].split('@')[0], run_as_root=True) except processutils.ProcessExecutionError as ex: LOG.error(_("ISCSI discovery attempt failed for:%s") % volume['host'].split('@')[0]) LOG.debug(_("Error from iscsiadm -m discovery: %s") % ex.stderr) return None for target in out.splitlines(): if (self.configuration.iscsi_ip_address in target and volume_name in target): return target return None def _get_iscsi_properties(self, volume): """Gets iscsi configuration We ideally get saved information in the volume entity, but fall back to discovery if need be. Discovery may be completely removed in future The properties are: :target_discovered: boolean indicating whether discovery was used :target_iqn: the IQN of the iSCSI target :target_portal: the portal of the iSCSI target :target_lun: the lun of the iSCSI target :volume_id: the id of the volume (currently used by xen) :auth_method:, :auth_username:, :auth_password: the authentication details. Right now, either auth_method is not present meaning no authentication, or auth_method == `CHAP` meaning use CHAP with the specified credentials. :access_mode: the volume access mode allow client used ('rw' or 'ro' currently supported) """ properties = {} location = volume['provider_location'] if location: # provider_location is the same format as iSCSI discovery output properties['target_discovered'] = False else: location = self._do_iscsi_discovery(volume) if not location: msg = (_("Could not find iSCSI export for volume %s") % (volume['name'])) raise exception.InvalidVolume(reason=msg) LOG.debug(_("ISCSI Discovery: Found %s") % (location)) properties['target_discovered'] = True results = location.split(" ") properties['target_portal'] = results[0].split(",")[0] properties['target_iqn'] = results[1] try: properties['target_lun'] = int(results[2]) except (IndexError, ValueError): if (self.configuration.volume_driver in ['cinder.volume.drivers.lvm.LVMISCSIDriver', 'cinder.volume.drivers.lvm.LVMISERDriver', 'cinder.volume.drivers.lvm.ThinLVMVolumeDriver'] and self.configuration.iscsi_helper in ('tgtadm', 'iseradm')): properties['target_lun'] = 1 else: properties['target_lun'] = 0 properties['volume_id'] = volume['id'] auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret geometry = volume.get('provider_geometry', None) if geometry: (physical_block_size, logical_block_size) = geometry.split() properties['physical_block_size'] = physical_block_size properties['logical_block_size'] = logical_block_size encryption_key_id = volume.get('encryption_key_id', None) properties['encrypted'] = encryption_key_id is not None return properties def _run_iscsiadm(self, iscsi_properties, iscsi_command, **kwargs): check_exit_code = kwargs.pop('check_exit_code', 0) (out, err) = self._execute('iscsiadm', '-m', 'node', '-T', iscsi_properties['target_iqn'], '-p', iscsi_properties['target_portal'], *iscsi_command, run_as_root=True, check_exit_code=check_exit_code) LOG.debug("iscsiadm %s: stdout=%s stderr=%s" % (iscsi_command, out, err)) return (out, err) def _run_iscsiadm_bare(self, iscsi_command, **kwargs): check_exit_code = kwargs.pop('check_exit_code', 0) (out, err) = self._execute('iscsiadm', *iscsi_command, run_as_root=True, check_exit_code=check_exit_code) LOG.debug("iscsiadm %s: stdout=%s stderr=%s" % (iscsi_command, out, err)) return (out, err) def _iscsiadm_update(self, iscsi_properties, property_key, property_value, **kwargs): iscsi_command = ('--op', 'update', '-n', property_key, '-v', property_value) return self._run_iscsiadm(iscsi_properties, iscsi_command, **kwargs) def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info. The iscsi driver returns a driver_volume_type of 'iscsi'. The format of the driver data is defined in _get_iscsi_properties. Example return value:: { 'driver_volume_type': 'iscsi' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:volume-00000001', 'target_portal': '127.0.0.0.1:3260', 'volume_id': 1, 'access_mode': 'rw' } } """ if CONF.iscsi_helper == 'lioadm': self.target_helper.initialize_connection(volume, connector) iscsi_properties = self._get_iscsi_properties(volume) return { 'driver_volume_type': 'iscsi', 'data': iscsi_properties } def validate_connector(self, connector): # iSCSI drivers require the initiator information if 'initiator' not in connector: err_msg = (_('The volume driver requires the iSCSI initiator ' 'name in the connector.')) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def terminate_connection(self, volume, connector, **kwargs): pass def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = {} backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or 'Generic_iSCSI' data["vendor_name"] = 'Open Source' data["driver_version"] = '1.0' data["storage_protocol"] = 'iSCSI' data['total_capacity_gb'] = 'infinite' data['free_capacity_gb'] = 'infinite' data['reserved_percentage'] = 100 data['QoS_support'] = False self._stats = data def get_target_helper(self, db): root_helper = utils.get_root_helper() if CONF.iscsi_helper == 'iseradm': return iscsi.ISERTgtAdm(root_helper, CONF.volumes_dir, CONF.iscsi_target_prefix, db=db) elif CONF.iscsi_helper == 'tgtadm': return iscsi.TgtAdm(root_helper, CONF.volumes_dir, CONF.iscsi_target_prefix, db=db) elif CONF.iscsi_helper == 'fake': return iscsi.FakeIscsiHelper() elif CONF.iscsi_helper == 'lioadm': return iscsi.LioAdm(root_helper, CONF.lio_initiator_iqns, CONF.iscsi_target_prefix, db=db) else: return iscsi.IetAdm(root_helper, CONF.iet_conf, CONF.iscsi_iotype, db=db) class FakeISCSIDriver(ISCSIDriver): """Logs calls instead of executing.""" def __init__(self, *args, **kwargs): super(FakeISCSIDriver, self).__init__(execute=self.fake_execute, *args, **kwargs) def create_volume(self, volume): pass def check_for_setup_error(self): """No setup necessary in fake mode.""" pass def initialize_connection(self, volume, connector): return { 'driver_volume_type': 'iscsi', 'data': {'access_mode': 'rw'} } def terminate_connection(self, volume, connector, **kwargs): pass @staticmethod def fake_execute(cmd, *_args, **_kwargs): """Execute that simply logs the command.""" LOG.debug(_("FAKE ISCSI: %s"), cmd) return (None, None) class ISERDriver(ISCSIDriver): """Executes commands relating to ISER volumes. We make use of model provider properties as follows: ``provider_location`` if present, contains the iSER target information in the same format as an ietadm discovery i.e. ':, ' ``provider_auth`` if present, contains a space-separated triple: ' '. `CHAP` is the only auth_method in use at the moment. """ def __init__(self, *args, **kwargs): super(ISERDriver, self).__init__(*args, **kwargs) # for backward compatibility self.configuration.num_iscsi_scan_tries = \ self.configuration.num_iser_scan_tries self.configuration.iscsi_num_targets = \ self.configuration.iser_num_targets self.configuration.iscsi_target_prefix = \ self.configuration.iser_target_prefix self.configuration.iscsi_ip_address = \ self.configuration.iser_ip_address self.configuration.iser_port = self.configuration.iser_port def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info. The iser driver returns a driver_volume_type of 'iser'. The format of the driver data is defined in _get_iser_properties. Example return value:: { 'driver_volume_type': 'iser' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.iser.openstack:volume-00000001', 'target_portal': '127.0.0.0.1:3260', 'volume_id': 1, } } """ iser_properties = self._get_iscsi_properties(volume) return { 'driver_volume_type': 'iser', 'data': iser_properties } def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = {} backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or 'Generic_iSER' data["vendor_name"] = 'Open Source' data["driver_version"] = '1.0' data["storage_protocol"] = 'iSER' data['total_capacity_gb'] = 'infinite' data['free_capacity_gb'] = 'infinite' data['reserved_percentage'] = 100 data['QoS_support'] = False self._stats = data def get_target_helper(self, db): root_helper = utils.get_root_helper() if CONF.iser_helper == 'fake': return iscsi.FakeIscsiHelper() else: return iscsi.ISERTgtAdm(root_helper, CONF.volumes_dir, db=db) class FakeISERDriver(FakeISCSIDriver): """Logs calls instead of executing.""" def __init__(self, *args, **kwargs): super(FakeISERDriver, self).__init__(execute=self.fake_execute, *args, **kwargs) def initialize_connection(self, volume, connector): return { 'driver_volume_type': 'iser', 'data': {} } @staticmethod def fake_execute(cmd, *_args, **_kwargs): """Execute that simply logs the command.""" LOG.debug(_("FAKE ISER: %s"), cmd) return (None, None) class FibreChannelDriver(VolumeDriver): """Executes commands relating to Fibre Channel volumes.""" def __init__(self, *args, **kwargs): super(FibreChannelDriver, self).__init__(*args, **kwargs) def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info. The driver returns a driver_volume_type of 'fibre_channel'. The target_wwn can be a single entry or a list of wwns that correspond to the list of remote wwn(s) that will export the volume. Example return values: { 'driver_volume_type': 'fibre_channel' 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': '1234567890123', 'access_mode': 'rw' } } or { 'driver_volume_type': 'fibre_channel' 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': ['1234567890123', '0987654321321'], 'access_mode': 'rw' } } """ msg = _("Driver must implement initialize_connection") raise NotImplementedError(msg) cinder-2014.1.5/cinder/volume/manager.py0000664000567000056700000017117212540642606021125 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Volume manager manages creating, attaching, detaching, and persistent storage. Persistent storage volumes keep their state independent of instances. You can attach to an instance, terminate the instance, spawn a new instance (even one from a different image) and re-attach the volume with the same data intact. **Related Flags** :volume_topic: What :mod:`rpc` topic to listen to (default: `cinder-volume`). :volume_manager: The module name of a class derived from :class:`manager.Manager` (default: :class:`cinder.volume.manager.Manager`). :volume_driver: Used by :class:`Manager`. Defaults to :class:`cinder.volume.drivers.lvm.LVMISCSIDriver`. :volume_group: Name of the group that will contain exported volumes (default: `cinder-volumes`) :num_shell_tries: Number of times to attempt to run commands (default: 3) """ import time from oslo.config import cfg from oslo import messaging from cinder import compute from cinder import context from cinder import exception from cinder.image import glance from cinder import manager from cinder.openstack.common import excutils from cinder.openstack.common import importutils from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder.openstack.common import periodic_task from cinder.openstack.common import timeutils from cinder.openstack.common import uuidutils from cinder import quota from cinder import utils from cinder.volume.configuration import Configuration from cinder.volume.flows.manager import create_volume from cinder.volume.flows.manager import manage_existing from cinder.volume import rpcapi as volume_rpcapi from cinder.volume import utils as volume_utils from cinder.volume import volume_types from cinder.zonemanager.fc_zone_manager import ZoneManager from eventlet.greenpool import GreenPool LOG = logging.getLogger(__name__) QUOTAS = quota.QUOTAS volume_manager_opts = [ cfg.StrOpt('volume_driver', default='cinder.volume.drivers.lvm.LVMISCSIDriver', help='Driver to use for volume creation'), cfg.IntOpt('migration_create_volume_timeout_secs', default=300, help='Timeout for creating the volume to migrate to ' 'when performing volume migration (seconds)'), cfg.BoolOpt('volume_service_inithost_offload', default=False, help='Offload pending volume delete during ' 'volume service startup'), cfg.StrOpt('zoning_mode', default='none', help='FC Zoning mode configured'), cfg.StrOpt('extra_capabilities', default='{}', help='User defined capabilities, a JSON formatted string ' 'specifying key/value pairs.'), ] CONF = cfg.CONF CONF.register_opts(volume_manager_opts) MAPPING = { 'cinder.volume.drivers.nexenta.volume.NexentaDriver': 'cinder.volume.drivers.nexenta.iscsi.NexentaISCSIDriver', 'cinder.volume.drivers.solidfire.SolidFire': 'cinder.volume.drivers.solidfire.SolidFireDriver', 'cinder.volume.drivers.storwize_svc.StorwizeSVCDriver': 'cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver', 'cinder.volume.drivers.windows.WindowsDriver': 'cinder.volume.drivers.windows.windows.WindowsDriver', 'cinder.volume.drivers.xiv.XIVDriver': 'cinder.volume.drivers.ibm.xiv_ds8k.XIVDS8KDriver', 'cinder.volume.drivers.xiv_ds8k.XIVDS8KDriver': 'cinder.volume.drivers.ibm.xiv_ds8k.XIVDS8KDriver', 'cinder.volume.driver.ISCSIDriver': 'cinder.volume.drivers.lvm.LVMISCSIDriver', 'cinder.volume.drivers.netapp.iscsi.NetAppISCSIDriver': 'cinder.volume.drivers.netapp.common.Deprecated', 'cinder.volume.drivers.netapp.iscsi.NetAppCmodeISCSIDriver': 'cinder.volume.drivers.netapp.common.Deprecated', 'cinder.volume.drivers.netapp.nfs.NetAppNFSDriver': 'cinder.volume.drivers.netapp.common.Deprecated', 'cinder.volume.drivers.netapp.nfs.NetAppCmodeNfsDriver': 'cinder.volume.drivers.netapp.common.Deprecated', 'cinder.volume.drivers.huawei.HuaweiISCSIDriver': 'cinder.volume.drivers.huawei.HuaweiVolumeDriver', 'cinder.volume.drivers.san.hp_lefthand.HpSanISCSIDriver': 'cinder.volume.drivers.san.hp.hp_lefthand_iscsi.HPLeftHandISCSIDriver', 'cinder.volume.drivers.gpfs.GPFSDriver': 'cinder.volume.drivers.ibm.gpfs.GPFSDriver', } def locked_volume_operation(f): """Lock decorator for volume operations. Takes a named lock prior to executing the operation. The lock is named with the operation executed and the id of the volume. This lock can then be used by other operations to avoid operation conflicts on shared volumes. Example use: If a volume operation uses this decorator, it will block until the named lock is free. This is used to protect concurrent operations on the same volume e.g. delete VolA while create volume VolB from VolA is in progress. """ def lvo_inner1(inst, context, volume_id, **kwargs): @utils.synchronized("%s-%s" % (volume_id, f.__name__), external=True) def lvo_inner2(*_args, **_kwargs): return f(*_args, **_kwargs) return lvo_inner2(inst, context, volume_id, **kwargs) return lvo_inner1 def locked_snapshot_operation(f): """Lock decorator for snapshot operations. Takes a named lock prior to executing the operation. The lock is named with the operation executed and the id of the snapshot. This lock can then be used by other operations to avoid operation conflicts on shared snapshots. Example use: If a snapshot operation uses this decorator, it will block until the named lock is free. This is used to protect concurrent operations on the same snapshot e.g. delete SnapA while create volume VolA from SnapA is in progress. """ def lso_inner1(inst, context, snapshot_id, **kwargs): @utils.synchronized("%s-%s" % (snapshot_id, f.__name__), external=True) def lso_inner2(*_args, **_kwargs): return f(*_args, **_kwargs) return lso_inner2(inst, context, snapshot_id, **kwargs) return lso_inner1 class VolumeManager(manager.SchedulerDependentManager): """Manages attachable block storage devices.""" RPC_API_VERSION = '1.16' target = messaging.Target(version=RPC_API_VERSION) def __init__(self, volume_driver=None, service_name=None, *args, **kwargs): """Load the driver from the one specified in args, or from flags.""" # update_service_capabilities needs service_name to be volume super(VolumeManager, self).__init__(service_name='volume', *args, **kwargs) self.configuration = Configuration(volume_manager_opts, config_group=service_name) self._tp = GreenPool() self.stats = {} if not volume_driver: # Get from configuration, which will get the default # if its not using the multi backend volume_driver = self.configuration.volume_driver if volume_driver in MAPPING: LOG.warn(_("Driver path %s is deprecated, update your " "configuration to the new path."), volume_driver) volume_driver = MAPPING[volume_driver] if volume_driver == 'cinder.volume.drivers.lvm.ThinLVMVolumeDriver': # Deprecated in Havana # Not handled in MAPPING because it requires setting a conf option LOG.warn(_("ThinLVMVolumeDriver is deprecated, please configure " "LVMISCSIDriver and lvm_type=thin. Continuing with " "those settings.")) volume_driver = 'cinder.volume.drivers.lvm.LVMISCSIDriver' self.configuration.lvm_type = 'thin' self.driver = importutils.import_object( volume_driver, configuration=self.configuration, db=self.db, host=self.host) self.zonemanager = None try: self.extra_capabilities = jsonutils.loads( self.driver.configuration.extra_capabilities) except AttributeError: self.extra_capabilities = {} except Exception: with excutils.save_and_reraise_exception(): LOG.error("Invalid JSON: %s" % self.driver.configuration.extra_capabilities) def _add_to_threadpool(self, func, *args, **kwargs): self._tp.spawn_n(func, *args, **kwargs) def init_host(self): """Do any initialization that needs to be run if this is a standalone service. """ ctxt = context.get_admin_context() if self.configuration.safe_get('zoning_mode') == 'fabric': self.zonemanager = ZoneManager(configuration=self.configuration) LOG.info(_("Starting FC Zone Manager %(zm_version)s," " Driver %(drv_name)s %(drv_version)s") % {'zm_version': self.zonemanager.get_version(), 'drv_name': self.zonemanager.driver.__class__.__name__, 'drv_version': self.zonemanager.driver.get_version()}) LOG.info(_("Starting volume driver %(driver_name)s (%(version)s)") % {'driver_name': self.driver.__class__.__name__, 'version': self.driver.get_version()}) try: self.driver.do_setup(ctxt) self.driver.check_for_setup_error() except Exception as ex: LOG.error(_("Error encountered during " "initialization of driver: %(name)s") % {'name': self.driver.__class__.__name__}) LOG.exception(ex) # we don't want to continue since we failed # to initialize the driver correctly. return volumes = self.db.volume_get_all_by_host(ctxt, self.host) LOG.debug(_("Re-exporting %s volumes"), len(volumes)) try: sum = 0 self.stats.update({'allocated_capacity_gb': sum}) for volume in volumes: if volume['status'] in ['in-use']: # calculate allocated capacity for driver sum += volume['size'] self.stats['allocated_capacity_gb'] = sum try: self.driver.ensure_export(ctxt, volume) except Exception as export_ex: LOG.error(_("Failed to re-export volume %s: " "setting to error state"), volume['id']) LOG.exception(export_ex) self.db.volume_update(ctxt, volume['id'], {'status': 'error'}) elif volume['status'] == 'downloading': LOG.info(_("volume %s stuck in a downloading state"), volume['id']) self.driver.clear_download(ctxt, volume) self.db.volume_update(ctxt, volume['id'], {'status': 'error'}) else: LOG.info(_("volume %s: skipping export"), volume['id']) except Exception as ex: LOG.error(_("Error encountered during " "re-exporting phase of driver initialization: " " %(name)s") % {'name': self.driver.__class__.__name__}) LOG.exception(ex) return # at this point the driver is considered initialized. self.driver.set_initialized() LOG.debug(_('Resuming any in progress delete operations')) for volume in volumes: if volume['status'] == 'deleting': LOG.info(_('Resuming delete on volume: %s') % volume['id']) if CONF.volume_service_inithost_offload: # Offload all the pending volume delete operations to the # threadpool to prevent the main volume service thread # from being blocked. self._add_to_threadpool(self.delete_volume(ctxt, volume['id'])) else: # By default, delete volumes sequentially self.delete_volume(ctxt, volume['id']) # collect and publish service capabilities self.publish_service_capabilities(ctxt) def create_volume(self, context, volume_id, request_spec=None, filter_properties=None, allow_reschedule=True, snapshot_id=None, image_id=None, source_volid=None): """Creates the volume.""" context_saved = context.deepcopy() context = context.elevated() if filter_properties is None: filter_properties = {} try: # NOTE(flaper87): Driver initialization is # verified by the task itself. flow_engine = create_volume.get_flow( context, self.db, self.driver, self.scheduler_rpcapi, self.host, volume_id, snapshot_id=snapshot_id, image_id=image_id, source_volid=source_volid, allow_reschedule=allow_reschedule, reschedule_context=context_saved, request_spec=request_spec, filter_properties=filter_properties) except Exception: LOG.exception(_("Failed to create manager volume flow")) raise exception.CinderException( _("Failed to create manager volume flow")) if snapshot_id is not None: # Make sure the snapshot is not deleted until we are done with it. locked_action = "%s-%s" % (snapshot_id, 'delete_snapshot') elif source_volid is not None: # Make sure the volume is not deleted until we are done with it. locked_action = "%s-%s" % (source_volid, 'delete_volume') else: locked_action = None def _run_flow(): # This code executes create volume flow. If something goes wrong, # flow reverts all job that was done and reraises an exception. # Otherwise, all data that was generated by flow becomes available # in flow engine's storage. flow_engine.run() @utils.synchronized(locked_action, external=True) def _run_flow_locked(): _run_flow() if locked_action is None: _run_flow() else: _run_flow_locked() # Fetch created volume from storage volume_ref = flow_engine.storage.fetch('volume') # Update volume stats self.stats['allocated_capacity_gb'] += volume_ref['size'] return volume_ref['id'] @locked_volume_operation def delete_volume(self, context, volume_id, unmanage_only=False): """Deletes and unexports volume.""" context = context.elevated() volume_ref = self.db.volume_get(context, volume_id) if context.project_id != volume_ref['project_id']: project_id = volume_ref['project_id'] else: project_id = context.project_id LOG.info(_("volume %s: deleting"), volume_ref['id']) if volume_ref['attach_status'] == "attached": # Volume is still attached, need to detach first raise exception.VolumeAttached(volume_id=volume_id) if volume_ref['host'] != self.host: raise exception.InvalidVolume( reason=_("volume is not local to this node")) self._notify_about_volume_usage(context, volume_ref, "delete.start") try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) LOG.debug(_("volume %s: removing export"), volume_ref['id']) self.driver.remove_export(context, volume_ref) LOG.debug(_("volume %s: deleting"), volume_ref['id']) if unmanage_only: self.driver.unmanage(volume_ref) else: self.driver.delete_volume(volume_ref) except exception.VolumeIsBusy: LOG.error(_("Cannot delete volume %s: volume is busy"), volume_ref['id']) self.db.volume_update(context, volume_ref['id'], {'status': 'available'}) return True except Exception: with excutils.save_and_reraise_exception(): self.db.volume_update(context, volume_ref['id'], {'status': 'error_deleting'}) # If deleting the source volume in a migration, we want to skip quotas # and other database updates. if volume_ref['migration_status']: return True # Get reservations try: reserve_opts = {'volumes': -1, 'gigabytes': -volume_ref['size']} QUOTAS.add_volume_type_opts(context, reserve_opts, volume_ref.get('volume_type_id')) reservations = QUOTAS.reserve(context, project_id=project_id, **reserve_opts) except Exception: reservations = None LOG.exception(_("Failed to update usages deleting volume")) # Delete glance metadata if it exists self.db.volume_glance_metadata_delete_by_volume(context, volume_id) self.db.volume_destroy(context, volume_id) LOG.info(_("volume %s: deleted successfully"), volume_ref['id']) self._notify_about_volume_usage(context, volume_ref, "delete.end") # Commit the reservations if reservations: QUOTAS.commit(context, reservations, project_id=project_id) self.stats['allocated_capacity_gb'] -= volume_ref['size'] self.publish_service_capabilities(context) return True def create_snapshot(self, context, volume_id, snapshot_id): """Creates and exports the snapshot.""" caller_context = context context = context.elevated() snapshot_ref = self.db.snapshot_get(context, snapshot_id) LOG.info(_("snapshot %s: creating"), snapshot_ref['id']) self._notify_about_snapshot_usage( context, snapshot_ref, "create.start") try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the snapshot status updated. utils.require_driver_initialized(self.driver) LOG.debug(_("snapshot %(snap_id)s: creating"), {'snap_id': snapshot_ref['id']}) # Pass context so that drivers that want to use it, can, # but it is not a requirement for all drivers. snapshot_ref['context'] = caller_context model_update = self.driver.create_snapshot(snapshot_ref) if model_update: self.db.snapshot_update(context, snapshot_ref['id'], model_update) except Exception: with excutils.save_and_reraise_exception(): self.db.snapshot_update(context, snapshot_ref['id'], {'status': 'error'}) self.db.snapshot_update(context, snapshot_ref['id'], {'status': 'available', 'progress': '100%'}) vol_ref = self.db.volume_get(context, volume_id) if vol_ref.bootable: try: self.db.volume_glance_metadata_copy_to_snapshot( context, snapshot_ref['id'], volume_id) except exception.CinderException as ex: LOG.exception(_("Failed updating %(snapshot_id)s" " metadata using the provided volumes" " %(volume_id)s metadata") % {'volume_id': volume_id, 'snapshot_id': snapshot_id}) raise exception.MetadataCopyFailure(reason=ex) LOG.info(_("snapshot %s: created successfully"), snapshot_ref['id']) self._notify_about_snapshot_usage(context, snapshot_ref, "create.end") return snapshot_id @locked_snapshot_operation def delete_snapshot(self, context, snapshot_id): """Deletes and unexports snapshot.""" caller_context = context context = context.elevated() snapshot_ref = self.db.snapshot_get(context, snapshot_id) project_id = snapshot_ref['project_id'] LOG.info(_("snapshot %s: deleting"), snapshot_ref['id']) self._notify_about_snapshot_usage( context, snapshot_ref, "delete.start") try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the snapshot status updated. utils.require_driver_initialized(self.driver) LOG.debug(_("snapshot %s: deleting"), snapshot_ref['id']) # Pass context so that drivers that want to use it, can, # but it is not a requirement for all drivers. snapshot_ref['context'] = caller_context self.driver.delete_snapshot(snapshot_ref) except exception.SnapshotIsBusy: LOG.error(_("Cannot delete snapshot %s: snapshot is busy"), snapshot_ref['id']) self.db.snapshot_update(context, snapshot_ref['id'], {'status': 'available'}) return True except Exception: with excutils.save_and_reraise_exception(): self.db.snapshot_update(context, snapshot_ref['id'], {'status': 'error_deleting'}) # Get reservations try: if CONF.no_snapshot_gb_quota: reserve_opts = {'snapshots': -1} else: reserve_opts = { 'snapshots': -1, 'gigabytes': -snapshot_ref['volume_size'], } volume_ref = self.db.volume_get(context, snapshot_ref['volume_id']) QUOTAS.add_volume_type_opts(context, reserve_opts, volume_ref.get('volume_type_id')) reservations = QUOTAS.reserve(context, project_id=project_id, **reserve_opts) except Exception: reservations = None LOG.exception(_("Failed to update usages deleting snapshot")) self.db.volume_glance_metadata_delete_by_snapshot(context, snapshot_id) self.db.snapshot_destroy(context, snapshot_id) LOG.info(_("snapshot %s: deleted successfully"), snapshot_ref['id']) self._notify_about_snapshot_usage(context, snapshot_ref, "delete.end") # Commit the reservations if reservations: QUOTAS.commit(context, reservations, project_id=project_id) return True def attach_volume(self, context, volume_id, instance_uuid, host_name, mountpoint, mode): """Updates db to show volume is attached.""" @utils.synchronized(volume_id, external=True) def do_attach(): # check the volume status before attaching volume = self.db.volume_get(context, volume_id) volume_metadata = self.db.volume_admin_metadata_get( context.elevated(), volume_id) if volume['status'] == 'attaching': if (volume['instance_uuid'] and volume['instance_uuid'] != instance_uuid): msg = _("being attached by another instance") raise exception.InvalidVolume(reason=msg) if (volume['attached_host'] and volume['attached_host'] != host_name): msg = _("being attached by another host") raise exception.InvalidVolume(reason=msg) if (volume_metadata.get('attached_mode') and volume_metadata.get('attached_mode') != mode): msg = _("being attached by different mode") raise exception.InvalidVolume(reason=msg) elif volume['status'] != "available": msg = _("status must be available or attaching") raise exception.InvalidVolume(reason=msg) # TODO(jdg): attach_time column is currently varchar # we should update this to a date-time object # also consider adding detach_time? self._notify_about_volume_usage(context, volume, "attach.start") self.db.volume_update(context, volume_id, {"instance_uuid": instance_uuid, "attached_host": host_name, "status": "attaching", "attach_time": timeutils.strtime()}) self.db.volume_admin_metadata_update(context.elevated(), volume_id, {"attached_mode": mode}, False) if instance_uuid and not uuidutils.is_uuid_like(instance_uuid): self.db.volume_update(context, volume_id, {'status': 'error_attaching'}) raise exception.InvalidUUID(uuid=instance_uuid) host_name_sanitized = utils.sanitize_hostname( host_name) if host_name else None volume = self.db.volume_get(context, volume_id) if volume_metadata.get('readonly') == 'True' and mode != 'ro': self.db.volume_update(context, volume_id, {'status': 'error_attaching'}) raise exception.InvalidVolumeAttachMode(mode=mode, volume_id=volume_id) try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) self.driver.attach_volume(context, volume, instance_uuid, host_name_sanitized, mountpoint) except Exception: with excutils.save_and_reraise_exception(): self.db.volume_update(context, volume_id, {'status': 'error_attaching'}) volume = self.db.volume_attached(context.elevated(), volume_id, instance_uuid, host_name_sanitized, mountpoint) self._notify_about_volume_usage(context, volume, "attach.end") return do_attach() @locked_volume_operation def detach_volume(self, context, volume_id): """Updates db to show volume is detached.""" # TODO(vish): refactor this into a more general "unreserve" volume = self.db.volume_get(context, volume_id) self._notify_about_volume_usage(context, volume, "detach.start") try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) self.driver.detach_volume(context, volume) except Exception: with excutils.save_and_reraise_exception(): self.db.volume_update(context, volume_id, {'status': 'error_detaching'}) self.db.volume_detached(context.elevated(), volume_id) self.db.volume_admin_metadata_delete(context.elevated(), volume_id, 'attached_mode') # NOTE(jdg): We used to do an ensure export here to # catch upgrades while volumes were attached (E->F) # this was necessary to convert in-use volumes from # int ID's to UUID's. Don't need this any longer # We're going to remove the export here # (delete the iscsi target) volume = self.db.volume_get(context, volume_id) try: utils.require_driver_initialized(self.driver) LOG.debug(_("volume %s: removing export"), volume_id) self.driver.remove_export(context.elevated(), volume) except exception.DriverNotInitialized as ex: with excutils.save_and_reraise_exception(): LOG.exception(_("Error detaching volume %(volume)s, " "due to uninitialized driver."), {"volume": volume_id}) except Exception as ex: LOG.exception(_("Error detaching volume %(volume)s, " "due to remove export failure."), {"volume": volume_id}) raise exception.RemoveExportException(volume=volume_id, reason=ex) self._notify_about_volume_usage(context, volume, "detach.end") def copy_volume_to_image(self, context, volume_id, image_meta): """Uploads the specified volume to Glance. image_meta is a dictionary containing the following keys: 'id', 'container_format', 'disk_format' """ payload = {'volume_id': volume_id, 'image_id': image_meta['id']} try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) volume = self.db.volume_get(context, volume_id) image_service, image_id = \ glance.get_remote_image_service(context, image_meta['id']) self.driver.copy_volume_to_image(context, volume, image_service, image_meta) LOG.debug(_("Uploaded volume %(volume_id)s to " "image (%(image_id)s) successfully"), {'volume_id': volume_id, 'image_id': image_id}) except Exception as error: with excutils.save_and_reraise_exception(): payload['message'] = unicode(error) finally: if (volume['instance_uuid'] is None and volume['attached_host'] is None): self.db.volume_update(context, volume_id, {'status': 'available'}) else: self.db.volume_update(context, volume_id, {'status': 'in-use'}) def initialize_connection(self, context, volume_id, connector): """Prepare volume for connection from host represented by connector. This method calls the driver initialize_connection and returns it to the caller. The connector parameter is a dictionary with information about the host that will connect to the volume in the following format:: { 'ip': ip, 'initiator': initiator, } ip: the ip address of the connecting machine initiator: the iscsi initiator name of the connecting machine. This can be None if the connecting machine does not support iscsi connections. driver is responsible for doing any necessary security setup and returning a connection_info dictionary in the following format:: { 'driver_volume_type': driver_volume_type, 'data': data, } driver_volume_type: a string to identify the type of volume. This can be used by the calling code to determine the strategy for connecting to the volume. This could be 'iscsi', 'rbd', 'sheepdog', etc. data: this is the data that the calling code will use to connect to the volume. Keep in mind that this will be serialized to json in various places, so it should not contain any non-json data types. """ # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) try: self.driver.validate_connector(connector) except Exception as err: err_msg = (_('Unable to fetch connection information from ' 'backend: %(err)s') % {'err': err}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) volume = self.db.volume_get(context, volume_id) model_update = None try: LOG.debug(_("Volume %s: creating export"), volume_id) model_update = self.driver.create_export(context.elevated(), volume) if model_update: volume = self.db.volume_update(context, volume_id, model_update) except exception.CinderException as ex: if model_update: LOG.exception(_("Failed updating model of volume %(volume_id)s" " with driver provided model %(model)s") % {'volume_id': volume_id, 'model': model_update}) raise exception.ExportFailure(reason=ex) try: conn_info = self.driver.initialize_connection(volume, connector) except Exception as err: err_msg = (_('Unable to fetch connection information from ' 'backend: %(err)s') % {'err': err}) LOG.error(err_msg) self.driver.remove_export(context.elevated(), volume) raise exception.VolumeBackendAPIException(data=err_msg) # Add qos_specs to connection info typeid = volume['volume_type_id'] specs = None if typeid: res = volume_types.get_volume_type_qos_specs(typeid) qos = res['qos_specs'] # only pass qos_specs that is designated to be consumed by # front-end, or both front-end and back-end. if qos and qos.get('consumer') in ['front-end', 'both']: specs = qos.get('specs') qos_spec = dict(qos_specs=specs) conn_info['data'].update(qos_spec) # Add access_mode to connection info volume_metadata = self.db.volume_admin_metadata_get(context.elevated(), volume_id) if conn_info['data'].get('access_mode') is None: access_mode = volume_metadata.get('attached_mode') if access_mode is None: # NOTE(zhiyan): client didn't call 'os-attach' before access_mode = ('ro' if volume_metadata.get('readonly') == 'True' else 'rw') conn_info['data']['access_mode'] = access_mode # NOTE(skolathur): If volume_type is fibre_channel, invoke # FCZoneManager to add access control via FC zoning. vol_type = conn_info.get('driver_volume_type', None) mode = self.configuration.zoning_mode LOG.debug(_("Zoning Mode: %s"), mode) if vol_type == 'fibre_channel' and self.zonemanager: self._add_or_delete_fc_connection(conn_info, 1) return conn_info def terminate_connection(self, context, volume_id, connector, force=False): """Cleanup connection from host represented by connector. The format of connector is the same as for initialize_connection. """ # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) volume_ref = self.db.volume_get(context, volume_id) try: conn_info = self.driver.terminate_connection(volume_ref, connector, force=force) # NOTE(skolathur): If volume_type is fibre_channel, invoke # FCZoneManager to remove access control via FC zoning. if conn_info: vol_type = conn_info.get('driver_volume_type', None) mode = self.configuration.zoning_mode LOG.debug(_("Zoning Mode: %s"), mode) if vol_type == 'fibre_channel' and self.zonemanager: self._add_or_delete_fc_connection(conn_info, 0) except Exception as err: err_msg = (_('Unable to terminate volume connection: %(err)s') % {'err': err}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def accept_transfer(self, context, volume_id, new_user, new_project): # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) # NOTE(jdg): need elevated context as we haven't "given" the vol # yet volume_ref = self.db.volume_get(context.elevated(), volume_id) # NOTE(jdg): Some drivers tie provider info (CHAP) to tenant # for those that do allow them to return updated model info model_update = self.driver.accept_transfer(context, volume_ref, new_user, new_project) if model_update: try: self.db.volume_update(context.elevated(), volume_id, model_update) except exception.CinderException: with excutils.save_and_reraise_exception(): LOG.exception(_("Failed updating model of " "volume %(volume_id)s " "with drivers update %(model)s " "during xfr.") % {'volume_id': volume_id, 'model': model_update}) self.db.volume_update(context.elevated(), volume_id, {'status': 'error'}) return model_update def _migrate_volume_generic(self, ctxt, volume, host, new_type_id): rpcapi = volume_rpcapi.VolumeAPI() # Create new volume on remote host new_vol_values = {} for k, v in volume.iteritems(): new_vol_values[k] = v del new_vol_values['id'] del new_vol_values['_name_id'] # We don't copy volume_type because the db sets that according to # volume_type_id, which we do copy del new_vol_values['volume_type'] if new_type_id: new_vol_values['volume_type_id'] = new_type_id new_vol_values['host'] = host['host'] new_vol_values['status'] = 'creating' new_vol_values['migration_status'] = 'target:%s' % volume['id'] new_vol_values['attach_status'] = 'detached' new_volume = self.db.volume_create(ctxt, new_vol_values) rpcapi.create_volume(ctxt, new_volume, host['host'], None, None, allow_reschedule=False) # Wait for new_volume to become ready starttime = time.time() deadline = starttime + CONF.migration_create_volume_timeout_secs new_volume = self.db.volume_get(ctxt, new_volume['id']) tries = 0 while new_volume['status'] != 'available': tries = tries + 1 now = time.time() if new_volume['status'] == 'error': msg = _("failed to create new_volume on destination host") raise exception.VolumeMigrationFailed(reason=msg) elif now > deadline: msg = _("timeout creating new_volume on destination host") raise exception.VolumeMigrationFailed(reason=msg) else: time.sleep(tries ** 2) new_volume = self.db.volume_get(ctxt, new_volume['id']) # Copy the source volume to the destination volume try: if (volume['instance_uuid'] is None and volume['attached_host'] is None): self.driver.copy_volume_data(ctxt, volume, new_volume, remote='dest') # The above call is synchronous so we complete the migration self.migrate_volume_completion(ctxt, volume['id'], new_volume['id'], error=False) else: nova_api = compute.API() # This is an async call to Nova, which will call the completion # when it's done nova_api.update_server_volume(ctxt, volume['instance_uuid'], volume['id'], new_volume['id']) except Exception: with excutils.save_and_reraise_exception(): msg = _("Failed to copy volume %(vol1)s to %(vol2)s") LOG.error(msg % {'vol1': volume['id'], 'vol2': new_volume['id']}) volume = self.db.volume_get(ctxt, volume['id']) # If we're in the completing phase don't delete the target # because we may have already deleted the source! if volume['migration_status'] == 'migrating': rpcapi.delete_volume(ctxt, new_volume) new_volume['migration_status'] = None def _get_original_status(self, volume): if (volume['instance_uuid'] is None and volume['attached_host'] is None): return 'available' else: return 'in-use' def migrate_volume_completion(self, ctxt, volume_id, new_volume_id, error=False): try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the migration status updated. utils.require_driver_initialized(self.driver) except exception.DriverNotInitialized: with excutils.save_and_reraise_exception(): self.db.volume_update(ctxt, volume_id, {'migration_status': 'error'}) msg = _("migrate_volume_completion: completing migration for " "volume %(vol1)s (temporary volume %(vol2)s") LOG.debug(msg % {'vol1': volume_id, 'vol2': new_volume_id}) volume = self.db.volume_get(ctxt, volume_id) new_volume = self.db.volume_get(ctxt, new_volume_id) rpcapi = volume_rpcapi.VolumeAPI() status_update = None if volume['status'] == 'retyping': status_update = {'status': self._get_original_status(volume)} if error: msg = _("migrate_volume_completion is cleaning up an error " "for volume %(vol1)s (temporary volume %(vol2)s") LOG.info(msg % {'vol1': volume['id'], 'vol2': new_volume['id']}) new_volume['migration_status'] = None rpcapi.delete_volume(ctxt, new_volume) updates = {'migration_status': None} if status_update: updates.update(status_update) self.db.volume_update(ctxt, volume_id, updates) return volume_id self.db.volume_update(ctxt, volume_id, {'migration_status': 'completing'}) # Delete the source volume (if it fails, don't fail the migration) try: self.delete_volume(ctxt, volume_id) except Exception as ex: msg = _("Failed to delete migration source vol %(vol)s: %(err)s") LOG.error(msg % {'vol': volume_id, 'err': ex}) self.db.finish_volume_migration(ctxt, volume_id, new_volume_id) self.db.volume_destroy(ctxt, new_volume_id) updates = {'migration_status': None} if status_update: updates.update(status_update) self.db.volume_update(ctxt, volume_id, updates) return volume['id'] def migrate_volume(self, ctxt, volume_id, host, force_host_copy=False, new_type_id=None): """Migrate the volume to the specified host (called on source host).""" try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the migration status updated. utils.require_driver_initialized(self.driver) except exception.DriverNotInitialized: with excutils.save_and_reraise_exception(): self.db.volume_update(ctxt, volume_id, {'migration_status': 'error'}) volume_ref = self.db.volume_get(ctxt, volume_id) model_update = None moved = False status_update = None if volume_ref['status'] == 'retyping': status_update = {'status': self._get_original_status(volume_ref)} self.db.volume_update(ctxt, volume_ref['id'], {'migration_status': 'migrating'}) if not force_host_copy and new_type_id is None: try: LOG.debug(_("volume %s: calling driver migrate_volume"), volume_ref['id']) moved, model_update = self.driver.migrate_volume(ctxt, volume_ref, host) if moved: updates = {'host': host['host'], 'migration_status': None} if status_update: updates.update(status_update) if model_update: updates.update(model_update) volume_ref = self.db.volume_update(ctxt, volume_ref['id'], updates) except Exception: with excutils.save_and_reraise_exception(): updates = {'migration_status': None} if status_update: updates.update(status_update) model_update = self.driver.create_export(ctxt, volume_ref) if model_update: updates.update(model_update) self.db.volume_update(ctxt, volume_ref['id'], updates) if not moved: try: self._migrate_volume_generic(ctxt, volume_ref, host, new_type_id) except Exception: with excutils.save_and_reraise_exception(): updates = {'migration_status': None} if status_update: updates.update(status_update) model_update = self.driver.create_export(ctxt, volume_ref) if model_update: updates.update(model_update) self.db.volume_update(ctxt, volume_ref['id'], updates) @periodic_task.periodic_task def _report_driver_status(self, context): LOG.info(_("Updating volume status")) if not self.driver.initialized: if self.driver.configuration.config_group is None: config_group = '' else: config_group = ('(config name %s)' % self.driver.configuration.config_group) LOG.warning(_('Unable to update stats, %(driver_name)s ' '-%(driver_version)s ' '%(config_group)s driver is uninitialized.') % {'driver_name': self.driver.__class__.__name__, 'driver_version': self.driver.get_version(), 'config_group': config_group}) else: volume_stats = self.driver.get_volume_stats(refresh=True) if self.extra_capabilities: volume_stats.update(self.extra_capabilities) if volume_stats: # Append volume stats with 'allocated_capacity_gb' volume_stats.update(self.stats) # queue it to be sent to the Schedulers. self.update_service_capabilities(volume_stats) def publish_service_capabilities(self, context): """Collect driver status and then publish.""" self._report_driver_status(context) self._publish_service_capabilities(context) def notification(self, context, event): LOG.info(_("Notification {%s} received"), event) def _notify_about_volume_usage(self, context, volume, event_suffix, extra_usage_info=None): volume_utils.notify_about_volume_usage( context, volume, event_suffix, extra_usage_info=extra_usage_info, host=self.host) def _notify_about_snapshot_usage(self, context, snapshot, event_suffix, extra_usage_info=None): volume_utils.notify_about_snapshot_usage( context, snapshot, event_suffix, extra_usage_info=extra_usage_info, host=self.host) def extend_volume(self, context, volume_id, new_size, reservations): try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) except exception.DriverNotInitialized: with excutils.save_and_reraise_exception(): self.db.volume_update(context, volume_id, {'status': 'error_extending'}) volume = self.db.volume_get(context, volume_id) size_increase = (int(new_size)) - volume['size'] self._notify_about_volume_usage(context, volume, "resize.start") try: LOG.info(_("volume %s: extending"), volume['id']) self.driver.extend_volume(volume, new_size) LOG.info(_("volume %s: extended successfully"), volume['id']) except Exception: LOG.exception(_("volume %s: Error trying to extend volume"), volume_id) try: self.db.volume_update(context, volume['id'], {'status': 'error_extending'}) raise exception.CinderException(_("Volume %s: Error trying " "to extend volume") % volume_id) finally: QUOTAS.rollback(context, reservations) return QUOTAS.commit(context, reservations) self.db.volume_update(context, volume['id'], {'size': int(new_size), 'status': 'available'}) self.stats['allocated_capacity_gb'] += size_increase self._notify_about_volume_usage( context, volume, "resize.end", extra_usage_info={'size': int(new_size)}) def retype(self, ctxt, volume_id, new_type_id, host, migration_policy='never', reservations=None): def _retype_error(context, volume_id, old_reservations, new_reservations, status_update): try: self.db.volume_update(context, volume_id, status_update) finally: QUOTAS.rollback(context, old_reservations) QUOTAS.rollback(context, new_reservations) context = ctxt.elevated() volume_ref = self.db.volume_get(ctxt, volume_id) status_update = {'status': self._get_original_status(volume_ref)} if context.project_id != volume_ref['project_id']: project_id = volume_ref['project_id'] else: project_id = context.project_id try: # NOTE(flaper87): Verify the driver is enabled # before going forward. The exception will be caught # and the volume status updated. utils.require_driver_initialized(self.driver) except exception.DriverNotInitialized: with excutils.save_and_reraise_exception(): # NOTE(flaper87): Other exceptions in this method don't # set the volume status to error. Should that be done # here? Setting the volume back to it's original status # for now. self.db.volume_update(context, volume_id, status_update) # Get old reservations try: reserve_opts = {'volumes': -1, 'gigabytes': -volume_ref['size']} QUOTAS.add_volume_type_opts(context, reserve_opts, volume_ref.get('volume_type_id')) old_reservations = QUOTAS.reserve(context, project_id=project_id, **reserve_opts) except Exception: old_reservations = None self.db.volume_update(context, volume_id, status_update) LOG.exception(_("Failed to update usages while retyping volume.")) raise exception.CinderException(_("Failed to get old volume type" " quota reservations")) # We already got the new reservations new_reservations = reservations # If volume types have the same contents, no need to do anything retyped = False diff, all_equal = volume_types.volume_types_diff( context, volume_ref.get('volume_type_id'), new_type_id) if all_equal: retyped = True # Call driver to try and change the type if not retyped: try: new_type = volume_types.get_volume_type(context, new_type_id) retyped = self.driver.retype(context, volume_ref, new_type, diff, host) if retyped: LOG.info(_("Volume %s: retyped successfully"), volume_id) except Exception as ex: retyped = False LOG.error(_("Volume %s: driver error when trying to retype, " "falling back to generic mechanism."), volume_ref['id']) LOG.exception(ex) # We could not change the type, so we need to migrate the volume, where # the destination volume will be of the new type if not retyped: if migration_policy == 'never': _retype_error(context, volume_id, old_reservations, new_reservations, status_update) msg = _("Retype requires migration but is not allowed.") raise exception.VolumeMigrationFailed(reason=msg) snaps = self.db.snapshot_get_all_for_volume(context, volume_ref['id']) if snaps: _retype_error(context, volume_id, old_reservations, new_reservations, status_update) msg = _("Volume must not have snapshots.") LOG.error(msg) raise exception.InvalidVolume(reason=msg) self.db.volume_update(context, volume_ref['id'], {'migration_status': 'starting'}) try: self.migrate_volume(context, volume_id, host, new_type_id=new_type_id) except Exception: with excutils.save_and_reraise_exception(): _retype_error(context, volume_id, old_reservations, new_reservations, status_update) self.db.volume_update(context, volume_id, {'volume_type_id': new_type_id, 'host': host['host'], 'status': status_update['status']}) if old_reservations: QUOTAS.commit(context, old_reservations, project_id=project_id) if new_reservations: QUOTAS.commit(context, new_reservations, project_id=project_id) self.publish_service_capabilities(context) def manage_existing(self, ctxt, volume_id, ref=None): LOG.debug('manage_existing: managing %s' % ref) try: flow_engine = manage_existing.get_flow( ctxt, self.db, self.driver, self.host, volume_id, ref) except Exception: LOG.exception(_("Failed to create manage_existing flow.")) raise exception.CinderException( _("Failed to create manage existing flow.")) flow_engine.run() # Fetch created volume from storage volume_ref = flow_engine.storage.fetch('volume') # Update volume stats self.stats['allocated_capacity_gb'] += volume_ref['size'] return volume_ref['id'] def _add_or_delete_fc_connection(self, conn_info, zone_op): """Add or delete connection control to fibre channel network. In case of fibre channel, when zoning mode is set as fabric ZoneManager is invoked to apply FC zoning configuration to the network using initiator and target WWNs used for attach/detach. params conn_info: connector passed by volume driver after initialize_connection or terminate_connection. params zone_op: Indicates if it is a zone add or delete operation zone_op=0 for delete connection and 1 for add connection """ _initiator_target_map = None if 'initiator_target_map' in conn_info['data']: _initiator_target_map = conn_info['data']['initiator_target_map'] LOG.debug(_("Initiator Target map:%s"), _initiator_target_map) # NOTE(skolathur): Invoke Zonemanager to handle automated FC zone # management when vol_type is fibre_channel and zoning_mode is fabric # Initiator_target map associating each initiator WWN to one or more # target WWN is passed to ZoneManager to add or update zone config. LOG.debug(_("Zoning op: %s"), zone_op) if _initiator_target_map is not None: try: if zone_op == 1: self.zonemanager.add_connection(_initiator_target_map) elif zone_op == 0: self.zonemanager.delete_connection(_initiator_target_map) except exception.ZoneManagerException as e: with excutils.save_and_reraise_exception(): LOG.error(e) cinder-2014.1.5/cinder/volume/flows/0000775000567000056700000000000012540643114020255 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/flows/manager/0000775000567000056700000000000012540643114021667 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/flows/manager/manage_existing.py0000664000567000056700000001132712540642606025414 0ustar jenkinsjenkins00000000000000# 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. import taskflow.engines from taskflow.patterns import linear_flow from cinder import exception from cinder import flow_utils from cinder.openstack.common import log as logging from cinder.volume.flows.api import create_volume as create_api from cinder.volume.flows import common as flow_common from cinder.volume.flows.manager import create_volume as create_mgr LOG = logging.getLogger(__name__) ACTION = 'volume:manage_existing' class PrepareForQuotaReservationTask(flow_utils.CinderTask): """Gets the volume size from the driver.""" default_provides = set(['size', 'volume_type_id', 'volume_properties', 'volume_spec']) def __init__(self, db, driver): super(PrepareForQuotaReservationTask, self).__init__(addons=[ACTION]) self.db = db self.driver = driver def execute(self, context, volume_ref, manage_existing_ref): volume_id = volume_ref['id'] if not self.driver.initialized: driver_name = self.driver.__class__.__name__ LOG.error(_("Unable to manage existing volume. " "Volume driver %s not initialized.") % driver_name) flow_common.error_out_volume(context, self.db, volume_id, reason=_("Volume driver %s " "not initialized.") % driver_name) raise exception.DriverNotInitialized() size = self.driver.manage_existing_get_size(volume_ref, manage_existing_ref) return {'size': size, 'volume_type_id': volume_ref['volume_type_id'], 'volume_properties': volume_ref, 'volume_spec': {'status': volume_ref['status'], 'volume_name': volume_ref['name'], 'volume_id': volume_ref['id']}} class ManageExistingTask(flow_utils.CinderTask): """Brings an existing volume under Cinder management.""" default_provides = set(['volume']) def __init__(self, db, driver): super(ManageExistingTask, self).__init__(addons=[ACTION]) self.db = db self.driver = driver def execute(self, context, volume_ref, manage_existing_ref, size): model_update = self.driver.manage_existing(volume_ref, manage_existing_ref) if not model_update: model_update = {} model_update.update({'size': size}) try: volume_ref = self.db.volume_update(context, volume_ref['id'], model_update) except exception.CinderException: LOG.exception(_("Failed updating model of volume %(volume_id)s" " with creation provided model %(model)s") % {'volume_id': volume_ref['id'], 'model': model_update}) raise return {'volume': volume_ref} def get_flow(context, db, driver, host, volume_id, ref): """Constructs and returns the manager entrypoint flow.""" flow_name = ACTION.replace(":", "_") + "_manager" volume_flow = linear_flow.Flow(flow_name) # This injects the initial starting flow values into the workflow so that # the dependency order of the tasks provides/requires can be correctly # determined. create_what = { 'context': context, 'volume_id': volume_id, 'manage_existing_ref': ref } volume_flow.add(create_mgr.ExtractVolumeRefTask(db, host), create_mgr.NotifyVolumeActionTask(db, "manage_existing.start"), PrepareForQuotaReservationTask(db, driver), create_api.QuotaReserveTask(), ManageExistingTask(db, driver), create_api.QuotaCommitTask(), create_mgr.CreateVolumeOnFinishTask(db, "create.end")) # Now load (but do not run) the flow using the provided initial data. return taskflow.engines.load(volume_flow, store=create_what) cinder-2014.1.5/cinder/volume/flows/manager/__init__.py0000664000567000056700000000000012540642603023770 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/flows/manager/create_volume.py0000664000567000056700000007661312540642606025115 0ustar jenkinsjenkins00000000000000# 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. import traceback from oslo.config import cfg import taskflow.engines from taskflow.patterns import linear_flow from taskflow.utils import misc from cinder import exception from cinder import flow_utils from cinder.image import glance from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder.openstack.common import timeutils from cinder import utils from cinder.volume.flows import common from cinder.volume import utils as volume_utils LOG = logging.getLogger(__name__) ACTION = 'volume:create' CONF = cfg.CONF # These attributes we will attempt to save for the volume if they exist # in the source image metadata. IMAGE_ATTRIBUTES = ( 'checksum', 'container_format', 'disk_format', 'min_disk', 'min_ram', 'size', ) class OnFailureRescheduleTask(flow_utils.CinderTask): """Triggers a rescheduling request to be sent when reverting occurs. Reversion strategy: Triggers the rescheduling mechanism whereby a cast gets sent to the scheduler rpc api to allow for an attempt X of Y for scheduling this volume elsewhere. """ def __init__(self, reschedule_context, db, scheduler_rpcapi): requires = ['filter_properties', 'image_id', 'request_spec', 'snapshot_id', 'volume_id', 'context'] super(OnFailureRescheduleTask, self).__init__(addons=[ACTION], requires=requires) self.scheduler_rpcapi = scheduler_rpcapi self.db = db self.reschedule_context = reschedule_context # These exception types will trigger the volume to be set into error # status rather than being rescheduled. self.no_reschedule_types = [ # Image copying happens after volume creation so rescheduling due # to copy failure will mean the same volume will be created at # another place when it still exists locally. exception.ImageCopyFailure, # Metadata updates happen after the volume has been created so if # they fail, rescheduling will likely attempt to create the volume # on another machine when it still exists locally. exception.MetadataCopyFailure, exception.MetadataCreateFailure, exception.MetadataUpdateFailure, # The volume/snapshot has been removed from the database, that # can not be fixed by rescheduling. exception.VolumeNotFound, exception.SnapshotNotFound, exception.VolumeTypeNotFound, exception.ImageUnacceptable, ] def execute(self, **kwargs): pass def _reschedule(self, context, cause, request_spec, filter_properties, snapshot_id, image_id, volume_id, **kwargs): """Actions that happen during the rescheduling attempt occur here.""" create_volume = self.scheduler_rpcapi.create_volume if not filter_properties: filter_properties = {} if 'retry' not in filter_properties: filter_properties['retry'] = {} retry_info = filter_properties['retry'] num_attempts = retry_info.get('num_attempts', 0) request_spec['volume_id'] = volume_id LOG.debug(_("Volume %(volume_id)s: re-scheduling %(method)s " "attempt %(num)d due to %(reason)s") % {'volume_id': volume_id, 'method': common.make_pretty_name(create_volume), 'num': num_attempts, 'reason': cause.exception_str}) if all(cause.exc_info): # Stringify to avoid circular ref problem in json serialization retry_info['exc'] = traceback.format_exception(*cause.exc_info) return create_volume(context, CONF.volume_topic, volume_id, snapshot_id=snapshot_id, image_id=image_id, request_spec=request_spec, filter_properties=filter_properties) def _post_reschedule(self, context, volume_id): """Actions that happen after the rescheduling attempt occur here.""" LOG.debug(_("Volume %s: re-scheduled"), volume_id) def _pre_reschedule(self, context, volume_id): """Actions that happen before the rescheduling attempt occur here.""" try: # Reset the volume state. # # NOTE(harlowja): this is awkward to be done here, shouldn't # this happen at the scheduler itself and not before it gets # sent to the scheduler? (since what happens if it never gets # there??). It's almost like we need a status of 'on-the-way-to # scheduler' in the future. update = { 'status': 'creating', 'scheduled_at': timeutils.utcnow(), } LOG.debug(_("Updating volume %(volume_id)s with %(update)s.") % {'update': update, 'volume_id': volume_id}) self.db.volume_update(context, volume_id, update) except exception.CinderException: # Don't let resetting the status cause the rescheduling to fail. LOG.exception(_("Volume %s: resetting 'creating' status failed."), volume_id) def revert(self, context, result, flow_failures, **kwargs): # Check if we have a cause which can tell us not to reschedule. for failure in flow_failures.values(): if failure.check(*self.no_reschedule_types): return volume_id = kwargs['volume_id'] # Use a different context when rescheduling. if self.reschedule_context: context = self.reschedule_context try: cause = list(flow_failures.values())[0] self._pre_reschedule(context, volume_id) self._reschedule(context, cause, **kwargs) self._post_reschedule(context, volume_id) except exception.CinderException: LOG.exception(_("Volume %s: rescheduling failed"), volume_id) class ExtractVolumeRefTask(flow_utils.CinderTask): """Extracts volume reference for given volume id.""" default_provides = 'volume_ref' def __init__(self, db, host): super(ExtractVolumeRefTask, self).__init__(addons=[ACTION]) self.db = db self.host = host def execute(self, context, volume_id): # NOTE(harlowja): this will fetch the volume from the database, if # the volume has been deleted before we got here then this should fail. # # In the future we might want to have a lock on the volume_id so that # the volume can not be deleted while its still being created? volume_ref = self.db.volume_get(context, volume_id) # NOTE(vish): so we don't have to get volume from db again before # passing it to the driver. volume_ref['host'] = self.host return volume_ref def revert(self, context, volume_id, result, **kwargs): if isinstance(result, misc.Failure): return common.error_out_volume(context, self.db, volume_id) LOG.error(_("Volume %s: create failed"), volume_id) class ExtractVolumeSpecTask(flow_utils.CinderTask): """Extracts a spec of a volume to be created into a common structure. This task extracts and organizes the input requirements into a common and easier to analyze structure for later tasks to use. It will also attach the underlying database volume reference which can be used by other tasks to reference for further details about the volume to be. Reversion strategy: N/A """ default_provides = 'volume_spec' def __init__(self, db): requires = ['image_id', 'snapshot_id', 'source_volid'] super(ExtractVolumeSpecTask, self).__init__(addons=[ACTION], requires=requires) self.db = db def execute(self, context, volume_ref, **kwargs): get_remote_image_service = glance.get_remote_image_service volume_name = volume_ref['name'] volume_size = utils.as_int(volume_ref['size'], quiet=False) # Create a dictionary that will represent the volume to be so that # later tasks can easily switch between the different types and create # the volume according to the volume types specifications (which are # represented in this dictionary). specs = { 'status': volume_ref['status'], 'type': 'raw', # This will have the type of the volume to be # created, which should be one of [raw, snap, # source_vol, image] 'volume_id': volume_ref['id'], 'volume_name': volume_name, 'volume_size': volume_size, } if kwargs.get('snapshot_id'): # We are making a snapshot based volume instead of a raw volume. specs.update({ 'type': 'snap', 'snapshot_id': kwargs['snapshot_id'], }) elif kwargs.get('source_volid'): # We are making a source based volume instead of a raw volume. # # NOTE(harlowja): This will likely fail if the source volume # disappeared by the time this call occurred. source_volid = kwargs['source_volid'] source_volume_ref = self.db.volume_get(context, source_volid) specs.update({ 'source_volid': source_volid, # This is captured incase we have to revert and we want to set # back the source volume status to its original status. This # may or may not be sketchy to do?? 'source_volstatus': source_volume_ref['status'], 'type': 'source_vol', }) elif kwargs.get('image_id'): # We are making a image based volume instead of a raw volume. image_href = kwargs['image_id'] image_service, image_id = get_remote_image_service(context, image_href) specs.update({ 'type': 'image', 'image_id': image_id, 'image_location': image_service.get_location(context, image_id), 'image_meta': image_service.show(context, image_id), # Instead of refetching the image service later just save it. # # NOTE(harlowja): if we have to later recover this tasks output # on another 'node' that this object won't be able to be # serialized, so we will have to recreate this object on # demand in the future. 'image_service': image_service, }) return specs def revert(self, context, result, **kwargs): if isinstance(result, misc.Failure): return volume_spec = result.get('volume_spec') # Restore the source volume status and set the volume to error status. common.restore_source_status(context, self.db, volume_spec) class NotifyVolumeActionTask(flow_utils.CinderTask): """Performs a notification about the given volume when called. Reversion strategy: N/A """ def __init__(self, db, event_suffix): super(NotifyVolumeActionTask, self).__init__(addons=[ACTION, event_suffix]) self.db = db self.event_suffix = event_suffix def execute(self, context, volume_ref): volume_id = volume_ref['id'] try: volume_utils.notify_about_volume_usage(context, volume_ref, self.event_suffix, host=volume_ref['host']) except exception.CinderException: # If notification sending of volume database entry reading fails # then we shouldn't error out the whole workflow since this is # not always information that must be sent for volumes to operate LOG.exception(_("Failed notifying about the volume" " action %(event)s for volume %(volume_id)s") % {'event': self.event_suffix, 'volume_id': volume_id}) class CreateVolumeFromSpecTask(flow_utils.CinderTask): """Creates a volume from a provided specification. Reversion strategy: N/A """ default_provides = 'volume' def __init__(self, db, driver): super(CreateVolumeFromSpecTask, self).__init__(addons=[ACTION]) self.db = db self.driver = driver # This maps the different volume specification types into the methods # that can create said volume type (aka this is a jump table). self._create_func_mapping = { 'raw': self._create_raw_volume, 'snap': self._create_from_snapshot, 'source_vol': self._create_from_source_volume, 'image': self._create_from_image, } def _handle_bootable_volume_glance_meta(self, context, volume_id, **kwargs): """Enable bootable flag and properly handle glance metadata. Caller should provide one and only one of snapshot_id,source_volid and image_id. If an image_id specified, a image_meta should also be provided, otherwise will be treated as an empty dictionary. """ log_template = _("Copying metadata from %(src_type)s %(src_id)s to " "%(vol_id)s.") exception_template = _("Failed updating volume %(vol_id)s metadata" " using the provided %(src_type)s" " %(src_id)s metadata") src_type = None src_id = None self._enable_bootable_flag(context, volume_id) try: if kwargs.get('snapshot_id'): src_type = 'snapshot' src_id = kwargs['snapshot_id'] snapshot_id = src_id LOG.debug(log_template % {'src_type': src_type, 'src_id': src_id, 'vol_id': volume_id}) self.db.volume_glance_metadata_copy_to_volume( context, volume_id, snapshot_id) elif kwargs.get('source_volid'): src_type = 'source volume' src_id = kwargs['source_volid'] source_volid = src_id LOG.debug(log_template % {'src_type': src_type, 'src_id': src_id, 'vol_id': volume_id}) self.db.volume_glance_metadata_copy_from_volume_to_volume( context, source_volid, volume_id) elif kwargs.get('image_id'): src_type = 'image' src_id = kwargs['image_id'] image_id = src_id image_meta = kwargs.get('image_meta', {}) LOG.debug(log_template % {'src_type': src_type, 'src_id': src_id, 'vol_id': volume_id}) self._capture_volume_image_metadata(context, volume_id, image_id, image_meta) except exception.CinderException as ex: LOG.exception(exception_template % {'src_type': src_type, 'src_id': src_id, 'vol_id': volume_id}) raise exception.MetadataCopyFailure(reason=ex) def _create_from_snapshot(self, context, volume_ref, snapshot_id, **kwargs): volume_id = volume_ref['id'] snapshot_ref = self.db.snapshot_get(context, snapshot_id) model_update = self.driver.create_volume_from_snapshot(volume_ref, snapshot_ref) # NOTE(harlowja): Subtasks would be useful here since after this # point the volume has already been created and further failures # will not destroy the volume (although they could in the future). make_bootable = False try: originating_vref = self.db.volume_get(context, snapshot_ref['volume_id']) make_bootable = originating_vref.bootable except exception.CinderException as ex: LOG.exception(_("Failed fetching snapshot %(snapshot_id)s bootable" " flag using the provided glance snapshot " "%(snapshot_ref_id)s volume reference") % {'snapshot_id': snapshot_id, 'snapshot_ref_id': snapshot_ref['volume_id']}) raise exception.MetadataUpdateFailure(reason=ex) if make_bootable: self._handle_bootable_volume_glance_meta(context, volume_id, snapshot_id=snapshot_id) return model_update def _enable_bootable_flag(self, context, volume_id): try: LOG.debug(_('Marking volume %s as bootable.'), volume_id) self.db.volume_update(context, volume_id, {'bootable': True}) except exception.CinderException as ex: LOG.exception(_("Failed updating volume %(volume_id)s bootable" " flag to true") % {'volume_id': volume_id}) raise exception.MetadataUpdateFailure(reason=ex) def _create_from_source_volume(self, context, volume_ref, source_volid, **kwargs): # NOTE(harlowja): if the source volume has disappeared this will be our # detection of that since this database call should fail. # # NOTE(harlowja): likely this is not the best place for this to happen # and we should have proper locks on the source volume while actions # that use the source volume are underway. srcvol_ref = self.db.volume_get(context, source_volid) model_update = self.driver.create_cloned_volume(volume_ref, srcvol_ref) # NOTE(harlowja): Subtasks would be useful here since after this # point the volume has already been created and further failures # will not destroy the volume (although they could in the future). if srcvol_ref.bootable: self._handle_bootable_volume_glance_meta(context, volume_ref['id'], source_volid=source_volid) return model_update def _copy_image_to_volume(self, context, volume_ref, image_id, image_location, image_service): """Downloads Glance image to the specified volume.""" copy_image_to_volume = self.driver.copy_image_to_volume volume_id = volume_ref['id'] LOG.debug(_("Attempting download of %(image_id)s (%(image_location)s)" " to volume %(volume_id)s.") % {'image_id': image_id, 'volume_id': volume_id, 'image_location': image_location}) try: copy_image_to_volume(context, volume_ref, image_service, image_id) except processutils.ProcessExecutionError as ex: LOG.error(_("Failed to copy image %(image_id)s to volume: " "%(volume_id)s, error: %(error)s") % {'volume_id': volume_id, 'error': ex.stderr, 'image_id': image_id}) raise exception.ImageCopyFailure(reason=ex.stderr) except exception.ImageUnacceptable as ex: LOG.error(_("Failed to copy image to volume: %(volume_id)s, " "error: %(error)s") % {'volume_id': volume_id, 'error': ex}) raise exception.ImageUnacceptable(ex) except Exception as ex: LOG.error(_("Failed to copy image %(image_id)s to " "volume: %(volume_id)s, error: %(error)s") % {'volume_id': volume_id, 'error': ex, 'image_id': image_id}) if not isinstance(ex, exception.ImageCopyFailure): raise exception.ImageCopyFailure(reason=ex) else: raise LOG.debug(_("Downloaded image %(image_id)s (%(image_location)s)" " to volume %(volume_id)s successfully.") % {'image_id': image_id, 'volume_id': volume_id, 'image_location': image_location}) def _capture_volume_image_metadata(self, context, volume_id, image_id, image_meta): # Save some base attributes into the volume metadata base_metadata = { 'image_id': image_id, } name = image_meta.get('name', None) if name: base_metadata['image_name'] = name # Save some more attributes into the volume metadata from the image # metadata for key in IMAGE_ATTRIBUTES: if key not in image_meta: continue value = image_meta.get(key, None) if value is not None: base_metadata[key] = value # Save all the image metadata properties into the volume metadata property_metadata = {} image_properties = image_meta.get('properties', {}) for (key, value) in image_properties.items(): if value is not None: property_metadata[key] = value # NOTE(harlowja): The best way for this to happen would be in bulk, # but that doesn't seem to exist (yet), so we go through one by one # which means we can have partial create/update failure. volume_metadata = dict(property_metadata) volume_metadata.update(base_metadata) LOG.debug(_("Creating volume glance metadata for volume %(volume_id)s" " backed by image %(image_id)s with: %(vol_metadata)s.") % {'volume_id': volume_id, 'image_id': image_id, 'vol_metadata': volume_metadata}) for (key, value) in volume_metadata.items(): try: self.db.volume_glance_metadata_create(context, volume_id, key, value) except exception.GlanceMetadataExists: pass def _create_from_image(self, context, volume_ref, image_location, image_id, image_meta, image_service, **kwargs): LOG.debug(_("Cloning %(volume_id)s from image %(image_id)s " " at location %(image_location)s.") % {'volume_id': volume_ref['id'], 'image_location': image_location, 'image_id': image_id}) # Create the volume from an image. # # NOTE (singn): two params need to be returned # dict containing provider_location for cloned volume # and clone status. model_update, cloned = self.driver.clone_image( volume_ref, image_location, image_id, image_meta) if not cloned: # TODO(harlowja): what needs to be rolled back in the clone if this # volume create fails?? Likely this should be a subflow or broken # out task in the future. That will bring up the question of how # do we make said subflow/task which is only triggered in the # clone image 'path' resumable and revertable in the correct # manner. # # Create the volume and then download the image onto the volume. model_update = self.driver.create_volume(volume_ref) updates = dict(model_update or dict(), status='downloading') try: volume_ref = self.db.volume_update(context, volume_ref['id'], updates) except exception.CinderException: LOG.exception(_("Failed updating volume %(volume_id)s with " "%(updates)s") % {'volume_id': volume_ref['id'], 'updates': updates}) self._copy_image_to_volume(context, volume_ref, image_id, image_location, image_service) self._handle_bootable_volume_glance_meta(context, volume_ref['id'], image_id=image_id, image_meta=image_meta) return model_update def _create_raw_volume(self, context, volume_ref, **kwargs): return self.driver.create_volume(volume_ref) def execute(self, context, volume_ref, volume_spec): volume_spec = dict(volume_spec) volume_id = volume_spec.pop('volume_id', None) # we can't do anything if the driver didn't init if not self.driver.initialized: driver_name = self.driver.__class__.__name__ LOG.error(_("Unable to create volume. " "Volume driver %s not initialized") % driver_name) # NOTE(flaper87): Set the error status before # raising any exception. self.db.volume_update(context, volume_id, dict(status='error')) raise exception.DriverNotInitialized() create_type = volume_spec.pop('type', None) create_functor = self._create_func_mapping.get(create_type) if not create_functor: raise exception.VolumeTypeNotFound(volume_type_id=create_type) if not volume_id: volume_id = volume_ref['id'] LOG.info(_("Volume %(volume_id)s: being created using %(functor)s " "with specification: %(volume_spec)s") % {'volume_spec': volume_spec, 'volume_id': volume_id, 'functor': common.make_pretty_name(create_functor)}) # Call the given functor to make the volume. model_update = create_functor(context, volume_ref=volume_ref, **volume_spec) # Persist any model information provided on creation. try: if model_update: volume_ref = self.db.volume_update(context, volume_ref['id'], model_update) except exception.CinderException: # If somehow the update failed we want to ensure that the # failure is logged (but not try rescheduling since the volume at # this point has been created). LOG.exception(_("Failed updating model of volume %(volume_id)s" " with creation provided model %(model)s") % {'volume_id': volume_id, 'model': model_update}) raise return volume_ref class CreateVolumeOnFinishTask(NotifyVolumeActionTask): """On successful volume creation this will perform final volume actions. When a volume is created successfully it is expected that MQ notifications and database updates will occur to 'signal' to others that the volume is now ready for usage. This task does those notifications and updates in a reliable manner (not re-raising exceptions if said actions can not be triggered). Reversion strategy: N/A """ def __init__(self, db, event_suffix): super(CreateVolumeOnFinishTask, self).__init__(db, event_suffix) self.status_translation = { 'migration_target_creating': 'migration_target', } def execute(self, context, volume, volume_spec): volume_id = volume['id'] new_status = self.status_translation.get(volume_spec.get('status'), 'available') update = { 'status': new_status, 'launched_at': timeutils.utcnow(), } try: # TODO(harlowja): is it acceptable to only log if this fails?? # or are there other side-effects that this will cause if the # status isn't updated correctly (aka it will likely be stuck in # 'building' if this fails)?? volume_ref = self.db.volume_update(context, volume_id, update) # Now use the parent to notify. super(CreateVolumeOnFinishTask, self).execute(context, volume_ref) except exception.CinderException: LOG.exception(_("Failed updating volume %(volume_id)s with " "%(update)s") % {'volume_id': volume_id, 'update': update}) # Even if the update fails, the volume is ready. msg = _("Volume %(volume_name)s (%(volume_id)s): created successfully") LOG.info(msg % { 'volume_name': volume_spec['volume_name'], 'volume_id': volume_id, }) def get_flow(context, db, driver, scheduler_rpcapi, host, volume_id, allow_reschedule, reschedule_context, request_spec, filter_properties, snapshot_id=None, image_id=None, source_volid=None): """Constructs and returns the manager entrypoint flow. This flow will do the following: 1. Determines if rescheduling is enabled (ahead of time). 2. Inject keys & values for dependent tasks. 3. Selects 1 of 2 activated only on *failure* tasks (one to update the db status & notify or one to update the db status & notify & *reschedule*). 4. Extracts a volume specification from the provided inputs. 5. Notifies that the volume has start to be created. 6. Creates a volume from the extracted volume specification. 7. Attaches a on-success *only* task that notifies that the volume creation has ended and performs further database status updates. """ flow_name = ACTION.replace(":", "_") + "_manager" volume_flow = linear_flow.Flow(flow_name) # This injects the initial starting flow values into the workflow so that # the dependency order of the tasks provides/requires can be correctly # determined. create_what = { 'context': context, 'filter_properties': filter_properties, 'image_id': image_id, 'request_spec': request_spec, 'snapshot_id': snapshot_id, 'source_volid': source_volid, 'volume_id': volume_id, } volume_flow.add(ExtractVolumeRefTask(db, host)) if allow_reschedule and request_spec: volume_flow.add(OnFailureRescheduleTask(reschedule_context, db, scheduler_rpcapi)) volume_flow.add(ExtractVolumeSpecTask(db), NotifyVolumeActionTask(db, "create.start"), CreateVolumeFromSpecTask(db, driver), CreateVolumeOnFinishTask(db, "create.end")) # Now load (but do not run) the flow using the provided initial data. return taskflow.engines.load(volume_flow, store=create_what) cinder-2014.1.5/cinder/volume/flows/api/0000775000567000056700000000000012540643114021026 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/flows/api/__init__.py0000664000567000056700000000000012540642603023127 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/flows/api/create_volume.py0000664000567000056700000007551112540642606024250 0ustar jenkinsjenkins00000000000000# 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. from oslo.config import cfg import taskflow.engines from taskflow.patterns import linear_flow from taskflow.utils import misc from cinder import exception from cinder import flow_utils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import policy from cinder import quota from cinder import units from cinder import utils from cinder.volume.flows import common from cinder.volume import volume_types LOG = logging.getLogger(__name__) ACTION = 'volume:create' CONF = cfg.CONF GB = units.GiB QUOTAS = quota.QUOTAS # Only in these 'sources' status can we attempt to create a volume from a # source volume or a source snapshot, other status states we can not create # from, 'error' being the common example. SNAPSHOT_PROCEED_STATUS = ('available',) SRC_VOL_PROCEED_STATUS = ('available', 'in-use',) class ExtractVolumeRequestTask(flow_utils.CinderTask): """Processes an api request values into a validated set of values. This tasks responsibility is to take in a set of inputs that will form a potential volume request and validates those values against a set of conditions and/or translates those values into a valid set and then returns the validated/translated values for use by other tasks. Reversion strategy: N/A """ # This task will produce the following outputs (said outputs can be # saved to durable storage in the future so that the flow can be # reconstructed elsewhere and continued). default_provides = set(['availability_zone', 'size', 'snapshot_id', 'source_volid', 'volume_type', 'volume_type_id', 'encryption_key_id']) def __init__(self, image_service, az_check_functor=None, **kwargs): super(ExtractVolumeRequestTask, self).__init__(addons=[ACTION], **kwargs) self.image_service = image_service self.az_check_functor = az_check_functor if not self.az_check_functor: self.az_check_functor = lambda az: True @staticmethod def _extract_snapshot(snapshot): """Extracts the snapshot id from the provided snapshot (if provided). This function validates the input snapshot dict and checks that the status of that snapshot is valid for creating a volume from. """ snapshot_id = None if snapshot is not None: if snapshot['status'] not in SNAPSHOT_PROCEED_STATUS: msg = _("Originating snapshot status must be one" " of %s values") msg = msg % (", ".join(SNAPSHOT_PROCEED_STATUS)) # TODO(harlowja): what happens if the status changes after this # initial snapshot status check occurs??? Seems like someone # could delete the snapshot after this check passes but before # the volume is officially created? raise exception.InvalidSnapshot(reason=msg) snapshot_id = snapshot['id'] return snapshot_id @staticmethod def _extract_source_volume(source_volume): """Extracts the volume id from the provided volume (if provided). This function validates the input source_volume dict and checks that the status of that source_volume is valid for creating a volume from. """ source_volid = None if source_volume is not None: if source_volume['status'] not in SRC_VOL_PROCEED_STATUS: msg = _("Unable to create a volume from an originating source" " volume when its status is not one of %s" " values") msg = msg % (", ".join(SRC_VOL_PROCEED_STATUS)) # TODO(harlowja): what happens if the status changes after this # initial volume status check occurs??? Seems like someone # could delete the volume after this check passes but before # the volume is officially created? raise exception.InvalidVolume(reason=msg) source_volid = source_volume['id'] return source_volid @staticmethod def _extract_size(size, source_volume, snapshot): """Extracts and validates the volume size. This function will validate or when not provided fill in the provided size variable from the source_volume or snapshot and then does validation on the size that is found and returns said validated size. """ def validate_snap_size(size): if snapshot and size < snapshot['volume_size']: msg = _("Volume size %(size)sGB cannot be smaller than" " the snapshot size %(snap_size)sGB. " "They must be >= original snapshot size.") msg = msg % {'size': size, 'snap_size': snapshot['volume_size']} raise exception.InvalidInput(reason=msg) def validate_source_size(size): if source_volume and size < source_volume['size']: msg = _("Volume size %(size)sGB cannot be smaller than " "original volume size %(source_size)sGB. " "They must be >= original volume size.") msg = msg % {'size': size, 'source_size': source_volume['size']} raise exception.InvalidInput(reason=msg) def validate_int(size): if not isinstance(size, int) or size <= 0: msg = _("Volume size %(size)s must be an integer and" " greater than 0") % {'size': size} raise exception.InvalidInput(reason=msg) # Figure out which validation functions we should be applying # on the size value that we extract. validator_functors = [validate_int] if source_volume: validator_functors.append(validate_source_size) elif snapshot: validator_functors.append(validate_snap_size) # If the size is not provided then try to provide it. if not size and source_volume: size = source_volume['size'] elif not size and snapshot: size = snapshot['volume_size'] size = utils.as_int(size) LOG.debug("Validating volume %(size)s using %(functors)s" % {'size': size, 'functors': ", ".join([common.make_pretty_name(func) for func in validator_functors])}) for func in validator_functors: func(size) return size def _check_image_metadata(self, context, image_id, size): """Checks image existence and validates that the image metadata.""" # Check image existence if not image_id: return # NOTE(harlowja): this should raise an error if the image does not # exist, this is expected as it signals that the image_id is missing. image_meta = self.image_service.show(context, image_id) # Check image size is not larger than volume size. image_size = utils.as_int(image_meta['size'], quiet=False) image_size_in_gb = (image_size + GB - 1) / GB if image_size_in_gb > size: msg = _('Size of specified image %(image_size)sGB' ' is larger than volume size %(volume_size)sGB.') msg = msg % {'image_size': image_size_in_gb, 'volume_size': size} raise exception.InvalidInput(reason=msg) # Check image min_disk requirement is met for the particular volume min_disk = image_meta.get('min_disk', 0) if size < min_disk: msg = _('Volume size %(volume_size)sGB cannot be smaller' ' than the image minDisk size %(min_disk)sGB.') msg = msg % {'volume_size': size, 'min_disk': min_disk} raise exception.InvalidInput(reason=msg) @staticmethod def _check_metadata_properties(metadata=None): """Checks that the volume metadata properties are valid.""" if not metadata: metadata = {} for (k, v) in metadata.iteritems(): if len(k) == 0: msg = _("Metadata property key blank") LOG.warn(msg) raise exception.InvalidVolumeMetadata(reason=msg) if len(k) > 255: msg = _("Metadata property key %s greater than 255 " "characters") % k LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) if len(v) > 255: msg = _("Metadata property key %s value greater than" " 255 characters") % k LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) def _extract_availability_zone(self, availability_zone, snapshot, source_volume): """Extracts and returns a validated availability zone. This function will extract the availability zone (if not provided) from the snapshot or source_volume and then performs a set of validation checks on the provided or extracted availability zone and then returns the validated availability zone. """ # Try to extract the availability zone from the corresponding snapshot # or source volume if either is valid so that we can be in the same # availability zone as the source. if availability_zone is None: if snapshot: try: availability_zone = snapshot['volume']['availability_zone'] except (TypeError, KeyError): pass if source_volume and availability_zone is None: try: availability_zone = source_volume['availability_zone'] except (TypeError, KeyError): pass if availability_zone is None: if CONF.default_availability_zone: availability_zone = CONF.default_availability_zone else: # For backwards compatibility use the storage_availability_zone availability_zone = CONF.storage_availability_zone if not self.az_check_functor(availability_zone): msg = _("Availability zone '%s' is invalid") % (availability_zone) LOG.warn(msg) raise exception.InvalidInput(reason=msg) # If the configuration only allows cloning to the same availability # zone then we need to enforce that. if CONF.cloned_volume_same_az: snap_az = None try: snap_az = snapshot['volume']['availability_zone'] except (TypeError, KeyError): pass if snap_az and snap_az != availability_zone: msg = _("Volume must be in the same " "availability zone as the snapshot") raise exception.InvalidInput(reason=msg) source_vol_az = None try: source_vol_az = source_volume['availability_zone'] except (TypeError, KeyError): pass if source_vol_az and source_vol_az != availability_zone: msg = _("Volume must be in the same " "availability zone as the source volume") raise exception.InvalidInput(reason=msg) return availability_zone def _get_encryption_key_id(self, key_manager, context, volume_type_id, snapshot, source_volume, backup_source_volume): encryption_key_id = None if volume_types.is_encrypted(context, volume_type_id): if snapshot is not None: # creating from snapshot encryption_key_id = snapshot['encryption_key_id'] elif source_volume is not None: # cloning volume encryption_key_id = source_volume['encryption_key_id'] elif backup_source_volume is not None: # creating from backup encryption_key_id = backup_source_volume['encryption_key_id'] # NOTE(joel-coffman): References to the encryption key should *not* # be copied because the key is deleted when the volume is deleted. # Clone the existing key and associate a separate -- but # identical -- key with each volume. if encryption_key_id is not None: encryption_key_id = key_manager.copy_key(context, encryption_key_id) else: encryption_key_id = key_manager.create_key(context) return encryption_key_id def _get_volume_type_id(self, volume_type, source_volume, snapshot, backup_source_volume): volume_type_id = None if not volume_type and source_volume: volume_type_id = source_volume['volume_type_id'] elif snapshot is not None: if volume_type: current_volume_type_id = volume_type.get('id') if (current_volume_type_id != snapshot['volume_type_id']): msg = _("Volume type will be changed to " "be the same as the source volume.") LOG.warn(msg) volume_type_id = snapshot['volume_type_id'] elif backup_source_volume is not None: volume_type_id = backup_source_volume['volume_type_id'] else: volume_type_id = volume_type.get('id') return volume_type_id def execute(self, context, size, snapshot, image_id, source_volume, availability_zone, volume_type, metadata, key_manager, backup_source_volume): utils.check_exclusive_options(snapshot=snapshot, imageRef=image_id, source_volume=source_volume) policy.enforce_action(context, ACTION) # TODO(harlowja): what guarantee is there that the snapshot or source # volume will remain available after we do this initial verification?? snapshot_id = self._extract_snapshot(snapshot) source_volid = self._extract_source_volume(source_volume) size = self._extract_size(size, source_volume, snapshot) self._check_image_metadata(context, image_id, size) availability_zone = self._extract_availability_zone(availability_zone, snapshot, source_volume) # TODO(joel-coffman): This special handling of snapshots to ensure that # their volume type matches the source volume is too convoluted. We # should copy encryption metadata from the encrypted volume type to the # volume upon creation and propagate that information to each snapshot. # This strategy avoid any dependency upon the encrypted volume type. if not volume_type and not source_volume and not snapshot: volume_type = volume_types.get_default_volume_type() volume_type_id = self._get_volume_type_id(volume_type, source_volume, snapshot, backup_source_volume) encryption_key_id = self._get_encryption_key_id(key_manager, context, volume_type_id, snapshot, source_volume, backup_source_volume) specs = {} if volume_type_id: qos_specs = volume_types.get_volume_type_qos_specs(volume_type_id) specs = qos_specs['qos_specs'] if not specs: # to make sure we don't pass empty dict specs = None self._check_metadata_properties(metadata) return { 'size': size, 'snapshot_id': snapshot_id, 'source_volid': source_volid, 'availability_zone': availability_zone, 'volume_type': volume_type, 'volume_type_id': volume_type_id, 'encryption_key_id': encryption_key_id, 'qos_specs': specs, } class EntryCreateTask(flow_utils.CinderTask): """Creates an entry for the given volume creation in the database. Reversion strategy: remove the volume_id created from the database. """ default_provides = set(['volume_properties', 'volume_id', 'volume']) def __init__(self, db): requires = ['availability_zone', 'description', 'metadata', 'name', 'reservations', 'size', 'snapshot_id', 'source_volid', 'volume_type_id', 'encryption_key_id'] super(EntryCreateTask, self).__init__(addons=[ACTION], requires=requires) self.db = db self.provides.update() def execute(self, context, **kwargs): """Creates a database entry for the given inputs and returns details. Accesses the database and creates a new entry for the to be created volume using the given volume properties which are extracted from the input kwargs (and associated requirements this task needs). These requirements should be previously satisfied and validated by a pre-cursor task. """ volume_properties = { 'size': kwargs.pop('size'), 'user_id': context.user_id, 'project_id': context.project_id, 'status': 'creating', 'attach_status': 'detached', 'encryption_key_id': kwargs.pop('encryption_key_id'), # Rename these to the internal name. 'display_description': kwargs.pop('description'), 'display_name': kwargs.pop('name'), } # Merge in the other required arguments which should provide the rest # of the volume property fields (if applicable). volume_properties.update(kwargs) volume = self.db.volume_create(context, volume_properties) return { 'volume_id': volume['id'], 'volume_properties': volume_properties, # NOTE(harlowja): it appears like further usage of this volume # result actually depend on it being a sqlalchemy object and not # just a plain dictionary so that's why we are storing this here. # # In the future where this task results can be serialized and # restored automatically for continued running we will need to # resolve the serialization & recreation of this object since raw # sqlalchemy objects can't be serialized. 'volume': volume, } def revert(self, context, result, **kwargs): # We never produced a result and therefore can't destroy anything. if isinstance(result, misc.Failure): return if context.quota_committed: # Committed quota doesn't rollback as the volume has already been # created at this point, and the quota has already been absorbed. return vol_id = result['volume_id'] try: self.db.volume_destroy(context.elevated(), vol_id) except exception.CinderException: # We are already reverting, therefore we should silence this # exception since a second exception being active will be bad. # # NOTE(harlowja): Being unable to destroy a volume is pretty # bad though!! LOG.exception(_("Failed destroying volume entry %s"), vol_id) class QuotaReserveTask(flow_utils.CinderTask): """Reserves a single volume with the given size & the given volume type. Reversion strategy: rollback the quota reservation. Warning Warning: if the process that is running this reserve and commit process fails (or is killed before the quota is rolled back or committed it does appear like the quota will never be rolled back). This makes software upgrades hard (inflight operations will need to be stopped or allowed to complete before the upgrade can occur). *In the future* when taskflow has persistence built-in this should be easier to correct via an automated or manual process. """ default_provides = set(['reservations']) def __init__(self): super(QuotaReserveTask, self).__init__(addons=[ACTION]) def execute(self, context, size, volume_type_id): try: reserve_opts = {'volumes': 1, 'gigabytes': size} QUOTAS.add_volume_type_opts(context, reserve_opts, volume_type_id) reservations = QUOTAS.reserve(context, **reserve_opts) return { 'reservations': reservations, } except exception.OverQuota as e: overs = e.kwargs['overs'] quotas = e.kwargs['quotas'] usages = e.kwargs['usages'] def _consumed(name): return (usages[name]['reserved'] + usages[name]['in_use']) def _is_over(name): for over in overs: if name in over: return True return False if _is_over('gigabytes'): msg = _("Quota exceeded for %(s_pid)s, tried to create " "%(s_size)sG volume (%(d_consumed)dG " "of %(d_quota)dG already consumed)") LOG.warn(msg % {'s_pid': context.project_id, 's_size': size, 'd_consumed': _consumed('gigabytes'), 'd_quota': quotas['gigabytes']}) raise exception.VolumeSizeExceedsAvailableQuota( requested=size, consumed=_consumed('gigabytes'), quota=quotas['gigabytes']) elif _is_over('volumes'): msg = _("Quota exceeded for %(s_pid)s, tried to create " "volume (%(d_consumed)d volumes " "already consumed)") LOG.warn(msg % {'s_pid': context.project_id, 'd_consumed': _consumed('volumes')}) raise exception.VolumeLimitExceeded(allowed=quotas['volumes']) else: # If nothing was reraised, ensure we reraise the initial error raise def revert(self, context, result, **kwargs): # We never produced a result and therefore can't destroy anything. if isinstance(result, misc.Failure): return if context.quota_committed: # The reservations have already been committed and can not be # rolled back at this point. return # We actually produced an output that we can revert so lets attempt # to use said output to rollback the reservation. reservations = result['reservations'] try: QUOTAS.rollback(context, reservations) except exception.CinderException: # We are already reverting, therefore we should silence this # exception since a second exception being active will be bad. LOG.exception(_("Failed rolling back quota for" " %s reservations"), reservations) class QuotaCommitTask(flow_utils.CinderTask): """Commits the reservation. Reversion strategy: N/A (the rollback will be handled by the task that did the initial reservation (see: QuotaReserveTask). Warning Warning: if the process that is running this reserve and commit process fails (or is killed before the quota is rolled back or committed it does appear like the quota will never be rolled back). This makes software upgrades hard (inflight operations will need to be stopped or allowed to complete before the upgrade can occur). *In the future* when taskflow has persistence built-in this should be easier to correct via an automated or manual process. """ def __init__(self): super(QuotaCommitTask, self).__init__(addons=[ACTION]) def execute(self, context, reservations, volume_properties): QUOTAS.commit(context, reservations) context.quota_committed = True return {'volume_properties': volume_properties} def revert(self, context, result, **kwargs): # We never produced a result and therefore can't destroy anything. if isinstance(result, misc.Failure): return volume = result['volume_properties'] try: reserve_opts = {'volumes': -1, 'gigabytes': -volume['size']} QUOTAS.add_volume_type_opts(context, reserve_opts, volume['volume_type_id']) reservations = QUOTAS.reserve(context, project_id=context.project_id, **reserve_opts) if reservations: QUOTAS.commit(context, reservations, project_id=context.project_id) except Exception: LOG.exception(_("Failed to update quota for deleting volume: %s"), volume['id']) class VolumeCastTask(flow_utils.CinderTask): """Performs a volume create cast to the scheduler or to the volume manager. This which will signal a transition of the api workflow to another child and/or related workflow on another component. Reversion strategy: N/A """ def __init__(self, scheduler_rpcapi, volume_rpcapi, db): requires = ['image_id', 'scheduler_hints', 'snapshot_id', 'source_volid', 'volume_id', 'volume_type', 'volume_properties'] super(VolumeCastTask, self).__init__(addons=[ACTION], requires=requires) self.volume_rpcapi = volume_rpcapi self.scheduler_rpcapi = scheduler_rpcapi self.db = db def _cast_create_volume(self, context, request_spec, filter_properties): source_volid = request_spec['source_volid'] volume_id = request_spec['volume_id'] snapshot_id = request_spec['snapshot_id'] image_id = request_spec['image_id'] host = None if snapshot_id and CONF.snapshot_same_host: # NOTE(Rongze Zhu): A simple solution for bug 1008866. # # If snapshot_id is set, make the call create volume directly to # the volume host where the snapshot resides instead of passing it # through the scheduler. So snapshot can be copy to new volume. snapshot_ref = self.db.snapshot_get(context, snapshot_id) source_volume_ref = self.db.volume_get(context, snapshot_ref['volume_id']) host = source_volume_ref['host'] elif source_volid: source_volume_ref = self.db.volume_get(context, source_volid) host = source_volume_ref['host'] if not host: # Cast to the scheduler and let it handle whatever is needed # to select the target host for this volume. self.scheduler_rpcapi.create_volume( context, CONF.volume_topic, volume_id, snapshot_id=snapshot_id, image_id=image_id, request_spec=request_spec, filter_properties=filter_properties) else: # Bypass the scheduler and send the request directly to the volume # manager. now = timeutils.utcnow() values = {'host': host, 'scheduled_at': now} volume_ref = self.db.volume_update(context, volume_id, values) self.volume_rpcapi.create_volume( context, volume_ref, volume_ref['host'], request_spec, filter_properties, allow_reschedule=False, snapshot_id=snapshot_id, image_id=image_id, source_volid=source_volid) def execute(self, context, **kwargs): scheduler_hints = kwargs.pop('scheduler_hints', None) request_spec = kwargs.copy() filter_properties = {} if scheduler_hints: filter_properties['scheduler_hints'] = scheduler_hints self._cast_create_volume(context, request_spec, filter_properties) def revert(self, context, result, flow_failures, **kwargs): if isinstance(result, misc.Failure): return # Restore the source volume status and set the volume to error status. volume_id = kwargs['volume_id'] common.restore_source_status(context, self.db, kwargs) common.error_out_volume(context, self.db, volume_id) LOG.error(_("Volume %s: create failed"), volume_id) exc_info = False if all(flow_failures[-1].exc_info): exc_info = flow_failures[-1].exc_info LOG.error(_('Unexpected build error:'), exc_info=exc_info) def get_flow(scheduler_rpcapi, volume_rpcapi, db, image_service, az_check_functor, create_what): """Constructs and returns the api entrypoint flow. This flow will do the following: 1. Inject keys & values for dependent tasks. 2. Extracts and validates the input keys & values. 3. Reserves the quota (reverts quota on any failures). 4. Creates the database entry. 5. Commits the quota. 6. Casts to volume manager or scheduler for further processing. """ flow_name = ACTION.replace(":", "_") + "_api" api_flow = linear_flow.Flow(flow_name) api_flow.add(ExtractVolumeRequestTask( image_service, az_check_functor, rebind={'size': 'raw_size', 'availability_zone': 'raw_availability_zone', 'volume_type': 'raw_volume_type'})) api_flow.add(QuotaReserveTask(), EntryCreateTask(db), QuotaCommitTask()) # This will cast it out to either the scheduler or volume manager via # the rpc apis provided. api_flow.add(VolumeCastTask(scheduler_rpcapi, volume_rpcapi, db)) # Now load (but do not run) the flow using the provided initial data. return taskflow.engines.load(api_flow, store=create_what) cinder-2014.1.5/cinder/volume/flows/__init__.py0000664000567000056700000000000012540642603022356 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/flows/common.py0000664000567000056700000000741612540642606022134 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Yahoo! Inc. All Rights Reserved. # Copyright (c) 2013 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import six from cinder import exception from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) # When a volume errors out we have the ability to save a piece of the exception # that caused said failure, but we don't want to save the whole message since # that could be very large, just save up to this number of characters. REASON_LENGTH = 128 def make_pretty_name(method): """Makes a pretty name for a function/method.""" meth_pieces = [method.__name__] # If its an instance method attempt to tack on the class name if hasattr(method, '__self__') and method.__self__ is not None: try: meth_pieces.insert(0, method.__self__.__class__.__name__) except AttributeError: pass return ".".join(meth_pieces) def restore_source_status(context, db, volume_spec): # NOTE(harlowja): Only if the type of the volume that was being created is # the source volume type should we try to reset the source volume status # back to its original value. if not volume_spec or volume_spec.get('type') != 'source_vol': return source_volid = volume_spec['source_volid'] source_status = volume_spec['source_volstatus'] try: LOG.debug(_('Restoring source %(source_volid)s status to %(status)s') % {'status': source_status, 'source_volid': source_volid}) db.volume_update(context, source_volid, {'status': source_status}) except exception.CinderException: # NOTE(harlowja): Don't let this cause further exceptions since this is # a non-critical failure. LOG.exception(_("Failed setting source volume %(source_volid)s back to" " its initial %(source_status)s status") % {'source_status': source_status, 'source_volid': source_volid}) def error_out_volume(context, db, volume_id, reason=None): def _clean_reason(reason): if reason is None: return '???' reason = six.text_type(reason) if len(reason) <= REASON_LENGTH: return reason else: return reason[0:REASON_LENGTH] + '...' update = { 'status': 'error', } reason = _clean_reason(reason) # TODO(harlowja): re-enable when we can support this in the database. # if reason: # status['details'] = reason try: LOG.debug(_('Updating volume: %(volume_id)s with %(update)s' ' due to: %(reason)s') % {'volume_id': volume_id, 'reason': reason, 'update': update}) db.volume_update(context, volume_id, update) except exception.CinderException: # Don't let this cause further exceptions. LOG.exception(_("Failed updating volume %(volume_id)s with" " %(update)s") % {'volume_id': volume_id, 'update': update}) cinder-2014.1.5/cinder/volume/__init__.py0000664000567000056700000000202412540642606021237 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. # Importing full names to not pollute the namespace and cause possible # collisions with use of 'from cinder.volume import ' elsewhere. from cinder.common import config import cinder.openstack.common.importutils as import_utils CONF = config.CONF API = import_utils.import_class(CONF.volume_api_class) cinder-2014.1.5/cinder/volume/api.py0000664000567000056700000012560312540642606020262 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Handles all requests relating to volumes. """ import collections import functools from oslo.config import cfg from cinder import context from cinder.db import base from cinder import exception from cinder.image import glance from cinder import keymgr from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder.openstack.common import uuidutils import cinder.policy from cinder import quota from cinder import quota_utils from cinder.scheduler import rpcapi as scheduler_rpcapi from cinder import utils from cinder.volume.flows.api import create_volume from cinder.volume import qos_specs from cinder.volume import rpcapi as volume_rpcapi from cinder.volume import utils as volume_utils from cinder.volume import volume_types volume_host_opt = cfg.BoolOpt('snapshot_same_host', default=True, help='Create volume from snapshot at the host ' 'where snapshot resides') volume_same_az_opt = cfg.BoolOpt('cloned_volume_same_az', default=True, help='Ensure that the new volumes are the ' 'same AZ as snapshot or source volume') CONF = cfg.CONF CONF.register_opt(volume_host_opt) CONF.register_opt(volume_same_az_opt) CONF.import_opt('storage_availability_zone', 'cinder.volume.manager') LOG = logging.getLogger(__name__) QUOTAS = quota.QUOTAS def wrap_check_policy(func): """Check policy corresponding to the wrapped methods prior to execution This decorator requires the first 3 args of the wrapped function to be (self, context, volume) """ @functools.wraps(func) def wrapped(self, context, target_obj, *args, **kwargs): check_policy(context, func.__name__, target_obj) return func(self, context, target_obj, *args, **kwargs) return wrapped def check_policy(context, action, target_obj=None): target = { 'project_id': context.project_id, 'user_id': context.user_id, } target.update(target_obj or {}) _action = 'volume:%s' % action cinder.policy.enforce(context, _action, target) class API(base.Base): """API for interacting with the volume manager.""" def __init__(self, db_driver=None, image_service=None): self.image_service = (image_service or glance.get_default_image_service()) self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() self.volume_rpcapi = volume_rpcapi.VolumeAPI() self.availability_zone_names = () self.key_manager = keymgr.API() super(API, self).__init__(db_driver) def _valid_availability_zone(self, availability_zone): #NOTE(bcwaldon): This approach to caching fails to handle the case # that an availability zone is disabled/removed. if availability_zone in self.availability_zone_names: return True if CONF.storage_availability_zone == availability_zone: return True azs = self.list_availability_zones() self.availability_zone_names = [az['name'] for az in azs] return availability_zone in self.availability_zone_names def list_availability_zones(self): """Describe the known availability zones :retval list of dicts, each with a 'name' and 'available' key """ topic = CONF.volume_topic ctxt = context.get_admin_context() services = self.db.service_get_all_by_topic(ctxt, topic) az_data = [(s['availability_zone'], s['disabled']) for s in services] disabled_map = {} for (az_name, disabled) in az_data: tracked_disabled = disabled_map.get(az_name, True) disabled_map[az_name] = tracked_disabled and disabled azs = [{'name': name, 'available': not disabled} for (name, disabled) in disabled_map.items()] return tuple(azs) def create(self, context, size, name, description, snapshot=None, image_id=None, volume_type=None, metadata=None, availability_zone=None, source_volume=None, scheduler_hints=None, backup_source_volume=None): if source_volume and volume_type: if volume_type['id'] != source_volume['volume_type_id']: msg = _("Invalid volume_type provided (requested type " "must match source volume, or be omitted). " "You should omit the argument.") raise exception.InvalidInput(reason=msg) if snapshot and volume_type: if volume_type['id'] != snapshot['volume_type_id']: msg = _("Invalid volume_type provided (requested type " "must match source snapshot, or be omitted). " "You should omit the argument.") raise exception.InvalidInput(reason=msg) def check_volume_az_zone(availability_zone): try: return self._valid_availability_zone(availability_zone) except exception.CinderException: LOG.exception(_("Unable to query if %s is in the " "availability zone set"), availability_zone) return False create_what = { 'context': context, 'raw_size': size, 'name': name, 'description': description, 'snapshot': snapshot, 'image_id': image_id, 'raw_volume_type': volume_type, 'metadata': metadata, 'raw_availability_zone': availability_zone, 'source_volume': source_volume, 'scheduler_hints': scheduler_hints, 'key_manager': self.key_manager, 'backup_source_volume': backup_source_volume, } try: flow_engine = create_volume.get_flow(self.scheduler_rpcapi, self.volume_rpcapi, self.db, self.image_service, check_volume_az_zone, create_what) except Exception: LOG.exception(_("Failed to create api volume flow")) raise exception.CinderException( _("Failed to create api volume flow")) flow_engine.run() volume = flow_engine.storage.fetch('volume') return volume @wrap_check_policy def delete(self, context, volume, force=False, unmanage_only=False): if context.is_admin and context.project_id != volume['project_id']: project_id = volume['project_id'] else: project_id = context.project_id volume_id = volume['id'] if not volume['host']: volume_utils.notify_about_volume_usage(context, volume, "delete.start") # NOTE(vish): scheduling failed, so delete it # Note(zhiteng): update volume quota reservation try: reserve_opts = {'volumes': -1, 'gigabytes': -volume['size']} QUOTAS.add_volume_type_opts(context, reserve_opts, volume['volume_type_id']) reservations = QUOTAS.reserve(context, project_id=project_id, **reserve_opts) except Exception: reservations = None LOG.exception(_("Failed to update quota for deleting volume")) self.db.volume_destroy(context.elevated(), volume_id) if reservations: QUOTAS.commit(context, reservations, project_id=project_id) volume_utils.notify_about_volume_usage(context, volume, "delete.end") return if not force and volume['status'] not in ["available", "error", "error_restoring", "error_extending"]: msg = _("Volume status must be available or error, " "but current status is: %s") % volume['status'] raise exception.InvalidVolume(reason=msg) if volume['attach_status'] == "attached": # Volume is still attached, need to detach first raise exception.VolumeAttached(volume_id=volume_id) if volume['migration_status'] is not None: # Volume is migrating, wait until done msg = _("Volume cannot be deleted while migrating") raise exception.InvalidVolume(reason=msg) snapshots = self.db.snapshot_get_all_for_volume(context, volume_id) if len(snapshots): msg = _("Volume still has %d dependent snapshots") % len(snapshots) raise exception.InvalidVolume(reason=msg) # If the volume is encrypted, delete its encryption key from the key # manager. This operation makes volume deletion an irreversible process # because the volume cannot be decrypted without its key. encryption_key_id = volume.get('encryption_key_id', None) if encryption_key_id is not None: self.key_manager.delete_key(context, encryption_key_id) now = timeutils.utcnow() self.db.volume_update(context, volume_id, {'status': 'deleting', 'terminated_at': now}) self.volume_rpcapi.delete_volume(context, volume, unmanage_only) @wrap_check_policy def update(self, context, volume, fields): self.db.volume_update(context, volume['id'], fields) def get(self, context, volume_id, viewable_admin_meta=False): old_ctxt = context.deepcopy() if viewable_admin_meta: ctxt = context.elevated() else: ctxt = context rv = self.db.volume_get(ctxt, volume_id) volume = dict(rv.iteritems()) try: check_policy(old_ctxt, 'get', volume) except exception.PolicyNotAuthorized: # raise VolumeNotFound instead to make sure Cinder behaves # as it used to raise exception.VolumeNotFound(volume_id=volume_id) return volume def get_all(self, context, marker=None, limit=None, sort_key='created_at', sort_dir='desc', filters=None, viewable_admin_meta=False): check_policy(context, 'get_all') if filters == None: filters = {} try: if limit is not None: limit = int(limit) if limit < 0: msg = _('limit param must be positive') raise exception.InvalidInput(reason=msg) except ValueError: msg = _('limit param must be an integer') raise exception.InvalidInput(reason=msg) # Non-admin shouldn't see temporary target of a volume migration, add # unique filter data to reflect that only volumes with a NULL # 'migration_status' or a 'migration_status' that does not start with # 'target:' should be returned (processed in db/sqlalchemy/api.py) if not context.is_admin: filters['no_migration_targets'] = True if filters: LOG.debug(_("Searching by: %s") % str(filters)) if (context.is_admin and 'all_tenants' in filters): # Need to remove all_tenants to pass the filtering below. del filters['all_tenants'] volumes = self.db.volume_get_all(context, marker, limit, sort_key, sort_dir, filters=filters) else: if viewable_admin_meta: context = context.elevated() volumes = self.db.volume_get_all_by_project(context, context.project_id, marker, limit, sort_key, sort_dir, filters=filters) return volumes def get_snapshot(self, context, snapshot_id): check_policy(context, 'get_snapshot') rv = self.db.snapshot_get(context, snapshot_id) return dict(rv.iteritems()) def get_volume(self, context, volume_id): check_policy(context, 'get_volume') rv = self.db.volume_get(context, volume_id) return dict(rv.iteritems()) def get_all_snapshots(self, context, search_opts=None): check_policy(context, 'get_all_snapshots') search_opts = search_opts or {} if (context.is_admin and 'all_tenants' in search_opts): # Need to remove all_tenants to pass the filtering below. del search_opts['all_tenants'] snapshots = self.db.snapshot_get_all(context) else: snapshots = self.db.snapshot_get_all_by_project( context, context.project_id) if search_opts: LOG.debug(_("Searching by: %s") % search_opts) results = [] not_found = object() for snapshot in snapshots: for opt, value in search_opts.iteritems(): if snapshot.get(opt, not_found) != value: break else: results.append(snapshot) snapshots = results return snapshots @wrap_check_policy def check_attach(self, volume): # TODO(vish): abstract status checking? if volume['status'] != "available": msg = _("status must be available") raise exception.InvalidVolume(reason=msg) if volume['attach_status'] == "attached": msg = _("already attached") raise exception.InvalidVolume(reason=msg) @wrap_check_policy def check_detach(self, volume): # TODO(vish): abstract status checking? if volume['status'] != "in-use": msg = _("status must be in-use to detach") raise exception.InvalidVolume(reason=msg) @wrap_check_policy def reserve_volume(self, context, volume): #NOTE(jdg): check for Race condition bug 1096983 #explicitly get updated ref and check volume = self.db.volume_get(context, volume['id']) if volume['status'] == 'available': self.update(context, volume, {"status": "attaching"}) else: msg = _("Volume status must be available to reserve") LOG.error(msg) raise exception.InvalidVolume(reason=msg) @wrap_check_policy def unreserve_volume(self, context, volume): if volume['status'] == "attaching": self.update(context, volume, {"status": "available"}) @wrap_check_policy def begin_detaching(self, context, volume): # If we are in the middle of a volume migration, we don't want the user # to see that the volume is 'detaching'. Having 'migration_status' set # will have the same effect internally. if not volume['migration_status']: self.update(context, volume, {"status": "detaching"}) @wrap_check_policy def roll_detaching(self, context, volume): if volume['status'] == "detaching": self.update(context, volume, {"status": "in-use"}) @wrap_check_policy def attach(self, context, volume, instance_uuid, host_name, mountpoint, mode): volume_metadata = self.get_volume_admin_metadata(context.elevated(), volume) if 'readonly' not in volume_metadata: # NOTE(zhiyan): set a default value for read-only flag to metadata. self.update_volume_admin_metadata(context.elevated(), volume, {'readonly': 'False'}) volume_metadata['readonly'] = 'False' if volume_metadata['readonly'] == 'True' and mode != 'ro': raise exception.InvalidVolumeAttachMode(mode=mode, volume_id=volume['id']) return self.volume_rpcapi.attach_volume(context, volume, instance_uuid, host_name, mountpoint, mode) @wrap_check_policy def detach(self, context, volume): return self.volume_rpcapi.detach_volume(context, volume) @wrap_check_policy def initialize_connection(self, context, volume, connector): return self.volume_rpcapi.initialize_connection(context, volume, connector) @wrap_check_policy def terminate_connection(self, context, volume, connector, force=False): self.unreserve_volume(context, volume) return self.volume_rpcapi.terminate_connection(context, volume, connector, force) @wrap_check_policy def accept_transfer(self, context, volume, new_user, new_project): return self.volume_rpcapi.accept_transfer(context, volume, new_user, new_project) def _create_snapshot(self, context, volume, name, description, force=False, metadata=None): check_policy(context, 'create_snapshot', volume) if volume['migration_status'] is not None: # Volume is migrating, wait until done msg = _("Snapshot cannot be created while volume is migrating") raise exception.InvalidVolume(reason=msg) if ((not force) and (volume['status'] != "available")): msg = _("must be available") raise exception.InvalidVolume(reason=msg) try: if CONF.no_snapshot_gb_quota: reserve_opts = {'snapshots': 1} else: reserve_opts = {'snapshots': 1, 'gigabytes': volume['size']} QUOTAS.add_volume_type_opts(context, reserve_opts, volume.get('volume_type_id')) reservations = QUOTAS.reserve(context, **reserve_opts) except exception.OverQuota as e: overs = e.kwargs['overs'] usages = e.kwargs['usages'] quotas = e.kwargs['quotas'] def _consumed(name): return (usages[name]['reserved'] + usages[name]['in_use']) for over in overs: if 'gigabytes' in over: msg = _("Quota exceeded for %(s_pid)s, tried to create " "%(s_size)sG snapshot (%(d_consumed)dG of " "%(d_quota)dG already consumed)") LOG.warn(msg % {'s_pid': context.project_id, 's_size': volume['size'], 'd_consumed': _consumed(over), 'd_quota': quotas[over]}) raise exception.VolumeSizeExceedsAvailableQuota( requested=volume['size'], consumed=_consumed('gigabytes'), quota=quotas['gigabytes']) elif 'snapshots' in over: msg = _("Quota exceeded for %(s_pid)s, tried to create " "snapshot (%(d_consumed)d snapshots " "already consumed)") LOG.warn(msg % {'s_pid': context.project_id, 'd_consumed': _consumed(over)}) raise exception.SnapshotLimitExceeded( allowed=quotas[over]) self._check_metadata_properties(metadata) options = {'volume_id': volume['id'], 'user_id': context.user_id, 'project_id': context.project_id, 'status': "creating", 'progress': '0%', 'volume_size': volume['size'], 'display_name': name, 'display_description': description, 'volume_type_id': volume['volume_type_id'], 'encryption_key_id': volume['encryption_key_id'], 'metadata': metadata} try: snapshot = self.db.snapshot_create(context, options) QUOTAS.commit(context, reservations) except Exception: with excutils.save_and_reraise_exception(): try: self.db.snapshot_destroy(context, volume['id']) finally: QUOTAS.rollback(context, reservations) self.volume_rpcapi.create_snapshot(context, volume, snapshot) return snapshot def create_snapshot(self, context, volume, name, description, metadata=None): return self._create_snapshot(context, volume, name, description, False, metadata) def create_snapshot_force(self, context, volume, name, description, metadata=None): return self._create_snapshot(context, volume, name, description, True, metadata) @wrap_check_policy def delete_snapshot(self, context, snapshot, force=False): if not force and snapshot['status'] not in ["available", "error"]: msg = _("Volume Snapshot status must be available or error") raise exception.InvalidSnapshot(reason=msg) self.db.snapshot_update(context, snapshot['id'], {'status': 'deleting'}) volume = self.db.volume_get(context, snapshot['volume_id']) self.volume_rpcapi.delete_snapshot(context, snapshot, volume['host']) @wrap_check_policy def update_snapshot(self, context, snapshot, fields): self.db.snapshot_update(context, snapshot['id'], fields) @wrap_check_policy def get_volume_metadata(self, context, volume): """Get all metadata associated with a volume.""" rv = self.db.volume_metadata_get(context, volume['id']) return dict(rv.iteritems()) @wrap_check_policy def delete_volume_metadata(self, context, volume, key): """Delete the given metadata item from a volume.""" self.db.volume_metadata_delete(context, volume['id'], key) def _check_metadata_properties(self, metadata=None): if not metadata: metadata = {} for k, v in metadata.iteritems(): if len(k) == 0: msg = _("Metadata property key blank") LOG.warn(msg) raise exception.InvalidVolumeMetadata(reason=msg) if len(k) > 255: msg = _("Metadata property key greater than 255 characters") LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) if len(v) > 255: msg = _("Metadata property value greater than 255 characters") LOG.warn(msg) raise exception.InvalidVolumeMetadataSize(reason=msg) @wrap_check_policy def update_volume_metadata(self, context, volume, metadata, delete=False): """Updates or creates volume metadata. If delete is True, metadata items that are not specified in the `metadata` argument will be deleted. """ if delete: _metadata = metadata else: orig_meta = self.get_volume_metadata(context, volume) _metadata = orig_meta.copy() _metadata.update(metadata) self._check_metadata_properties(_metadata) db_meta = self.db.volume_metadata_update(context, volume['id'], _metadata, delete) # TODO(jdg): Implement an RPC call for drivers that may use this info return db_meta def get_volume_metadata_value(self, volume, key): """Get value of particular metadata key.""" metadata = volume.get('volume_metadata') if metadata: for i in volume['volume_metadata']: if i['key'] == key: return i['value'] return None @wrap_check_policy def get_volume_admin_metadata(self, context, volume): """Get all administration metadata associated with a volume.""" rv = self.db.volume_admin_metadata_get(context, volume['id']) return dict(rv.iteritems()) @wrap_check_policy def delete_volume_admin_metadata(self, context, volume, key): """Delete the given administration metadata item from a volume.""" self.db.volume_admin_metadata_delete(context, volume['id'], key) @wrap_check_policy def update_volume_admin_metadata(self, context, volume, metadata, delete=False): """Updates or creates volume administration metadata. If delete is True, metadata items that are not specified in the `metadata` argument will be deleted. """ if delete: _metadata = metadata else: orig_meta = self.get_volume_admin_metadata(context, volume) _metadata = orig_meta.copy() _metadata.update(metadata) self._check_metadata_properties(_metadata) self.db.volume_admin_metadata_update(context, volume['id'], _metadata, delete) # TODO(jdg): Implement an RPC call for drivers that may use this info return _metadata def get_snapshot_metadata(self, context, snapshot): """Get all metadata associated with a snapshot.""" rv = self.db.snapshot_metadata_get(context, snapshot['id']) return dict(rv.iteritems()) def delete_snapshot_metadata(self, context, snapshot, key): """Delete the given metadata item from a snapshot.""" self.db.snapshot_metadata_delete(context, snapshot['id'], key) def update_snapshot_metadata(self, context, snapshot, metadata, delete=False): """Updates or creates snapshot metadata. If delete is True, metadata items that are not specified in the `metadata` argument will be deleted. """ if delete: _metadata = metadata else: orig_meta = self.get_snapshot_metadata(context, snapshot) _metadata = orig_meta.copy() _metadata.update(metadata) self._check_metadata_properties(_metadata) db_meta = self.db.snapshot_metadata_update(context, snapshot['id'], _metadata, True) # TODO(jdg): Implement an RPC call for drivers that may use this info return db_meta def get_snapshot_metadata_value(self, snapshot, key): pass def get_volumes_image_metadata(self, context): check_policy(context, 'get_volumes_image_metadata') db_data = self.db.volume_glance_metadata_get_all(context) results = collections.defaultdict(dict) for meta_entry in db_data: results[meta_entry['volume_id']].update({meta_entry['key']: meta_entry['value']}) return results @wrap_check_policy def get_volume_image_metadata(self, context, volume): db_data = self.db.volume_glance_metadata_get(context, volume['id']) return dict( (meta_entry.key, meta_entry.value) for meta_entry in db_data ) def _check_volume_availability(self, volume, force): """Check if the volume can be used.""" if volume['status'] not in ['available', 'in-use']: msg = _('Volume status must be available/in-use.') raise exception.InvalidVolume(reason=msg) if not force and 'in-use' == volume['status']: msg = _('Volume status is in-use.') raise exception.InvalidVolume(reason=msg) @wrap_check_policy def copy_volume_to_image(self, context, volume, metadata, force): """Create a new image from the specified volume.""" self._check_volume_availability(volume, force) recv_metadata = self.image_service.create(context, metadata) self.update(context, volume, {'status': 'uploading'}) self.volume_rpcapi.copy_volume_to_image(context, volume, recv_metadata) response = {"id": volume['id'], "updated_at": volume['updated_at'], "status": 'uploading', "display_description": volume['display_description'], "size": volume['size'], "volume_type": volume['volume_type'], "image_id": recv_metadata['id'], "container_format": recv_metadata['container_format'], "disk_format": recv_metadata['disk_format'], "image_name": recv_metadata.get('name', None)} return response @wrap_check_policy def extend(self, context, volume, new_size): if volume['status'] != 'available': msg = _('Volume status must be available to extend.') raise exception.InvalidVolume(reason=msg) size_increase = (int(new_size)) - volume['size'] if size_increase <= 0: msg = (_("New size for extend must be greater " "than current size. (current: %(size)s, " "extended: %(new_size)s)") % {'new_size': new_size, 'size': volume['size']}) raise exception.InvalidInput(reason=msg) try: reservations = QUOTAS.reserve(context, gigabytes=+size_increase) except exception.OverQuota as exc: usages = exc.kwargs['usages'] quotas = exc.kwargs['quotas'] def _consumed(name): return (usages[name]['reserved'] + usages[name]['in_use']) msg = _("Quota exceeded for %(s_pid)s, tried to extend volume by " "%(s_size)sG, (%(d_consumed)dG of %(d_quota)dG already " "consumed).") LOG.error(msg % {'s_pid': context.project_id, 's_size': size_increase, 'd_consumed': _consumed('gigabytes'), 'd_quota': quotas['gigabytes']}) raise exception.VolumeSizeExceedsAvailableQuota( requested=size_increase, consumed=_consumed('gigabytes'), quota=quotas['gigabytes']) self.update(context, volume, {'status': 'extending'}) self.volume_rpcapi.extend_volume(context, volume, new_size, reservations) @wrap_check_policy def migrate_volume(self, context, volume, host, force_host_copy): """Migrate the volume to the specified host.""" # We only handle "available" volumes for now if volume['status'] not in ['available', 'in-use']: msg = _('Volume status must be available/in-use.') LOG.error(msg) raise exception.InvalidVolume(reason=msg) # Make sure volume is not part of a migration if volume['migration_status'] is not None: msg = _("Volume is already part of an active migration") raise exception.InvalidVolume(reason=msg) # We only handle volumes without snapshots for now snaps = self.db.snapshot_get_all_for_volume(context, volume['id']) if snaps: msg = _("volume must not have snapshots") LOG.error(msg) raise exception.InvalidVolume(reason=msg) # Make sure the host is in the list of available hosts elevated = context.elevated() topic = CONF.volume_topic services = self.db.service_get_all_by_topic(elevated, topic) found = False for service in services: if utils.service_is_up(service) and service['host'] == host: found = True if not found: msg = (_('No available service named %s') % host) LOG.error(msg) raise exception.InvalidHost(reason=msg) # Make sure the destination host is different than the current one if host == volume['host']: msg = _('Destination host must be different than current host') LOG.error(msg) raise exception.InvalidHost(reason=msg) self.update(context, volume, {'migration_status': 'starting'}) # Call the scheduler to ensure that the host exists and that it can # accept the volume volume_type = {} volume_type_id = volume['volume_type_id'] if volume_type_id: volume_type = volume_types.get_volume_type(context, volume_type_id) request_spec = {'volume_properties': volume, 'volume_type': volume_type, 'volume_id': volume['id']} self.scheduler_rpcapi.migrate_volume_to_host(context, CONF.volume_topic, volume['id'], host, force_host_copy, request_spec) @wrap_check_policy def migrate_volume_completion(self, context, volume, new_volume, error): # This is a volume swap initiated by Nova, not Cinder. Nova expects # us to return the new_volume_id. if not (volume['migration_status'] or new_volume['migration_status']): return new_volume['id'] if not volume['migration_status']: msg = _('Source volume not mid-migration.') raise exception.InvalidVolume(reason=msg) if not new_volume['migration_status']: msg = _('Destination volume not mid-migration.') raise exception.InvalidVolume(reason=msg) expected_status = 'target:%s' % volume['id'] if not new_volume['migration_status'] == expected_status: msg = (_('Destination has migration_status %(stat)s, expected ' '%(exp)s.') % {'stat': new_volume['migration_status'], 'exp': expected_status}) raise exception.InvalidVolume(reason=msg) return self.volume_rpcapi.migrate_volume_completion(context, volume, new_volume, error) @wrap_check_policy def update_readonly_flag(self, context, volume, flag): if volume['status'] != 'available': msg = _('Volume status must be available to update readonly flag.') raise exception.InvalidVolume(reason=msg) self.update_volume_admin_metadata(context.elevated(), volume, {'readonly': str(flag)}) @wrap_check_policy def retype(self, context, volume, new_type, migration_policy=None): """Attempt to modify the type associated with an existing volume.""" if volume['status'] not in ['available', 'in-use']: msg = _('Unable to update type due to incorrect status ' 'on volume: %s') % volume['id'] LOG.error(msg) raise exception.InvalidVolume(reason=msg) if volume['migration_status'] is not None: msg = (_("Volume %s is already part of an active migration.") % volume['id']) LOG.error(msg) raise exception.InvalidVolume(reason=msg) if migration_policy and migration_policy not in ['on-demand', 'never']: msg = _('migration_policy must be \'on-demand\' or \'never\', ' 'passed: %s') % new_type LOG.error(msg) raise exception.InvalidInput(reason=msg) # Support specifying volume type by ID or name try: if uuidutils.is_uuid_like(new_type): vol_type = volume_types.get_volume_type(context, new_type) else: vol_type = volume_types.get_volume_type_by_name(context, new_type) except exception.InvalidVolumeType: msg = _('Invalid volume_type passed: %s') % new_type LOG.error(msg) raise exception.InvalidInput(reason=msg) vol_type_id = vol_type['id'] vol_type_qos_id = vol_type['qos_specs_id'] old_vol_type = None old_vol_type_id = volume['volume_type_id'] old_vol_type_qos_id = None # Error if the original and new type are the same if volume['volume_type_id'] == vol_type_id: msg = (_('New volume_type same as original: %s') % new_type) LOG.error(msg) raise exception.InvalidInput(reason=msg) if volume['volume_type_id']: old_vol_type = volume_types.get_volume_type( context, old_vol_type_id) old_vol_type_qos_id = old_vol_type['qos_specs_id'] # We don't support changing encryption requirements yet old_enc = volume_types.get_volume_type_encryption(context, old_vol_type_id) new_enc = volume_types.get_volume_type_encryption(context, vol_type_id) if old_enc != new_enc: msg = _('Retype cannot change encryption requirements') raise exception.InvalidInput(reason=msg) # We don't support changing QoS at the front-end yet for in-use volumes # TODO(avishay): Call Nova to change QoS setting (libvirt has support # - virDomainSetBlockIoTune() - Nova does not have support yet). if (volume['status'] != 'available' and old_vol_type_qos_id != vol_type_qos_id): for qos_id in [old_vol_type_qos_id, vol_type_qos_id]: if qos_id: specs = qos_specs.get_qos_specs(context.elevated(), qos_id) if specs['qos_specs']['consumer'] != 'back-end': msg = _('Retype cannot change front-end qos specs for ' 'in-use volumes') raise exception.InvalidInput(reason=msg) # We're checking here in so that we can report any quota issues as # early as possible, but won't commit until we change the type. We # pass the reservations onward in case we need to roll back. reservations = quota_utils.get_volume_type_reservation(context, volume, vol_type_id) self.update(context, volume, {'status': 'retyping'}) request_spec = {'volume_properties': volume, 'volume_id': volume['id'], 'volume_type': vol_type, 'migration_policy': migration_policy, 'quota_reservations': reservations} self.scheduler_rpcapi.retype(context, CONF.volume_topic, volume['id'], request_spec=request_spec, filter_properties={}) def manage_existing(self, context, host, ref, name=None, description=None, volume_type=None, metadata=None, availability_zone=None): if availability_zone is None: elevated = context.elevated() try: service = self.db.service_get_by_host_and_topic( elevated, host, CONF.volume_topic) except exception.ServiceNotFound: with excutils.save_and_reraise_exception(): LOG.error(_('Unable to find service for given host.')) availability_zone = service.get('availability_zone') volume_type_id = volume_type['id'] if volume_type else None volume_properties = { 'size': 0, 'user_id': context.user_id, 'project_id': context.project_id, 'status': 'creating', 'attach_status': 'detached', # Rename these to the internal name. 'display_description': description, 'display_name': name, 'host': host, 'availability_zone': availability_zone, 'volume_type_id': volume_type_id, 'metadata': metadata } # Call the scheduler to ensure that the host exists and that it can # accept the volume volume = self.db.volume_create(context, volume_properties) request_spec = {'volume_properties': volume, 'volume_type': volume_type, 'volume_id': volume['id'], 'ref': ref} self.scheduler_rpcapi.manage_existing(context, CONF.volume_topic, volume['id'], request_spec=request_spec) return volume class HostAPI(base.Base): def __init__(self): super(HostAPI, self).__init__() """Sub-set of the Volume Manager API for managing host operations.""" def set_host_enabled(self, context, host, enabled): """Sets the specified host's ability to accept new volumes.""" raise NotImplementedError() def get_host_uptime(self, context, host): """Returns the result of calling "uptime" on the target host.""" raise NotImplementedError() def host_power_action(self, context, host, action): raise NotImplementedError() def set_host_maintenance(self, context, host, mode): """Start/Stop host maintenance window. On start, it triggers volume evacuation. """ raise NotImplementedError() cinder-2014.1.5/cinder/volume/rpcapi.py0000664000567000056700000001621012540642606020760 0ustar jenkinsjenkins00000000000000# Copyright 2012, Intel, Inc. # # 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. """ Client side of the volume RPC API. """ from oslo.config import cfg from oslo import messaging from cinder.openstack.common import jsonutils from cinder import rpc CONF = cfg.CONF class VolumeAPI(object): '''Client side of the volume rpc API. API version history: 1.0 - Initial version. 1.1 - Adds clone volume option to create_volume. 1.2 - Add publish_service_capabilities() method. 1.3 - Pass all image metadata (not just ID) in copy_volume_to_image. 1.4 - Add request_spec, filter_properties and allow_reschedule arguments to create_volume(). 1.5 - Add accept_transfer. 1.6 - Add extend_volume. 1.7 - Adds host_name parameter to attach_volume() to allow attaching to host rather than instance. 1.8 - Add migrate_volume, rename_volume. 1.9 - Add new_user and new_project to accept_transfer. 1.10 - Add migrate_volume_completion, remove rename_volume. 1.11 - Adds mode parameter to attach_volume() to support volume read-only attaching. 1.12 - Adds retype. 1.13 - Adds create_export. 1.14 - Adds reservation parameter to extend_volume(). 1.15 - Adds manage_existing and unmanage_only flag to delete_volume. 1.16 - Removes create_export. ''' BASE_RPC_API_VERSION = '1.0' def __init__(self, topic=None): super(VolumeAPI, self).__init__() target = messaging.Target(topic=CONF.volume_topic, version=self.BASE_RPC_API_VERSION) self.client = rpc.get_client(target, '1.15') def create_volume(self, ctxt, volume, host, request_spec, filter_properties, allow_reschedule=True, snapshot_id=None, image_id=None, source_volid=None): cctxt = self.client.prepare(server=host, version='1.4') request_spec_p = jsonutils.to_primitive(request_spec) cctxt.cast(ctxt, 'create_volume', volume_id=volume['id'], request_spec=request_spec_p, filter_properties=filter_properties, allow_reschedule=allow_reschedule, snapshot_id=snapshot_id, image_id=image_id, source_volid=source_volid), def delete_volume(self, ctxt, volume, unmanage_only=False): cctxt = self.client.prepare(server=volume['host'], version='1.15') cctxt.cast(ctxt, 'delete_volume', volume_id=volume['id'], unmanage_only=unmanage_only) def create_snapshot(self, ctxt, volume, snapshot): cctxt = self.client.prepare(server=volume['host']) cctxt.cast(ctxt, 'create_snapshot', volume_id=volume['id'], snapshot_id=snapshot['id']) def delete_snapshot(self, ctxt, snapshot, host): cctxt = self.client.prepare(server=host) cctxt.cast(ctxt, 'delete_snapshot', snapshot_id=snapshot['id']) def attach_volume(self, ctxt, volume, instance_uuid, host_name, mountpoint, mode): cctxt = self.client.prepare(server=volume['host'], version='1.11') return cctxt.call(ctxt, 'attach_volume', volume_id=volume['id'], instance_uuid=instance_uuid, host_name=host_name, mountpoint=mountpoint, mode=mode) def detach_volume(self, ctxt, volume): cctxt = self.client.prepare(server=volume['host']) return cctxt.call(ctxt, 'detach_volume', volume_id=volume['id']) def copy_volume_to_image(self, ctxt, volume, image_meta): cctxt = self.client.prepare(server=volume['host'], version='1.3') cctxt.cast(ctxt, 'copy_volume_to_image', volume_id=volume['id'], image_meta=image_meta) def initialize_connection(self, ctxt, volume, connector): cctxt = self.client.prepare(server=volume['host']) return cctxt.call(ctxt, 'initialize_connection', volume_id=volume['id'], connector=connector) def terminate_connection(self, ctxt, volume, connector, force=False): cctxt = self.client.prepare(server=volume['host']) return cctxt.call(ctxt, 'terminate_connection', volume_id=volume['id'], connector=connector, force=force) def publish_service_capabilities(self, ctxt): cctxt = self.client.prepare(fanout=True, version='1.2') cctxt.cast(ctxt, 'publish_service_capabilities') def accept_transfer(self, ctxt, volume, new_user, new_project): cctxt = self.client.prepare(server=volume['host'], version='1.9') return cctxt.call(ctxt, 'accept_transfer', volume_id=volume['id'], new_user=new_user, new_project=new_project) def extend_volume(self, ctxt, volume, new_size, reservations): cctxt = self.client.prepare(server=volume['host'], version='1.14') cctxt.cast(ctxt, 'extend_volume', volume_id=volume['id'], new_size=new_size, reservations=reservations) def migrate_volume(self, ctxt, volume, dest_host, force_host_copy): cctxt = self.client.prepare(server=volume['host'], version='1.8') host_p = {'host': dest_host.host, 'capabilities': dest_host.capabilities} cctxt.cast(ctxt, 'migrate_volume', volume_id=volume['id'], host=host_p, force_host_copy=force_host_copy) def migrate_volume_completion(self, ctxt, volume, new_volume, error): cctxt = self.client.prepare(server=volume['host'], version='1.10') return cctxt.call(ctxt, 'migrate_volume_completion', volume_id=volume['id'], new_volume_id=new_volume['id'], error=error) def retype(self, ctxt, volume, new_type_id, dest_host, migration_policy='never', reservations=None): cctxt = self.client.prepare(server=volume['host'], version='1.12') host_p = {'host': dest_host.host, 'capabilities': dest_host.capabilities} cctxt.cast(ctxt, 'retype', volume_id=volume['id'], new_type_id=new_type_id, host=host_p, migration_policy=migration_policy, reservations=reservations) def manage_existing(self, ctxt, volume, ref): cctxt = self.client.prepare(server=volume['host'], version='1.15') cctxt.cast(ctxt, 'manage_existing', volume_id=volume['id'], ref=ref) cinder-2014.1.5/cinder/volume/volume_types.py0000664000567000056700000002111112540642606022231 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright (c) 2010 Citrix Systems, Inc. # Copyright 2011 Ken Pepple # # 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. """Built-in volume type properties.""" from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder.openstack.common.db import exception as db_exc from cinder.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) def create(context, name, extra_specs={}): """Creates volume types.""" try: type_ref = db.volume_type_create(context, dict(name=name, extra_specs=extra_specs)) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) raise exception.VolumeTypeCreateFailed(name=name, extra_specs=extra_specs) return type_ref def destroy(context, id): """Marks volume types as deleted.""" if id is None: msg = _("id cannot be None") raise exception.InvalidVolumeType(reason=msg) else: db.volume_type_destroy(context, id) def get_all_types(context, inactive=0, search_opts={}): """Get all non-deleted volume_types. Pass true as argument if you want deleted volume types returned also. """ vol_types = db.volume_type_get_all(context, inactive) if search_opts: LOG.debug(_("Searching by: %s") % search_opts) def _check_extra_specs_match(vol_type, searchdict): for k, v in searchdict.iteritems(): if (k not in vol_type['extra_specs'].keys() or vol_type['extra_specs'][k] != v): return False return True # search_option to filter_name mapping. filter_mapping = {'extra_specs': _check_extra_specs_match} result = {} for type_name, type_args in vol_types.iteritems(): # go over all filters in the list for opt, values in search_opts.iteritems(): try: filter_func = filter_mapping[opt] except KeyError: # no such filter - ignore it, go to next filter continue else: if filter_func(type_args, values): result[type_name] = type_args break vol_types = result return vol_types def get_volume_type(ctxt, id): """Retrieves single volume type by id.""" if id is None: msg = _("id cannot be None") raise exception.InvalidVolumeType(reason=msg) if ctxt is None: ctxt = context.get_admin_context() return db.volume_type_get(ctxt, id) def get_volume_type_by_name(context, name): """Retrieves single volume type by name.""" if name is None: msg = _("name cannot be None") raise exception.InvalidVolumeType(reason=msg) return db.volume_type_get_by_name(context, name) def get_default_volume_type(): """Get the default volume type.""" name = CONF.default_volume_type vol_type = {} if name is not None: ctxt = context.get_admin_context() try: vol_type = get_volume_type_by_name(ctxt, name) except exception.VolumeTypeNotFoundByName as e: # Couldn't find volume type with the name in default_volume_type # flag, record this issue and move on #TODO(zhiteng) consider add notification to warn admin LOG.exception(_('Default volume type is not found, ' 'please check default_volume_type config: %s'), e) return vol_type def get_volume_type_extra_specs(volume_type_id, key=False): volume_type = get_volume_type(context.get_admin_context(), volume_type_id) extra_specs = volume_type['extra_specs'] if key: if extra_specs.get(key): return extra_specs.get(key) else: return False else: return extra_specs def is_encrypted(context, volume_type_id): if volume_type_id is None: return False encryption = db.volume_type_encryption_get(context, volume_type_id) return encryption is not None def get_volume_type_encryption(context, volume_type_id): if volume_type_id is None: return None encryption = db.volume_type_encryption_get(context, volume_type_id) return encryption def get_volume_type_qos_specs(volume_type_id): ctxt = context.get_admin_context() res = db.volume_type_qos_specs_get(ctxt, volume_type_id) return res def volume_types_diff(context, vol_type_id1, vol_type_id2): """Returns a 'diff' of two volume types and whether they are equal. Returns a tuple of (diff, equal), where 'equal' is a boolean indicating whether there is any difference, and 'diff' is a dictionary with the following format: {'extra_specs': {'key1': (value_in_1st_vol_type, value_in_2nd_vol_type), 'key2': (value_in_1st_vol_type, value_in_2nd_vol_type), ...} 'qos_specs': {'key1': (value_in_1st_vol_type, value_in_2nd_vol_type), 'key2': (value_in_1st_vol_type, value_in_2nd_vol_type), ...} 'encryption': {'cipher': (value_in_1st_vol_type, value_in_2nd_vol_type), {'key_size': (value_in_1st_vol_type, value_in_2nd_vol_type), ...} """ def _fix_qos_specs(qos_specs): if qos_specs: qos_specs.pop('id', None) qos_specs.pop('name', None) qos_specs.update(qos_specs.pop('specs', {})) def _fix_encryption_specs(encryption): if encryption: encryption = dict(encryption) for param in ['volume_type_id', 'created_at', 'updated_at', 'deleted_at']: encryption.pop(param, None) return encryption def _dict_diff(dict1, dict2): res = {} equal = True if dict1 is None: dict1 = {} if dict2 is None: dict2 = {} for k, v in dict1.iteritems(): res[k] = (v, dict2.get(k)) if k not in dict2 or res[k][0] != res[k][1]: equal = False for k, v in dict2.iteritems(): res[k] = (dict1.get(k), v) if k not in dict1 or res[k][0] != res[k][1]: equal = False return (res, equal) all_equal = True diff = {} vol_type_data = [] for vol_type_id in (vol_type_id1, vol_type_id2): if vol_type_id is None: specs = {'extra_specs': None, 'qos_specs': None, 'encryption': None} else: specs = {} vol_type = get_volume_type(context, vol_type_id) specs['extra_specs'] = vol_type.get('extra_specs') qos_specs = get_volume_type_qos_specs(vol_type_id) specs['qos_specs'] = qos_specs.get('qos_specs') _fix_qos_specs(specs['qos_specs']) specs['encryption'] = get_volume_type_encryption(context, vol_type_id) specs['encryption'] = _fix_encryption_specs(specs['encryption']) vol_type_data.append(specs) diff['extra_specs'], equal = _dict_diff(vol_type_data[0]['extra_specs'], vol_type_data[1]['extra_specs']) if not equal: all_equal = False diff['qos_specs'], equal = _dict_diff(vol_type_data[0]['qos_specs'], vol_type_data[1]['qos_specs']) if not equal: all_equal = False diff['encryption'], equal = _dict_diff(vol_type_data[0]['encryption'], vol_type_data[1]['encryption']) if not equal: all_equal = False return (diff, all_equal) cinder-2014.1.5/cinder/volume/qos_specs.py0000664000567000056700000002376112540642606021512 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 eBay Inc. # Copyright (c) 2013 OpenStack Foundation # # 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. """The QoS Specs Implementation""" from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder.openstack.common.db import exception as db_exc from cinder.openstack.common import log as logging from cinder.volume import volume_types CONF = cfg.CONF LOG = logging.getLogger(__name__) CONTROL_LOCATION = ['front-end', 'back-end', 'both'] def _verify_prepare_qos_specs(specs, create=True): """Check if 'consumer' value in qos specs is valid. Verify 'consumer' value in qos_specs is valid, raise exception if not. Assign default value to 'consumer', which is 'back-end' if input is empty. :params create a flag indicate if specs being verified is for create. If it's false, that means specs is for update, so that there's no need to add 'consumer' if that wasn't in specs. """ # Check control location, if it's missing in input, assign default # control location: 'front-end' if not specs: specs = {} # remove 'name' since we will handle that elsewhere. if specs.get('name', None): del specs['name'] try: if specs['consumer'] not in CONTROL_LOCATION: msg = _("Valid consumer of QoS specs are: %s") % CONTROL_LOCATION raise exception.InvalidQoSSpecs(reason=msg) except KeyError: # Default consumer is back-end, i.e Cinder volume service if create: specs['consumer'] = 'back-end' return specs def create(context, name, specs=None): """Creates qos_specs. :param specs dictionary that contains specifications for QoS e.g. {'consumer': 'front-end', 'total_iops_sec': 1000, 'total_bytes_sec': 1024000} """ _verify_prepare_qos_specs(specs) values = dict(name=name, qos_specs=specs) LOG.debug("Dict for qos_specs: %s" % values) try: qos_specs_ref = db.qos_specs_create(context, values) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) raise exception.QoSSpecsCreateFailed(name=name, qos_specs=specs) return qos_specs_ref def update(context, qos_specs_id, specs): """Update qos specs. :param specs dictionary that contains key/value pairs for updating existing specs. e.g. {'consumer': 'front-end', 'total_iops_sec': 500, 'total_bytes_sec': 512000,} """ # need to verify specs in case 'consumer' is passed _verify_prepare_qos_specs(specs, create=False) LOG.debug('qos_specs.update(): specs %s' % specs) try: res = db.qos_specs_update(context, qos_specs_id, specs) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) raise exception.QoSSpecsUpdateFailed(specs_id=qos_specs_id, qos_specs=specs) return res def delete(context, qos_specs_id, force=False): """Marks qos specs as deleted. 'force' parameter is a flag to determine whether should destroy should continue when there were entities associated with the qos specs. force=True indicates caller would like to mark qos specs as deleted even if there was entities associate with target qos specs. Trying to delete a qos specs still associated with entities will cause QoSSpecsInUse exception if force=False (default). """ if qos_specs_id is None: msg = _("id cannot be None") raise exception.InvalidQoSSpecs(reason=msg) # check if there is any entity associated with this qos specs res = db.qos_specs_associations_get(context, qos_specs_id) if res and not force: raise exception.QoSSpecsInUse(specs_id=qos_specs_id) elif res and force: # remove all association db.qos_specs_disassociate_all(context, qos_specs_id) db.qos_specs_delete(context, qos_specs_id) def delete_keys(context, qos_specs_id, keys): """Marks specified key of target qos specs as deleted.""" if qos_specs_id is None: msg = _("id cannot be None") raise exception.InvalidQoSSpecs(reason=msg) # make sure qos_specs_id is valid get_qos_specs(context, qos_specs_id) for key in keys: db.qos_specs_item_delete(context, qos_specs_id, key) def get_associations(context, specs_id): """Get all associations of given qos specs.""" try: # query returns a list of volume types associated with qos specs associates = db.qos_specs_associations_get(context, specs_id) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) msg = _('Failed to get all associations of ' 'qos specs %s') % specs_id LOG.warn(msg) raise exception.CinderException(message=msg) result = [] for vol_type in associates: member = dict(association_type='volume_type') member.update(dict(name=vol_type['name'])) member.update(dict(id=vol_type['id'])) result.append(member) return result def associate_qos_with_type(context, specs_id, type_id): """Associate qos_specs with volume type. Associate target qos specs with specific volume type. Would raise following exceptions: VolumeTypeNotFound - if volume type doesn't exist; QoSSpecsNotFound - if qos specs doesn't exist; InvalidVolumeType - if volume type is already associated with qos specs other than given one. QoSSpecsAssociateFailed - if there was general DB error :param specs_id: qos specs ID to associate with :param type_id: volume type ID to associate with """ try: get_qos_specs(context, specs_id) res = volume_types.get_volume_type_qos_specs(type_id) if res.get('qos_specs', None): if res['qos_specs'].get('id') != specs_id: msg = (_("Type %(type_id)s is already associated with another " "qos specs: %(qos_specs_id)s") % {'type_id': type_id, 'qos_specs_id': res['qos_specs']['id']}) raise exception.InvalidVolumeType(reason=msg) else: db.qos_specs_associate(context, specs_id, type_id) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) LOG.warn(_('Failed to associate qos specs ' '%(id)s with type: %(vol_type_id)s') % dict(id=specs_id, vol_type_id=type_id)) raise exception.QoSSpecsAssociateFailed(specs_id=specs_id, type_id=type_id) def disassociate_qos_specs(context, specs_id, type_id): """Disassociate qos_specs from volume type.""" try: get_qos_specs(context, specs_id) db.qos_specs_disassociate(context, specs_id, type_id) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) LOG.warn(_('Failed to disassociate qos specs ' '%(id)s with type: %(vol_type_id)s') % dict(id=specs_id, vol_type_id=type_id)) raise exception.QoSSpecsDisassociateFailed(specs_id=specs_id, type_id=type_id) def disassociate_all(context, specs_id): """Disassociate qos_specs from all entities.""" try: get_qos_specs(context, specs_id) db.qos_specs_disassociate_all(context, specs_id) except db_exc.DBError as e: LOG.exception(_('DB error: %s') % e) LOG.warn(_('Failed to disassociate qos specs %s.') % specs_id) raise exception.QoSSpecsDisassociateFailed(specs_id=specs_id, type_id=None) def get_all_specs(context, inactive=False, search_opts={}): """Get all non-deleted qos specs. Pass inactive=True as argument and deleted volume types would return as well. """ qos_specs = db.qos_specs_get_all(context, inactive) if search_opts: LOG.debug(_("Searching by: %s") % search_opts) def _check_specs_match(qos_specs, searchdict): for k, v in searchdict.iteritems(): if ((k not in qos_specs['specs'].keys() or qos_specs['specs'][k] != v)): return False return True # search_option to filter_name mapping. filter_mapping = {'qos_specs': _check_specs_match} result = {} for name, args in qos_specs.iteritems(): # go over all filters in the list for opt, values in search_opts.iteritems(): try: filter_func = filter_mapping[opt] except KeyError: # no such filter - ignore it, go to next filter continue else: if filter_func(args, values): result[name] = args break qos_specs = result return qos_specs def get_qos_specs(ctxt, id): """Retrieves single qos specs by id.""" if id is None: msg = _("id cannot be None") raise exception.InvalidQoSSpecs(reason=msg) if ctxt is None: ctxt = context.get_admin_context() return db.qos_specs_get(ctxt, id) def get_qos_specs_by_name(context, name): """Retrieves single qos specs by name.""" if name is None: msg = _("name cannot be None") raise exception.InvalidQoSSpecs(reason=msg) return db.qos_specs_get_by_name(context, name) cinder-2014.1.5/cinder/volume/drivers/0000775000567000056700000000000012540643114020601 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/lvm.py0000664000567000056700000006212512540642606021764 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Driver for Linux servers running LVM. """ import math import os import socket from oslo.config import cfg from cinder.brick import exception as brick_exception from cinder.brick.local_dev import lvm as lvm from cinder import exception from cinder.image import image_utils from cinder.openstack.common import fileutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder import utils from cinder.volume import driver from cinder.volume import utils as volutils LOG = logging.getLogger(__name__) volume_opts = [ cfg.StrOpt('volume_group', default='cinder-volumes', help='Name for the VG that will contain exported volumes'), cfg.IntOpt('lvm_mirrors', default=0, help='If set, create lvms with multiple mirrors. Note that ' 'this requires lvm_mirrors + 2 pvs with available space'), cfg.StrOpt('lvm_type', default='default', help='Type of LVM volumes to deploy; (default or thin)'), ] CONF = cfg.CONF CONF.register_opts(volume_opts) class LVMVolumeDriver(driver.VolumeDriver): """Executes commands relating to Volumes.""" VERSION = '2.0.0' def __init__(self, vg_obj=None, *args, **kwargs): super(LVMVolumeDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(volume_opts) self.hostname = socket.gethostname() self.vg = vg_obj self.backend_name =\ self.configuration.safe_get('volume_backend_name') or 'LVM' self.protocol = 'local' def set_execute(self, execute): self._execute = execute def check_for_setup_error(self): """Verify that requirements are in place to use LVM driver.""" if self.vg is None: root_helper = utils.get_root_helper() try: self.vg = lvm.LVM(self.configuration.volume_group, root_helper, lvm_type=self.configuration.lvm_type, executor=self._execute) except brick_exception.VolumeGroupNotFound: message = ("Volume Group %s does not exist" % self.configuration.volume_group) raise exception.VolumeBackendAPIException(data=message) vg_list = volutils.get_all_volume_groups( self.configuration.volume_group) vg_dict = \ (vg for vg in vg_list if vg['name'] == self.vg.vg_name).next() if vg_dict is None: message = ("Volume Group %s does not exist" % self.configuration.volume_group) raise exception.VolumeBackendAPIException(data=message) if self.configuration.lvm_type == 'thin': # Specific checks for using Thin provisioned LV's if not volutils.supports_thin_provisioning(): message = ("Thin provisioning not supported " "on this version of LVM.") raise exception.VolumeBackendAPIException(data=message) pool_name = "%s-pool" % self.configuration.volume_group if self.vg.get_volume(pool_name) is None: try: self.vg.create_thin_pool(pool_name) except processutils.ProcessExecutionError as exc: exception_message = ("Failed to create thin pool, " "error message was: %s" % exc.stderr) raise exception.VolumeBackendAPIException( data=exception_message) def _sizestr(self, size_in_g): if int(size_in_g) == 0: return '100m' return '%sg' % size_in_g def _volume_not_present(self, volume_name): return self.vg.get_volume(volume_name) is None def _delete_volume(self, volume, is_snapshot=False): """Deletes a logical volume.""" if self.configuration.volume_clear != 'none' and \ self.configuration.lvm_type != 'thin': self._clear_volume(volume, is_snapshot) name = volume['name'] if is_snapshot: name = self._escape_snapshot(volume['name']) self.vg.delete(name) def _clear_volume(self, volume, is_snapshot=False): # zero out old volumes to prevent data leaking between users # TODO(ja): reclaiming space should be done lazy and low priority if is_snapshot: # if the volume to be cleared is a snapshot of another volume # we need to clear out the volume using the -cow instead of the # directly volume path. We need to skip this if we are using # thin provisioned LVs. # bug# lp1191812 dev_path = self.local_path(volume) + "-cow" else: dev_path = self.local_path(volume) # TODO(jdg): Maybe we could optimize this for snaps by looking at # the cow table and only overwriting what's necessary? # for now we're still skipping on snaps due to hang issue if not os.path.exists(dev_path): msg = (_('Volume device file path %s does not exist.') % dev_path) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) size_in_g = volume.get('size', volume.get('volume_size', None)) if size_in_g is None: msg = (_("Size for volume: %s not found, " "cannot secure delete.") % volume['id']) LOG.error(msg) raise exception.InvalidParameterValue(msg) # clear_volume expects sizes in MiB, we store integer GiB # be sure to convert before passing in vol_sz_in_meg = size_in_g * units.KiB volutils.clear_volume( vol_sz_in_meg, dev_path, volume_clear=self.configuration.volume_clear, volume_clear_size=self.configuration.volume_clear_size) def _escape_snapshot(self, snapshot_name): # Linux LVM reserves name that starts with snapshot, so that # such volume name can't be created. Mangle it. if not snapshot_name.startswith('snapshot'): return snapshot_name return '_' + snapshot_name def _create_volume(self, name, size, lvm_type, mirror_count, vg=None): vg_ref = self.vg if vg is not None: vg_ref = vg vg_ref.create_volume(name, size, lvm_type, mirror_count) def create_volume(self, volume): """Creates a logical volume.""" mirror_count = 0 if self.configuration.lvm_mirrors: mirror_count = self.configuration.lvm_mirrors self._create_volume(volume['name'], self._sizestr(volume['size']), self.configuration.lvm_type, mirror_count) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" self._create_volume(volume['name'], self._sizestr(volume['size']), self.configuration.lvm_type, self.configuration.lvm_mirrors) # Some configurations of LVM do not automatically activate # ThinLVM snapshot LVs. self.vg.activate_lv(snapshot['name'], is_snapshot=True) # copy_volume expects sizes in MiB, we store integer GiB # be sure to convert before passing in volutils.copy_volume(self.local_path(snapshot), self.local_path(volume), snapshot['volume_size'] * units.KiB, self.configuration.volume_dd_blocksize, execute=self._execute) def delete_volume(self, volume): """Deletes a logical volume.""" # NOTE(jdg): We don't need to explicitly call # remove export here because we already did it # in the manager before we got here. if self._volume_not_present(volume['name']): # If the volume isn't present, then don't attempt to delete return True if self.vg.lv_has_snapshot(volume['name']): LOG.error(_('Unabled to delete due to existing snapshot ' 'for volume: %s') % volume['name']) raise exception.VolumeIsBusy(volume_name=volume['name']) self._delete_volume(volume) def create_snapshot(self, snapshot): """Creates a snapshot.""" self.vg.create_lv_snapshot(self._escape_snapshot(snapshot['name']), snapshot['volume_name'], self.configuration.lvm_type) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" if self._volume_not_present(self._escape_snapshot(snapshot['name'])): # If the snapshot isn't present, then don't attempt to delete LOG.warning(_("snapshot: %s not found, " "skipping delete operations") % snapshot['name']) return True # TODO(yamahata): zeroing out the whole snapshot triggers COW. # it's quite slow. self._delete_volume(snapshot, is_snapshot=True) def local_path(self, volume, vg=None): if vg is None: vg = self.configuration.volume_group # NOTE(vish): stops deprecation warning escaped_group = vg.replace('-', '--') escaped_name = self._escape_snapshot(volume['name']).replace('-', '--') return "/dev/mapper/%s-%s" % (escaped_group, escaped_name) def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" image_utils.fetch_to_raw(context, image_service, image_id, self.local_path(volume), self.configuration.volume_dd_blocksize, size=volume['size']) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" image_utils.upload_volume(context, image_service, image_meta, self.local_path(volume)) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" mirror_count = 0 if self.configuration.lvm_mirrors: mirror_count = self.configuration.lvm_mirrors LOG.info(_('Creating clone of volume: %s') % src_vref['id']) volume_name = src_vref['name'] temp_id = 'tmp-snap-%s' % volume['id'] temp_snapshot = {'volume_name': volume_name, 'size': src_vref['size'], 'volume_size': src_vref['size'], 'name': 'clone-snap-%s' % volume['id'], 'id': temp_id} self.create_snapshot(temp_snapshot) # copy_volume expects sizes in MiB, we store integer GiB # be sure to convert before passing in try: self._create_volume(volume['name'], self._sizestr(volume['size']), self.configuration.lvm_type, mirror_count) self.vg.activate_lv(temp_snapshot['name'], is_snapshot=True) volutils.copy_volume( self.local_path(temp_snapshot), self.local_path(volume), src_vref['size'] * units.KiB, self.configuration.volume_dd_blocksize, execute=self._execute) finally: self.delete_snapshot(temp_snapshot) def clone_image(self, volume, image_location, image_id, image_meta): return None, False def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" volume = self.db.volume_get(context, backup['volume_id']) volume_path = self.local_path(volume) with utils.temporary_chown(volume_path): with fileutils.file_open(volume_path) as volume_file: backup_service.backup(backup, volume_file) def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" volume_path = self.local_path(volume) with utils.temporary_chown(volume_path): with fileutils.file_open(volume_path, 'wb') as volume_file: backup_service.restore(backup, volume['id'], volume_file) def get_volume_stats(self, refresh=False): """Get volume status. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) if self.vg is None: LOG.warning(_('Unable to update stats on non-initialized ' 'Volume Group: %s'), self.configuration.volume_group) return self.vg.update_volume_group_info() data = {} # Note(zhiteng): These information are driver/backend specific, # each driver may define these values in its own config options # or fetch from driver specific configuration file. data["volume_backend_name"] = self.backend_name data["vendor_name"] = 'Open Source' data["driver_version"] = self.VERSION data["storage_protocol"] = self.protocol if self.configuration.lvm_mirrors > 0: data['total_capacity_gb'] =\ self.vg.vg_mirror_size(self.configuration.lvm_mirrors) data['free_capacity_gb'] =\ self.vg.vg_mirror_free_space(self.configuration.lvm_mirrors) elif self.configuration.lvm_type == 'thin': data['total_capacity_gb'] = self.vg.vg_thin_pool_size data['free_capacity_gb'] = self.vg.vg_thin_pool_free_space else: data['total_capacity_gb'] = self.vg.vg_size data['free_capacity_gb'] = self.vg.vg_free_space data['reserved_percentage'] = self.configuration.reserved_percentage data['QoS_support'] = False data['location_info'] =\ ('LVMVolumeDriver:%(hostname)s:%(vg)s' ':%(lvm_type)s:%(lvm_mirrors)s' % {'hostname': self.hostname, 'vg': self.configuration.volume_group, 'lvm_type': self.configuration.lvm_type, 'lvm_mirrors': self.configuration.lvm_mirrors}) self._stats = data def extend_volume(self, volume, new_size): """Extend an existing volume's size.""" self.vg.extend_volume(volume['name'], self._sizestr(new_size)) def manage_existing(self, volume, existing_ref): """Manages an existing LV. Renames the LV to match the expected name for the volume. Error checking done by manage_existing_get_size is not repeated. """ lv_name = existing_ref['lv_name'] lv = self.vg.get_volume(lv_name) # Attempt to rename the LV to match the OpenStack internal name. try: self.vg.rename_volume(lv_name, volume['name']) except processutils.ProcessExecutionError as exc: exception_message = (_("Failed to rename logical volume %(name)s, " "error message was: %(err_msg)s") % {'name': lv_name, 'err_msg': exc.stderr}) raise exception.VolumeBackendAPIException( data=exception_message) def manage_existing_get_size(self, volume, existing_ref): """Return size of an existing LV for manage_existing. existing_ref is a dictionary of the form: {'lv_name': } """ # Check that the reference is valid if 'lv_name' not in existing_ref: reason = _('Reference must contain lv_name element.') raise exception.ManageExistingInvalidReference( existing_ref=existing_ref, reason=reason) lv_name = existing_ref['lv_name'] lv = self.vg.get_volume(lv_name) # Raise an exception if we didn't find a suitable LV. if not lv: kwargs = {'existing_ref': lv_name, 'reason': 'Specified logical volume does not exist.'} raise exception.ManageExistingInvalidReference(**kwargs) # LV size is returned in gigabytes. Attempt to parse size as a float # and round up to the next integer. try: lv_size = int(math.ceil(float(lv['size']))) except ValueError: exception_message = (_("Failed to manage existing volume " "%(name)s, because reported size %(size)s " "was not a floating-point number.") % {'name': lv_name, 'size': lv['size']}) raise exception.VolumeBackendAPIException( data=exception_message) return lv_size class LVMISCSIDriver(LVMVolumeDriver, driver.ISCSIDriver): """Executes commands relating to ISCSI volumes. We make use of model provider properties as follows: ``provider_location`` if present, contains the iSCSI target information in the same format as an ietadm discovery i.e. ':, ' ``provider_auth`` if present, contains a space-separated triple: ' '. `CHAP` is the only auth_method in use at the moment. """ def __init__(self, *args, **kwargs): self.db = kwargs.get('db') self.target_helper = self.get_target_helper(self.db) super(LVMISCSIDriver, self).__init__(*args, **kwargs) self.backend_name =\ self.configuration.safe_get('volume_backend_name') or 'LVM_iSCSI' self.protocol = 'iSCSI' def set_execute(self, execute): super(LVMISCSIDriver, self).set_execute(execute) if self.target_helper is not None: self.target_helper.set_execute(execute) def _create_target(self, iscsi_name, iscsi_target, volume_path, chap_auth, lun=0, check_exit_code=False, old_name=None): # NOTE(jdg): tgt driver has an issue where with a lot of activity # (or sometimes just randomly) it will get *confused* and attempt # to reuse a target ID, resulting in a target already exists error # Typically a simple retry will address this # For now we have this while loop, might be useful in the # future to throw a retry decorator in common or utils attempts = 2 while attempts > 0: attempts -= 1 try: # NOTE(jdg): For TgtAdm case iscsi_name is all we need # should clean this all up at some point in the future tid = self.target_helper.create_iscsi_target( iscsi_name, iscsi_target, 0, volume_path, chap_auth, check_exit_code=check_exit_code, old_name=old_name) break except brick_exception.ISCSITargetCreateFailed: if attempts == 0: raise else: LOG.warning(_('Error creating iSCSI target, retrying ' 'creation for target: %s') % iscsi_name) return tid def ensure_export(self, context, volume): volume_name = volume['name'] iscsi_name = "%s%s" % (self.configuration.iscsi_target_prefix, volume_name) volume_path = "/dev/%s/%s" % (self.configuration.volume_group, volume_name) # NOTE(jdg): For TgtAdm case iscsi_name is the ONLY param we need # should clean this all up at some point in the future model_update = self.target_helper.ensure_export(context, volume, iscsi_name, volume_path) if model_update: self.db.volume_update(context, volume['id'], model_update) def create_export(self, context, volume): return self._create_export(context, volume) def _create_export(self, context, volume, vg=None): """Creates an export for a logical volume.""" if vg is None: vg = self.configuration.volume_group volume_path = "/dev/%s/%s" % (vg, volume['name']) data = self.target_helper.create_export(context, volume, volume_path) return { 'provider_location': data['location'], 'provider_auth': data['auth'], } def remove_export(self, context, volume): self.target_helper.remove_export(context, volume) def migrate_volume(self, ctxt, volume, host, thin=False, mirror_count=0): """Optimize the migration if the destination is on the same server. If the specified host is another back-end on the same server, and the volume is not attached, we can do the migration locally without going through iSCSI. """ false_ret = (False, None) if volume['status'] != 'available': return false_ret if 'location_info' not in host['capabilities']: return false_ret info = host['capabilities']['location_info'] try: (dest_type, dest_hostname, dest_vg, lvm_type, lvm_mirrors) =\ info.split(':') lvm_mirrors = int(lvm_mirrors) except ValueError: return false_ret if (dest_type != 'LVMVolumeDriver' or dest_hostname != self.hostname): return false_ret if dest_vg != self.vg.vg_name: vg_list = volutils.get_all_volume_groups() try: (vg for vg in vg_list if vg['name'] == dest_vg).next() except StopIteration: message = ("Destination Volume Group %s does not exist" % dest_vg) LOG.error(_('%s'), message) return false_ret helper = utils.get_root_helper() dest_vg_ref = lvm.LVM(dest_vg, helper, lvm_type=lvm_type, executor=self._execute) self.remove_export(ctxt, volume) self._create_volume(volume['name'], self._sizestr(volume['size']), lvm_type, lvm_mirrors, dest_vg_ref) volutils.copy_volume(self.local_path(volume), self.local_path(volume, vg=dest_vg), volume['size'], self.configuration.volume_dd_blocksize, execute=self._execute) self._delete_volume(volume) model_update = self._create_export(ctxt, volume, vg=dest_vg) return (True, model_update) def _iscsi_location(self, ip, target, iqn, lun=None): return "%s:%s,%s %s %s" % (ip, self.configuration.iscsi_port, target, iqn, lun) def _iscsi_authentication(self, chap, name, password): return "%s %s %s" % (chap, name, password) class LVMISERDriver(LVMISCSIDriver, driver.ISERDriver): """Executes commands relating to ISER volumes. We make use of model provider properties as follows: ``provider_location`` if present, contains the iSER target information in the same format as an ietadm discovery i.e. ':, ' ``provider_auth`` if present, contains a space-separated triple: ' '. `CHAP` is the only auth_method in use at the moment. """ def __init__(self, *args, **kwargs): self.target_helper = self.get_target_helper(kwargs.get('db')) LVMVolumeDriver.__init__(self, *args, **kwargs) self.backend_name =\ self.configuration.safe_get('volume_backend_name') or 'LVM_iSER' self.protocol = 'iSER' cinder-2014.1.5/cinder/volume/drivers/huawei/0000775000567000056700000000000012540643114022063 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/huawei/huawei_t.py0000664000567000056700000005470012540642606024255 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Volume Drivers for Huawei OceanStor T series storage arrays. """ import re import time from cinder import exception from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers.huawei import huawei_utils from cinder.volume.drivers.huawei import ssh_common LOG = logging.getLogger(__name__) HOST_PORT_PREFIX = 'HostPort_' class HuaweiTISCSIDriver(driver.ISCSIDriver): """ISCSI driver for Huawei OceanStor T series storage arrays.""" VERSION = '1.1.0' def __init__(self, *args, **kwargs): super(HuaweiTISCSIDriver, self).__init__(*args, **kwargs) def do_setup(self, context): """Instantiate common class.""" self.common = ssh_common.TseriesCommon(configuration= self.configuration) self.common.do_setup(context) self._assert_cli_out = self.common._assert_cli_out self._assert_cli_operate_out = self.common._assert_cli_operate_out def check_for_setup_error(self): """Check something while starting.""" self.common.check_for_setup_error() def create_volume(self, volume): """Create a new volume.""" volume_id = self.common.create_volume(volume) return {'provider_location': volume_id} def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot.""" volume_id = self.common.create_volume_from_snapshot(volume, snapshot) return {'provider_location': volume_id} def create_cloned_volume(self, volume, src_vref): """Create a clone of the specified volume.""" volume_id = self.common.create_cloned_volume(volume, src_vref) return {'provider_location': volume_id} def extend_volume(self, volume, new_size): """Extend a volume.""" self.common.extend_volume(volume, new_size) def delete_volume(self, volume): """Delete a volume.""" self.common.delete_volume(volume) def create_export(self, context, volume): """Export the volume.""" pass def ensure_export(self, context, volume): """Synchronously recreate an export for a volume.""" pass def remove_export(self, context, volume): """Remove an export for a volume.""" pass def create_snapshot(self, snapshot): """Create a snapshot.""" snapshot_id = self.common.create_snapshot(snapshot) return {'provider_location': snapshot_id} def delete_snapshot(self, snapshot): """Delete a snapshot.""" self.common.delete_snapshot(snapshot) def initialize_connection(self, volume, connector): """Map a volume to a host and return target iSCSI information.""" LOG.debug(_('initialize_connection: volume name: %(vol)s, ' 'host: %(host)s, initiator: %(ini)s') % {'vol': volume['name'], 'host': connector['host'], 'ini': connector['initiator']}) self.common._update_login_info() (iscsi_iqn, target_ip, port_ctr) =\ self._get_iscsi_params(connector['initiator']) # First, add a host if not added before. host_id = self.common.add_host(connector['host'], connector['ip'], connector['initiator']) # Then, add the iSCSI port to the host. self._add_iscsi_port_to_host(host_id, connector) # Finally, map the volume to the host. volume_id = volume['provider_location'] hostlun_id = self.common.map_volume(host_id, volume_id) # Change LUN ctr for better performance, just for single path. lun_details = self.common.get_lun_details(volume_id) if (lun_details['LunType'] == 'THICK' and lun_details['OwningController'] != port_ctr): self.common.change_lun_ctr(volume_id, port_ctr) properties = {} properties['target_discovered'] = False properties['target_portal'] = ('%s:%s' % (target_ip, '3260')) properties['target_iqn'] = iscsi_iqn properties['target_lun'] = int(hostlun_id) properties['volume_id'] = volume['id'] auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret return {'driver_volume_type': 'iscsi', 'data': properties} def _get_iscsi_params(self, initiator): """Get target iSCSI params, including iqn and IP.""" conf_file = self.common.configuration.cinder_huawei_conf_file iscsi_conf = self._get_iscsi_conf(conf_file) target_ip = None for ini in iscsi_conf['Initiator']: if ini['Name'] == initiator: target_ip = ini['TargetIP'] break # If didn't specify target IP for some initiator, use default IP. if not target_ip: if iscsi_conf['DefaultTargetIP']: target_ip = iscsi_conf['DefaultTargetIP'] else: msg = (_('_get_iscsi_params: Failed to get target IP ' 'for initiator %(ini)s, please check config file.') % {'ini': initiator}) LOG.error(msg) raise exception.InvalidInput(reason=msg) (target_iqn, port_ctr) = self._get_tgt_iqn(target_ip) return (target_iqn, target_ip, port_ctr) def _get_iscsi_conf(self, filename): """Get iSCSI info from config file. This function returns a dict: {'DefaultTargetIP': '11.11.11.11', 'Initiator': [{'Name': 'iqn.xxxxxx.1', 'TargetIP': '11.11.11.12'}, {'Name': 'iqn.xxxxxx.2', 'TargetIP': '11.11.11.13'} ] } """ iscsiinfo = {} root = huawei_utils.parse_xml_file(filename) default_ip = root.findtext('iSCSI/DefaultTargetIP') if default_ip: iscsiinfo['DefaultTargetIP'] = default_ip.strip() else: iscsiinfo['DefaultTargetIP'] = None initiator_list = [] tmp_dic = {} for dic in root.findall('iSCSI/Initiator'): # Strip the values of dict. for k, v in dic.items(): tmp_dic[k] = v.strip() initiator_list.append(tmp_dic) iscsiinfo['Initiator'] = initiator_list return iscsiinfo def _get_tgt_iqn(self, port_ip): """Run CLI command to get target iSCSI iqn. The iqn is formed with three parts: iSCSI target name + iSCSI port info + iSCSI IP """ LOG.debug(_('_get_tgt_iqn: iSCSI IP is %s.') % port_ip) cli_cmd = 'showiscsitgtname' out = self.common._execute_cli(cli_cmd) self._assert_cli_out(re.search('ISCSI Name', out), '_get_tgt_iqn', 'Failed to get iSCSI target %s iqn.' % port_ip, cli_cmd, out) lines = out.split('\r\n') index = lines[4].index('iqn') iqn_prefix = lines[4][index:].strip() # Here we make sure port_info won't be None. port_info = self._get_iscsi_tgt_port_info(port_ip) ctr = ('0' if port_info[0] == 'A' else '1') interface = '0' + port_info[1] port = '0' + port_info[2][1:] iqn_suffix = ctr + '02' + interface + port # iqn_suffix should not start with 0 while(True): if iqn_suffix.startswith('0'): iqn_suffix = iqn_suffix[1:] else: break iqn = iqn_prefix + ':' + iqn_suffix + ':' + port_info[3] LOG.debug(_('_get_tgt_iqn: iSCSI target iqn is %s.') % iqn) return (iqn, port_info[0]) def _get_iscsi_tgt_port_info(self, port_ip): """Get iSCSI Port information of storage device.""" cli_cmd = 'showiscsiip' out = self.common._execute_cli(cli_cmd) if re.search('iSCSI IP Information', out): for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if tmp_line[3] == port_ip: return tmp_line err_msg = _('_get_iscsi_tgt_port_info: Failed to get iSCSI port ' 'info. Please make sure the iSCSI port IP %s is ' 'configured in array.') % port_ip LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def _add_iscsi_port_to_host(self, hostid, connector, multipathtype=0): """Add an iSCSI port to the given host. First, add an initiator if needed, the initiator is equivalent to an iSCSI port. Then, add the initiator to host if not added before. """ initiator = connector['initiator'] # Add an iSCSI initiator. if not self._initiator_added(initiator): self._add_initiator(initiator) # Add the initiator to host if not added before. port_name = HOST_PORT_PREFIX + str(hash(initiator)) portadded = False hostport_info = self.common._get_host_port_info(hostid) if hostport_info: for hostport in hostport_info: if hostport[2] == initiator: portadded = True break if not portadded: cli_cmd = ('addhostport -host %(id)s -type 5 ' '-info %(info)s -n %(name)s -mtype %(multype)s' % {'id': hostid, 'info': initiator, 'name': port_name, 'multype': multipathtype}) out = self.common._execute_cli(cli_cmd) msg = ('Failed to add iSCSI port %(port)s to host %(host)s' % {'port': port_name, 'host': hostid}) self._assert_cli_operate_out('_add_iscsi_port_to_host', msg, cli_cmd, out) def _initiator_added(self, ininame): """Check whether the initiator is already added.""" cli_cmd = 'showiscsiini -ini %(name)s' % {'name': ininame} out = self.common._execute_cli(cli_cmd) return (True if re.search('Initiator Information', out) else False) def _add_initiator(self, ininame): """Add a new initiator to storage device.""" cli_cmd = 'addiscsiini -n %(name)s' % {'name': ininame} out = self.common._execute_cli(cli_cmd) self._assert_cli_operate_out('_add_iscsi_host_port', 'Failed to add initiator %s' % ininame, cli_cmd, out) def _delete_initiator(self, ininame, attempts=2): """Delete an initiator.""" cli_cmd = 'deliscsiini -n %(name)s' % {'name': ininame} while(attempts > 0): out = self.common._execute_cli(cli_cmd) if re.search('the port is in use', out): attempts -= 1 time.sleep(2) else: break self._assert_cli_operate_out('_map_lun', 'Failed to delete initiator %s.' % ininame, cli_cmd, out) def terminate_connection(self, volume, connector, **kwargs): """Terminate the map.""" LOG.debug(_('terminate_connection: volume: %(vol)s, host: %(host)s, ' 'connector: %(initiator)s') % {'vol': volume['name'], 'host': connector['host'], 'initiator': connector['initiator']}) self.common._update_login_info() host_id = self.common.remove_map(volume['provider_location'], connector['host'], connector['initiator']) if not self.common._get_host_map_info(host_id): self._remove_iscsi_port(host_id, connector) def _remove_iscsi_port(self, hostid, connector): """Remove iSCSI ports and delete host.""" initiator = connector['initiator'] # Delete the host initiator if no LUN mapped to it. port_num = 0 port_info = self.common._get_host_port_info(hostid) if port_info: port_num = len(port_info) for port in port_info: if port[2] == initiator: self.common._delete_hostport(port[0]) self._delete_initiator(initiator) port_num -= 1 break else: LOG.warn(_('_remove_iscsi_port: iSCSI port was not found ' 'on host %(hostid)s.') % {'hostid': hostid}) # Delete host if no initiator added to it. if port_num == 0: self.common._delete_host(hostid) def get_volume_stats(self, refresh=False): """Get volume stats.""" self._stats = self.common.get_volume_stats(refresh) self._stats['storage_protocol'] = 'iSCSI' self._stats['driver_version'] = self.VERSION backend_name = self.configuration.safe_get('volume_backend_name') self._stats['volume_backend_name'] = (backend_name or self.__class__.__name__) return self._stats class HuaweiTFCDriver(driver.FibreChannelDriver): """FC driver for Huawei OceanStor T series storage arrays.""" VERSION = '1.0.0' def __init__(self, *args, **kwargs): super(HuaweiTFCDriver, self).__init__(*args, **kwargs) def do_setup(self, context): """Instantiate common class.""" self.common = ssh_common.TseriesCommon(configuration= self.configuration) self.common.do_setup(context) self._assert_cli_out = self.common._assert_cli_out self._assert_cli_operate_out = self.common._assert_cli_operate_out def check_for_setup_error(self): """Check something while starting.""" self.common.check_for_setup_error() def create_volume(self, volume): """Create a new volume.""" volume_id = self.common.create_volume(volume) return {'provider_location': volume_id} def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot.""" volume_id = self.common.create_volume_from_snapshot(volume, snapshot) return {'provider_location': volume_id} def create_cloned_volume(self, volume, src_vref): """Create a clone of the specified volume.""" volume_id = self.common.create_cloned_volume(volume, src_vref) return {'provider_location': volume_id} def extend_volume(self, volume, new_size): """Extend a volume.""" self.common.extend_volume(volume, new_size) def delete_volume(self, volume): """Delete a volume.""" self.common.delete_volume(volume) def create_export(self, context, volume): """Export the volume.""" pass def ensure_export(self, context, volume): """Synchronously recreate an export for a volume.""" pass def remove_export(self, context, volume): """Remove an export for a volume.""" pass def create_snapshot(self, snapshot): """Create a snapshot.""" snapshot_id = self.common.create_snapshot(snapshot) return {'provider_location': snapshot_id} def delete_snapshot(self, snapshot): """Delete a snapshot.""" self.common.delete_snapshot(snapshot) def validate_connector(self, connector): """Check for wwpns in connector.""" if 'wwpns' not in connector: err_msg = (_('validate_connector: The FC driver requires the' 'wwpns in the connector.')) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def initialize_connection(self, volume, connector): """Create FC connection between a volume and a host.""" LOG.debug(_('initialize_connection: volume name: %(vol)s, ' 'host: %(host)s, initiator: %(wwn)s') % {'vol': volume['name'], 'host': connector['host'], 'wwn': connector['wwpns']}) self.common._update_login_info() # First, add a host if it is not added before. host_id = self.common.add_host(connector['host'], connector['ip']) # Then, add free FC ports to the host. ini_wwns = connector['wwpns'] free_wwns = self._get_connected_free_wwns() for wwn in free_wwns: if wwn in ini_wwns: self._add_fc_port_to_host(host_id, wwn) fc_port_details = self._get_host_port_details(host_id) tgt_wwns = self._get_tgt_fc_port_wwns(fc_port_details) LOG.debug(_('initialize_connection: Target FC ports WWNS: %s') % tgt_wwns) # Finally, map the volume to the host. volume_id = volume['provider_location'] hostlun_id = self.common.map_volume(host_id, volume_id) # Change LUN ctr for better performance, just for single path. if len(tgt_wwns) == 1: lun_details = self.common.get_lun_details(volume_id) port_ctr = self._get_fc_port_ctr(fc_port_details[0]) if (lun_details['LunType'] == 'THICK' and lun_details['OwningController'] != port_ctr): self.common.change_lun_ctr(volume_id, port_ctr) properties = {} properties['target_discovered'] = False properties['target_wwn'] = tgt_wwns properties['target_lun'] = int(hostlun_id) properties['volume_id'] = volume['id'] return {'driver_volume_type': 'fibre_channel', 'data': properties} def _get_connected_free_wwns(self): """Get free connected FC port WWNs. If no new ports connected, return an empty list. """ cli_cmd = 'showfreeport' out = self.common._execute_cli(cli_cmd) wwns = [] if re.search('Host Free Port Information', out): for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if (tmp_line[1] == 'FC') and (tmp_line[4] == 'Connected'): wwns.append(tmp_line[0]) return wwns def _add_fc_port_to_host(self, hostid, wwn, multipathtype=0): """Add a FC port to host.""" portname = HOST_PORT_PREFIX + wwn cli_cmd = ('addhostport -host %(id)s -type 1 ' '-wwn %(wwn)s -n %(name)s -mtype %(multype)s' % {'id': hostid, 'wwn': wwn, 'name': portname, 'multype': multipathtype}) out = self.common._execute_cli(cli_cmd) msg = ('Failed to add FC port %(port)s to host %(host)s.' % {'port': portname, 'host': hostid}) self._assert_cli_operate_out('_add_fc_port_to_host', msg, cli_cmd, out) def _get_host_port_details(self, host_id): cli_cmd = 'showhostpath -host %s' % host_id out = self.common._execute_cli(cli_cmd) self._assert_cli_out(re.search('Multi Path Information', out), '_get_host_port_details', 'Failed to get host port details.', cli_cmd, out) port_details = [] tmp_details = {} for line in out.split('\r\n')[4:-2]: line = line.split('|') # Cut-point of multipal details, usually is "-------". if len(line) == 1: port_details.append(tmp_details) continue key = ''.join(line[0].strip().split()) val = line[1].strip() tmp_details[key] = val port_details.append(tmp_details) return port_details def _get_tgt_fc_port_wwns(self, port_details): wwns = [] for port in port_details: wwns.append(port['TargetWWN']) return wwns def _get_fc_port_ctr(self, port_details): return port_details['ControllerID'] def terminate_connection(self, volume, connector, **kwargs): """Terminate the map.""" LOG.debug(_('terminate_connection: volume: %(vol)s, host: %(host)s, ' 'connector: %(initiator)s') % {'vol': volume['name'], 'host': connector['host'], 'initiator': connector['initiator']}) self.common._update_login_info() host_id = self.common.remove_map(volume['provider_location'], connector['host']) # Remove all FC ports and delete the host if # no volume mapping to it. if not self.common._get_host_map_info(host_id): self._remove_fc_ports(host_id, connector) def _remove_fc_ports(self, hostid, connector): """Remove FC ports and delete host.""" wwns = connector['wwpns'] port_num = 0 port_info = self.common._get_host_port_info(hostid) if port_info: port_num = len(port_info) for port in port_info: if port[2] in wwns: self.common._delete_hostport(port[0]) port_num -= 1 else: LOG.warn(_('_remove_fc_ports: FC port was not found ' 'on host %(hostid)s.') % {'hostid': hostid}) if port_num == 0: self.common._delete_host(hostid) def get_volume_stats(self, refresh=False): """Get volume stats.""" self._stats = self.common.get_volume_stats(refresh) self._stats['storage_protocol'] = 'FC' self._stats['driver_version'] = self.VERSION backend_name = self.configuration.safe_get('volume_backend_name') self._stats['volume_backend_name'] = (backend_name or self.__class__.__name__) return self._stats cinder-2014.1.5/cinder/volume/drivers/huawei/rest_common.py0000664000567000056700000014352212540642606024776 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. """Common class for Huawei HVS storage drivers.""" import base64 import cookielib import json import time import urllib2 import uuid from xml.etree import ElementTree as ET from cinder import context from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import units from cinder import utils from cinder.volume.drivers.huawei import huawei_utils from cinder.volume import volume_types LOG = logging.getLogger(__name__) QOS_KEY = ["Qos-high", "Qos-normal", "Qos-low"] TIER_KEY = ["Tier-high", "Tier-normal", "Tier-low"] class HVSCommon(): """Common class for Huawei OceanStor HVS storage system.""" def __init__(self, configuration): self.configuration = configuration self.cookie = cookielib.CookieJar() self.url = None self.xml_conf = self.configuration.cinder_huawei_conf_file def call(self, url=False, data=None, method=None): """Send requests to HVS server. Send HTTPS call, get response in JSON. Convert response into Python Object and return it. """ LOG.debug(_('HVS Request URL: %(url)s') % {'url': url}) LOG.debug(_('HVS Request Data: %(data)s') % {'data': data}) headers = {"Connection": "keep-alive", "Content-Type": "application/json"} opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie)) urllib2.install_opener(opener) try: urllib2.socket.setdefaulttimeout(720) req = urllib2.Request(url, data, headers) if method: req.get_method = lambda: method res = urllib2.urlopen(req).read().decode("utf-8") LOG.debug(_('HVS Response Data: %(res)s') % {'res': res}) except Exception as err: err_msg = _('Bad response from server: %s') % err LOG.error(err_msg) raise err try: res_json = json.loads(res) except Exception as err: LOG.error(_('JSON transfer error')) raise err return res_json def login(self): """Log in HVS array. If login failed, the driver will sleep 30's to avoid frequent connection to the server. """ login_info = self._get_login_info() url = login_info['HVSURL'] + "xx/sessions" data = json.dumps({"username": login_info['UserName'], "password": login_info['UserPassword'], "scope": "0"}) result = self.call(url, data) if (result['error']['code'] != 0) or ("data" not in result): time.sleep(30) msg = _("Login error, reason is %s") % result LOG.error(msg) raise exception.CinderException(msg) deviceid = result['data']['deviceid'] self.url = login_info['HVSURL'] + deviceid return deviceid def _init_tier_parameters(self, parameters, lunparam): """Init the LUN parameters through the volume type "performance".""" if "tier" in parameters: smart_tier = parameters['tier'] if smart_tier == 'Tier_high': lunparam['INITIALDISTRIBUTEPOLICY'] = "1" elif smart_tier == 'Tier_normal': lunparam['INITIALDISTRIBUTEPOLICY'] = "2" elif smart_tier == 'Tier_low': lunparam['INITIALDISTRIBUTEPOLICY'] = "3" else: lunparam['INITIALDISTRIBUTEPOLICY'] = "2" def _init_lun_parameters(self, name, parameters): """Init basic LUN parameters.""" lunparam = {"TYPE": "11", "NAME": name, "PARENTTYPE": "216", "PARENTID": parameters['pool_id'], "DESCRIPTION": "", "ALLOCTYPE": parameters['LUNType'], "CAPACITY": parameters['volume_size'], "WRITEPOLICY": parameters['WriteType'], "MIRRORPOLICY": parameters['MirrorSwitch'], "PREFETCHPOLICY": parameters['PrefetchType'], "PREFETCHVALUE": parameters['PrefetchValue'], "DATATRANSFERPOLICY": "1", "INITIALDISTRIBUTEPOLICY": "0"} return lunparam def _init_qos_parameters(self, parameters, lun_param): """Init the LUN parameters through the volume type "Qos-xxx".""" policy_id = None policy_info = None if "qos" in parameters: policy_info = self._find_qos_policy_info(parameters['qos']) if policy_info: policy_id = policy_info['ID'] lun_param['IOClASSID'] = policy_info['ID'] qos_level = parameters['qos_level'] if qos_level == 'Qos-high': lun_param['IOPRIORITY'] = "3" elif qos_level == 'Qos-normal': lun_param['IOPRIORITY'] = "2" elif qos_level == 'Qos-low': lun_param['IOPRIORITY'] = "1" else: lun_param['IOPRIORITY'] = "2" return (policy_info, policy_id) def _assert_rest_result(self, result, err_str): error_code = result['error']['code'] if error_code != 0: msg = _('%(err)s\nresult: %(res)s') % {'err': err_str, 'res': result} LOG.error(msg) raise exception.CinderException(msg) def _assert_data_in_result(self, result, msg): if "data" not in result: err_msg = _('%s "data" was not in result.') % msg LOG.error(err_msg) raise exception.CinderException(err_msg) def _create_volume(self, lun_param): url = self.url + "/lun" data = json.dumps(lun_param) result = self.call(url, data) msg = 'Create volume error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) return result['data']['ID'] def create_volume(self, volume): volume_name = self._encode_name(volume['id']) config_params = self._parse_volume_type(volume) # Prepare lun parameters, including qos parameter and tier parameter. lun_param = self._init_lun_parameters(volume_name, config_params) self._init_tier_parameters(config_params, lun_param) policy_info, policy_id = self._init_qos_parameters(config_params, lun_param) # Create LUN in array lunid = self._create_volume(lun_param) # Enable qos, need to add lun into qos policy if "qos" in config_params: lun_list = policy_info['LUNLIST'] lun_list.append(lunid) if policy_id: self._update_qos_policy_lunlist(lun_list, policy_id) else: LOG.warn(_("Can't find the Qos policy in array")) # Create lun group and add LUN into to lun group lungroup_id = self._create_lungroup(volume_name) self._associate_lun_to_lungroup(lungroup_id, lunid) return lunid def _get_volume_size(self, poolinfo, volume): """Calculate the volume size. We should divide the given volume size by 512 for the HVS system calculates volume size with sectors, which is 512 bytes. """ volume_size = units.GiB / 512 # 1G if int(volume['size']) != 0: volume_size = int(volume['size']) * units.GiB / 512 return volume_size def delete_volume(self, volume): """Delete a volume. Three steps: first, remove associate from lun group. Second, remove associate from qos policy. Third, remove the lun. """ name = self._encode_name(volume['id']) lun_id = self._get_volume_by_name(name) lungroup_id = self._find_lungroup(name) if lun_id and lungroup_id: self._delete_lun_from_qos_policy(volume, lun_id) self._delete_associated_lun_from_lungroup(lungroup_id, lun_id) self._delete_lungroup(lungroup_id) self._delete_lun(lun_id) else: LOG.warn(_("Can't find lun or lun group in array")) def _delete_lun_from_qos_policy(self, volume, lun_id): """Remove lun from qos policy.""" parameters = self._parse_volume_type(volume) if "qos" in parameters: qos = parameters['qos'] policy_info = self._find_qos_policy_info(qos) if policy_info: lun_list = policy_info['LUNLIST'] for item in lun_list: if lun_id == item: lun_list.remove(item) self._update_qos_policy_lunlist(lun_list, policy_info['ID']) def _delete_lun(self, lun_id): url = self.url + "/lun/" + lun_id data = json.dumps({"TYPE": "11", "ID": lun_id}) result = self.call(url, data, "DELETE") self._assert_rest_result(result, 'delete lun error') def _encode_name(self, name): uuid_str = name.replace("-", "") vol_uuid = uuid.UUID('urn:uuid:%s' % uuid_str) vol_encoded = base64.urlsafe_b64encode(vol_uuid.bytes) newuuid = vol_encoded.replace("=", "") return newuuid def _find_pool_info(self): root = huawei_utils.parse_xml_file(self.xml_conf) pool_name = root.findtext('LUN/StoragePool') if not pool_name: err_msg = _("Invalid resource pool: %s") % pool_name LOG.error(err_msg) raise exception.InvalidInput(err_msg) url = self.url + "/storagepool" result = self.call(url, None) self._assert_rest_result(result, 'Query resource pool error') poolinfo = {} if "data" in result: for item in result['data']: if pool_name.strip() == item['NAME']: poolinfo['ID'] = item['ID'] poolinfo['CAPACITY'] = item['USERFREECAPACITY'] poolinfo['TOTALCAPACITY'] = item['USERTOTALCAPACITY'] break if not poolinfo: msg = (_('Get pool info error, pool name is:%s') % pool_name) LOG.error(msg) raise exception.CinderException(msg) return poolinfo def _get_volume_by_name(self, name): url = self.url + "/lun" result = self.call(url, None, "GET") self._assert_rest_result(result, 'Get volume by name error!') volume_id = None if "data" in result: for item in result['data']: if name == item['NAME']: volume_id = item['ID'] break return volume_id def _active_snapshot(self, snapshot_id): activeurl = self.url + "/snapshot/activate" data = json.dumps({"SNAPSHOTLIST": [snapshot_id]}) result = self.call(activeurl, data) self._assert_rest_result(result, 'Active snapshot error.') def _create_snapshot(self, snapshot): snapshot_name = self._encode_name(snapshot['id']) volume_name = self._encode_name(snapshot['volume_id']) LOG.debug(_('create_snapshot:snapshot name:%(snapshot)s, ' 'volume name:%(volume)s.') % {'snapshot': snapshot_name, 'volume': volume_name}) lun_id = self._get_volume_by_name(volume_name) url = self.url + "/snapshot" data = json.dumps({"TYPE": "27", "NAME": snapshot_name, "PARENTTYPE": "11", "PARENTID": lun_id}) result = self.call(url, data) msg = 'Create snapshot error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) return result['data']['ID'] def create_snapshot(self, snapshot): snapshot_id = self._create_snapshot(snapshot) self._active_snapshot(snapshot_id) def _stop_snapshot(self, snapshot): snapshot_name = self._encode_name(snapshot['id']) volume_name = self._encode_name(snapshot['volume_id']) LOG.debug(_('_stop_snapshot:snapshot name:%(snapshot)s, ' 'volume name:%(volume)s.') % {'snapshot': snapshot_name, 'volume': volume_name}) snapshotid = self._get_snapshotid_by_name(snapshot_name) stopdata = json.dumps({"ID": snapshotid}) url = self.url + "/snapshot/stop" result = self.call(url, stopdata, "PUT") self._assert_rest_result(result, 'Stop snapshot error.') return snapshotid def _delete_snapshot(self, snapshotid): url = self.url + "/snapshot/%s" % snapshotid data = json.dumps({"TYPE": "27", "ID": snapshotid}) result = self.call(url, data, "DELETE") self._assert_rest_result(result, 'Delete snapshot error.') def delete_snapshot(self, snapshot): snapshotid = self._stop_snapshot(snapshot) self._delete_snapshot(snapshotid) def _get_snapshotid_by_name(self, name): url = self.url + "/snapshot" data = json.dumps({"TYPE": "27"}) result = self.call(url, data, "GET") self._assert_rest_result(result, 'Get snapshot id error.') snapshot_id = None if "data" in result: for item in result['data']: if name == item['NAME']: snapshot_id = item['ID'] break return snapshot_id def _copy_volume(self, volume, copy_name, src_lun, tgt_lun): luncopy_id = self._create_luncopy(copy_name, src_lun, tgt_lun) try: self._start_luncopy(luncopy_id) self._wait_for_luncopy(luncopy_id) except Exception: with excutils.save_and_reraise_exception(): self._delete_luncopy(luncopy_id) self.delete_volume(volume) self._delete_luncopy(luncopy_id) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot. We use LUNcopy to copy a new volume from snapshot. The time needed increases as volume size does. """ snapshot_name = self._encode_name(snapshot['id']) src_lun_id = self._get_snapshotid_by_name(snapshot_name) tgt_lun_id = self.create_volume(volume) luncopy_name = self._encode_name(volume['id']) self._copy_volume(volume, luncopy_name, src_lun_id, tgt_lun_id) def create_cloned_volume(self, volume, src_vref): """Clone a new volume from an existing volume.""" volume_name = self._encode_name(src_vref['id']) src_lun_id = self._get_volume_by_name(volume_name) tgt_lun_id = self.create_volume(volume) luncopy_name = self._encode_name(volume['id']) self._copy_volume(volume, luncopy_name, src_lun_id, tgt_lun_id) def _create_luncopy(self, luncopyname, srclunid, tgtlunid): """Create a luncopy.""" url = self.url + "/luncopy" data = json.dumps({"TYPE": "219", "NAME": luncopyname, "DESCRIPTION": luncopyname, "COPYSPEED": "2", "LUNCOPYTYPE": "1", "SOURCELUN": ("INVALID;%s;INVALID;INVALID;INVALID" % srclunid), "TARGETLUN": ("INVALID;%s;INVALID;INVALID;INVALID" % tgtlunid)}) result = self.call(url, data) msg = 'Create lun copy error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) return result['data']['ID'] def _add_host_into_hostgroup(self, host_name, host_ip): """Associate host to hostgroup. If host group doesn't exist, create one. """ hostgroup_id = self._find_hostgroup(host_name) if hostgroup_id is None: hostgroup_id = self._create_hostgroup(host_name) hostid = self._find_host(host_name) if hostid is None: os_type = huawei_utils.get_conf_host_os_type(host_ip, self.xml_conf) hostid = self._add_host(host_name, os_type) self._associate_host_to_hostgroup(hostgroup_id, hostid) return hostid, hostgroup_id def _mapping_hostgroup_and_lungroup(self, volume_name, hostgroup_id, host_id): """Add hostgroup and lungroup to view.""" lungroup_id = self._find_lungroup(volume_name) lun_id = self._get_volume_by_name(volume_name) view_id = self._find_mapping_view(volume_name) LOG.debug(_('_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)s' 'view_id: %(view_id)s') % {'lun_group': lungroup_id, 'view_id': view_id}) try: if view_id is None: view_id = self._add_mapping_view(volume_name, host_id) self._associate_hostgroup_to_view(view_id, hostgroup_id) self._associate_lungroup_to_view(view_id, lungroup_id) else: if not self._hostgroup_associated(view_id, hostgroup_id): self._associate_hostgroup_to_view(view_id, hostgroup_id) if not self._lungroup_associated(view_id, lungroup_id): self._associate_lungroup_to_view(view_id, lungroup_id) except Exception: with excutils.save_and_reraise_exception(): self._delete_hostgoup_mapping_view(view_id, hostgroup_id) self._delete_lungroup_mapping_view(view_id, lungroup_id) self._delete_mapping_view(view_id) return lun_id def _ensure_initiator_added(self, initiator_name, hostid): added = self._initiator_is_added_to_array(initiator_name) if not added: self._add_initiator_to_array(initiator_name) else: if self._is_initiator_associated_to_host(initiator_name) is False: self._associate_initiator_to_host(initiator_name, hostid) def initialize_connection_iscsi(self, volume, connector): """Map a volume to a host and return target iSCSI information.""" initiator_name = connector['initiator'] volume_name = self._encode_name(volume['id']) LOG.debug(_('initiator name:%(initiator_name)s, ' 'volume name:%(volume)s.') % {'initiator_name': initiator_name, 'volume': volume_name}) (iscsi_iqn, target_ip) = self._get_iscsi_params(connector) #create host_group if not exist hostid, hostgroup_id = self._add_host_into_hostgroup(connector['host'], connector['ip']) self._ensure_initiator_added(initiator_name, hostid) # Mapping lungroup and hostgroup to view lun_id = self._mapping_hostgroup_and_lungroup(volume_name, hostgroup_id, hostid) hostlunid = self._find_host_lun_id(hostid, lun_id) LOG.debug(_("host lun id is %s") % hostlunid) # Return iSCSI properties. properties = {} properties['target_discovered'] = False properties['target_portal'] = ('%s:%s' % (target_ip, '3260')) properties['target_iqn'] = iscsi_iqn properties['target_lun'] = int(hostlunid) properties['volume_id'] = volume['id'] return {'driver_volume_type': 'iscsi', 'data': properties} def initialize_connection_fc(self, volume, connector): wwns = connector['wwpns'] volume_name = self._encode_name(volume['id']) LOG.debug(_('initiator name:%(initiator_name)s, ' 'volume name:%(volume)s.') % {'initiator_name': wwns, 'volume': volume_name}) # Create host group if not exist hostid, hostgroup_id = self._add_host_into_hostgroup(connector['host'], connector['ip']) free_wwns = self._get_connected_free_wwns() LOG.debug(_("the free wwns %s") % free_wwns) for wwn in wwns: if wwn in free_wwns: self._add_fc_port_to_host(hostid, wwn) lun_id = self._mapping_hostgroup_and_lungroup(volume_name, hostgroup_id, hostid) host_lun_id = self._find_host_lun_id(hostid, lun_id) tgt_port_wwns = [] for wwn in wwns: tgtwwpns = self._get_fc_target_wwpns(wwn) if tgtwwpns: tgt_port_wwns.append(tgtwwpns) # Return FC properties. properties = {} properties['target_discovered'] = False properties['target_wwn'] = tgt_port_wwns properties['target_lun'] = int(host_lun_id) properties['volume_id'] = volume['id'] LOG.debug(_("the fc server properties is:%s") % properties) return {'driver_volume_type': 'fibre_channel', 'data': properties} def _get_iscsi_tgt_port(self): url = self.url + "/iscsidevicename" result = self.call(url, None) msg = 'Get iSCSI target port error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) return result['data'][0]['CMO_ISCSI_DEVICE_NAME'] def _find_hostgroup(self, groupname): """Get the given hostgroup id.""" url = self.url + "/hostgroup" result = self.call(url, None, "GET") self._assert_rest_result(result, 'Get host group information error.') host_group_id = None if "data" in result: for item in result['data']: if groupname == item['NAME']: host_group_id = item['ID'] break return host_group_id def _find_lungroup(self, lungroupname): """Get the given hostgroup id.""" url = self.url + "/lungroup" result = self.call(url, None, "GET") self._assert_rest_result(result, 'Get lun group information error.') lun_group_id = None if 'data' in result: for item in result['data']: if lungroupname == item['NAME']: lun_group_id = item['ID'] break return lun_group_id def _create_hostgroup(self, hostgroupname): url = self.url + "/hostgroup" data = json.dumps({"TYPE": "14", "NAME": hostgroupname}) result = self.call(url, data) msg = 'Create host group error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) return result['data']['ID'] def _create_lungroup(self, lungroupname): url = self.url + "/lungroup" data = json.dumps({"DESCRIPTION": lungroupname, "NAME": lungroupname}) result = self.call(url, data) msg = 'Create lun group error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) return result['data']['ID'] def _delete_lungroup(self, lungroupid): url = self.url + "/LUNGroup/" + lungroupid result = self.call(url, None, "DELETE") self._assert_rest_result(result, 'Delete lun group error.') def _lungroup_associated(self, viewid, lungroupid): url_subfix = ("/mappingview/associate?TYPE=245&" "ASSOCIATEOBJTYPE=256&ASSOCIATEOBJID=%s" % lungroupid) url = self.url + url_subfix result = self.call(url, None, "GET") self._assert_rest_result(result, 'Check lun group associated error.') if "data" in result: for item in result['data']: if viewid == item['ID']: return True return False def _hostgroup_associated(self, viewid, hostgroupid): url_subfix = ("/mappingview/associate?TYPE=245&" "ASSOCIATEOBJTYPE=14&ASSOCIATEOBJID=%s" % hostgroupid) url = self.url + url_subfix result = self.call(url, None, "GET") self._assert_rest_result(result, 'Check host group associated error.') if "data" in result: for item in result['data']: if viewid == item['ID']: return True return False def _find_host_lun_id(self, hostid, lunid): time.sleep(2) url = self.url + ("/lun/associate?TYPE=11&ASSOCIATEOBJTYPE=21" "&ASSOCIATEOBJID=%s" % (hostid)) result = self.call(url, None, "GET") self._assert_rest_result(result, 'Find host lun id error.') host_lun_id = 1 if "data" in result: for item in result['data']: if lunid == item['ID']: associate_data = result['data'][0]['ASSOCIATEMETADATA'] try: hostassoinfo = json.loads(associate_data) host_lun_id = hostassoinfo['HostLUNID'] break except Exception as err: msg = _("JSON transfer data error. %s") % err LOG.error(msg) raise err return host_lun_id def _find_host(self, hostname): """Get the given host ID.""" url = self.url + "/host" data = json.dumps({"TYPE": "21"}) result = self.call(url, data, "GET") self._assert_rest_result(result, 'Find host in host group error.') host_id = None if "data" in result: for item in result['data']: if hostname == item['NAME']: host_id = item['ID'] break return host_id def _add_host(self, hostname, type): """Add a new host.""" url = self.url + "/host" data = json.dumps({"TYPE": "21", "NAME": hostname, "OPERATIONSYSTEM": type}) result = self.call(url, data) self._assert_rest_result(result, 'Add new host error.') if "data" in result: return result['data']['ID'] else: return None def _associate_host_to_hostgroup(self, hostgroupid, hostid): url = self.url + "/host/associate" data = json.dumps({"ID": hostgroupid, "ASSOCIATEOBJTYPE": "21", "ASSOCIATEOBJID": hostid}) result = self.call(url, data) self._assert_rest_result(result, 'Associate host to host group error.') def _associate_lun_to_lungroup(self, lungroupid, lunid): """Associate lun to lun group.""" url = self.url + "/lungroup/associate" data = json.dumps({"ID": lungroupid, "ASSOCIATEOBJTYPE": "11", "ASSOCIATEOBJID": lunid}) result = self.call(url, data) self._assert_rest_result(result, 'Associate lun to lun group error.') def _delete_associated_lun_from_lungroup(self, lungroupid, lunid): """Remove lun from lun group.""" url = self.url + ("/lungroup/associate?ID=%s" "&ASSOCIATEOBJTYPE=11&ASSOCIATEOBJID=%s" % (lungroupid, lunid)) result = self.call(url, None, 'DELETE') self._assert_rest_result(result, 'Delete associated lun from lun group error') def _initiator_is_added_to_array(self, ininame): """Check whether the initiator is already added in array.""" url = self.url + "/iscsi_initiator" data = json.dumps({"TYPE": "222", "ID": ininame}) result = self.call(url, data, "GET") self._assert_rest_result(result, 'Check initiator added to array error.') if "data" in result: for item in result['data']: if item["ID"] == ininame: return True return False def _is_initiator_associated_to_host(self, ininame): """Check whether the initiator is associated to the host.""" url = self.url + "/iscsi_initiator" data = json.dumps({"TYPE": "222", "ID": ininame}) result = self.call(url, data, "GET") self._assert_rest_result(result, 'Check initiator associated to host error.') if "data" in result: for item in result['data']: if item['ID'] == ininame and item['ISFREE'] == "true": return False return True def _add_initiator_to_array(self, ininame): """Add a new initiator to storage device.""" url = self.url + "/iscsi_initiator/" data = json.dumps({"TYPE": "222", "ID": ininame, "USECHAP": "False"}) result = self.call(url, data) self._assert_rest_result(result, 'Add initiator to array error.') def _associate_initiator_to_host(self, ininame, hostid): """Associate initiator with the host.""" url = self.url + "/iscsi_initiator/" + ininame data = json.dumps({"TYPE": "222", "ID": ininame, "USECHAP": "False", "PARENTTYPE": "21", "PARENTID": hostid}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Associate initiator to host error.') def _find_mapping_view(self, name): """Find mapping view.""" url = self.url + "/mappingview" data = json.dumps({"TYPE": "245"}) result = self.call(url, data, "GET") msg = 'Find map view error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) viewid = None for item in result['data']: if name == item['NAME']: viewid = item['ID'] break return viewid def _add_mapping_view(self, name, host_id): url = self.url + "/mappingview" data = json.dumps({"NAME": name, "TYPE": "245"}) result = self.call(url, data) self._assert_rest_result(result, 'Add map view error.') return result['data']['ID'] def _associate_hostgroup_to_view(self, viewID, hostGroupID): url = self.url + "/MAPPINGVIEW/CREATE_ASSOCIATE" data = json.dumps({"ASSOCIATEOBJTYPE": "14", "ASSOCIATEOBJID": hostGroupID, "TYPE": "245", "ID": viewID}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Associate host to view error.') def _associate_lungroup_to_view(self, viewID, lunGroupID): url = self.url + "/MAPPINGVIEW/CREATE_ASSOCIATE" data = json.dumps({"ASSOCIATEOBJTYPE": "256", "ASSOCIATEOBJID": lunGroupID, "TYPE": "245", "ID": viewID}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Associate lun group to view error.') def _delete_lungroup_mapping_view(self, view_id, lungroup_id): """remove lun group associate from the mapping view.""" url = self.url + "/mappingview/REMOVE_ASSOCIATE" data = json.dumps({"ASSOCIATEOBJTYPE": "256", "ASSOCIATEOBJID": lungroup_id, "TYPE": "245", "ID": view_id}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Delete lun group from view error.') def _delete_hostgoup_mapping_view(self, view_id, hostgroup_id): """remove host group associate from the mapping view.""" url = self.url + "/mappingview/REMOVE_ASSOCIATE" data = json.dumps({"ASSOCIATEOBJTYPE": "14", "ASSOCIATEOBJID": hostgroup_id, "TYPE": "245", "ID": view_id}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Delete host group from view error.') def _delete_mapping_view(self, view_id): """remove mapping view from the storage.""" url = self.url + "/mappingview/" + view_id result = self.call(url, None, "DELETE") self._assert_rest_result(result, 'Delete map view error.') def terminate_connection(self, volume, connector, **kwargs): """Delete map between a volume and a host.""" initiator_name = connector['initiator'] volume_name = self._encode_name(volume['id']) host_name = connector['host'] LOG.debug(_('terminate_connection:volume name: %(volume)s, ' 'initiator name: %(ini)s.') % {'volume': volume_name, 'ini': initiator_name}) view_id = self._find_mapping_view(volume_name) hostgroup_id = self._find_hostgroup(host_name) lungroup_id = self._find_lungroup(volume_name) if view_id is not None: self._delete_hostgoup_mapping_view(view_id, hostgroup_id) self._delete_lungroup_mapping_view(view_id, lungroup_id) self._delete_mapping_view(view_id) def login_out(self): """logout the session.""" url = self.url + "/sessions" result = self.call(url, None, "DELETE") self._assert_rest_result(result, 'Log out of session error.') def _start_luncopy(self, luncopyid): """Start a LUNcopy.""" url = self.url + "/LUNCOPY/start" data = json.dumps({"TYPE": "219", "ID": luncopyid}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Start lun copy error.') def _get_capacity(self): """Get free capacity and total capacity of the pools.""" poolinfo = self._find_pool_info() pool_capacity = {'total_capacity': 0.0, 'CAPACITY': 0.0} if poolinfo: total = int(poolinfo['TOTALCAPACITY']) / 1024.0 / 1024.0 / 2 free = int(poolinfo['CAPACITY']) / 1024.0 / 1024.0 / 2 pool_capacity['total_capacity'] = total pool_capacity['free_capacity'] = free return pool_capacity def _get_lun_conf_params(self): """Get parameters from config file for creating lun.""" # Default lun set information lunsetinfo = {'LUNType': 'Thick', 'StripUnitSize': '64', 'WriteType': '1', 'MirrorSwitch': '1', 'PrefetchType': '3', 'PrefetchValue': '0', 'PrefetchTimes': '0'} root = huawei_utils.parse_xml_file(self.xml_conf) luntype = root.findtext('LUN/LUNType') if luntype: if luntype.strip() in ['Thick', 'Thin']: lunsetinfo['LUNType'] = luntype.strip() if luntype.strip() == 'Thick': lunsetinfo['LUNType'] = 0 if luntype.strip() == 'Thin': lunsetinfo['LUNType'] = 1 elif luntype is not '' and luntype is not None: err_msg = (_('Config file is wrong. LUNType must be "Thin"' ' or "Thick". LUNType:%(fetchtype)s') % {'fetchtype': luntype}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) stripunitsize = root.findtext('LUN/StripUnitSize') if stripunitsize is not None: lunsetinfo['StripUnitSize'] = stripunitsize.strip() writetype = root.findtext('LUN/WriteType') if writetype is not None: lunsetinfo['WriteType'] = writetype.strip() mirrorswitch = root.findtext('LUN/MirrorSwitch') if mirrorswitch is not None: lunsetinfo['MirrorSwitch'] = mirrorswitch.strip() prefetch = root.find('LUN/Prefetch') fetchtype = prefetch.attrib['Type'] if prefetch is not None and prefetch.attrib['Type']: if fetchtype in ['0', '1', '2', '3']: lunsetinfo['PrefetchType'] = fetchtype.strip() typevalue = prefetch.attrib['Value'].strip() if lunsetinfo['PrefetchType'] == '1': lunsetinfo['PrefetchValue'] = typevalue elif lunsetinfo['PrefetchType'] == '2': lunsetinfo['PrefetchValue'] = typevalue else: err_msg = (_('PrefetchType config is wrong. PrefetchType' ' must in 1,2,3,4. fetchtype is:%(fetchtype)s') % {'fetchtype': fetchtype}) LOG.error(err_msg) raise exception.CinderException(err_msg) else: LOG.debug(_('Use default prefetch fetchtype. ' 'Prefetch fetchtype:Intelligent.')) return lunsetinfo def _wait_for_luncopy(self, luncopyid): """Wait for LUNcopy to complete.""" while True: luncopy_info = self._get_luncopy_info(luncopyid) if luncopy_info['status'] == '40': break elif luncopy_info['state'] != '1': err_msg = (_('_wait_for_luncopy:LUNcopy status is not normal.' 'LUNcopy name: %(luncopyname)s') % {'luncopyname': luncopyid}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) time.sleep(10) def _get_luncopy_info(self, luncopyid): """Get LUNcopy information.""" url = self.url + "/LUNCOPY?range=[0-100000]" data = json.dumps({"TYPE": "219", }) result = self.call(url, data, "GET") self._assert_rest_result(result, 'Get lun copy information error.') luncopyinfo = {} if "data" in result: for item in result['data']: if luncopyid == item['ID']: luncopyinfo['name'] = item['NAME'] luncopyinfo['id'] = item['ID'] luncopyinfo['state'] = item['HEALTHSTATUS'] luncopyinfo['status'] = item['RUNNINGSTATUS'] break return luncopyinfo def _delete_luncopy(self, luncopyid): """Delete a LUNcopy.""" url = self.url + "/LUNCOPY/%s" % luncopyid result = self.call(url, None, "DELETE") self._assert_rest_result(result, 'Delete lun copy error.') def _get_connected_free_wwns(self): """Get free connected FC port WWNs. If no new ports connected, return an empty list. """ url = self.url + "/fc_initiator?ISFREE=true&range=[0-1000]" result = self.call(url, None, "GET") msg = 'Get connected free FC wwn error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) wwns = [] for item in result['data']: wwns.append(item['ID']) return wwns def _add_fc_port_to_host(self, hostid, wwn, multipathtype=0): """Add a FC port to the host.""" url = self.url + "/fc_initiator/" + wwn data = json.dumps({"TYPE": "223", "ID": wwn, "PARENTTYPE": 21, "PARENTID": hostid}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Add FC port to host error.') def _get_iscsi_port_info(self, ip): """Get iscsi port info in order to build the iscsi target iqn.""" url = self.url + "/eth_port" result = self.call(url, None, "GET") msg = 'Get iSCSI port information error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) iscsi_port_info = None for item in result['data']: if ip == item['IPV4ADDR']: iscsi_port_info = item['LOCATION'] break if not iscsi_port_info: msg = (_('_get_iscsi_port_info: Failed to get iscsi port info ' 'through config IP %(ip)s, please check config file.') % {'ip': ip}) LOG.error(msg) raise exception.InvalidInput(reason=msg) return iscsi_port_info def _get_iscsi_conf(self): """Get iSCSI info from config file.""" iscsiinfo = {} root = huawei_utils.parse_xml_file(self.xml_conf) iscsiinfo['DefaultTargetIP'] = \ root.findtext('iSCSI/DefaultTargetIP').strip() initiator_list = [] tmp_dic = {} for dic in root.findall('iSCSI/Initiator'): # Strip values of dic for k, v in dic.items(): tmp_dic[k] = v.strip() initiator_list.append(tmp_dic) iscsiinfo['Initiator'] = initiator_list return iscsiinfo def _get_tgt_iqn(self, iscsiip): """Get target iSCSI iqn.""" LOG.debug(_('_get_tgt_iqn: iSCSI IP is %s.') % iscsiip) ip_info = self._get_iscsi_port_info(iscsiip) iqn_prefix = self._get_iscsi_tgt_port() split_list = ip_info.split(".") newstr = split_list[1] + split_list[2] if newstr[0] == 'A': ctr = "0" elif newstr[0] == 'B': ctr = "1" interface = '0' + newstr[1] port = '0' + newstr[3] iqn_suffix = ctr + '02' + interface + port for i in range(0, len(iqn_suffix)): if iqn_suffix[i] != '0': iqn_suffix = iqn_suffix[i:] break iqn = iqn_prefix + ':' + iqn_suffix + ':' + iscsiip LOG.debug(_('_get_tgt_iqn: iSCSI target iqn is %s') % iqn) return iqn def _get_fc_target_wwpns(self, wwn): url = (self.url + "/host_link?INITIATOR_TYPE=223&INITIATOR_PORT_WWN=" + wwn) result = self.call(url, None, "GET") msg = 'Get FC target wwpn error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) fc_wwpns = None for item in result['data']: if wwn == item['INITIATOR_PORT_WWN']: fc_wwpns = item['TARGET_PORT_WWN'] break return fc_wwpns def _parse_volume_type(self, volume): type_id = volume['volume_type_id'] params = self._get_lun_conf_params() LOG.debug(_('_parse_volume_type: type id: %(type_id)s ' 'config parameter is: %(params)s') % {'type_id': type_id, 'params': params}) poolinfo = self._find_pool_info() volume_size = self._get_volume_size(poolinfo, volume) params['volume_size'] = volume_size params['pool_id'] = poolinfo['ID'] if type_id is not None: ctxt = context.get_admin_context() volume_type = volume_types.get_volume_type(ctxt, type_id) specs = volume_type.get('extra_specs') for key, value in specs.iteritems(): key_split = key.split(':') if len(key_split) > 1: if key_split[0] == 'drivers': key = key_split[1] else: continue else: key = key_split[0] if key in QOS_KEY: params["qos"] = value.strip() params["qos_level"] = key elif key in TIER_KEY: params["tier"] = value.strip() elif key in params.keys(): params[key] = value.strip() else: conf = self.configuration.cinder_huawei_conf_file LOG.warn(_('_parse_volume_type: Unacceptable parameter ' '%(key)s. Please check this key in extra_specs ' 'and make it consistent with the configuration ' 'file %(conf)s.') % {'key': key, 'conf': conf}) LOG.debug(_("The config parameters are: %s") % params) return params def update_volume_stats(self, refresh=False): capacity = self._get_capacity() data = {} data['vendor_name'] = 'Huawei' data['total_capacity_gb'] = capacity['total_capacity'] data['free_capacity_gb'] = capacity['free_capacity'] data['reserved_percentage'] = 0 data['QoS_support'] = True data['Tier_support'] = True return data def _find_qos_policy_info(self, policy_name): url = self.url + "/ioclass" result = self.call(url, None, "GET") msg = 'Get qos policy error.' self._assert_rest_result(result, msg) self._assert_data_in_result(result, msg) qos_info = {} for item in result['data']: if policy_name == item['NAME']: qos_info['ID'] = item['ID'] lun_list = json.loads(item['LUNLIST']) qos_info['LUNLIST'] = lun_list break return qos_info def _update_qos_policy_lunlist(self, lunlist, policy_id): url = self.url + "/ioclass/" + policy_id data = json.dumps({"TYPE": "230", "ID": policy_id, "LUNLIST": lunlist}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Up date qos policy error.') def _get_login_info(self): """Get login IP, username and password from config file.""" logininfo = {} filename = self.configuration.cinder_huawei_conf_file tree = ET.parse(filename) root = tree.getroot() logininfo['HVSURL'] = root.findtext('Storage/HVSURL').strip() need_encode = False for key in ['UserName', 'UserPassword']: node = root.find('Storage/%s' % key) node_text = node.text # Prefix !$$$ means encoded already. if node_text.find('!$$$') > -1: logininfo[key] = base64.b64decode(node_text[4:]) else: logininfo[key] = node_text node.text = '!$$$' + base64.b64encode(node_text) need_encode = True if need_encode: self._change_file_mode(filename) try: tree.write(filename, 'UTF-8') except Exception as err: LOG.warn(_('%s') % err) return logininfo def _change_file_mode(self, filepath): utils.execute('chmod', '777', filepath, run_as_root=True) def _check_conf_file(self): """Check the config file, make sure the essential items are set.""" root = huawei_utils.parse_xml_file(self.xml_conf) check_list = ['Storage/HVSURL', 'Storage/UserName', 'Storage/UserPassword'] for item in check_list: if not huawei_utils.is_xml_item_exist(root, item): err_msg = (_('_check_conf_file: Config file invalid. ' '%s must be set.') % item) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # make sure storage pool is set if not huawei_utils.is_xml_item_exist(root, 'LUN/StoragePool'): err_msg = _('_check_conf_file: Config file invalid. ' 'StoragePool must be set.') LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # make sure host os type valid if huawei_utils.is_xml_item_exist(root, 'Host', 'OSType'): os_list = huawei_utils.os_type.keys() if not huawei_utils.is_xml_item_valid(root, 'Host', os_list, 'OSType'): err_msg = (_('_check_conf_file: Config file invalid. ' 'Host OSType invalid.\n' 'The valid values are: %(os_list)s') % {'os_list': os_list}) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) def _get_iscsi_params(self, connector): """Get target iSCSI params, including iqn, IP.""" initiator = connector['initiator'] iscsi_conf = self._get_iscsi_conf() target_ip = None for ini in iscsi_conf['Initiator']: if ini['Name'] == initiator: target_ip = ini['TargetIP'] break # If didn't specify target IP for some initiator, use default IP. if not target_ip: if iscsi_conf['DefaultTargetIP']: target_ip = iscsi_conf['DefaultTargetIP'] else: msg = (_('_get_iscsi_params: Failed to get target IP ' 'for initiator %(ini)s, please check config file.') % {'ini': initiator}) LOG.error(msg) raise exception.InvalidInput(reason=msg) target_iqn = self._get_tgt_iqn(target_ip) return (target_iqn, target_ip) def extend_volume(self, volume, new_size): name = self._encode_name(volume['id']) lun_id = self._get_volume_by_name(name) if lun_id: url = self.url + "/lun/expand" capacity = int(new_size) * units.GiB / 512 data = json.dumps({"TYPE": "11", "ID": lun_id, "CAPACITY": capacity}) result = self.call(url, data, "PUT") self._assert_rest_result(result, 'Extend lun error.') else: LOG.warn(_('Can not find lun in array')) cinder-2014.1.5/cinder/volume/drivers/huawei/huawei_utils.py0000664000567000056700000000762412540642606025155 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2012 OpenStack LLC. # All Rights Reserved. # # 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. from xml.etree import ElementTree as ET from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) os_type = {'Linux': '0', 'Windows': '1', 'Solaris': '2', 'HP-UX': '3', 'AIX': '4', 'XenServer': '5', 'Mac OS X': '6', 'VMware ESX': '7'} def parse_xml_file(filepath): """Get root of xml file.""" try: tree = ET.parse(filepath) root = tree.getroot() return root except IOError as err: LOG.error(_('parse_xml_file: %s') % err) raise err def get_xml_item(xml_root, item): """Get the given item details. :param xml_root: The root of xml tree :param item: The tag need to get :return: A dict contains all the config info of the given item. """ items_list = [] items = xml_root.findall(item) for item in items: tmp_dict = {'text': None, 'attrib': {}} if item.text: tmp_dict['text'] = item.text.strip() for key, val in item.attrib.items(): if val: item.attrib[key] = val.strip() tmp_dict['attrib'] = item.attrib items_list.append(tmp_dict) return items_list def is_xml_item_exist(xml_root, item, attrib_key=None): """Check if the given item exits in xml config file. :param xml_root: The root of xml tree :param item: The xml tag to check :param attrib_key: The xml attrib to check :return: True of False """ items_list = get_xml_item(xml_root, item) value = [] if attrib_key: for tmp_dict in items_list: if tmp_dict['attrib'].get(attrib_key, None): return True else: if items_list and items_list[0]['text']: return True return False def is_xml_item_valid(xml_root, item, valid_list, attrib_key=None): """Check if the given item is valid in xml config file. :param xml_root: The root of xml tree :param item: The xml tag to check :param valid_list: The valid item value :param attrib_key: The xml attrib to check :return: True of False """ items_list = get_xml_item(xml_root, item) if attrib_key: for tmp_dict in items_list: value = tmp_dict['attrib'].get(attrib_key, None) if value not in valid_list: return False else: value = items_list[0]['text'] if value not in valid_list: return False return True def get_conf_host_os_type(host_ip, config): """Get host OS type from xml config file. :param host_ip: The IP of Nova host :param config: xml config file :return: host OS type """ os_conf = {} root = parse_xml_file(config) hosts_list = get_xml_item(root, 'Host') for host in hosts_list: os = host['attrib']['OSType'].strip() ips = [ip.strip() for ip in host['attrib']['HostIP'].split(',')] os_conf[os] = ips host_os = None for k, v in os_conf.items(): if host_ip in v: host_os = os_type.get(k, None) if not host_os: host_os = os_type['Linux'] # default os type LOG.debug(_('_get_host_os_type: Host %(ip)s OS type is %(os)s.') % {'ip': host_ip, 'os': host_os}) return host_os cinder-2014.1.5/cinder/volume/drivers/huawei/ssh_common.py0000664000567000056700000017004712540642606024620 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Common classes for Huawei OceanStor T series and Dorado series storage arrays. The common classes provide the drivers command line operation using SSH. """ import base64 import re import socket import threading import time from xml.etree import ElementTree as ET from cinder import context from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import utils from cinder.volume.drivers.huawei import huawei_utils from cinder.volume import volume_types LOG = logging.getLogger(__name__) HOST_GROUP_NAME = 'HostGroup_OpenStack' HOST_NAME_PREFIX = 'Host_' VOL_AND_SNAP_NAME_PREFIX = 'OpenStack_' def ssh_read(user, channel, cmd, timeout): """Get results of CLI commands.""" result = '' channel.settimeout(timeout) while True: try: result = result + channel.recv(8192) except socket.timeout as err: msg = _('ssh_read: Read SSH timeout. %s') % err LOG.error(msg) raise err else: # CLI returns welcome information when first log in. So need to # deal differently. if not re.search('Welcome', result): # Complete CLI response starts with CLI cmd and # ends with "username:/>". if result.startswith(cmd) and result.endswith(user + ':/>'): break # Some commands need to send 'y'. elif re.search('(y/n)|y or n', result): break # Reach maximum limit of SSH connection. elif re.search('No response message', result): msg = _('No response message. Please check system status.') LOG.error(msg) raise exception.CinderException(msg) elif (re.search(user + ':/>' + cmd, result) and result.endswith(user + ':/>')): break # Filter the last line: username:/> . result = '\r\n'.join(result.split('\r\n')[:-1]) # Filter welcome information. index = result.find(user + ':/>') return (result[index:] if index > -1 else result) class TseriesCommon(): """Common class for Huawei T series storage arrays.""" def __init__(self, configuration=None): self.configuration = configuration self.xml_conf = self.configuration.cinder_huawei_conf_file self.login_info = {} self.lun_distribution = [0, 0] self.hostgroup_id = None self.ssh_pool = None self.lock_ip = threading.Lock() self.luncopy_list = [] # to store LUNCopy name self.extended_lun_dict = {} def do_setup(self, context): """Check config file.""" LOG.debug(_('do_setup')) self._check_conf_file() self.login_info = self._get_login_info() exist_luns = self._get_all_luns_info() self.lun_distribution = self._get_lun_distribution_info(exist_luns) self.luncopy_list = self._get_all_luncopy_name() self.hostgroup_id = self._get_hostgroup_id(HOST_GROUP_NAME) self.extended_lun_dict = self._get_extended_lun(exist_luns) def _check_conf_file(self): """Check config file, make sure essential items are set.""" root = huawei_utils.parse_xml_file(self.xml_conf) check_list = ['Storage/ControllerIP0', 'Storage/ControllerIP1', 'Storage/UserName', 'Storage/UserPassword'] for item in check_list: if not huawei_utils.is_xml_item_exist(root, item): err_msg = (_('_check_conf_file: Config file invalid. ' '%s must be set.') % item) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # make sure storage pool is set if not huawei_utils.is_xml_item_exist(root, 'LUN/StoragePool', 'Name'): err_msg = _('_check_conf_file: Config file invalid. ' 'StoragePool must be set.') LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # If setting os type, make sure it valid if huawei_utils.is_xml_item_exist(root, 'Host', 'OSType'): os_list = huawei_utils.os_type.keys() if not huawei_utils.is_xml_item_valid(root, 'Host', os_list, 'OSType'): err_msg = (_('_check_conf_file: Config file invalid. ' 'Host OSType is invalid.\n' 'The valid values are: %(os_list)s') % {'os_list': os_list}) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) def _get_login_info(self): """Get login IP, username and password from config file.""" logininfo = {} filename = self.configuration.cinder_huawei_conf_file tree = ET.parse(filename) root = tree.getroot() logininfo['ControllerIP0'] =\ root.findtext('Storage/ControllerIP0').strip() logininfo['ControllerIP1'] =\ root.findtext('Storage/ControllerIP1').strip() need_encode = False for key in ['UserName', 'UserPassword']: node = root.find('Storage/%s' % key) node_text = node.text.strip() # Prefix !$$$ means encoded already. if node_text.find('!$$$') > -1: logininfo[key] = base64.b64decode(node_text[4:]) else: logininfo[key] = node_text node.text = '!$$$' + base64.b64encode(node_text) need_encode = True if need_encode: self._change_file_mode(filename) try: tree.write(filename, 'UTF-8') except Exception as err: LOG.info(_('_get_login_info: %s') % err) return logininfo def _change_file_mode(self, filepath): utils.execute('chmod', '777', filepath, run_as_root=True) def _get_lun_distribution_info(self, luns): """Get LUN distribution information. For we have two controllers for each array, we want to make all LUNs(just for Thick LUN) distributed evenly. The driver uses the LUN distribution info to determine in which controller to create a new LUN. """ ctr_info = [0, 0] for lun in luns: if (lun[6].startswith(VOL_AND_SNAP_NAME_PREFIX) and lun[8] == 'THICK'): if lun[4] == 'A': ctr_info[0] += 1 else: ctr_info[1] += 1 return ctr_info def check_for_setup_error(self): pass def _get_all_luncopy_name(self): cli_cmd = 'showluncopy' out = self._execute_cli(cli_cmd) luncopy_ids = [] if re.search('LUN Copy Information', out): for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if tmp_line[0].startswith(VOL_AND_SNAP_NAME_PREFIX): luncopy_ids.append(tmp_line[0]) return luncopy_ids def _get_extended_lun(self, luns): extended_dict = {} for lun in luns: if lun[6].startswith('ext'): vol_name = lun[6].split('_')[1] add_ids = extended_dict.get(vol_name, []) add_ids = add_ids.append(lun[0]) extended_dict[vol_name] = add_ids return extended_dict def create_volume(self, volume): """Create a new volume.""" volume_name = self._name_translate(volume['name']) LOG.debug(_('create_volume: volume name: %s') % volume_name) self._update_login_info() if int(volume['size']) == 0: volume_size = '100M' else: volume_size = '%sG' % volume['size'] type_id = volume['volume_type_id'] parameters = self._parse_volume_type(type_id) volume_id = self._create_volume(volume_name, volume_size, parameters) return volume_id def _name_translate(self, name): """Form new names for volume and snapshot because of 32-character limit on names. """ newname = VOL_AND_SNAP_NAME_PREFIX + str(hash(name)) LOG.debug(_('_name_translate: Name in cinder: %(old)s, new name in ' 'storage system: %(new)s') % {'old': name, 'new': newname}) return newname def _update_login_info(self): """Update user name and password.""" self.login_info = self._get_login_info() def _parse_volume_type(self, typeid): """Parse volume type form extra_specs by type id. The keys in extra_specs must be consistent with the element in config file. And the keys can starts with "drivers" to make them distinguished from capabilities keys, if you like. """ params = self._get_lun_params() if typeid is not None: ctxt = context.get_admin_context() volume_type = volume_types.get_volume_type(ctxt, typeid) specs = volume_type.get('extra_specs') for key, value in specs.iteritems(): key_split = key.split(':') if len(key_split) > 1: if key_split[0] == 'drivers': key = key_split[1] else: continue else: key = key_split[0] if key in params.keys(): params[key] = value.strip() else: conf = self.configuration.cinder_huawei_conf_file LOG.warn(_('_parse_volume_type: Unacceptable parameter ' '%(key)s. Please check this key in extra_specs ' 'and make it consistent with the element in ' 'configuration file %(conf)s.') % {'key': key, 'conf': conf}) return params def _create_volume(self, name, size, params): """Create a new volume with the given name and size.""" cli_cmd = ('createlun -n %(name)s -lunsize %(size)s ' '-wrtype %(wrtype)s ' % {'name': name, 'size': size, 'wrtype': params['WriteType']}) # If write type is "write through", no need to set mirror switch. if params['WriteType'] != '2': cli_cmd = cli_cmd + ('-mirrorsw %(mirrorsw)s ' % {'mirrorsw': params['MirrorSwitch']}) # Differences exist between "Thin" and "thick" LUN in CLI commands. luntype = params['LUNType'] ctr = None if luntype == 'Thin': cli_cmd = cli_cmd + ('-pool %(pool)s ' % {'pool': params['StoragePool']}) else: # Make LUN distributed to A/B controllers evenly, # just for Thick LUN. ctr = self._calculate_lun_ctr() cli_cmd = cli_cmd + ('-rg %(raidgroup)s -susize %(susize)s ' '-c %(ctr)s ' % {'raidgroup': params['StoragePool'], 'susize': params['StripUnitSize'], 'ctr': ctr}) prefetch_value_or_times = '' pretype = '-pretype %s ' % params['PrefetchType'] # If constant prefetch, we should specify prefetch value. if params['PrefetchType'] == '1': prefetch_value_or_times = '-value %s' % params['PrefetchValue'] # If variable prefetch, we should specify prefetch multiple. elif params['PrefetchType'] == '2': prefetch_value_or_times = '-times %s' % params['PrefetchTimes'] cli_cmd = cli_cmd + pretype + prefetch_value_or_times out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_create_volume', 'Failed to create volume %s' % name, cli_cmd, out) if ctr: self._update_lun_distribution(ctr) return self._get_lun_id(name) def _calculate_lun_ctr(self): return ('a' if self.lun_distribution[0] <= self.lun_distribution[1] else 'b') def _update_lun_distribution(self, ctr): index = (0 if ctr == 'a' else 1) self.lun_distribution[index] += 1 def _get_lun_params(self): params_conf = self._parse_conf_lun_params() # Select a pool with maximum capacity. pools_dev = self._get_dev_pool_info(params_conf['LUNType']) params_conf['StoragePool'] = \ self._get_maximum_capacity_pool_id(params_conf['StoragePool'], pools_dev, params_conf['LUNType']) return params_conf def _parse_conf_lun_params(self): """Get parameters from config file for creating LUN.""" # Default LUN parameters. conf_params = {'LUNType': 'Thin', 'StripUnitSize': '64', 'WriteType': '1', 'MirrorSwitch': '1', 'PrefetchType': '3', 'PrefetchValue': '0', 'PrefetchTimes': '0', 'StoragePool': []} root = huawei_utils.parse_xml_file(self.xml_conf) luntype = root.findtext('LUN/LUNType') if luntype: if luntype.strip() in ['Thick', 'Thin']: conf_params['LUNType'] = luntype.strip() else: err_msg = (_('LUNType must be "Thin" or "Thick". ' 'LUNType:%(type)s') % {'type': luntype}) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) stripunitsize = root.findtext('LUN/StripUnitSize') if stripunitsize: conf_params['StripUnitSize'] = stripunitsize.strip() writetype = root.findtext('LUN/WriteType') if writetype: conf_params['WriteType'] = writetype.strip() mirrorswitch = root.findtext('LUN/MirrorSwitch') if mirrorswitch: conf_params['MirrorSwitch'] = mirrorswitch.strip() prefetch = root.find('LUN/Prefetch') if prefetch is not None and prefetch.attrib['Type']: conf_params['PrefetchType'] = prefetch.attrib['Type'].strip() if conf_params['PrefetchType'] == '1': conf_params['PrefetchValue'] = prefetch.attrib['Value'].strip() elif conf_params['PrefetchType'] == '2': conf_params['PrefetchTimes'] = prefetch.attrib['Value'].strip() else: LOG.debug(_('_parse_conf_lun_params: Use default prefetch type. ' 'Prefetch type: Intelligent')) pools_conf = root.findall('LUN/StoragePool') for pool in pools_conf: conf_params['StoragePool'].append(pool.attrib['Name'].strip()) return conf_params def _get_maximum_capacity_pool_id(self, pools_conf, pools_dev, luntype): """Get the maximum pool from config file. According to the given pools' names in config file, we select the pool with maximum free capacity. """ maxpool_id = None maxpool_size = 0.0 nameindex, sizeindex = ((1, 4) if luntype == 'Thin' else (5, 3)) pools_dev = sorted(pools_dev, key=lambda x: float(x[sizeindex])) while len(pools_dev) > 0: pool = pools_dev.pop() if pool[nameindex] in pools_conf: return pool[0] err_msg = (_('_get_maximum_capacity_pool_id: Failed to get pool ' 'id. Please check config file and make sure ' 'the StoragePool %s is created in storage ' 'array.') % pools_conf) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) def _execute_cli(self, cmd): """Build SSH connection and execute CLI commands. If the connection to first controller timeout, try to connect to the other controller. """ LOG.debug(_('CLI command: %s') % cmd) connect_times = 1 ip0 = self.login_info['ControllerIP0'] ip1 = self.login_info['ControllerIP1'] user = self.login_info['UserName'] pwd = self.login_info['UserPassword'] if not self.ssh_pool: self.ssh_pool = utils.SSHPool(ip0, 22, 30, user, pwd, max_size=2) ssh_client = None while True: try: if connect_times == 2: # Switch to the other controller. with self.lock_ip: if ssh_client: if ssh_client.server_ip == self.ssh_pool.ip: self.ssh_pool.ip = (ip1 if self.ssh_pool.ip == ip0 else ip0) old_ip = ssh_client.server_ip # Create a new client to replace the old one. if getattr(ssh_client, 'chan', None): ssh_client.chan.close() ssh_client.close() ssh_client = self.ssh_pool.create() self._reset_transport_timeout(ssh_client, 0.1) else: self.ssh_pool.ip = ip1 old_ip = ip0 LOG.info(_('_execute_cli: Can not connect to IP ' '%(old)s, try to connect to the other ' 'IP %(new)s.') % {'old': old_ip, 'new': self.ssh_pool.ip}) if not ssh_client: # Get an SSH client from SSH pool. ssh_client = self.ssh_pool.get() self._reset_transport_timeout(ssh_client, 0.1) # "server_ip" shows the IP of SSH server. if not getattr(ssh_client, 'server_ip', None): with self.lock_ip: setattr(ssh_client, 'server_ip', self.ssh_pool.ip) # An SSH client owns one "chan". if not getattr(ssh_client, 'chan', None): setattr(ssh_client, 'chan', utils.create_channel(ssh_client, 600, 800)) while True: ssh_client.chan.send(cmd + '\n') out = ssh_read(user, ssh_client.chan, cmd, 20) if out.find('(y/n)') > -1 or out.find('y or n') > -1: cmd = 'y' else: # Put SSH client back into SSH pool. self.ssh_pool.put(ssh_client) return out except Exception as err: if connect_times < 2: connect_times += 1 continue else: if ssh_client: self.ssh_pool.remove(ssh_client) LOG.error(_('_execute_cli: %s') % err) raise err def _reset_transport_timeout(self, ssh, time): transport = ssh.get_transport() transport.sock.settimeout(time) def delete_volume(self, volume): volume_name = self._name_translate(volume['name']) LOG.debug(_('delete_volume: volume name: %s') % volume_name) self._update_login_info() volume_id = volume.get('provider_location', None) if volume_id is None or not self._check_volume_created(volume_id): err_msg = (_('delete_volume: Volume %(name)s does not exist.') % {'name': volume['name']}) LOG.warn(err_msg) return else: name = volume_name[len(VOL_AND_SNAP_NAME_PREFIX):] added_vol_ids = self.extended_lun_dict.get(name, None) if added_vol_ids: self._del_lun_from_extended_lun(volume_id, added_vol_ids) self.extended_lun_dict.pop(name) self._delete_volume(volume_id) def _check_volume_created(self, volume_id): cli_cmd = 'showlun -lun %s' % volume_id out = self._execute_cli(cli_cmd) return (True if re.search('LUN Information', out) else False) def _del_lun_from_extended_lun(self, extended_id, added_ids): cli_cmd = 'rmlunfromextlun -ext %s' % extended_id out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_del_lun_from_extended_lun', ('Failed to remove LUN from extended ' 'LUN: %s' % extended_id), cli_cmd, out) for id in added_ids: cli_cmd = 'dellun -lun %s' % id out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_del_lun_from_extended_lun', 'Failed to delete LUN: %s' % id, cli_cmd, out) def _delete_volume(self, volumeid): """Run CLI command to delete volume.""" cli_cmd = 'dellun -force -lun %s' % volumeid out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_delete_volume', ('Failed to delete volume. volume id: %s' % volumeid), cli_cmd, out) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot. We use LUNcopy to copy a new volume from snapshot. The time needed increases as volume size does. """ snapshot_name = self._name_translate(snapshot['name']) volume_name = self._name_translate(volume['name']) LOG.debug(_('create_volume_from_snapshot: snapshot ' 'name: %(snapshot)s, volume name: %(volume)s') % {'snapshot': snapshot_name, 'volume': volume_name}) self._update_login_info() snapshot_id = snapshot.get('provider_location', None) if not snapshot_id: snapshot_id = self._get_snapshot_id(snapshot_name) if snapshot_id is None: err_msg = (_('create_volume_from_snapshot: Snapshot %(name)s ' 'does not exist.') % {'name': snapshot_name}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) # Create a target LUN. if int(volume['size']) == 0: volume_size = '%sG' % snapshot['volume_size'] else: volume_size = '%sG' % volume['size'] type_id = volume['volume_type_id'] parameters = self._parse_volume_type(type_id) tgt_vol_id = self._create_volume(volume_name, volume_size, parameters) self._copy_volume(snapshot_id, tgt_vol_id) return tgt_vol_id def _copy_volume(self, src_vol_id, tgt_vol_id): """Copy a volume or snapshot to target volume.""" luncopy_name = VOL_AND_SNAP_NAME_PREFIX + src_vol_id + '_' + tgt_vol_id self._create_luncopy(luncopy_name, src_vol_id, tgt_vol_id) self.luncopy_list.append(luncopy_name) luncopy_id = self._get_luncopy_info(luncopy_name)[1] try: self._start_luncopy(luncopy_id) self._wait_for_luncopy(luncopy_name) # Delete the target volume if LUNcopy failed. except Exception: with excutils.save_and_reraise_exception(): # Need to remove the LUNcopy of the volume first. self._delete_luncopy(luncopy_id) self.luncopy_list.remove(luncopy_name) self._delete_volume(tgt_vol_id) # Need to delete LUNcopy finally. self._delete_luncopy(luncopy_id) self.luncopy_list.remove(luncopy_name) def _create_luncopy(self, luncopyname, srclunid, tgtlunid): """Run CLI command to create LUNcopy.""" cli_cmd = ('createluncopy -n %(name)s -l 4 -slun %(srclunid)s ' '-tlun %(tgtlunid)s' % {'name': luncopyname, 'srclunid': srclunid, 'tgtlunid': tgtlunid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_create_luncopy', ('Failed to create LUNcopy %s' % luncopyname), cli_cmd, out) def _start_luncopy(self, luncopyid): """Run CLI command to start LUNcopy.""" cli_cmd = ('chgluncopystatus -luncopy %(luncopyid)s -start' % {'luncopyid': luncopyid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_start_luncopy', 'Failed to start LUNcopy %s' % luncopyid, cli_cmd, out) def _wait_for_luncopy(self, luncopyname): """Wait for LUNcopy to complete.""" while True: luncopy_info = self._get_luncopy_info(luncopyname) # If state is complete if luncopy_info[3] == 'Complete': break # If status is not normal elif luncopy_info[4] != 'Normal': err_msg = (_('_wait_for_luncopy: LUNcopy %(luncopyname)s ' 'status is %(status)s.') % {'luncopyname': luncopyname, 'status': luncopy_info[4]}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) time.sleep(10) def _get_luncopy_info(self, luncopyname): """Return a LUNcopy information list.""" cli_cmd = 'showluncopy' out = self._execute_cli(cli_cmd) self._assert_cli_out(re.search('LUN Copy Information', out), '_get_luncopy_info', 'No LUNcopy information was found.', cli_cmd, out) for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if tmp_line[0] == luncopyname: return tmp_line return None def _delete_luncopy(self, luncopyid): """Run CLI command to delete LUNcopy.""" cli_cmd = 'delluncopy -luncopy %(id)s' % {'id': luncopyid} out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_delete_luncopy', 'Failed to delete LUNcopy %s' % luncopyid, cli_cmd, out) def create_cloned_volume(self, tgt_volume, src_volume): src_vol_name = self._name_translate(src_volume['name']) tgt_vol_name = self._name_translate(tgt_volume['name']) LOG.debug(_('create_cloned_volume: src volume: %(src)s, ' 'tgt volume: %(tgt)s') % {'src': src_vol_name, 'tgt': tgt_vol_name}) self._update_login_info() src_vol_id = src_volume.get('provider_location', None) if not src_vol_id: src_vol_id = self._get_lun_id(src_vol_name) if src_vol_id is None: err_msg = (_('Source volume %(name)s does not exist.') % {'name': src_vol_name}) LOG.error(err_msg) raise exception.VolumeNotFound(volume_id=src_vol_name) # Create a target volume. if int(tgt_volume['size']) == 0: tgt_vol_size = '%sG' % src_vol_name['size'] else: tgt_vol_size = '%sG' % tgt_volume['size'] type_id = tgt_volume['volume_type_id'] params = self._parse_volume_type(type_id) tgt_vol_id = self._create_volume(tgt_vol_name, tgt_vol_size, params) self._copy_volume(src_vol_id, tgt_vol_id) return tgt_vol_id def _get_all_luns_info(self): cli_cmd = 'showlun' out = self._execute_cli(cli_cmd) luns = [] if re.search('LUN Information', out): for line in out.split('\r\n')[6:-2]: luns.append(line.replace('Not format', 'Notformat').split()) return luns def _get_lun_id(self, lun_name): luns = self._get_all_luns_info() if luns: for lun in luns: if lun[6] == lun_name: return lun[0] return None def extend_volume(self, volume, new_size): extended_vol_name = self._name_translate(volume['name']) name = extended_vol_name[len(VOL_AND_SNAP_NAME_PREFIX):] added_vol_ids = self.extended_lun_dict.get(name, []) added_vol_name = ('ext_' + extended_vol_name.split('_')[1] + '_' + str(len(added_vol_ids))) added_vol_size = str(int(new_size) - int(volume['size'])) + 'G' LOG.debug(_('extend_volume: extended volume name: %(extended_name)s ' 'new added volume name: %(added_name)s ' 'new added volume size: %(added_size)s') % {'extended_name': extended_vol_name, 'added_name': added_vol_name, 'added_size': added_vol_size}) if not volume['provider_location']: err_msg = (_('extend_volume: volume %s does not exist.') % extended_vol_name) LOG.error(err_msg) raise exception.VolumeNotFound(volume_id=extended_vol_name) type_id = volume['volume_type_id'] parameters = self._parse_volume_type(type_id) added_vol_id = self._create_volume(added_vol_name, added_vol_size, parameters) try: self._extend_volume(volume['provider_location'], added_vol_id) except Exception: with excutils.save_and_reraise_exception(): self._delete_volume(added_vol_id) added_vol_ids.append(added_vol_id) self.extended_lun_dict[name] = added_vol_ids def _extend_volume(self, extended_vol_id, added_vol_id): cli_cmd = ('addluntoextlun -extlun %(extended_vol)s ' '-lun %(added_vol)s' % {'extended_vol': extended_vol_id, 'added_vol': added_vol_id}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_extend_volume', ('Failed to extend volume %s' % extended_vol_id), cli_cmd, out) def create_snapshot(self, snapshot): snapshot_name = self._name_translate(snapshot['name']) volume_name = self._name_translate(snapshot['volume_name']) LOG.debug(_('create_snapshot: snapshot name: %(snapshot)s, ' 'volume name: %(volume)s') % {'snapshot': snapshot_name, 'volume': volume_name}) if self._resource_pool_enough() is False: err_msg = (_('create_snapshot: ' 'Resource pool needs 1GB valid size at least.')) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) lun_id = self._get_lun_id(volume_name) if lun_id is None: err_msg = (_('create_snapshot: Volume %(name)s does not exist.') % {'name': volume_name}) LOG.error(err_msg) raise exception.VolumeNotFound(volume_id=volume_name) self._create_snapshot(snapshot_name, lun_id) snapshot_id = self._get_snapshot_id(snapshot_name) try: self._active_snapshot(snapshot_id) except Exception: with excutils.save_and_reraise_exception(): self._delete_snapshot(snapshot_id) return snapshot_id def _resource_pool_enough(self): """Check whether resource pools' valid size is more than 1GB.""" cli_cmd = 'showrespool' out = self._execute_cli(cli_cmd) for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if float(tmp_line[3]) < 1024.0: return False return True def _create_snapshot(self, snapshotname, srclunid): """Create a snapshot with snapshot name and source LUN ID.""" cli_cmd = ('createsnapshot -lun %(lunid)s -n %(snapname)s' % {'lunid': srclunid, 'snapname': snapshotname}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_create_snapshot', ('Failed to create snapshot %s' % snapshotname), cli_cmd, out) def _get_snapshot_id(self, snapshotname): cli_cmd = 'showsnapshot' out = self._execute_cli(cli_cmd) if re.search('Snapshot Information', out): for line in out.split('\r\n')[6:-2]: emp_line = line.split() if emp_line[0] == snapshotname: return emp_line[1] return None def _active_snapshot(self, snapshotid): """Run CLI command to active snapshot.""" cli_cmd = ('actvsnapshot -snapshot %(snapshotid)s' % {'snapshotid': snapshotid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_active_snapshot', ('Failed to active snapshot %s' % snapshotid), cli_cmd, out) def delete_snapshot(self, snapshot): snapshot_name = self._name_translate(snapshot['name']) volume_name = self._name_translate(snapshot['volume_name']) LOG.debug(_('delete_snapshot: snapshot name: %(snapshot)s, ' 'volume name: %(volume)s') % {'snapshot': snapshot_name, 'volume': volume_name}) self._update_login_info() snapshot_id = snapshot.get('provider_location', None) if ((snapshot_id is not None) and self._check_snapshot_created(snapshot_id)): # Not allow to delete snapshot if it is copying. if self._snapshot_in_luncopy(snapshot_id): err_msg = (_('delete_snapshot: Can not delete snapshot %s ' 'for it is a source LUN of LUNCopy.') % snapshot_name) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) self._delete_snapshot(snapshot_id) else: err_msg = (_('delete_snapshot: Snapshot %(snap)s does not exist.') % {'snap': snapshot_name}) LOG.warn(err_msg) def _check_snapshot_created(self, snapshot_id): cli_cmd = 'showsnapshot -snapshot %(snap)s' % {'snap': snapshot_id} out = self._execute_cli(cli_cmd) return (True if re.search('Snapshot Information', out) else False) def _snapshot_in_luncopy(self, snapshot_id): for name in self.luncopy_list: if name.startswith(VOL_AND_SNAP_NAME_PREFIX + snapshot_id): return True return False def _delete_snapshot(self, snapshotid): """Send CLI command to delete snapshot. Firstly, disable the snapshot, then delete it. """ cli_cmd = ('disablesnapshot -snapshot %(snapshotid)s' % {'snapshotid': snapshotid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_delete_snapshot', ('Failed to disable snapshot %s' % snapshotid), cli_cmd, out) cli_cmd = ('delsnapshot -snapshot %(snapshotid)s' % {'snapshotid': snapshotid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_delete_snapshot', ('Failed to delete snapshot %s' % snapshotid), cli_cmd, out) def _assert_cli_out(self, condition, func, msg, cmd, cliout): """Assertion for CLI query out.""" if not condition: err_msg = (_('%(func)s: %(msg)s\nCLI command: %(cmd)s\n' 'CLI out: %(out)s') % {'func': func, 'msg': msg, 'cmd': cmd, 'out': cliout}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def _assert_cli_operate_out(self, func, msg, cmd, cliout): """Assertion for CLI out string: command operates successfully.""" condition = re.search('command operates successfully', cliout) self._assert_cli_out(condition, func, msg, cmd, cliout) def map_volume(self, host_id, volume_id): """Map a volume to a host.""" # Map a LUN to a host if not mapped. if not self._check_volume_created(volume_id): LOG.error(_('map_volume: Volume %s was not found.') % volume_id) raise exception.VolumeNotFound(volume_id=volume_id) hostlun_id = None map_info = self._get_host_map_info(host_id) # Make sure the host LUN ID starts from 1. new_hostlun_id = 1 new_hostlunid_found = False if map_info: for maping in map_info: if maping[2] == volume_id: hostlun_id = maping[4] break elif not new_hostlunid_found: if new_hostlun_id < int(maping[4]): new_hostlunid_found = True else: new_hostlun_id = int(maping[4]) + 1 if not hostlun_id: cli_cmd = ('addhostmap -host %(host_id)s -devlun %(lunid)s ' '-hostlun %(hostlunid)s' % {'host_id': host_id, 'lunid': volume_id, 'hostlunid': new_hostlun_id}) out = self._execute_cli(cli_cmd) msg = ('Failed to map LUN %s to host %s. host LUN ID: %s' % (volume_id, host_id, new_hostlun_id)) self._assert_cli_operate_out('map_volume', msg, cli_cmd, out) hostlun_id = new_hostlun_id return hostlun_id def add_host(self, host_name, host_ip, initiator=None): """Create a host and add it to hostgroup.""" # Create an OpenStack hostgroup if not created before. hostgroup_name = HOST_GROUP_NAME self.hostgroup_id = self._get_hostgroup_id(hostgroup_name) if self.hostgroup_id is None: self._create_hostgroup(hostgroup_name) self.hostgroup_id = self._get_hostgroup_id(hostgroup_name) # Create a host and add it to the hostgroup. # Check the old host name to support the upgrade from grizzly to # higher versions. if initiator: old_host_name = HOST_NAME_PREFIX + str(hash(initiator)) old_host_id = self._get_host_id(old_host_name, self.hostgroup_id) if old_host_id is not None: return old_host_id host_name = HOST_NAME_PREFIX + host_name host_id = self._get_host_id(host_name, self.hostgroup_id) if host_id is None: os_type = huawei_utils.get_conf_host_os_type(host_ip, self.xml_conf) self._create_host(host_name, self.hostgroup_id, os_type) host_id = self._get_host_id(host_name, self.hostgroup_id) return host_id def _get_hostgroup_id(self, groupname): """Get the given hostgroup ID. If the hostgroup not found, return None. """ cli_cmd = 'showhostgroup' out = self._execute_cli(cli_cmd) if re.search('Host Group Information', out): for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if tmp_line[1] == groupname: return tmp_line[0] return None def _create_hostgroup(self, hostgroupname): """Run CLI command to create host group.""" cli_cmd = 'createhostgroup -n %(name)s' % {'name': hostgroupname} out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_create_hostgroup', ('Failed to Create hostgroup %s.' % hostgroupname), cli_cmd, out) def _get_host_id(self, hostname, hostgroupid): """Get the given host ID.""" cli_cmd = 'showhost -group %(groupid)s' % {'groupid': hostgroupid} out = self._execute_cli(cli_cmd) if re.search('Host Information', out): for line in out.split('\r\n')[6:-2]: tmp_line = line.split() if tmp_line[1] == hostname: return tmp_line[0] return None def _create_host(self, hostname, hostgroupid, type): """Run CLI command to add host.""" cli_cmd = ('addhost -group %(groupid)s -n %(hostname)s -t %(type)s' % {'groupid': hostgroupid, 'hostname': hostname, 'type': type}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_create_host', 'Failed to create host %s' % hostname, cli_cmd, out) def _get_host_port_info(self, hostid): """Run CLI command to get host port information.""" cli_cmd = ('showhostport -host %(hostid)s' % {'hostid': hostid}) out = self._execute_cli(cli_cmd) if re.search('Host Port Information', out): return [line.split() for line in out.split('\r\n')[6:-2]] else: return None def _get_host_map_info(self, hostid): """Get map information of the given host.""" cli_cmd = 'showhostmap -host %(hostid)s' % {'hostid': hostid} out = self._execute_cli(cli_cmd) if re.search('Map Information', out): mapinfo = [line.split() for line in out.split('\r\n')[6:-2]] # Sorted by host LUN ID. return sorted(mapinfo, key=lambda x: int(x[4])) else: return None def get_lun_details(self, lun_id): cli_cmd = 'showlun -lun %s' % lun_id out = self._execute_cli(cli_cmd) lun_details = {} if re.search('LUN Information', out): for line in out.split('\r\n')[4:-2]: line = line.split('|') key = ''.join(line[0].strip().split()) val = line[1].strip() lun_details[key] = val return lun_details def change_lun_ctr(self, lun_id, ctr): LOG.debug(_('change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s.') % {'lun': lun_id, 'ctr': ctr}) cli_cmd = 'chglun -lun %s -c %s' % (lun_id, ctr) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('change_lun_ctr', 'Failed to change owning controller for ' 'LUN %s' % lun_id, cli_cmd, out) def remove_map(self, volume_id, host_name, initiator=None): """Remove host map.""" # Check the old host name to support the upgrade from grizzly to # higher versions. host_id = None if initiator: old_host_name = HOST_NAME_PREFIX + str(hash(initiator)) host_id = self._get_host_id(old_host_name, self.hostgroup_id) if host_id is None: host_name = HOST_NAME_PREFIX + host_name host_id = self._get_host_id(host_name, self.hostgroup_id) if host_id is None: LOG.error(_('remove_map: Host %s does not exist.') % host_name) raise exception.HostNotFound(host=host_name) if not self._check_volume_created(volume_id): LOG.error(_('remove_map: Volume %s does not exist.') % volume_id) raise exception.VolumeNotFound(volume_id=volume_id) map_id = None map_info = self._get_host_map_info(host_id) if map_info: for maping in map_info: if maping[2] == volume_id: map_id = maping[0] break if map_id is not None: self._delete_map(map_id) else: LOG.warn(_('remove_map: No map between host %(host)s and ' 'volume %(volume)s.') % {'host': host_name, 'volume': volume_id}) return host_id def _delete_map(self, mapid, attempts=2): """Run CLI command to remove map.""" cli_cmd = 'delhostmap -force -map %(mapid)s' % {'mapid': mapid} while True: out = self._execute_cli(cli_cmd) # We retry to delete host map 10s later if there are # IOs accessing the system. if re.search('command operates successfully', out): break else: if (re.search('there are IOs accessing the system', out) and (attempts > 0)): LOG.debug(_('_delete_map: There are IOs accessing ' 'the system. Retry to delete host map ' '%(mapid)s 10s later.') % {'mapid': mapid}) time.sleep(10) attempts -= 1 continue else: err_msg = (_('_delete_map: Failed to delete host map ' '%(mapid)s.\nCLI out: %(out)s') % {'mapid': mapid, 'times': attempts, 'out': out}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def _delete_hostport(self, portid): """Run CLI command to delete host port.""" cli_cmd = ('delhostport -force -p %(portid)s' % {'portid': portid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_delete_hostport', 'Failed to delete host port %s.' % portid, cli_cmd, out) def _delete_host(self, hostid): """Run CLI command to delete host.""" cli_cmd = ('delhost -force -host %(hostid)s' % {'hostid': hostid}) out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_delete_host', 'Failed to delete host. %s.' % hostid, cli_cmd, out) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("_update_volume_stats: Updating volume stats.")) data = {} data['vendor_name'] = 'Huawei' data['total_capacity_gb'] = 'infinite' data['free_capacity_gb'] = self._get_free_capacity() data['reserved_percentage'] = 0 data['QoS_support'] = False self._stats = data def _get_free_capacity(self): """Get total free capacity of pools.""" self._update_login_info() params_conf = self._parse_conf_lun_params() lun_type = params_conf['LUNType'] pools_conf = params_conf['StoragePool'] pools_dev = self._get_dev_pool_info(lun_type) total_free_capacity = 0.0 for pool_dev in pools_dev: for pool_conf in pools_conf: if ((lun_type == 'Thick') and (pool_dev[5] == pool_conf)): total_free_capacity += float(pool_dev[3]) break elif pool_dev[1] == pool_conf: total_free_capacity += float(pool_dev[4]) break return total_free_capacity / 1024 def _get_dev_pool_info(self, pooltype): """Get pools information created in storage device. Return a list whose elements are also list. """ cli_cmd = ('showpool' if pooltype == 'Thin' else 'showrg') out = self._execute_cli(cli_cmd) test = (re.search('Pool Information', out) or re.search('RAID Group Information', out)) self._assert_cli_out(test, '_get_dev_pool_info', 'No pools information found.', cli_cmd, out) pool = out.split('\r\n')[6:-2] return [line.split() for line in pool] class DoradoCommon(TseriesCommon): """Common class for Huawei Dorado2100 G2 and Dorado5100 storage arrays. Dorados share a lot of common codes with T series storage systems, so this class inherited from class TseriesCommon and just rewrite some methods. """ def __init__(self, configuration=None): TseriesCommon.__init__(self, configuration) self.device_type = None def do_setup(self, context): """Check config file.""" LOG.debug(_('do_setup')) self._check_conf_file() exist_luns = self._get_all_luns_info() self.lun_distribution = self._get_lun_distribution_info(exist_luns) self.hostgroup_id = self._get_hostgroup_id(HOST_GROUP_NAME) self.extended_lun_dict = self._get_extended_lun(exist_luns) def _check_conf_file(self): """Check the config file, make sure the key elements are set.""" root = huawei_utils.parse_xml_file(self.xml_conf) # Check login information check_list = ['Storage/ControllerIP0', 'Storage/ControllerIP1', 'Storage/UserName', 'Storage/UserPassword'] for item in check_list: if not huawei_utils.is_xml_item_exist(root, item): err_msg = (_('_check_conf_file: Config file invalid. ' '%s must be set.') % item) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # Check storage pool # No need for Dorado2100 G2 self.login_info = self._get_login_info() self.device_type = self._get_device_type() if self.device_type == 'Dorado5100': if not huawei_utils.is_xml_item_exist(root, 'LUN/StoragePool', 'Name'): err_msg = (_('_check_conf_file: Config file invalid. ' 'StoragePool must be specified.')) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # If setting os type, make sure it valid if huawei_utils.is_xml_item_exist(root, 'Host', 'OSType'): os_list = huawei_utils.os_type.keys() if not huawei_utils.is_xml_item_valid(root, 'Host', os_list, 'OSType'): err_msg = (_('_check_conf_file: Config file invalid. ' 'Host OSType is invalid.\n' 'The valid values are: %(os_list)s') % {'os_list': os_list}) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) def _get_device_type(self): """Run CLI command to get system type.""" cli_cmd = 'showsys' out = self._execute_cli(cli_cmd) self._assert_cli_out(re.search('System Information', out), '_get_device_type', 'Failed to get system information', cli_cmd, out) for line in out.split('\r\n')[4:-2]: if re.search('Device Type', line): if re.search('Dorado2100 G2$', line): return 'Dorado2100 G2' elif re.search('Dorado5100$', line): return 'Dorado5100' else: LOG.error(_('_get_device_type: The driver only supports ' 'Dorado5100 and Dorado 2100 G2 now.')) raise exception.InvalidResults() def _get_lun_distribution_info(self, luns): ctr_info = [0, 0] (c, n) = ((2, 4) if self.device_type == 'Dorado2100 G2' else (3, 5)) for lun in luns: if lun[n].startswith(VOL_AND_SNAP_NAME_PREFIX): if lun[c] == 'A': ctr_info[0] += 1 else: ctr_info[1] += 1 return ctr_info def _get_extended_lun(self, luns): extended_dict = {} n = 4 if self.device_type == 'Dorado2100 G2' else 5 for lun in luns: if lun[n].startswith('ext'): vol_name = lun[n].split('_')[1] add_ids = extended_dict.get(vol_name, []) add_ids.append(lun[0]) extended_dict[vol_name] = add_ids return extended_dict def _create_volume(self, name, size, params): """Create a new volume with the given name and size.""" cli_cmd = ('createlun -n %(name)s -lunsize %(size)s ' '-wrtype %(wrtype)s ' % {'name': name, 'size': size, 'wrtype': params['WriteType']}) # If write type is "write through", no need to set mirror switch. if params['WriteType'] != '2': cli_cmd = cli_cmd + ('-mirrorsw %(mirrorsw)s ' % {'mirrorsw': params['MirrorSwitch']}) ctr = self._calculate_lun_ctr() # Dorado5100 does not support thin LUN. if self.device_type == 'Dorado5100': cli_cmd = cli_cmd + ('-rg %(raidgroup)s -susize %(susize)s ' '-c %(ctr)s' % {'raidgroup': params['StoragePool'], 'susize': params['StripUnitSize'], 'ctr': ctr}) else: if params['LUNType'] == 'Thin': # Not allowed to specify ctr for thin LUN. ctr_str = '' luntype_str = '-type 2' else: ctr_str = ' -c %s' % ctr luntype_str = '-type 3' cli_cmd = cli_cmd + luntype_str + ctr_str out = self._execute_cli(cli_cmd) self._assert_cli_operate_out('_create_volume', 'Failed to create volume %s' % name, cli_cmd, out) self._update_lun_distribution(ctr) return self._get_lun_id(name) def _get_lun_id(self, name): luns = self._get_all_luns_info() if luns: n_index = (4 if 'Dorado2100 G2' == self.device_type else 5) for lun in luns: if lun[n_index] == name: return lun[0] return None def create_volume_from_snapshot(self, volume, snapshot): err_msg = (_('create_volume_from_snapshot: %(device)s does ' 'not support create volume from snapshot.') % {'device': self.device_type}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def create_cloned_volume(self, volume, src_vref): err_msg = (_('create_cloned_volume: %(device)s does ' 'not support clone volume.') % {'device': self.device_type}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def extend_volume(self, volume, new_size): if self.device_type == 'Dorado2100 G2': err_msg = (_('extend_volume: %(device)s does not support ' 'extend volume.') % {'device': self.device_type}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) else: return TseriesCommon.extend_volume(self, volume, new_size) def create_snapshot(self, snapshot): if self.device_type == 'Dorado2100 G2': err_msg = (_('create_snapshot: %(device)s does not support ' 'snapshot.') % {'device': self.device_type}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) else: return TseriesCommon.create_snapshot(self, snapshot) def delete_snapshot(self, snapshot): if self.device_type == 'Dorado2100 G2': return else: TseriesCommon.delete_snapshot(self, snapshot) def _get_lun_params(self): params_conf = self._parse_conf_lun_params() # Select a pool with maximum capacity. if self.device_type == 'Dorado5100': pools_dev = self._get_dev_pool_info('Thick') params_conf['StoragePool'] = \ self._get_maximum_capacity_pool_id(params_conf['StoragePool'], pools_dev, 'Thick') return params_conf def _parse_conf_lun_params(self): """Get parameters from config file for creating LUN.""" # Default LUN parameters. conf_params = {'LUNType': 'Thin', 'StripUnitSize': '64', 'WriteType': '1', 'MirrorSwitch': '1'} root = huawei_utils.parse_xml_file(self.xml_conf) luntype = root.findtext('LUN/LUNType') if luntype: if luntype.strip() in ['Thick', 'Thin']: conf_params['LUNType'] = luntype.strip() else: err_msg = (_('LUNType must be "Thin" or "Thick". ' 'LUNType:%(type)s') % {'type': luntype}) LOG.error(err_msg) raise exception.InvalidInput(reason=err_msg) # Here we do not judge whether the parameters are set correct. # CLI will return error responses if the parameters are invalid. stripunitsize = root.findtext('LUN/StripUnitSize') if stripunitsize: conf_params['StripUnitSize'] = stripunitsize.strip() writetype = root.findtext('LUN/WriteType') if writetype: conf_params['WriteType'] = writetype.strip() mirrorswitch = root.findtext('LUN/MirrorSwitch') if mirrorswitch: conf_params['MirrorSwitch'] = mirrorswitch.strip() # No need to set StoragePool for Dorado2100 G2. if self.device_type == 'Dorado2100 G2': return conf_params pools_conf = root.findall('LUN/StoragePool') conf_params['StoragePool'] = [] for pool in pools_conf: conf_params['StoragePool'].append(pool.attrib['Name'].strip()) return conf_params def _get_free_capacity(self): """Get total free capacity of pools.""" self._update_login_info() lun_type = ('Thin' if self.device_type == 'Dorado2100 G2' else 'Thick') pools_dev = self._get_dev_pool_info(lun_type) total_free_capacity = 0.0 for pool_dev in pools_dev: if self.device_type == 'Dorado2100 G2': total_free_capacity += float(pool_dev[2]) continue else: params_conf = self._parse_conf_lun_params() pools_conf = params_conf['StoragePool'] for pool_conf in pools_conf: if pool_dev[5] == pool_conf: total_free_capacity += float(pool_dev[3]) break return total_free_capacity / 1024 cinder-2014.1.5/cinder/volume/drivers/huawei/huawei_hvs.py0000664000567000056700000001347112540642606024612 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. """ Volume Drivers for Huawei OceanStor HVS storage arrays. """ from cinder.volume import driver from cinder.volume.drivers.huawei.rest_common import HVSCommon class HuaweiHVSISCSIDriver(driver.ISCSIDriver): """ISCSI driver for Huawei OceanStor HVS storage arrays.""" VERSION = '1.0.0' def __init__(self, *args, **kwargs): super(HuaweiHVSISCSIDriver, self).__init__(*args, **kwargs) def do_setup(self, context): """Instantiate common class and log in storage system.""" self.common = HVSCommon(configuration=self.configuration) def check_for_setup_error(self): """Check configuration file.""" self.common._check_conf_file() self.common.login() def create_volume(self, volume): """Create a volume.""" self.common.create_volume(volume) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot.""" self.common.create_volume_from_snapshot(volume, snapshot) def create_cloned_volume(self, volume, src_vref): """Create a clone of the specified volume.""" self.common.create_cloned_volume(volume, src_vref) def extend_volume(self, volume, new_size): """Extend a volume.""" self.common.extend_volume(volume, new_size) def delete_volume(self, volume): """Delete a volume.""" self.common.delete_volume(volume) def create_snapshot(self, snapshot): """Create a snapshot.""" self.common.create_snapshot(snapshot) def delete_snapshot(self, snapshot): """Delete a snapshot.""" self.common.delete_snapshot(snapshot) def get_volume_stats(self, refresh=False): """Get volume stats.""" data = self.common.update_volume_stats(refresh) backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or self.__class__.__name__ data['storage_protocol'] = 'iSCSI' data['driver_version'] = self.VERSION return data def initialize_connection(self, volume, connector): """Map a volume to a host.""" return self.common.initialize_connection_iscsi(volume, connector) def terminate_connection(self, volume, connector, **kwargs): """Terminate the map.""" self.common.terminate_connection(volume, connector, **kwargs) def create_export(self, context, volume): """Export the volume.""" pass def ensure_export(self, context, volume): """Synchronously recreate an export for a volume.""" pass def remove_export(self, context, volume): """Remove an export for a volume.""" pass class HuaweiHVSFCDriver(driver.FibreChannelDriver): """FC driver for Huawei OceanStor HVS storage arrays.""" VERSION = '1.0.0' def __init__(self, *args, **kwargs): super(HuaweiHVSFCDriver, self).__init__(*args, **kwargs) def do_setup(self, context): """Instantiate common class and log in storage system.""" self.common = HVSCommon(configuration=self.configuration) self.common.login() def check_for_setup_error(self): """Check configuration file.""" self.common._check_conf_file() def create_volume(self, volume): """Create a volume.""" self.common.create_volume(volume) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot.""" self.common.create_volume_from_snapshot(volume, snapshot) def create_cloned_volume(self, volume, src_vref): """Create a clone of the specified volume.""" self.common.create_cloned_volume(volume, src_vref) def extend_volume(self, volume, new_size): """Extend a volume.""" self.common.extend_volume(volume, new_size) def delete_volume(self, volume): """Delete a volume.""" self.common.delete_volume(volume) def create_snapshot(self, snapshot): """Create a snapshot.""" self.common.create_snapshot(snapshot) def delete_snapshot(self, snapshot): """Delete a snapshot.""" self.common.delete_snapshot(snapshot) def get_volume_stats(self, refresh=False): """Get volume stats.""" data = self.common.update_volume_stats(refresh) backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or self.__class__.__name__ data['storage_protocol'] = 'FC' data['driver_version'] = self.VERSION return data def initialize_connection(self, volume, connector): """Map a volume to a host.""" return self.common.initialize_connection_fc(volume, connector) def terminate_connection(self, volume, connector, **kwargs): """Terminate the map.""" self.common.terminate_connection(volume, connector, **kwargs) def create_export(self, context, volume): """Export the volume.""" pass def ensure_export(self, context, volume): """Synchronously recreate an export for a volume.""" pass def remove_export(self, context, volume): """Remove an export for a volume.""" pass cinder-2014.1.5/cinder/volume/drivers/huawei/__init__.py0000664000567000056700000000771212540642606024210 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Provide a unified driver class for users. The product type and the protocol should be specified in config file before. """ from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder.volume.drivers.huawei import huawei_dorado from cinder.volume.drivers.huawei import huawei_hvs from cinder.volume.drivers.huawei import huawei_t from cinder.volume.drivers.huawei import huawei_utils LOG = logging.getLogger(__name__) huawei_opt = [ cfg.StrOpt('cinder_huawei_conf_file', default='/etc/cinder/cinder_huawei_conf.xml', help='config data for cinder huawei plugin')] CONF = cfg.CONF CONF.register_opts(huawei_opt) class HuaweiVolumeDriver(object): """Define an unified driver for Huawei drivers.""" def __init__(self, *args, **kwargs): super(HuaweiVolumeDriver, self).__init__() self._product = {'T': huawei_t, 'Dorado': huawei_dorado, 'HVS': huawei_hvs} self._protocol = {'iSCSI': 'ISCSIDriver', 'FC': 'FCDriver'} self.driver = self._instantiate_driver(*args, **kwargs) def _instantiate_driver(self, *args, **kwargs): """Instantiate the specified driver.""" self.configuration = kwargs.get('configuration', None) if not self.configuration: msg = (_('_instantiate_driver: configuration not found.')) raise exception.InvalidInput(reason=msg) self.configuration.append_config_values(huawei_opt) conf_file = self.configuration.cinder_huawei_conf_file (product, protocol) = self._get_conf_info(conf_file) LOG.debug(_('_instantiate_driver: Loading %(protocol)s driver for ' 'Huawei OceanStor %(product)s series storage arrays.') % {'protocol': protocol, 'product': product}) driver_module = self._product[product] driver_class = 'Huawei' + product + self._protocol[protocol] driver_class = getattr(driver_module, driver_class) return driver_class(*args, **kwargs) def _get_conf_info(self, filename): """Get product type and connection protocol from config file.""" root = huawei_utils.parse_xml_file(filename) product = root.findtext('Storage/Product').strip() protocol = root.findtext('Storage/Protocol').strip() if (product in self._product.keys() and protocol in self._protocol.keys()): return (product, protocol) else: msg = (_('"Product" or "Protocol" is illegal. "Product" should ' 'be set to either T, Dorado or HVS. "Protocol" should ' 'be set to either iSCSI or FC. Product: %(product)s ' 'Protocol: %(protocol)s') % {'product': product, 'protocol': protocol}) raise exception.InvalidInput(reason=msg) def __setattr__(self, name, value): """Set the attribute.""" if getattr(self, 'driver', None): self.driver.__setattr__(name, value) return object.__setattr__(self, name, value) def __getattr__(self, name): """"Get the attribute.""" drver = object.__getattribute__(self, 'driver') return getattr(drver, name) cinder-2014.1.5/cinder/volume/drivers/huawei/huawei_dorado.py0000664000567000056700000001002212540642606025247 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Volume Drivers for Huawei OceanStor Dorado series storage arrays. """ import re from cinder.openstack.common import log as logging from cinder.volume.drivers.huawei import huawei_t from cinder.volume.drivers.huawei import ssh_common LOG = logging.getLogger(__name__) class HuaweiDoradoISCSIDriver(huawei_t.HuaweiTISCSIDriver): """ISCSI driver class for Huawei OceanStor Dorado storage arrays.""" def __init__(self, *args, **kwargs): super(HuaweiDoradoISCSIDriver, self).__init__(*args, **kwargs) def do_setup(self, context): """Instantiate common class.""" self.common = ssh_common.DoradoCommon(configuration=self.configuration) self.common.do_setup(context) self._assert_cli_out = self.common._assert_cli_out self._assert_cli_operate_out = self.common._assert_cli_operate_out class HuaweiDoradoFCDriver(huawei_t.HuaweiTFCDriver): """FC driver class for Huawei OceanStor Dorado storage arrays.""" def __init__(self, *args, **kwargs): super(HuaweiDoradoFCDriver, self).__init__(*args, **kwargs) def do_setup(self, context): """Instantiate common class.""" self.common = ssh_common.DoradoCommon(configuration=self.configuration) self.common.do_setup(context) self._assert_cli_out = self.common._assert_cli_out self._assert_cli_operate_out = self.common._assert_cli_operate_out def _get_host_port_details(self, hostid): cli_cmd = 'showfcmode' out = self.common._execute_cli(cli_cmd) self._assert_cli_out(re.search('FC Port Topology Mode', out), '_get_tgt_fc_port_wwns', 'Failed to get FC port WWNs.', cli_cmd, out) return [line.split()[3] for line in out.split('\r\n')[6:-2]] def _get_tgt_fc_port_wwns(self, port_details): return port_details def initialize_connection(self, volume, connector): """Create FC connection between a volume and a host.""" LOG.debug(_('initialize_connection: volume name: %(vol)s ' 'host: %(host)s initiator: %(wwn)s') % {'vol': volume['name'], 'host': connector['host'], 'wwn': connector['wwpns']}) self.common._update_login_info() # First, add a host if it is not added before. host_id = self.common.add_host(connector['host'], connector['ip']) # Then, add free FC ports to the host. ini_wwns = connector['wwpns'] free_wwns = self._get_connected_free_wwns() for wwn in free_wwns: if wwn in ini_wwns: self._add_fc_port_to_host(host_id, wwn) fc_port_details = self._get_host_port_details(host_id) tgt_wwns = self._get_tgt_fc_port_wwns(fc_port_details) LOG.debug(_('initialize_connection: Target FC ports WWNS: %s') % tgt_wwns) # Finally, map the volume to the host. volume_id = volume['provider_location'] hostlun_id = self.common.map_volume(host_id, volume_id) properties = {} properties['target_discovered'] = False properties['target_wwn'] = tgt_wwns properties['target_lun'] = int(hostlun_id) properties['volume_id'] = volume['id'] return {'driver_volume_type': 'fibre_channel', 'data': properties} cinder-2014.1.5/cinder/volume/drivers/ibm/0000775000567000056700000000000012540643114021350 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/ibm/gpfs.py0000664000567000056700000012200412540642606022665 0ustar jenkinsjenkins00000000000000# Copyright IBM Corp. 2013 All Rights Reserved # # 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. """ GPFS Volume Driver. """ import math import os import re import shutil from oslo.config import cfg from cinder import exception from cinder.image import image_utils from cinder.openstack.common import fileutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder import utils from cinder.volume import driver GPFS_CLONE_MIN_RELEASE = 1200 LOG = logging.getLogger(__name__) gpfs_opts = [ cfg.StrOpt('gpfs_mount_point_base', default=None, help='Specifies the path of the GPFS directory where Block ' 'Storage volume and snapshot files are stored.'), cfg.StrOpt('gpfs_images_dir', default=None, help='Specifies the path of the Image service repository in ' 'GPFS. Leave undefined if not storing images in GPFS.'), cfg.StrOpt('gpfs_images_share_mode', default=None, help='Specifies the type of image copy to be used. Set this ' 'when the Image service repository also uses GPFS so ' 'that image files can be transferred efficiently from ' 'the Image service to the Block Storage service. There ' 'are two valid values: "copy" specifies that a full copy ' 'of the image is made; "copy_on_write" specifies that ' 'copy-on-write optimization strategy is used and ' 'unmodified blocks of the image file are shared ' 'efficiently.'), cfg.IntOpt('gpfs_max_clone_depth', default=0, help='Specifies an upper limit on the number of indirections ' 'required to reach a specific block due to snapshots or ' 'clones. A lengthy chain of copy-on-write snapshots or ' 'clones can have a negative impact on performance, but ' 'improves space utilization. 0 indicates unlimited ' 'clone depth.'), cfg.BoolOpt('gpfs_sparse_volumes', default=True, help=('Specifies that volumes are created as sparse files ' 'which initially consume no space. If set to False, the ' 'volume is created as a fully allocated file, in which ' 'case, creation may take a significantly longer time.')), cfg.StrOpt('gpfs_storage_pool', default=None, help=('Specifies the storage pool that volumes are assigned ' 'to. By default, the system storage pool is used.')), ] CONF = cfg.CONF CONF.register_opts(gpfs_opts) def _different(difference_tuple): """Return true if two elements of a tuple are different.""" if difference_tuple: member1, member2 = difference_tuple return member1 != member2 else: return False def _same_filesystem(path1, path2): """Return true if the two paths are in the same GPFS file system.""" return os.lstat(path1).st_dev == os.lstat(path2).st_dev def _sizestr(size_in_g): """Convert the specified size into a string value.""" if int(size_in_g) == 0: # return 100M size on zero input for testing return '100M' return '%sG' % size_in_g class GPFSDriver(driver.VolumeDriver): """Implements volume functions using GPFS primitives. Version history: 1.0.0 - Initial driver 1.1.0 - Add volume retype, refactor volume migration """ VERSION = "1.1.0" def __init__(self, *args, **kwargs): super(GPFSDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(gpfs_opts) def _get_gpfs_state(self): """Return GPFS state information.""" try: (out, err) = self._execute('mmgetstate', '-Y', run_as_root=True) return out except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue mmgetstate command, error: %s.') % exc.stderr) raise exception.VolumeBackendAPIException(data=exc.stderr) def _check_gpfs_state(self): """Raise VolumeBackendAPIException if GPFS is not active.""" out = self._get_gpfs_state() lines = out.splitlines() state_token = lines[0].split(':').index('state') gpfs_state = lines[1].split(':')[state_token] if gpfs_state != 'active': LOG.error(_('GPFS is not active. Detailed output: %s.') % out) exception_message = (_('GPFS is not running, state: %s.') % gpfs_state) raise exception.VolumeBackendAPIException(data=exception_message) def _get_filesystem_from_path(self, path): """Return filesystem for specified path.""" try: (out, err) = self._execute('df', path, run_as_root=True) lines = out.splitlines() filesystem = lines[1].split()[0] return filesystem except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue df command for path %(path)s, ' 'error: %(error)s.') % {'path': path, 'error': exc.stderr}) raise exception.VolumeBackendAPIException(data=exc.stderr) def _get_gpfs_cluster_id(self): """Return the id for GPFS cluster being used.""" try: (out, err) = self._execute('mmlsconfig', 'clusterId', '-Y', run_as_root=True) lines = out.splitlines() value_token = lines[0].split(':').index('value') cluster_id = lines[1].split(':')[value_token] return cluster_id except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue mmlsconfig command, error: %s.') % exc.stderr) raise exception.VolumeBackendAPIException(data=exc.stderr) def _get_fileset_from_path(self, path): """Return the GPFS fileset for specified path.""" fs_regex = re.compile(r'.*fileset.name:\s+(?P\w+)', re.S) try: (out, err) = self._execute('mmlsattr', '-L', path, run_as_root=True) except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue mmlsattr command on path %(path)s, ' 'error: %(error)s') % {'path': path, 'error': exc.stderr}) raise exception.VolumeBackendAPIException(data=exc.stderr) try: fileset = fs_regex.match(out).group('fileset') return fileset except AttributeError as exc: msg = (_('Failed to find fileset for path %(path)s, command ' 'output: %(cmdout)s.') % {'path': path, 'cmdout': out}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def _verify_gpfs_pool(self, storage_pool): """Return true if the specified pool is a valid GPFS storage pool.""" try: self._execute('mmlspool', self._gpfs_device, storage_pool, run_as_root=True) return True except processutils.ProcessExecutionError: return False def _update_volume_storage_pool(self, local_path, new_pool): """Set the storage pool for a volume to the specified value.""" if new_pool is None: new_pool = 'system' if not self._verify_gpfs_pool(new_pool): msg = (_('Invalid storage pool %s requested. Retype failed.') % new_pool) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) try: self._execute('mmchattr', '-P', new_pool, local_path, run_as_root=True) LOG.debug('Updated storage pool with mmchattr to %s.' % new_pool) return True except processutils.ProcessExecutionError as exc: LOG.info('Could not update storage pool with mmchattr to ' '%(pool)s, error: %(error)s' % {'pool': new_pool, 'error': exc.stderr}) return False def _get_gpfs_fs_release_level(self, path): """Return the GPFS version of the specified file system. The file system is specified by any valid path it contains. """ filesystem = self._get_filesystem_from_path(path) try: (out, err) = self._execute('mmlsfs', filesystem, '-V', '-Y', run_as_root=True) except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue mmlsfs command for path %(path)s, ' 'error: %(error)s.') % {'path': path, 'error': exc.stderr}) raise exception.VolumeBackendAPIException(data=exc.stderr) lines = out.splitlines() value_token = lines[0].split(':').index('data') fs_release_level_str = lines[1].split(':')[value_token] # at this point, release string looks like "13.23 (3.5.0.7)" # extract first token and convert to whole number value fs_release_level = int(float(fs_release_level_str.split()[0]) * 100) return filesystem, fs_release_level def _get_gpfs_cluster_release_level(self): """Return the GPFS version of current cluster.""" try: (out, err) = self._execute('mmlsconfig', 'minreleaseLeveldaemon', '-Y', run_as_root=True) except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue mmlsconfig command, error: %s.') % exc.stderr) raise exception.VolumeBackendAPIException(data=exc.stderr) lines = out.splitlines() value_token = lines[0].split(':').index('value') min_release_level = lines[1].split(':')[value_token] return int(min_release_level) def _is_gpfs_path(self, directory): """Determine if the specified path is in a gpfs file system. If not part of a gpfs file system, raise ProcessExecutionError. """ try: self._execute('mmlsattr', directory, run_as_root=True) except processutils.ProcessExecutionError as exc: LOG.error(_('Failed to issue mmlsattr command for path %(path)s, ' 'error: %(error)s.') % {'path': directory, 'error': exc.stderr}) raise exception.VolumeBackendAPIException(data=exc.stderr) def _is_same_fileset(self, path1, path2): """Return true if the two paths are in the same GPFS fileset.""" if self._get_fileset_from_path(path1) == \ self._get_fileset_from_path(path2): return True return False def _same_cluster(self, host): """Return true if the host is a member of the same GPFS cluster.""" dest_location = host['capabilities'].get('location_info') if self._stats['location_info'] == dest_location: return True return False def _set_rw_permission(self, path, modebits='660'): """Set permission bits for the path.""" self._execute('chmod', modebits, path, run_as_root=True) def _can_migrate_locally(self, host): """Return true if the host can migrate a volume locally.""" if 'location_info' not in host['capabilities']: LOG.debug('Evaluate migration: no location info, ' 'cannot migrate locally.') return None info = host['capabilities']['location_info'] try: (dest_type, dest_id, dest_path) = info.split(':') except ValueError: LOG.debug('Evaluate migration: unexpected location info, ' 'cannot migrate locally: %s.' % info) return None if dest_type != 'GPFSDriver' or dest_id != self._cluster_id: LOG.debug('Evaluate migration: different destination driver or ' 'cluster id in location info: %s.' % info) return None LOG.debug('Evaluate migration: use local migration.') return dest_path def do_setup(self, ctxt): """Determine storage back end capabilities.""" try: self._cluster_id = self._get_gpfs_cluster_id() except Exception as setup_exception: msg = (_('Could not find GPFS cluster id: %s.') % setup_exception) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) try: gpfs_base = self.configuration.gpfs_mount_point_base self._gpfs_device = self._get_filesystem_from_path(gpfs_base) except Exception as setup_exception: msg = (_('Could not find GPFS file system device: %s.') % setup_exception) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) pool = self.configuration.safe_get('gpfs_storage_pool') self._storage_pool = pool or 'system' if not self._verify_gpfs_pool(self._storage_pool): msg = (_('Invalid storage pool %s specificed.') % self._storage_pool) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" self._check_gpfs_state() if self.configuration.gpfs_mount_point_base is None: msg = _('Option gpfs_mount_point_base is not set correctly.') LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if (self.configuration.gpfs_images_share_mode and self.configuration.gpfs_images_share_mode not in ['copy_on_write', 'copy']): msg = _('Option gpfs_images_share_mode is not set correctly.') LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if(self.configuration.gpfs_images_share_mode and self.configuration.gpfs_images_dir is None): msg = _('Option gpfs_images_dir is not set correctly.') LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if(self.configuration.gpfs_images_share_mode == 'copy_on_write' and not _same_filesystem(self.configuration.gpfs_mount_point_base, self.configuration.gpfs_images_dir)): msg = (_('gpfs_images_share_mode is set to copy_on_write, but ' '%(vol)s and %(img)s belong to different file ' 'systems.') % {'vol': self.configuration.gpfs_mount_point_base, 'img': self.configuration.gpfs_images_dir}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if(self.configuration.gpfs_images_share_mode == 'copy_on_write' and not self._is_same_fileset(self.configuration.gpfs_mount_point_base, self.configuration.gpfs_images_dir)): msg = (_('gpfs_images_share_mode is set to copy_on_write, but ' '%(vol)s and %(img)s belong to different filesets.') % {'vol': self.configuration.gpfs_mount_point_base, 'img': self.configuration.gpfs_images_dir}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) _gpfs_cluster_release_level = self._get_gpfs_cluster_release_level() if not _gpfs_cluster_release_level >= GPFS_CLONE_MIN_RELEASE: msg = (_('Downlevel GPFS Cluster Detected. GPFS Clone feature ' 'not enabled in cluster daemon level %(cur)s - must ' 'be at least at level %(min)s.') % {'cur': _gpfs_cluster_release_level, 'min': GPFS_CLONE_MIN_RELEASE}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) for directory in [self.configuration.gpfs_mount_point_base, self.configuration.gpfs_images_dir]: if directory is None: continue if not directory.startswith('/'): msg = (_('%s must be an absolute path.') % directory) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if not os.path.isdir(directory): msg = (_('%s is not a directory.') % directory) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) # Check if GPFS is mounted self._verify_gpfs_path_state(directory) filesystem, fslevel = \ self._get_gpfs_fs_release_level(directory) if not fslevel >= GPFS_CLONE_MIN_RELEASE: msg = (_('The GPFS filesystem %(fs)s is not at the required ' 'release level. Current level is %(cur)s, must be ' 'at least %(min)s.') % {'fs': filesystem, 'cur': fslevel, 'min': GPFS_CLONE_MIN_RELEASE}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def _create_sparse_file(self, path, size): """Creates file with 0 disk usage.""" sizestr = _sizestr(size) self._execute('truncate', '-s', sizestr, path, run_as_root=True) def _allocate_file_blocks(self, path, size): """Preallocate file blocks by writing zeros.""" block_size_mb = 1 block_count = size * units.GiB / (block_size_mb * units.MiB) self._execute('dd', 'if=/dev/zero', 'of=%s' % path, 'bs=%dM' % block_size_mb, 'count=%d' % block_count, run_as_root=True) def _gpfs_change_attributes(self, options, path): """Update GPFS attributes on the specified file.""" cmd = ['mmchattr'] cmd.extend(options) cmd.append(path) LOG.debug('Update volume attributes with mmchattr to %s.' % options) self._execute(*cmd, run_as_root=True) def _set_volume_attributes(self, path, metadata): """Set various GPFS attributes for this volume.""" set_pool = False options = [] for item in metadata: if item['key'] == 'data_pool_name': options.extend(['-P', item['value']]) set_pool = True elif item['key'] == 'replicas': options.extend(['-r', item['value'], '-m', item['value']]) elif item['key'] == 'dio': options.extend(['-D', item['value']]) elif item['key'] == 'write_affinity_depth': options.extend(['--write-affinity-depth', item['value']]) elif item['key'] == 'block_group_factor': options.extend(['--block-group-factor', item['value']]) elif item['key'] == 'write_affinity_failure_group': options.extend(['--write-affinity-failure-group', item['value']]) # metadata value has precedence over value set in volume type if self.configuration.gpfs_storage_pool and not set_pool: options.extend(['-P', self.configuration.gpfs_storage_pool]) if options: self._gpfs_change_attributes(options, path) def create_volume(self, volume): """Creates a GPFS volume.""" # Check if GPFS is mounted self._verify_gpfs_path_state(self.configuration.gpfs_mount_point_base) volume_path = self.local_path(volume) volume_size = volume['size'] # Create a sparse file first; allocate blocks later if requested self._create_sparse_file(volume_path, volume_size) self._set_rw_permission(volume_path) # Set the attributes prior to allocating any blocks so that # they are allocated according to the policy v_metadata = volume.get('volume_metadata') self._set_volume_attributes(volume_path, v_metadata) if not self.configuration.gpfs_sparse_volumes: self._allocate_file_blocks(volume_path, volume_size) fstype = None fslabel = None for item in v_metadata: if item['key'] == 'fstype': fstype = item['value'] elif item['key'] == 'fslabel': fslabel = item['value'] if fstype: self._mkfs(volume, fstype, fslabel) def create_volume_from_snapshot(self, volume, snapshot): """Creates a GPFS volume from a snapshot.""" volume_path = self.local_path(volume) snapshot_path = self.local_path(snapshot) self._create_gpfs_copy(src=snapshot_path, dest=volume_path) self._set_rw_permission(volume_path) self._gpfs_redirect(volume_path) virt_size = self._resize_volume_file(volume, volume['size']) return {'size': math.ceil(virt_size / units.GiB)} def create_cloned_volume(self, volume, src_vref): """Create a GPFS volume from another volume.""" src = self.local_path(src_vref) dest = self.local_path(volume) self._create_gpfs_clone(src, dest) self._set_rw_permission(dest) virt_size = self._resize_volume_file(volume, volume['size']) return {'size': math.ceil(virt_size / units.GiB)} def _delete_gpfs_file(self, fchild): """Delete a GPFS file and cleanup clone children.""" if not os.path.exists(fchild): return (out, err) = self._execute('mmclone', 'show', fchild, run_as_root=True) fparent = None inode_regex = re.compile( r'.*\s+(?:yes|no)\s+\d+\s+(?P\d+)', re.M | re.S) match = inode_regex.match(out) if match: inode = match.group('inode') path = os.path.dirname(fchild) (out, err) = self._execute('find', path, '-maxdepth', '1', '-inum', inode, run_as_root=True) if out: fparent = out.split('\n', 1)[0] self._execute( 'rm', '-f', fchild, check_exit_code=False, run_as_root=True) # There is no need to check for volume references on this snapshot # because 'rm -f' itself serves as a simple and implicit check. If the # parent is referenced by another volume, GPFS doesn't allow deleting # it. 'rm -f' silently fails and the subsequent check on the path # indicates whether there are any volumes derived from that snapshot. # If there are such volumes, we quit recursion and let the other # volumes delete the snapshot later. If there are no references, rm # would succeed and the snapshot is deleted. if not os.path.exists(fchild) and fparent: fpbase = os.path.basename(fparent) if fpbase.endswith('.snap') or fpbase.endswith('.ts'): self._delete_gpfs_file(fparent) def delete_volume(self, volume): """Deletes a logical volume.""" # Check if GPFS is mounted self._verify_gpfs_path_state(self.configuration.gpfs_mount_point_base) volume_path = self.local_path(volume) self._delete_gpfs_file(volume_path) def _gpfs_redirect(self, src): """Removes the copy_on_write dependency between src and parent. Remove the copy_on_write dependency between the src file and its immediate parent such that the length of dependency chain is reduced by 1. """ max_depth = self.configuration.gpfs_max_clone_depth if max_depth == 0: return False (out, err) = self._execute('mmclone', 'show', src, run_as_root=True) depth_regex = re.compile(r'.*\s+no\s+(?P\d+)', re.M | re.S) match = depth_regex.match(out) if match: depth = int(match.group('depth')) if depth > max_depth: self._execute('mmclone', 'redirect', src, run_as_root=True) return True return False def _create_gpfs_clone(self, src, dest): """Create a GPFS file clone parent for the specified file.""" snap = dest + ".snap" self._create_gpfs_snap(src, snap) self._create_gpfs_copy(snap, dest) if self._gpfs_redirect(src) and self._gpfs_redirect(dest): self._execute('rm', '-f', snap, run_as_root=True) def _create_gpfs_copy(self, src, dest): """Create a GPFS file clone copy for the specified file.""" self._execute('mmclone', 'copy', src, dest, run_as_root=True) def _create_gpfs_snap(self, src, dest=None): """Create a GPFS file clone snapshot for the specified file.""" if dest is None: self._execute('mmclone', 'snap', src, run_as_root=True) else: self._execute('mmclone', 'snap', src, dest, run_as_root=True) def _is_gpfs_parent_file(self, gpfs_file): """Return true if the specified file is a gpfs clone parent.""" out, err = self._execute('mmclone', 'show', gpfs_file, run_as_root=True) ptoken = out.splitlines().pop().split()[0] return ptoken == 'yes' def create_snapshot(self, snapshot): """Creates a GPFS snapshot.""" snapshot_path = self.local_path(snapshot) volume_path = os.path.join(self.configuration.gpfs_mount_point_base, snapshot['volume_name']) self._create_gpfs_snap(src=volume_path, dest=snapshot_path) self._set_rw_permission(snapshot_path, modebits='640') self._gpfs_redirect(volume_path) def delete_snapshot(self, snapshot): """Deletes a GPFS snapshot.""" # Rename the deleted snapshot to indicate it no longer exists in # cinder db. Attempt to delete the snapshot. If the snapshot has # clone children, the delete will fail silently. When volumes that # are clone children are deleted in the future, the remaining ts # snapshots will also be deleted. snapshot_path = self.local_path(snapshot) snapshot_ts_path = '%s.ts' % snapshot_path self._execute('mv', snapshot_path, snapshot_ts_path, run_as_root=True) self._execute('rm', '-f', snapshot_ts_path, check_exit_code=False, run_as_root=True) def local_path(self, volume): """Return the local path for the specified volume.""" return os.path.join(self.configuration.gpfs_mount_point_base, volume['name']) def ensure_export(self, context, volume): """Synchronously recreates an export for a logical volume.""" pass def create_export(self, context, volume): """Exports the volume.""" pass def remove_export(self, context, volume): """Removes an export for a logical volume.""" pass def initialize_connection(self, volume, connector): return { 'driver_volume_type': 'local', 'data': { 'name': volume['name'], 'device_path': self.local_path(volume), } } def terminate_connection(self, volume, connector, **kwargs): pass def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, or stats have never been updated, run update the stats first. """ if not self._stats or refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug("Updating volume stats.") gpfs_base = self.configuration.gpfs_mount_point_base data = {} backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or 'GPFS' data["vendor_name"] = 'IBM' data["driver_version"] = self.VERSION data["storage_protocol"] = 'file' free, capacity = self._get_available_capacity(self.configuration. gpfs_mount_point_base) data['total_capacity_gb'] = math.ceil(capacity / units.GiB) data['free_capacity_gb'] = math.ceil(free / units.GiB) data['reserved_percentage'] = 0 data['QoS_support'] = False data['storage_pool'] = self._storage_pool data['location_info'] = ('GPFSDriver:%(cluster_id)s:%(root_path)s' % {'cluster_id': self._cluster_id, 'root_path': gpfs_base}) data['reserved_percentage'] = 0 self._stats = data def clone_image(self, volume, image_location, image_id, image_meta): """Create a volume from the specified image.""" return self._clone_image(volume, image_location, image_id) def _is_cloneable(self, image_id): """Return true if the specified image can be cloned by GPFS.""" if not((self.configuration.gpfs_images_dir and self.configuration.gpfs_images_share_mode)): reason = 'glance repository not configured to use GPFS' return False, reason, None image_path = os.path.join(self.configuration.gpfs_images_dir, image_id) try: self._is_gpfs_path(image_path) except processutils.ProcessExecutionError: reason = 'image file not in GPFS' return False, reason, None return True, None, image_path def _clone_image(self, volume, image_location, image_id): """Attempt to create a volume by efficiently copying image to volume. If both source and target are backed by gpfs storage and the source image is in raw format move the image to create a volume using either gpfs clone operation or with a file copy. If the image format is not raw, convert it to raw at the volume path. """ # Check if GPFS is mounted self._verify_gpfs_path_state(self.configuration.gpfs_mount_point_base) cloneable_image, reason, image_path = self._is_cloneable(image_id) if not cloneable_image: LOG.debug('Image %(img)s not cloneable: %(reas)s.' % {'img': image_id, 'reas': reason}) return (None, False) vol_path = self.local_path(volume) # if the image is not already a GPFS snap file make it so if not self._is_gpfs_parent_file(image_path): self._create_gpfs_snap(image_path) data = image_utils.qemu_img_info(image_path) # if image format is already raw either clone it or # copy it depending on config file settings if data.file_format == 'raw': if (self.configuration.gpfs_images_share_mode == 'copy_on_write'): LOG.debug('Clone image to vol %s using mmclone.' % volume['id']) self._create_gpfs_copy(image_path, vol_path) elif self.configuration.gpfs_images_share_mode == 'copy': LOG.debug('Clone image to vol %s using copyfile.' % volume['id']) shutil.copyfile(image_path, vol_path) # if image is not raw convert it to raw into vol_path destination else: LOG.debug('Clone image to vol %s using qemu convert.' % volume['id']) image_utils.convert_image(image_path, vol_path, 'raw') self._set_rw_permission(vol_path) self._resize_volume_file(volume, volume['size']) return {'provider_location': None}, True def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume. Note that cinder.volume.flows.create_volume will attempt to use clone_image to efficiently create volume from image when both source and target are backed by gpfs storage. If that is not the case, this function is invoked and uses fetch_to_raw to create the volume. """ # Check if GPFS is mounted self._verify_gpfs_path_state(self.configuration.gpfs_mount_point_base) LOG.debug('Copy image to vol %s using image_utils fetch_to_raw.' % volume['id']) image_utils.fetch_to_raw(context, image_service, image_id, self.local_path(volume), self.configuration.volume_dd_blocksize, size=volume['size']) self._resize_volume_file(volume, volume['size']) def _resize_volume_file(self, volume, new_size): """Resize volume file to new size.""" vol_path = self.local_path(volume) try: image_utils.resize_image(vol_path, new_size, run_as_root=True) except processutils.ProcessExecutionError as exc: LOG.error(_("Failed to resize volume " "%(volume_id)s, error: %(error)s.") % {'volume_id': volume['id'], 'error': exc.stderr}) raise exception.VolumeBackendAPIException(data=exc.stderr) data = image_utils.qemu_img_info(vol_path) return data.virtual_size def extend_volume(self, volume, new_size): """Extend an existing volume.""" self._resize_volume_file(volume, new_size) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" image_utils.upload_volume(context, image_service, image_meta, self.local_path(volume)) def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" volume = self.db.volume_get(context, backup['volume_id']) volume_path = self.local_path(volume) LOG.debug(_('Begin backup of volume %s.') % volume['name']) # create a snapshot that will be used as the backup source backup_path = '%s_%s' % (volume_path, backup['id']) self._create_gpfs_clone(volume_path, backup_path) self._gpfs_redirect(volume_path) try: with utils.temporary_chown(backup_path): with fileutils.file_open(backup_path) as backup_file: backup_service.backup(backup, backup_file) finally: # clean up snapshot file. If it is a clone parent, delete # will fail silently, but be cleaned up when volume is # eventually removed. This ensures we do not accumulate # more than gpfs_max_clone_depth snap files. self._delete_gpfs_file(backup_path) def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" LOG.debug(_('Begin restore of backup %s.') % backup['id']) volume_path = self.local_path(volume) with utils.temporary_chown(volume_path): with fileutils.file_open(volume_path, 'wb') as volume_file: backup_service.restore(backup, volume['id'], volume_file) def _migrate_volume(self, volume, host): """Migrate vol if source and dest are managed by same GPFS cluster.""" LOG.debug('Migrate volume request %(vol)s to %(host)s.' % {'vol': volume['name'], 'host': host['host']}) dest_path = self._can_migrate_locally(host) if dest_path is None: LOG.debug('Cannot migrate volume locally, use generic migration.') return (False, None) if dest_path == self.configuration.gpfs_mount_point_base: LOG.debug('Migration target is same cluster and path, ' 'no work needed.') return (True, None) LOG.debug('Migration target is same cluster but different path, ' 'move the volume file.') local_path = self.local_path(volume) new_path = os.path.join(dest_path, volume['name']) try: self._execute('mv', local_path, new_path, run_as_root=True) return (True, None) except processutils.ProcessExecutionError as exc: LOG.error(_('Driver-based migration of volume %(vol)s failed. ' 'Move from %(src)s to %(dst)s failed with error: ' '%(error)s.') % {'vol': volume['name'], 'src': local_path, 'dst': new_path, 'error': exc.stderr}) return (False, None) def migrate_volume(self, context, volume, host): """Attempt to migrate a volume to specified host.""" return self._migrate_volume(volume, host) def retype(self, context, volume, new_type, diff, host): """Modify volume to be of new type.""" LOG.debug('Retype volume request %(vol)s to be %(type)s ' '(host: %(host)s), diff %(diff)s.' % {'vol': volume['name'], 'type': new_type, 'host': host, 'diff': diff}) retyped = False migrated = False pools = diff['extra_specs'].get('capabilities:storage_pool') backends = diff['extra_specs'].get('volume_backend_name') hosts = (volume['host'], host['host']) # if different backends let migration create a new volume and copy # data because the volume is considered to be substantially different if _different(backends): LOG.debug('Retype request is for different backends, ' 'use migration: %s %s.' % backends) return False if _different(pools): old, new = pools LOG.debug('Retype pool attribute from %s to %s.' % pools) retyped = self._update_volume_storage_pool(self.local_path(volume), new) if _different(hosts): LOG.debug('Retype hosts migrate from: %s to %s.' % hosts) migrated, mdl_update = self._migrate_volume(volume, host) if migrated: updates = {'host': host['host']} self.db.volume_update(context, volume['id'], updates) return retyped or migrated def _mkfs(self, volume, filesystem, label=None): """Initialize volume to be specified filesystem type.""" if filesystem == 'swap': cmd = ['mkswap'] else: cmd = ['mkfs', '-t', filesystem] if filesystem in ('ext3', 'ext4'): cmd.append('-F') if label: if filesystem in ('msdos', 'vfat'): label_opt = '-n' else: label_opt = '-L' cmd.extend([label_opt, label]) path = self.local_path(volume) cmd.append(path) try: self._execute(*cmd, run_as_root=True) except processutils.ProcessExecutionError as exc: exception_message = (_("mkfs failed on volume %(vol)s, " "error message was: %(err)s.") % {'vol': volume['name'], 'err': exc.stderr}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) def _get_available_capacity(self, path): """Calculate available space on path.""" # Check if GPFS is mounted try: self._verify_gpfs_path_state(path) mounted = True except exception.VolumeBackendAPIException: mounted = False # If GPFS is not mounted, return zero capacity. So that the volume # request can be scheduled to another volume service. if not mounted: return 0, 0 out, err = self._execute('df', '-P', '-B', '1', path, run_as_root=True) out = out.splitlines()[1] size = int(out.split()[1]) available = int(out.split()[3]) return available, size def _verify_gpfs_path_state(self, path): """Examine if GPFS is active and file system is mounted or not.""" try: self._is_gpfs_path(path) except processutils.ProcessExecutionError: msg = (_('%s cannot be accessed. Verify that GPFS is active and ' 'file system is mounted.') % path) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) cinder-2014.1.5/cinder/volume/drivers/ibm/storwize_svc/0000775000567000056700000000000012540643114024111 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/ibm/storwize_svc/helpers.py0000664000567000056700000007720212540642606026142 0ustar jenkinsjenkins00000000000000# Copyright 2014 IBM Corp. # All Rights Reserved. # # 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. # import random import re import six import unicodedata from eventlet import greenthread from cinder import context from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder.openstack.common import strutils from cinder import utils from cinder.volume.drivers.ibm.storwize_svc import ssh as storwize_ssh from cinder.volume import volume_types LOG = logging.getLogger(__name__) class StorwizeHelpers(object): def __init__(self, run_ssh): self.ssh = storwize_ssh.StorwizeSSH(run_ssh) self.check_fcmapping_interval = 3 @staticmethod def handle_keyerror(cmd, out): msg = (_('Could not find key in output of command %(cmd)s: %(out)s') % {'out': out, 'cmd': cmd}) raise exception.VolumeBackendAPIException(data=msg) def compression_enabled(self): """Return whether or not compression is enabled for this system.""" resp = self.ssh.lslicense() keys = ['license_compression_enclosures', 'license_compression_capacity'] for key in keys: if resp.get(key, '0') != '0': return True return False def get_system_info(self): """Return system's name, ID, and code level.""" resp = self.ssh.lssystem() level = resp['code_level'] match_obj = re.search('([0-9].){3}[0-9]', level) if match_obj is None: msg = _('Failed to get code level (%s).') % level raise exception.VolumeBackendAPIException(data=msg) code_level = match_obj.group().split('.') return {'code_level': tuple([int(x) for x in code_level]), 'system_name': resp['name'], 'system_id': resp['id']} def get_pool_attrs(self, pool): """Return attributes for the specified pool.""" return self.ssh.lsmdiskgrp(pool) def get_available_io_groups(self): """Return list of available IO groups.""" iogrps = [] resp = self.ssh.lsiogrp() for iogrp in resp: try: if int(iogrp['node_count']) > 0: iogrps.append(int(iogrp['id'])) except KeyError: self.handle_keyerror('lsiogrp', iogrp) except ValueError: msg = (_('Expected integer for node_count, ' 'svcinfo lsiogrp returned: %(node)s') % {'node': iogrp['node_count']}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) return iogrps def get_node_info(self): """Return dictionary containing information on system's nodes.""" nodes = {} resp = self.ssh.lsnode() for node_data in resp: try: if node_data['status'] != 'online': continue node = {} node['id'] = node_data['id'] node['name'] = node_data['name'] node['IO_group'] = node_data['IO_group_id'] node['iscsi_name'] = node_data['iscsi_name'] node['WWNN'] = node_data['WWNN'] node['status'] = node_data['status'] node['WWPN'] = [] node['ipv4'] = [] node['ipv6'] = [] node['enabled_protocols'] = [] nodes[node['id']] = node except KeyError: self.handle_keyerror('lsnode', node_data) return nodes def add_iscsi_ip_addrs(self, storage_nodes): """Add iSCSI IP addresses to system node information.""" resp = self.ssh.lsportip() for ip_data in resp: try: state = ip_data['state'] if ip_data['node_id'] in storage_nodes and ( state == 'configured' or state == 'online'): node = storage_nodes[ip_data['node_id']] if len(ip_data['IP_address']): node['ipv4'].append(ip_data['IP_address']) if len(ip_data['IP_address_6']): node['ipv6'].append(ip_data['IP_address_6']) except KeyError: self.handle_keyerror('lsportip', ip_data) def add_fc_wwpns(self, storage_nodes): """Add FC WWPNs to system node information.""" for key in storage_nodes: node = storage_nodes[key] resp = self.ssh.lsnode(node_id=node['id']) wwpns = set(node['WWPN']) for i, s in resp.select('port_id', 'port_status'): if 'unconfigured' != s: wwpns.add(i) node['WWPN'] = list(wwpns) LOG.info(_('WWPN on node %(node)s: %(wwpn)s') % {'node': node['id'], 'wwpn': node['WWPN']}) def add_chap_secret_to_host(self, host_name): """Generate and store a randomly-generated CHAP secret for the host.""" chap_secret = utils.generate_password() self.ssh.add_chap_secret(chap_secret, host_name) return chap_secret def get_chap_secret_for_host(self, host_name): """Generate and store a randomly-generated CHAP secret for the host.""" resp = self.ssh.lsiscsiauth() host_found = False for host_data in resp: try: if host_data['name'] == host_name: host_found = True if host_data['iscsi_auth_method'] == 'chap': return host_data['iscsi_chap_secret'] except KeyError: self.handle_keyerror('lsiscsiauth', host_data) if not host_found: msg = _('Failed to find host %s') % host_name raise exception.VolumeBackendAPIException(data=msg) return None def get_conn_fc_wwpns(self, host): wwpns = set() resp = self.ssh.lsfabric(host=host) for wwpn in resp.select('local_wwpn'): if wwpn is not None: wwpns.add(wwpn) return list(wwpns) def get_host_from_connector(self, connector): """Return the Storwize host described by the connector.""" LOG.debug(_('enter: get_host_from_connector: %s') % connector) # If we have FC information, we have a faster lookup option host_name = None if 'wwpns' in connector: for wwpn in connector['wwpns']: resp = self.ssh.lsfabric(wwpn=wwpn) for wwpn_info in resp: try: if (wwpn_info['remote_wwpn'] and wwpn_info['name'] and wwpn_info['remote_wwpn'].lower() == wwpn.lower()): host_name = wwpn_info['name'] except KeyError: self.handle_keyerror('lsfabric', wwpn_info) # That didn't work, so try exhaustive search if host_name is None: hosts_info = self.ssh.lshost() for name in hosts_info.select('name'): resp = self.ssh.lshost(host=name) for iscsi, wwpn in resp.select('iscsi_name', 'WWPN'): if ('initiator' in connector and iscsi == connector['initiator']): host_name = name elif ('wwpns' in connector and len(connector['wwpns']) and wwpn and wwpn.lower() in [str(x).lower() for x in connector['wwpns']]): host_name = name LOG.debug(_('leave: get_host_from_connector: host %s') % host_name) return host_name def create_host(self, connector): """Create a new host on the storage system. We create a host name and associate it with the given connection information. The host name will be a cleaned up version of the given host name (at most 55 characters), plus a random 8-character suffix to avoid collisions. The total length should be at most 63 characters. """ LOG.debug(_('enter: create_host: host %s') % connector['host']) # Before we start, make sure host name is a string and that we have at # least one port. host_name = connector['host'] if not isinstance(host_name, six.string_types): msg = _('create_host: Host name is not unicode or string') LOG.error(msg) raise exception.VolumeDriverException(message=msg) ports = [] if 'initiator' in connector: ports.append(['initiator', '%s' % connector['initiator']]) if 'wwpns' in connector: for wwpn in connector['wwpns']: ports.append(['wwpn', '%s' % wwpn]) if not len(ports): msg = _('create_host: No initiators or wwpns supplied.') LOG.error(msg) raise exception.VolumeDriverException(message=msg) # Build a host name for the Storwize host - first clean up the name if isinstance(host_name, unicode): host_name = unicodedata.normalize('NFKD', host_name).encode( 'ascii', 'replace').decode('ascii') for num in range(0, 128): ch = str(chr(num)) if not ch.isalnum() and ch not in [' ', '.', '-', '_']: host_name = host_name.replace(ch, '-') # Storwize doesn't like hostname that doesn't starts with letter or _. if not re.match('^[A-Za-z]', host_name): host_name = '_' + host_name # Add a random 8-character suffix to avoid collisions rand_id = str(random.randint(0, 99999999)).zfill(8) host_name = '%s-%s' % (host_name[:55], rand_id) # Create a host with one port port = ports.pop(0) self.ssh.mkhost(host_name, port[0], port[1]) # Add any additional ports to the host for port in ports: self.ssh.addhostport(host_name, port[0], port[1]) LOG.debug(_('leave: create_host: host %(host)s - %(host_name)s') % {'host': connector['host'], 'host_name': host_name}) return host_name def delete_host(self, host_name): self.ssh.rmhost(host_name) def map_vol_to_host(self, volume_name, host_name, multihostmap): """Create a mapping between a volume to a host.""" LOG.debug(_('enter: map_vol_to_host: volume %(volume_name)s to ' 'host %(host_name)s') % {'volume_name': volume_name, 'host_name': host_name}) # Check if this volume is already mapped to this host mapped = False luns_used = [] result_lun = '-1' resp = self.ssh.lshostvdiskmap(host_name) for mapping_info in resp: luns_used.append(int(mapping_info['SCSI_id'])) if mapping_info['vdisk_name'] == volume_name: mapped = True result_lun = mapping_info['SCSI_id'] if not mapped: # Find unused lun luns_used.sort() result_lun = str(len(luns_used)) for index, n in enumerate(luns_used): if n > index: result_lun = str(index) break self.ssh.mkvdiskhostmap(host_name, volume_name, result_lun, multihostmap) LOG.debug(_('leave: map_vol_to_host: LUN %(result_lun)s, volume ' '%(volume_name)s, host %(host_name)s') % {'result_lun': result_lun, 'volume_name': volume_name, 'host_name': host_name}) return int(result_lun) def unmap_vol_from_host(self, volume_name, host_name): """Unmap the volume and delete the host if it has no more mappings.""" LOG.debug(_('enter: unmap_vol_from_host: volume %(volume_name)s from ' 'host %(host_name)s') % {'volume_name': volume_name, 'host_name': host_name}) # Check if the mapping exists resp = self.ssh.lsvdiskhostmap(volume_name) if not len(resp): LOG.warning(_('unmap_vol_from_host: No mapping of volume ' '%(vol_name)s to any host found.') % {'vol_name': volume_name}) return if host_name is None: if len(resp) > 1: LOG.warning(_('unmap_vol_from_host: Multiple mappings of ' 'volume %(vol_name)s found, no host ' 'specified.') % {'vol_name': volume_name}) return else: host_name = resp[0]['host_name'] else: found = False for h in resp.select('host_name'): if h == host_name: found = True if not found: LOG.warning(_('unmap_vol_from_host: No mapping of volume ' '%(vol_name)s to host %(host)s found.') % {'vol_name': volume_name, 'host': host_name}) # We now know that the mapping exists self.ssh.rmvdiskhostmap(host_name, volume_name) # If this host has no more mappings, delete it resp = self.ssh.lshostvdiskmap(host_name) if not len(resp): self.delete_host(host_name) LOG.debug(_('leave: unmap_vol_from_host: volume %(volume_name)s from ' 'host %(host_name)s') % {'volume_name': volume_name, 'host_name': host_name}) @staticmethod def build_default_opts(config): # Ignore capitalization protocol = config.storwize_svc_connection_protocol if protocol.lower() == 'fc': protocol = 'FC' elif protocol.lower() == 'iscsi': protocol = 'iSCSI' opt = {'rsize': config.storwize_svc_vol_rsize, 'warning': config.storwize_svc_vol_warning, 'autoexpand': config.storwize_svc_vol_autoexpand, 'grainsize': config.storwize_svc_vol_grainsize, 'compression': config.storwize_svc_vol_compression, 'easytier': config.storwize_svc_vol_easytier, 'protocol': protocol, 'multipath': config.storwize_svc_multipath_enabled, 'iogrp': config.storwize_svc_vol_iogrp} return opt @staticmethod def check_vdisk_opts(state, opts): # Check that rsize is either -1 or between 0 and 100 if not (opts['rsize'] >= -1 and opts['rsize'] <= 100): raise exception.InvalidInput( reason=_('Illegal value specified for storwize_svc_vol_rsize: ' 'set to either a percentage (0-100) or -1')) # Check that warning is either -1 or between 0 and 100 if not (opts['warning'] >= -1 and opts['warning'] <= 100): raise exception.InvalidInput( reason=_('Illegal value specified for ' 'storwize_svc_vol_warning: ' 'set to a percentage (0-100)')) # Check that grainsize is 32/64/128/256 if opts['grainsize'] not in [32, 64, 128, 256]: raise exception.InvalidInput( reason=_('Illegal value specified for ' 'storwize_svc_vol_grainsize: set to either ' '32, 64, 128, or 256')) # Check that compression is supported if opts['compression'] and not state['compression_enabled']: raise exception.InvalidInput( reason=_('System does not support compression')) # Check that rsize is set if compression is set if opts['compression'] and opts['rsize'] == -1: raise exception.InvalidInput( reason=_('If compression is set to True, rsize must ' 'also be set (not equal to -1)')) # Check that the requested protocol is enabled if opts['protocol'] not in state['enabled_protocols']: raise exception.InvalidInput( reason=_('Illegal value %(prot)s specified for ' 'storwize_svc_connection_protocol: ' 'valid values are %(enabled)s') % {'prot': opts['protocol'], 'enabled': ','.join(state['enabled_protocols'])}) if opts['iogrp'] not in state['available_iogrps']: avail_grps = ''.join(str(e) for e in state['available_iogrps']) raise exception.InvalidInput( reason=_('I/O group %(iogrp)d is not valid; available ' 'I/O groups are %(avail)s') % {'iogrp': opts['iogrp'], 'avail': avail_grps}) def get_vdisk_params(self, config, state, type_id, volume_type=None): """Return the parameters for creating the vdisk. Takes volume type and defaults from config options into account. """ opts = self.build_default_opts(config) if volume_type is None and type_id is not None: ctxt = context.get_admin_context() volume_type = volume_types.get_volume_type(ctxt, type_id) if volume_type: specs = dict(volume_type).get('extra_specs') for k, value in specs.iteritems(): # Get the scope, if using scope format key_split = k.split(':') if len(key_split) == 1: scope = None key = key_split[0] else: scope = key_split[0] key = key_split[1] # We generally do not look at capabilities in the driver, but # protocol is a special case where the user asks for a given # protocol and we want both the scheduler and the driver to act # on the value. if ((not scope or scope == 'capabilities') and key == 'storage_protocol'): scope = None key = 'protocol' words = value.split() if not (words and len(words) == 2 and words[0] == ''): LOG.error(_('Protocol must be specified as ' '\' iSCSI\' or \' FC\'.')) del words[0] value = words[0] # Any keys that the driver should look at should have the # 'drivers' scope. if scope and scope != 'drivers': continue if key in opts: this_type = type(opts[key]).__name__ if this_type == 'int': value = int(value) elif this_type == 'bool': value = strutils.bool_from_string(value) opts[key] = value self.check_vdisk_opts(state, opts) return opts @staticmethod def _get_vdisk_create_params(opts): easytier = 'on' if opts['easytier'] else 'off' if opts['rsize'] == -1: params = [] else: params = ['-rsize', '%s%%' % str(opts['rsize']), '-autoexpand', '-warning', '%s%%' % str(opts['warning'])] if not opts['autoexpand']: params.remove('-autoexpand') if opts['compression']: params.append('-compressed') else: params.extend(['-grainsize', str(opts['grainsize'])]) params.extend(['-easytier', easytier]) return params def create_vdisk(self, name, size, units, pool, opts): LOG.debug(_('enter: create_vdisk: vdisk %s ') % name) params = self._get_vdisk_create_params(opts) self.ssh.mkvdisk(name, size, units, pool, opts, params) LOG.debug(_('leave: _create_vdisk: volume %s ') % name) def get_vdisk_attributes(self, vdisk): attrs = self.ssh.lsvdisk(vdisk) return attrs def is_vdisk_defined(self, vdisk_name): """Check if vdisk is defined.""" attrs = self.get_vdisk_attributes(vdisk_name) return attrs is not None def _prepare_fc_map(self, fc_map_id, timeout): self.ssh.prestartfcmap(fc_map_id) mapping_ready = False wait_time = 5 max_retries = (timeout / wait_time) + 1 for try_number in range(1, max_retries): mapping_attrs = self._get_flashcopy_mapping_attributes(fc_map_id) if (mapping_attrs is None or 'status' not in mapping_attrs): break if mapping_attrs['status'] == 'prepared': mapping_ready = True break elif mapping_attrs['status'] == 'stopped': self.ssh.prestartfcmap(fc_map_id) elif mapping_attrs['status'] != 'preparing': msg = (_('Unexecpted mapping status %(status)s for mapping' '%(id)s. Attributes: %(attr)s') % {'status': mapping_attrs['status'], 'id': fc_map_id, 'attr': mapping_attrs}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) greenthread.sleep(wait_time) if not mapping_ready: msg = (_('Mapping %(id)s prepare failed to complete within the' 'allotted %(to)d seconds timeout. Terminating.') % {'id': fc_map_id, 'to': timeout}) LOG.error(msg) raise exception.VolumeDriverException(message=msg) def run_flashcopy(self, source, target, timeout, full_copy=True): """Create a FlashCopy mapping from the source to the target.""" LOG.debug(_('enter: run_flashcopy: execute FlashCopy from source ' '%(source)s to target %(target)s') % {'source': source, 'target': target}) fc_map_id = self.ssh.mkfcmap(source, target, full_copy) self._prepare_fc_map(fc_map_id, timeout) self.ssh.startfcmap(fc_map_id) LOG.debug(_('leave: run_flashcopy: FlashCopy started from ' '%(source)s to %(target)s') % {'source': source, 'target': target}) def _get_vdisk_fc_mappings(self, vdisk): """Return FlashCopy mappings that this vdisk is associated with.""" mapping_ids = [] resp = self.ssh.lsvdiskfcmappings(vdisk) for id in resp.select('id'): mapping_ids.append(id) return mapping_ids def _get_flashcopy_mapping_attributes(self, fc_map_id): resp = self.ssh.lsfcmap(fc_map_id) if not len(resp): return None return resp[0] def _check_vdisk_fc_mappings(self, name, allow_snaps=True): """FlashCopy mapping check helper.""" LOG.debug(_('Loopcall: _check_vdisk_fc_mappings(), vdisk %s') % name) mapping_ids = self._get_vdisk_fc_mappings(name) wait_for_copy = False for map_id in mapping_ids: attrs = self._get_flashcopy_mapping_attributes(map_id) if not attrs: continue source = attrs['source_vdisk_name'] target = attrs['target_vdisk_name'] copy_rate = attrs['copy_rate'] status = attrs['status'] if copy_rate == '0': if source == name: # Vdisk with snapshots. Return False if snapshot # not allowed. if not allow_snaps: raise loopingcall.LoopingCallDone(retvalue=False) self.ssh.chfcmap(map_id, copyrate='50', autodel='on') wait_for_copy = True else: # A snapshot if target != name: msg = (_('Vdisk %(name)s not involved in ' 'mapping %(src)s -> %(tgt)s') % {'name': name, 'src': source, 'tgt': target}) LOG.error(msg) raise exception.VolumeDriverException(message=msg) if status in ['copying', 'prepared']: self.ssh.stopfcmap(map_id) # Need to wait for the fcmap to change to # stopped state before remove fcmap wait_for_copy = True elif status in ['stopping', 'preparing']: wait_for_copy = True else: self.ssh.rmfcmap(map_id) # Case 4: Copy in progress - wait and will autodelete else: if status == 'prepared': self.ssh.stopfcmap(map_id) self.ssh.rmfcmap(map_id) elif status == 'idle_or_copied': # Prepare failed self.ssh.rmfcmap(map_id) else: wait_for_copy = True if not wait_for_copy or not len(mapping_ids): raise loopingcall.LoopingCallDone(retvalue=True) def ensure_vdisk_no_fc_mappings(self, name, allow_snaps=True): """Ensure vdisk has no flashcopy mappings.""" timer = loopingcall.FixedIntervalLoopingCall( self._check_vdisk_fc_mappings, name, allow_snaps) # Create a timer greenthread. The default volume service heart # beat is every 10 seconds. The flashcopy usually takes hours # before it finishes. Don't set the sleep interval shorter # than the heartbeat. Otherwise volume service heartbeat # will not be serviced. LOG.debug(_('Calling _ensure_vdisk_no_fc_mappings: vdisk %s') % name) ret = timer.start(interval=self.check_fcmapping_interval).wait() timer.stop() return ret def delete_vdisk(self, vdisk, force): """Ensures that vdisk is not part of FC mapping and deletes it.""" LOG.debug(_('enter: delete_vdisk: vdisk %s') % vdisk) if not self.is_vdisk_defined(vdisk): LOG.info(_('Tried to delete non-existant vdisk %s.') % vdisk) return self.ensure_vdisk_no_fc_mappings(vdisk) self.ssh.rmvdisk(vdisk, force=force) LOG.debug(_('leave: delete_vdisk: vdisk %s') % vdisk) def create_copy(self, src, tgt, src_id, config, opts, full_copy): """Create a new snapshot using FlashCopy.""" LOG.debug(_('enter: create_copy: snapshot %(src)s to %(tgt)s') % {'tgt': tgt, 'src': src}) src_attrs = self.get_vdisk_attributes(src) if src_attrs is None: msg = (_('create_copy: Source vdisk %(src)s (%(src_id)s) ' 'does not exist') % {'src': src, 'src_id': src_id}) LOG.error(msg) raise exception.VolumeDriverException(message=msg) src_size = src_attrs['capacity'] pool = config.storwize_svc_volpool_name self.create_vdisk(tgt, src_size, 'b', pool, opts) timeout = config.storwize_svc_flashcopy_timeout try: self.run_flashcopy(src, tgt, timeout, full_copy=full_copy) except Exception: with excutils.save_and_reraise_exception(): self.delete_vdisk(tgt, True) LOG.debug(_('leave: _create_copy: snapshot %(tgt)s from ' 'vdisk %(src)s') % {'tgt': tgt, 'src': src}) def extend_vdisk(self, vdisk, amount): self.ssh.expandvdisksize(vdisk, amount) def add_vdisk_copy(self, vdisk, dest_pool, volume_type, state, config): """Add a vdisk copy in the given pool.""" resp = self.ssh.lsvdiskcopy(vdisk) if len(resp) > 1: msg = (_('add_vdisk_copy failed: A copy of volume %s exists. ' 'Adding another copy would exceed the limit of ' '2 copies.') % vdisk) raise exception.VolumeDriverException(message=msg) orig_copy_id = resp[0].get("copy_id", None) if orig_copy_id is None: msg = (_('add_vdisk_copy started without a vdisk copy in the ' 'expected pool.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) if volume_type is None: opts = self.get_vdisk_params(config, state, None) else: opts = self.get_vdisk_params(config, state, volume_type['id'], volume_type=volume_type) params = self._get_vdisk_create_params(opts) new_copy_id = self.ssh.addvdiskcopy(vdisk, dest_pool, params) return (orig_copy_id, new_copy_id) def is_vdisk_copy_synced(self, vdisk, copy_id): sync = self.ssh.lsvdiskcopy(vdisk, copy_id=copy_id)[0]['sync'] if sync == 'yes': return True return False def rm_vdisk_copy(self, vdisk, copy_id): self.ssh.rmvdiskcopy(vdisk, copy_id) @staticmethod def can_migrate_to_host(host, state): if 'location_info' not in host['capabilities']: return None info = host['capabilities']['location_info'] try: (dest_type, dest_id, dest_pool) = info.split(':') except ValueError: return None if (dest_type != 'StorwizeSVCDriver' or dest_id != state['system_id']): return None return dest_pool def change_vdisk_options(self, vdisk, changes, opts, state): if 'warning' in opts: opts['warning'] = '%s%%' % str(opts['warning']) if 'easytier' in opts: opts['easytier'] = 'on' if opts['easytier'] else 'off' if 'autoexpand' in opts: opts['autoexpand'] = 'on' if opts['autoexpand'] else 'off' for key in changes: self.ssh.chvdisk(vdisk, ['-' + key, opts[key]]) def change_vdisk_iogrp(self, vdisk, state, iogrp): if state['code_level'] < (6, 4, 0, 0): LOG.debug(_('Ignore change IO group as storage code level is ' '%(code_level)s, below the required 6.4.0.0') % {'code_level': state['code_level']}) else: self.ssh.movevdisk(vdisk, str(iogrp[0])) self.ssh.addvdiskaccess(vdisk, str(iogrp[0])) self.ssh.rmvdiskaccess(vdisk, str(iogrp[1])) def vdisk_by_uid(self, vdisk_uid): """Returns the properties of the vdisk with the specified UID. Returns None if no such disk exists. """ vdisks = self.ssh.lsvdisks_from_filter('vdisk_UID', vdisk_uid) if len(vdisks) == 0: return None if len(vdisks) != 1: msg = (_('Expected single vdisk returned from lsvdisk when ' 'filtering on vdisk_UID. %{count}s were returned.') % {'count': len(vdisks)}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) vdisk = vdisks.result[0] return self.ssh.lsvdisk(vdisk['name']) def is_vdisk_in_use(self, vdisk): """Returns True if the specified vdisk is mapped to at least 1 host.""" resp = self.ssh.lsvdiskhostmap(vdisk) return len(resp) != 0 def rename_vdisk(self, vdisk, new_name): self.ssh.chvdisk(vdisk, ['-name', new_name]) cinder-2014.1.5/cinder/volume/drivers/ibm/storwize_svc/ssh.py0000664000567000056700000003763212540642606025300 0ustar jenkinsjenkins00000000000000# Copyright 2014 IBM Corp. # All Rights Reserved. # # 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. # import re from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils LOG = logging.getLogger(__name__) class StorwizeSSH(object): """SSH interface to IBM Storwize family and SVC storage systems.""" def __init__(self, run_ssh): self._ssh = run_ssh def _run_ssh(self, ssh_cmd): try: return self._ssh(ssh_cmd) except processutils.ProcessExecutionError as e: msg = (_('CLI Exception output:\n command: %(cmd)s\n ' 'stdout: %(out)s\n stderr: %(err)s') % {'cmd': ssh_cmd, 'out': e.stdout, 'err': e.stderr}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def run_ssh_info(self, ssh_cmd, delim='!', with_header=False): """Run an SSH command and return parsed output.""" raw = self._run_ssh(ssh_cmd) return CLIResponse(raw, ssh_cmd=ssh_cmd, delim=delim, with_header=with_header) def run_ssh_assert_no_output(self, ssh_cmd): """Run an SSH command and assert no output returned.""" out, err = self._run_ssh(ssh_cmd) if len(out.strip()) != 0: msg = (_('Expected no output from CLI command %(cmd)s, ' 'got %(out)s') % {'cmd': ' '.join(ssh_cmd), 'out': out}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def run_ssh_check_created(self, ssh_cmd): """Run an SSH command and return the ID of the created object.""" out, err = self._run_ssh(ssh_cmd) try: match_obj = re.search(r'\[([0-9]+)\],? successfully created', out) return match_obj.group(1) except (AttributeError, IndexError): msg = (_('Failed to parse CLI output:\n command: %(cmd)s\n ' 'stdout: %(out)s\n stderr: %(err)s') % {'cmd': ssh_cmd, 'out': out, 'err': err}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def lsnode(self, node_id=None): with_header = True ssh_cmd = ['svcinfo', 'lsnode', '-delim', '!'] if node_id: with_header = False ssh_cmd.append(node_id) return self.run_ssh_info(ssh_cmd, with_header=with_header) def lslicense(self): ssh_cmd = ['svcinfo', 'lslicense', '-delim', '!'] return self.run_ssh_info(ssh_cmd)[0] def lssystem(self): ssh_cmd = ['svcinfo', 'lssystem', '-delim', '!'] return self.run_ssh_info(ssh_cmd)[0] def lsmdiskgrp(self, pool): ssh_cmd = ['svcinfo', 'lsmdiskgrp', '-bytes', '-delim', '!', pool] return self.run_ssh_info(ssh_cmd)[0] def lsiogrp(self): ssh_cmd = ['svcinfo', 'lsiogrp', '-delim', '!'] return self.run_ssh_info(ssh_cmd, with_header=True) def lsportip(self): ssh_cmd = ['svcinfo', 'lsportip', '-delim', '!'] return self.run_ssh_info(ssh_cmd, with_header=True) @staticmethod def _create_port_arg(port_type, port_name): if port_type == 'initiator': port = ['-iscsiname'] else: port = ['-hbawwpn'] port.append(port_name) return port def mkhost(self, host_name, port_type, port_name): port = self._create_port_arg(port_type, port_name) ssh_cmd = ['svctask', 'mkhost', '-force'] + port ssh_cmd += ['-name', '"%s"' % host_name] return self.run_ssh_check_created(ssh_cmd) def addhostport(self, host, port_type, port_name): port = self._create_port_arg(port_type, port_name) ssh_cmd = ['svctask', 'addhostport', '-force'] + port + ['"%s"' % host] self.run_ssh_assert_no_output(ssh_cmd) def lshost(self, host=None): with_header = True ssh_cmd = ['svcinfo', 'lshost', '-delim', '!'] if host: with_header = False ssh_cmd.append('"%s"' % host) return self.run_ssh_info(ssh_cmd, with_header=with_header) def add_chap_secret(self, secret, host): ssh_cmd = ['svctask', 'chhost', '-chapsecret', secret, '"%s"' % host] self.run_ssh_assert_no_output(ssh_cmd) def lsiscsiauth(self): ssh_cmd = ['svcinfo', 'lsiscsiauth', '-delim', '!'] return self.run_ssh_info(ssh_cmd, with_header=True) def lsfabric(self, wwpn=None, host=None): ssh_cmd = ['svcinfo', 'lsfabric', '-delim', '!'] if wwpn: ssh_cmd.extend(['-wwpn', wwpn]) elif host: ssh_cmd.extend(['-host', '"%s"' % host]) else: msg = (_('Must pass wwpn or host to lsfabric.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) return self.run_ssh_info(ssh_cmd, with_header=True) def mkvdiskhostmap(self, host, vdisk, lun, multihostmap): """Map vdisk to host. If vdisk already mapped and multihostmap is True, use the force flag. """ ssh_cmd = ['svctask', 'mkvdiskhostmap', '-host', '"%s"' % host, '-scsi', lun, vdisk] out, err = self._ssh(ssh_cmd, check_exit_code=False) if 'successfully created' in out: return if not err: msg = (_('Did not find success message nor error for %(fun)s: ' '%(out)s') % {'out': out, 'fun': ssh_cmd}) raise exception.VolumeBackendAPIException(data=msg) if err.startswith('CMMVC6071E'): if not multihostmap: LOG.error(_('storwize_svc_multihostmap_enabled is set ' 'to False, not allowing multi host mapping.')) msg = 'CMMVC6071E The VDisk-to-host mapping '\ 'was not created because the VDisk is '\ 'already mapped to a host.\n"' raise exception.VolumeDriverException(message=msg) ssh_cmd.insert(ssh_cmd.index('mkvdiskhostmap') + 1, '-force') return self.run_ssh_check_created(ssh_cmd) def rmvdiskhostmap(self, host, vdisk): ssh_cmd = ['svctask', 'rmvdiskhostmap', '-host', '"%s"' % host, vdisk] self.run_ssh_assert_no_output(ssh_cmd) def lsvdiskhostmap(self, vdisk): ssh_cmd = ['svcinfo', 'lsvdiskhostmap', '-delim', '!', vdisk] return self.run_ssh_info(ssh_cmd, with_header=True) def lshostvdiskmap(self, host): ssh_cmd = ['svcinfo', 'lshostvdiskmap', '-delim', '!', '"%s"' % host] return self.run_ssh_info(ssh_cmd, with_header=True) def rmhost(self, host): ssh_cmd = ['svctask', 'rmhost', '"%s"' % host] self.run_ssh_assert_no_output(ssh_cmd) def mkvdisk(self, name, size, units, pool, opts, params): ssh_cmd = ['svctask', 'mkvdisk', '-name', name, '-mdiskgrp', pool, '-iogrp', str(opts['iogrp']), '-size', size, '-unit', units] + params return self.run_ssh_check_created(ssh_cmd) def rmvdisk(self, vdisk, force=True): ssh_cmd = ['svctask', 'rmvdisk'] if force: ssh_cmd += ['-force'] ssh_cmd += [vdisk] self.run_ssh_assert_no_output(ssh_cmd) def lsvdisk(self, vdisk): """Return vdisk attributes or None if it doesn't exist.""" ssh_cmd = ['svcinfo', 'lsvdisk', '-bytes', '-delim', '!', vdisk] out, err = self._ssh(ssh_cmd, check_exit_code=False) if not len(err): return CLIResponse((out, err), ssh_cmd=ssh_cmd, delim='!', with_header=False)[0] if err.startswith('CMMVC5754E'): return None msg = (_('CLI Exception output:\n command: %(cmd)s\n ' 'stdout: %(out)s\n stderr: %(err)s') % {'cmd': ssh_cmd, 'out': out, 'err': err}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def lsvdisks_from_filter(self, filter_name, value): """Performs an lsvdisk command, filtering the results as specified. Returns an iterable for all matching vdisks. """ ssh_cmd = ['svcinfo', 'lsvdisk', '-bytes', '-delim', '!', '-filtervalue', '%s=%s' % (filter_name, value)] return self.run_ssh_info(ssh_cmd, with_header=True) def chvdisk(self, vdisk, params): ssh_cmd = ['svctask', 'chvdisk'] + params + [vdisk] self.run_ssh_assert_no_output(ssh_cmd) def movevdisk(self, vdisk, iogrp): ssh_cmd = ['svctask', 'movevdisk', '-iogrp', iogrp, vdisk] self.run_ssh_assert_no_output(ssh_cmd) def expandvdisksize(self, vdisk, amount): ssh_cmd = (['svctask', 'expandvdisksize', '-size', str(amount), '-unit', 'gb', vdisk]) self.run_ssh_assert_no_output(ssh_cmd) def mkfcmap(self, source, target, full_copy): ssh_cmd = ['svctask', 'mkfcmap', '-source', source, '-target', target, '-autodelete'] if not full_copy: ssh_cmd.extend(['-copyrate', '0']) out, err = self._ssh(ssh_cmd, check_exit_code=False) if 'successfully created' not in out: msg = (_('CLI Exception output:\n command: %(cmd)s\n ' 'stdout: %(out)s\n stderr: %(err)s') % {'cmd': ssh_cmd, 'out': out, 'err': err}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) try: match_obj = re.search(r'FlashCopy Mapping, id \[([0-9]+)\], ' 'successfully created', out) fc_map_id = match_obj.group(1) except (AttributeError, IndexError): msg = (_('Failed to parse CLI output:\n command: %(cmd)s\n ' 'stdout: %(out)s\n stderr: %(err)s') % {'cmd': ssh_cmd, 'out': out, 'err': err}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) return fc_map_id def prestartfcmap(self, fc_map_id): ssh_cmd = ['svctask', 'prestartfcmap', fc_map_id] self.run_ssh_assert_no_output(ssh_cmd) def startfcmap(self, fc_map_id): ssh_cmd = ['svctask', 'startfcmap', fc_map_id] self.run_ssh_assert_no_output(ssh_cmd) def chfcmap(self, fc_map_id, copyrate='50', autodel='on'): ssh_cmd = ['svctask', 'chfcmap', '-copyrate', copyrate, '-autodelete', autodel, fc_map_id] self.run_ssh_assert_no_output(ssh_cmd) def stopfcmap(self, fc_map_id): ssh_cmd = ['svctask', 'stopfcmap', fc_map_id] self.run_ssh_assert_no_output(ssh_cmd) def rmfcmap(self, fc_map_id): ssh_cmd = ['svctask', 'rmfcmap', '-force', fc_map_id] self.run_ssh_assert_no_output(ssh_cmd) def lsvdiskfcmappings(self, vdisk): ssh_cmd = ['svcinfo', 'lsvdiskfcmappings', '-delim', '!', vdisk] return self.run_ssh_info(ssh_cmd, with_header=True) def lsfcmap(self, fc_map_id): ssh_cmd = ['svcinfo', 'lsfcmap', '-filtervalue', 'id=%s' % fc_map_id, '-delim', '!'] return self.run_ssh_info(ssh_cmd, with_header=True) def addvdiskcopy(self, vdisk, dest_pool, params): ssh_cmd = (['svctask', 'addvdiskcopy'] + params + ['-mdiskgrp', dest_pool, vdisk]) return self.run_ssh_check_created(ssh_cmd) def lsvdiskcopy(self, vdisk, copy_id=None): ssh_cmd = ['svcinfo', 'lsvdiskcopy', '-delim', '!'] with_header = True if copy_id: ssh_cmd += ['-copy', copy_id] with_header = False ssh_cmd += [vdisk] return self.run_ssh_info(ssh_cmd, with_header=with_header) def rmvdiskcopy(self, vdisk, copy_id): ssh_cmd = ['svctask', 'rmvdiskcopy', '-copy', copy_id, vdisk] self.run_ssh_assert_no_output(ssh_cmd) def addvdiskaccess(self, vdisk, iogrp): ssh_cmd = ['svctask', 'addvdiskaccess', '-iogrp', iogrp, vdisk] self.run_ssh_assert_no_output(ssh_cmd) def rmvdiskaccess(self, vdisk, iogrp): ssh_cmd = ['svctask', 'rmvdiskaccess', '-iogrp', iogrp, vdisk] self.run_ssh_assert_no_output(ssh_cmd) class CLIResponse(object): '''Parse SVC CLI output and generate iterable.''' def __init__(self, raw, ssh_cmd=None, delim='!', with_header=True): super(CLIResponse, self).__init__() if ssh_cmd: self.ssh_cmd = ' '.join(ssh_cmd) else: self.ssh_cmd = 'None' self.raw = raw self.delim = delim self.with_header = with_header self.result = self._parse() def select(self, *keys): for a in self.result: vs = [] for k in keys: v = a.get(k, None) if isinstance(v, basestring) or v is None: v = [v] if isinstance(v, list): vs.append(v) for item in zip(*vs): if len(item) == 1: yield item[0] else: yield item def __getitem__(self, key): try: return self.result[key] except KeyError: msg = (_('Did not find expected key %(key)s in %(fun)s: %(raw)s') % {'key': key, 'fun': self.ssh_cmd, 'raw': self.raw}) raise exception.VolumeBackendAPIException(data=msg) def __iter__(self): for a in self.result: yield a def __len__(self): return len(self.result) def _parse(self): def get_reader(content, delim): for line in content.lstrip().splitlines(): line = line.strip() if line: yield line.split(delim) else: yield [] if isinstance(self.raw, basestring): stdout, stderr = self.raw, '' else: stdout, stderr = self.raw reader = get_reader(stdout, self.delim) result = [] if self.with_header: hds = tuple() for row in reader: hds = row break for row in reader: cur = dict() if len(hds) != len(row): msg = (_('Unexpected CLI response: header/row mismatch. ' 'header: %(header)s, row: %(row)s') % {'header': hds, 'row': row}) raise exception.VolumeBackendAPIException(data=msg) for k, v in zip(hds, row): CLIResponse.append_dict(cur, k, v) result.append(cur) else: cur = dict() for row in reader: if row: CLIResponse.append_dict(cur, row[0], ' '.join(row[1:])) elif cur: # start new section result.append(cur) cur = dict() if cur: result.append(cur) return result @staticmethod def append_dict(dict_, key, value): key, value = key.strip(), value.strip() obj = dict_.get(key, None) if obj is None: dict_[key] = value elif isinstance(obj, list): obj.append(value) dict_[key] = obj else: dict_[key] = [obj, value] return dict_ cinder-2014.1.5/cinder/volume/drivers/ibm/storwize_svc/__init__.py0000664000567000056700000012020612540642606026230 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. # """ Volume driver for IBM Storwize family and SVC storage systems. Notes: 1. If you specify both a password and a key file, this driver will use the key file only. 2. When using a key file for authentication, it is up to the user or system administrator to store the private key in a safe manner. 3. The defaults for creating volumes are "-rsize 2% -autoexpand -grainsize 256 -warning 0". These can be changed in the configuration file or by using volume types(recommended only for advanced users). Limitations: 1. The driver expects CLI output in English, error messages may be in a localized format. 2. Clones and creating volumes from snapshots, where the source and target are of different sizes, is not supported. """ import math from oslo.config import cfg from cinder import context from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder import units from cinder import utils from cinder.volume.drivers.ibm.storwize_svc import helpers as storwize_helpers from cinder.volume.drivers.san import san from cinder.volume import volume_types LOG = logging.getLogger(__name__) storwize_svc_opts = [ cfg.StrOpt('storwize_svc_volpool_name', default='volpool', help='Storage system storage pool for volumes'), cfg.IntOpt('storwize_svc_vol_rsize', default=2, help='Storage system space-efficiency parameter for volumes ' '(percentage)'), cfg.IntOpt('storwize_svc_vol_warning', default=0, help='Storage system threshold for volume capacity warnings ' '(percentage)'), cfg.BoolOpt('storwize_svc_vol_autoexpand', default=True, help='Storage system autoexpand parameter for volumes ' '(True/False)'), cfg.IntOpt('storwize_svc_vol_grainsize', default=256, help='Storage system grain size parameter for volumes ' '(32/64/128/256)'), cfg.BoolOpt('storwize_svc_vol_compression', default=False, help='Storage system compression option for volumes'), cfg.BoolOpt('storwize_svc_vol_easytier', default=True, help='Enable Easy Tier for volumes'), cfg.IntOpt('storwize_svc_vol_iogrp', default=0, help='The I/O group in which to allocate volumes'), cfg.IntOpt('storwize_svc_flashcopy_timeout', default=120, help='Maximum number of seconds to wait for FlashCopy to be ' 'prepared. Maximum value is 600 seconds (10 minutes)'), cfg.StrOpt('storwize_svc_connection_protocol', default='iSCSI', help='Connection protocol (iSCSI/FC)'), cfg.BoolOpt('storwize_svc_iscsi_chap_enabled', default=True, help='Configure CHAP authentication for iSCSI connections ' '(Default: Enabled)'), cfg.BoolOpt('storwize_svc_multipath_enabled', default=False, help='Connect with multipath (FC only; iSCSI multipath is ' 'controlled by Nova)'), cfg.BoolOpt('storwize_svc_multihostmap_enabled', default=True, help='Allows vdisk to multi host mapping'), ] CONF = cfg.CONF CONF.register_opts(storwize_svc_opts) class StorwizeSVCDriver(san.SanDriver): """IBM Storwize V7000 and SVC iSCSI/FC volume driver. Version history: 1.0 - Initial driver 1.1 - FC support, create_cloned_volume, volume type support, get_volume_stats, minor bug fixes 1.2.0 - Added retype 1.2.1 - Code refactor, improved exception handling 1.2.2 - Fix bug #1274123 (races in host-related functions) 1.2.3 - Fix Fibre Channel connectivity: bug #1279758 (add delim to lsfabric, clear unused data from connections, ensure matching WWPNs by comparing lower case 1.2.4 - Fix bug #1278035 (async migration/retype) 1.2.5 - Added support for manage_existing (unmanage is inherited) """ VERSION = "1.2.5" VDISKCOPYOPS_INTERVAL = 600 def __init__(self, *args, **kwargs): super(StorwizeSVCDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(storwize_svc_opts) self._helpers = storwize_helpers.StorwizeHelpers(self._run_ssh) self._vdiskcopyops = {} self._vdiskcopyops_loop = None self._state = {'storage_nodes': {}, 'enabled_protocols': set(), 'compression_enabled': False, 'available_iogrps': [], 'system_name': None, 'system_id': None, 'code_level': None, } def do_setup(self, ctxt): """Check that we have all configuration details from the storage.""" LOG.debug(_('enter: do_setup')) # Get storage system name, id, and code level self._state.update(self._helpers.get_system_info()) # Validate that the pool exists pool = self.configuration.storwize_svc_volpool_name try: self._helpers.get_pool_attrs(pool) except exception.VolumeBackendAPIException: msg = _('Failed getting details for pool %s') % pool raise exception.InvalidInput(reason=msg) # Check if compression is supported self._state['compression_enabled'] = \ self._helpers.compression_enabled() # Get the available I/O groups self._state['available_iogrps'] = \ self._helpers.get_available_io_groups() # Get the iSCSI and FC names of the Storwize/SVC nodes self._state['storage_nodes'] = self._helpers.get_node_info() # Add the iSCSI IP addresses and WWPNs to the storage node info self._helpers.add_iscsi_ip_addrs(self._state['storage_nodes']) self._helpers.add_fc_wwpns(self._state['storage_nodes']) # For each node, check what connection modes it supports. Delete any # nodes that do not support any types (may be partially configured). to_delete = [] for k, node in self._state['storage_nodes'].iteritems(): if ((len(node['ipv4']) or len(node['ipv6'])) and len(node['iscsi_name'])): node['enabled_protocols'].append('iSCSI') self._state['enabled_protocols'].add('iSCSI') if len(node['WWPN']): node['enabled_protocols'].append('FC') self._state['enabled_protocols'].add('FC') if not len(node['enabled_protocols']): to_delete.append(k) for delkey in to_delete: del self._state['storage_nodes'][delkey] # Make sure we have at least one node configured if not len(self._state['storage_nodes']): msg = _('do_setup: No configured nodes.') LOG.error(msg) raise exception.VolumeDriverException(message=msg) # Build the list of in-progress vdisk copy operations if ctxt is None: admin_context = context.get_admin_context() else: admin_context = ctxt.elevated() volumes = self.db.volume_get_all_by_host(admin_context, self.host) for volume in volumes: metadata = self.db.volume_admin_metadata_get(admin_context, volume['id']) curr_ops = metadata.get('vdiskcopyops', None) if curr_ops: ops = [tuple(x.split(':')) for x in curr_ops.split(';')] self._vdiskcopyops[volume['id']] = ops # if vdiskcopy exists in database, start the looping call if len(self._vdiskcopyops) >= 1: self._vdiskcopyops_loop = loopingcall.LoopingCall( self._check_volume_copy_ops) self._vdiskcopyops_loop.start(interval=self.VDISKCOPYOPS_INTERVAL) LOG.debug(_('leave: do_setup')) def check_for_setup_error(self): """Ensure that the flags are set properly.""" LOG.debug(_('enter: check_for_setup_error')) # Check that we have the system ID information if self._state['system_name'] is None: exception_msg = (_('Unable to determine system name')) raise exception.VolumeBackendAPIException(data=exception_msg) if self._state['system_id'] is None: exception_msg = (_('Unable to determine system id')) raise exception.VolumeBackendAPIException(data=exception_msg) required_flags = ['san_ip', 'san_ssh_port', 'san_login', 'storwize_svc_volpool_name'] for flag in required_flags: if not self.configuration.safe_get(flag): raise exception.InvalidInput(reason=_('%s is not set') % flag) # Ensure that either password or keyfile were set if not (self.configuration.san_password or self.configuration.san_private_key): raise exception.InvalidInput( reason=_('Password or SSH private key is required for ' 'authentication: set either san_password or ' 'san_private_key option')) # Check that flashcopy_timeout is not more than 10 minutes flashcopy_timeout = self.configuration.storwize_svc_flashcopy_timeout if not (flashcopy_timeout > 0 and flashcopy_timeout <= 600): raise exception.InvalidInput( reason=_('Illegal value %d specified for ' 'storwize_svc_flashcopy_timeout: ' 'valid values are between 0 and 600') % flashcopy_timeout) opts = self._helpers.build_default_opts(self.configuration) self._helpers.check_vdisk_opts(self._state, opts) LOG.debug(_('leave: check_for_setup_error')) def ensure_export(self, ctxt, volume): """Check that the volume exists on the storage. The system does not "export" volumes as a Linux iSCSI target does, and therefore we just check that the volume exists on the storage. """ volume_defined = self._helpers.is_vdisk_defined(volume['name']) if not volume_defined: LOG.error(_('ensure_export: Volume %s not found on storage') % volume['name']) def create_export(self, ctxt, volume): model_update = None return model_update def remove_export(self, ctxt, volume): pass def validate_connector(self, connector): """Check connector for at least one enabled protocol (iSCSI/FC).""" valid = False if ('iSCSI' in self._state['enabled_protocols'] and 'initiator' in connector): valid = True if 'FC' in self._state['enabled_protocols'] and 'wwpns' in connector: valid = True if not valid: msg = (_('The connector does not contain the required ' 'information.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) def _get_vdisk_params(self, type_id, volume_type=None): return self._helpers.get_vdisk_params(self.configuration, self._state, type_id, volume_type=volume_type) @utils.synchronized('storwize-host', external=True) def initialize_connection(self, volume, connector): """Perform the necessary work so that an iSCSI/FC connection can be made. To be able to create an iSCSI/FC connection from a given host to a volume, we must: 1. Translate the given iSCSI name or WWNN to a host name 2. Create new host on the storage system if it does not yet exist 3. Map the volume to the host if it is not already done 4. Return the connection information for relevant nodes (in the proper I/O group) """ LOG.debug(_('enter: initialize_connection: volume %(vol)s with ' 'connector %(conn)s') % {'vol': volume, 'conn': connector}) vol_opts = self._get_vdisk_params(volume['volume_type_id']) volume_name = volume['name'] # Delete irrelevant connection information that later could result # in unwanted behaviour. For example, if FC is used yet the hosts # return iSCSI data, the driver will try to create the iSCSI connection # which can result in a nice error about reaching the per-host maximum # iSCSI initiator limit. # First make a copy so we don't mess with a caller's connector. connector = connector.copy() if vol_opts['protocol'] == 'FC': connector.pop('initiator', None) elif vol_opts['protocol'] == 'iSCSI': connector.pop('wwnns', None) connector.pop('wwpns', None) # Check if a host object is defined for this host name host_name = self._helpers.get_host_from_connector(connector) if host_name is None: # Host does not exist - add a new host to Storwize/SVC host_name = self._helpers.create_host(connector) if vol_opts['protocol'] == 'iSCSI': chap_secret = self._helpers.get_chap_secret_for_host(host_name) chap_enabled = self.configuration.storwize_svc_iscsi_chap_enabled if chap_enabled and chap_secret is None: chap_secret = self._helpers.add_chap_secret_to_host(host_name) elif not chap_enabled and chap_secret: LOG.warning(_('CHAP secret exists for host but CHAP is ' 'disabled')) volume_attributes = self._helpers.get_vdisk_attributes(volume_name) if volume_attributes is None: msg = (_('initialize_connection: Failed to get attributes' ' for volume %s') % volume_name) LOG.error(msg) raise exception.VolumeDriverException(message=msg) multihostmap = self.configuration.storwize_svc_multihostmap_enabled lun_id = self._helpers.map_vol_to_host(volume_name, host_name, multihostmap) try: preferred_node = volume_attributes['preferred_node_id'] IO_group = volume_attributes['IO_group_id'] except KeyError as e: LOG.error(_('Did not find expected column name in ' 'lsvdisk: %s') % e) msg = (_('initialize_connection: Missing volume ' 'attribute for volume %s') % volume_name) raise exception.VolumeBackendAPIException(data=msg) try: # Get preferred node and other nodes in I/O group preferred_node_entry = None io_group_nodes = [] for node in self._state['storage_nodes'].itervalues(): if vol_opts['protocol'] not in node['enabled_protocols']: continue if node['id'] == preferred_node: preferred_node_entry = node if node['IO_group'] == IO_group: io_group_nodes.append(node) if not len(io_group_nodes): msg = (_('initialize_connection: No node found in ' 'I/O group %(gid)s for volume %(vol)s') % {'gid': IO_group, 'vol': volume_name}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if not preferred_node_entry and not vol_opts['multipath']: # Get 1st node in I/O group preferred_node_entry = io_group_nodes[0] LOG.warn(_('initialize_connection: Did not find a preferred ' 'node for volume %s') % volume_name) properties = {} properties['target_discovered'] = False properties['target_lun'] = lun_id properties['volume_id'] = volume['id'] if vol_opts['protocol'] == 'iSCSI': type_str = 'iscsi' if len(preferred_node_entry['ipv4']): ipaddr = preferred_node_entry['ipv4'][0] else: ipaddr = preferred_node_entry['ipv6'][0] properties['target_portal'] = '%s:%s' % (ipaddr, '3260') properties['target_iqn'] = preferred_node_entry['iscsi_name'] if chap_secret: properties['auth_method'] = 'CHAP' properties['auth_username'] = connector['initiator'] properties['auth_password'] = chap_secret else: type_str = 'fibre_channel' conn_wwpns = self._helpers.get_conn_fc_wwpns(host_name) if len(conn_wwpns) == 0: msg = (_('Could not get FC connection information for the ' 'host-volume connection. Is the host configured ' 'properly for FC connections?')) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if not vol_opts['multipath']: # preferred_node_entry can have a list of WWPNs while only # one WWPN may be available on the storage host. Here we # walk through the nodes until we find one that works, # default to the first WWPN otherwise. for WWPN in preferred_node_entry['WWPN']: if WWPN in conn_wwpns: properties['target_wwn'] = WWPN break else: LOG.warning(_('Unable to find a preferred node match ' 'for node %(node)s in the list of ' 'available WWPNs on %(host)s. ' 'Using first available.') % {'node': preferred_node, 'host': host_name}) properties['target_wwn'] = conn_wwpns[0] else: properties['target_wwn'] = conn_wwpns i_t_map = self._make_initiator_target_map(connector['wwpns'], conn_wwpns) properties['initiator_target_map'] = i_t_map except Exception: with excutils.save_and_reraise_exception(): self.terminate_connection(volume, connector) LOG.error(_('initialize_connection: Failed to collect return ' 'properties for volume %(vol)s and connector ' '%(conn)s.\n') % {'vol': volume, 'conn': connector}) LOG.debug(_('leave: initialize_connection:\n volume: %(vol)s\n ' 'connector %(conn)s\n properties: %(prop)s') % {'vol': volume, 'conn': connector, 'prop': properties}) return {'driver_volume_type': type_str, 'data': properties, } def _make_initiator_target_map(self, initiator_wwpns, target_wwpns): """Build a simplistic all-to-all mapping.""" i_t_map = {} for i_wwpn in initiator_wwpns: i_t_map[str(i_wwpn)] = [] for t_wwpn in target_wwpns: i_t_map[i_wwpn].append(t_wwpn) return i_t_map @utils.synchronized('storwize-host', external=True) def terminate_connection(self, volume, connector, **kwargs): """Cleanup after an iSCSI connection has been terminated. When we clean up a terminated connection between a given connector and volume, we: 1. Translate the given connector to a host name 2. Remove the volume-to-host mapping if it exists 3. Delete the host if it has no more mappings (hosts are created automatically by this driver when mappings are created) """ LOG.debug(_('enter: terminate_connection: volume %(vol)s with ' 'connector %(conn)s') % {'vol': volume, 'conn': connector}) vol_name = volume['name'] if 'host' in connector: # maybe two hosts on the storage, one is for FC and the other for # iSCSI, so get host according to protocol vol_opts = self._get_vdisk_params(volume['volume_type_id']) connector = connector.copy() if vol_opts['protocol'] == 'FC': connector.pop('initiator', None) elif vol_opts['protocol'] == 'iSCSI': connector.pop('wwnns', None) connector.pop('wwpns', None) host_name = self._helpers.get_host_from_connector(connector) if host_name is None: msg = (_('terminate_connection: Failed to get host name from' ' connector.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) else: # See bug #1244257 host_name = None info = {} if 'wwpns' in connector and host_name: target_wwpns = self._helpers.get_conn_fc_wwpns(host_name) init_targ_map = self._make_initiator_target_map(connector['wwpns'], target_wwpns) info = {'driver_volume_type': 'fibre_channel', 'data': {'initiator_target_map': init_targ_map}} self._helpers.unmap_vol_from_host(vol_name, host_name) LOG.debug(_('leave: terminate_connection: volume %(vol)s with ' 'connector %(conn)s') % {'vol': volume, 'conn': connector}) return info def create_volume(self, volume): opts = self._get_vdisk_params(volume['volume_type_id']) pool = self.configuration.storwize_svc_volpool_name return self._helpers.create_vdisk(volume['name'], str(volume['size']), 'gb', pool, opts) def delete_volume(self, volume): self._helpers.delete_vdisk(volume['name'], False) if volume['id'] in self._vdiskcopyops: del self._vdiskcopyops[volume['id']] if not len(self._vdiskcopyops): self._vdiskcopyops_loop.stop() self._vdiskcopyops_loop = None def create_snapshot(self, snapshot): ctxt = context.get_admin_context() try: source_vol = self.db.volume_get(ctxt, snapshot['volume_id']) except Exception: msg = (_('create_snapshot: get source volume failed.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) opts = self._get_vdisk_params(source_vol['volume_type_id']) self._helpers.create_copy(snapshot['volume_name'], snapshot['name'], snapshot['volume_id'], self.configuration, opts, False) def delete_snapshot(self, snapshot): self._helpers.delete_vdisk(snapshot['name'], False) def create_volume_from_snapshot(self, volume, snapshot): if volume['size'] != snapshot['volume_size']: msg = (_('create_volume_from_snapshot: Source and destination ' 'size differ.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) opts = self._get_vdisk_params(volume['volume_type_id']) self._helpers.create_copy(snapshot['name'], volume['name'], snapshot['id'], self.configuration, opts, True) def create_cloned_volume(self, tgt_volume, src_volume): if src_volume['size'] != tgt_volume['size']: msg = (_('create_cloned_volume: Source and destination ' 'size differ.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) opts = self._get_vdisk_params(tgt_volume['volume_type_id']) self._helpers.create_copy(src_volume['name'], tgt_volume['name'], src_volume['id'], self.configuration, opts, True) def extend_volume(self, volume, new_size): LOG.debug(_('enter: extend_volume: volume %s') % volume['id']) ret = self._helpers.ensure_vdisk_no_fc_mappings(volume['name'], allow_snaps=False) if not ret: msg = (_('extend_volume: Extending a volume with snapshots is not ' 'supported.')) LOG.error(msg) raise exception.VolumeDriverException(message=msg) extend_amt = int(new_size) - volume['size'] self._helpers.extend_vdisk(volume['name'], extend_amt) LOG.debug(_('leave: extend_volume: volume %s') % volume['id']) def _add_vdisk_copy_op(self, ctxt, volume, new_op): metadata = self.db.volume_admin_metadata_get(ctxt.elevated(), volume['id']) curr_ops = metadata.get('vdiskcopyops', None) if curr_ops: curr_ops_list = [tuple(x.split(':')) for x in curr_ops.split(';')] new_ops_list = curr_ops_list.append(new_op) else: new_ops_list = [new_op] new_ops_str = ';'.join([':'.join(x) for x in new_ops_list]) self.db.volume_admin_metadata_update(ctxt.elevated(), volume['id'], {'vdiskcopyops': new_ops_str}, False) if volume['id'] in self._vdiskcopyops: self._vdiskcopyops[volume['id']].append(new_op) else: self._vdiskcopyops[volume['id']] = [new_op] # We added the first copy operation, so start the looping call if len(self._vdiskcopyops) == 1: self._vdiskcopyops_loop = loopingcall.LoopingCall( self._check_volume_copy_ops) self._vdiskcopyops_loop.start(interval=self.VDISKCOPYOPS_INTERVAL) def _rm_vdisk_copy_op(self, ctxt, volume, orig_copy_id, new_copy_id): try: self._vdiskcopyops[volume['id']].remove((orig_copy_id, new_copy_id)) if not len(self._vdiskcopyops[volume['id']]): del self._vdiskcopyops[volume['id']] if not len(self._vdiskcopyops): self._vdiskcopyops_loop.stop() self._vdiskcopyops_loop = None except IndexError: msg = (_('_rm_vdisk_copy_op: Volume %s does not have any ' 'registered vdisk copy operations.') % volume['id']) LOG.error(msg) return except ValueError: msg = (_('_rm_vdisk_copy_op: Volume %(vol)s does not have the ' 'specified vdisk copy operation: orig=%(orig)s ' 'new=%(new)s.') % {'vol': volume['id'], 'orig': orig_copy_id, 'new': new_copy_id}) LOG.error(msg) return metadata = self.db.volume_admin_metadata_get(ctxt.elevated(), volume['id']) curr_ops = metadata.get('vdiskcopyops', None) if not curr_ops: msg = (_('_rm_vdisk_copy_op: Volume metadata %s does not have any ' 'registered vdisk copy operations.') % volume['id']) LOG.error(msg) return curr_ops_list = [tuple(x.split(':')) for x in curr_ops.split(';')] try: curr_ops_list.remove((orig_copy_id, new_copy_id)) except ValueError: msg = (_('_rm_vdisk_copy_op: Volume %(vol)s metadata does not ' 'have the specified vdisk copy operation: orig=%(orig)s ' 'new=%(new)s.') % {'vol': volume['id'], 'orig': orig_copy_id, 'new': new_copy_id}) LOG.error(msg) return if len(curr_ops_list): new_ops_str = ';'.join([':'.join(x) for x in curr_ops_list]) self.db.volume_admin_metadata_update(ctxt.elevated(), volume['id'], {'vdiskcopyops': new_ops_str}, False) else: self.db.volume_admin_metadata_delete(ctxt.elevated(), volume['id'], 'vdiskcopyops') def _check_volume_copy_ops(self): LOG.debug(_("enter: update volume copy status")) ctxt = context.get_admin_context() copy_items = self._vdiskcopyops.items() for vol_id, copy_ops in copy_items: try: volume = self.db.volume_get(ctxt, vol_id) except Exception: LOG.warn(_('Volume %s does not exist.'), vol_id) del self._vdiskcopyops[vol_id] if not len(self._vdiskcopyops): self._vdiskcopyops_loop.stop() self._vdiskcopyops_loop = None continue for copy_op in copy_ops: try: synced = self._helpers.is_vdisk_copy_synced(volume['name'], copy_op[1]) except Exception: msg = (_('_check_volume_copy_ops: Volume %(vol)s does not ' 'have the specified vdisk copy operation: ' 'orig=%(orig)s new=%(new)s.') % {'vol': volume['id'], 'orig': copy_op[0], 'new': copy_op[1]}) LOG.info(msg) else: if synced: self._helpers.rm_vdisk_copy(volume['name'], copy_op[0]) self._rm_vdisk_copy_op(ctxt, volume, copy_op[0], copy_op[1]) LOG.debug(_("exit: update volume copy status")) def migrate_volume(self, ctxt, volume, host): """Migrate directly if source and dest are managed by same storage. We create a new vdisk copy in the desired pool, and add the original vdisk copy to the admin_metadata of the volume to be deleted. The deletion will occur using a periodic task once the new copy is synced. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ LOG.debug(_('enter: migrate_volume: id=%(id)s, host=%(host)s') % {'id': volume['id'], 'host': host['host']}) false_ret = (False, None) dest_pool = self._helpers.can_migrate_to_host(host, self._state) if dest_pool is None: return false_ret ctxt = context.get_admin_context() if volume['volume_type_id'] is not None: volume_type_id = volume['volume_type_id'] vol_type = volume_types.get_volume_type(ctxt, volume_type_id) else: vol_type = None self._check_volume_copy_ops() new_op = self._helpers.add_vdisk_copy(volume['name'], dest_pool, vol_type, self._state, self.configuration) self._add_vdisk_copy_op(ctxt, volume, new_op) LOG.debug(_('leave: migrate_volume: id=%(id)s, host=%(host)s') % {'id': volume['id'], 'host': host['host']}) return (True, None) def retype(self, ctxt, volume, new_type, diff, host): """Convert the volume to be of the new type. Returns a boolean indicating whether the retype occurred. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param new_type: A dictionary describing the volume type to convert to :param diff: A dictionary with the difference between the two types :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ def retype_iogrp_property(volume, new, old): if new != old: self._helpers.change_vdisk_iogrp(volume['name'], self._state, (new, old)) LOG.debug(_('enter: retype: id=%(id)s, new_type=%(new_type)s,' 'diff=%(diff)s, host=%(host)s') % {'id': volume['id'], 'new_type': new_type, 'diff': diff, 'host': host}) ignore_keys = ['protocol', 'multipath'] no_copy_keys = ['warning', 'autoexpand', 'easytier'] copy_keys = ['rsize', 'grainsize', 'compression'] all_keys = ignore_keys + no_copy_keys + copy_keys old_opts = self._get_vdisk_params(volume['volume_type_id']) new_opts = self._get_vdisk_params(new_type['id'], volume_type=new_type) vdisk_changes = [] need_copy = False for key in all_keys: if old_opts[key] != new_opts[key]: if key in copy_keys: need_copy = True break elif key in no_copy_keys: vdisk_changes.append(key) dest_location = host['capabilities'].get('location_info') if self._stats['location_info'] != dest_location: need_copy = True if need_copy: self._check_volume_copy_ops() dest_pool = self._helpers.can_migrate_to_host(host, self._state) if dest_pool is None: return False retype_iogrp_property(volume, new_opts['iogrp'], old_opts['iogrp']) try: new = self._helpers.add_vdisk_copy(volume['name'], dest_pool, new_type, self._state, self.configuration) self._add_vdisk_copy_op(ctxt, volume, new) except exception.VolumeDriverException: # roll back changing iogrp property retype_iogrp_property(volume, old_opts['iogrp'], new_opts['iogrp']) msg = (_('Unable to retype: A copy of volume %s exists. ' 'Retyping would exceed the limit of 2 copies.'), volume['id']) raise exception.VolumeDriverException(message=msg) else: retype_iogrp_property(volume, new_opts['iogrp'], old_opts['iogrp']) self._helpers.change_vdisk_options(volume['name'], vdisk_changes, new_opts, self._state) LOG.debug(_('exit: retype: ild=%(id)s, new_type=%(new_type)s,' 'diff=%(diff)s, host=%(host)s') % {'id': volume['id'], 'new_type': new_type, 'diff': diff, 'host': host['host']}) return True def manage_existing(self, volume, ref): """Manages an existing vdisk. Renames the vdisk to match the expected name for the volume. Error checking done by manage_existing_get_size is not repeated - if we got here then we have a vdisk that isn't in use (or we don't care if it is in use. """ vdisk = self._helpers.vdisk_by_uid(ref['vdisk_UID']) if vdisk is None: reason = _('No vdisk with the specified vdisk_UID.') raise exception.ManageExistingInvalidReference(existing_ref=ref, reason=reason) self._helpers.rename_vdisk(vdisk['name'], volume['name']) def manage_existing_get_size(self, volume, ref): """Return size of an existing LV for manage_existing. existing_ref is a dictionary of the form: {'vdisk_UID': } Optional elements are: 'manage_if_in_use': True/False (default is False) If set to True, a volume will be managed even if it is currently attached to a host system. """ # Check that the reference is valid if 'vdisk_UID' not in ref: reason = _('Reference must contain vdisk_UID element.') raise exception.ManageExistingInvalidReference(existing_ref=ref, reason=reason) # Check for existence of the vdisk vdisk = self._helpers.vdisk_by_uid(ref['vdisk_UID']) if vdisk is None: reason = _('No vdisk with the specified vdisk_UID.') raise exception.ManageExistingInvalidReference(existing_ref=ref, reason=reason) # Check if the disk is in use, if we need to. manage_if_in_use = ref.get('manage_if_in_use', False) if (not manage_if_in_use and self._helpers.is_vdisk_in_use(vdisk['name'])): reason = _('The specified vdisk is mapped to a host.') raise exception.ManageExistingInvalidReference(existing_ref=ref, reason=reason) return int(math.ceil(float(vdisk['capacity']) / units.GiB)) def get_volume_stats(self, refresh=False): """Get volume stats. If we haven't gotten stats yet or 'refresh' is True, run update the stats first. """ if not self._stats or refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = {} data['vendor_name'] = 'IBM' data['driver_version'] = self.VERSION data['storage_protocol'] = list(self._state['enabled_protocols']) data['total_capacity_gb'] = 0 # To be overwritten data['free_capacity_gb'] = 0 # To be overwritten data['reserved_percentage'] = self.configuration.reserved_percentage data['QoS_support'] = False pool = self.configuration.storwize_svc_volpool_name backend_name = self.configuration.safe_get('volume_backend_name') if not backend_name: backend_name = '%s_%s' % (self._state['system_name'], pool) data['volume_backend_name'] = backend_name attributes = self._helpers.get_pool_attrs(pool) if not attributes: LOG.error(_('Could not get pool data from the storage')) exception_message = (_('_update_volume_stats: ' 'Could not get storage pool data')) raise exception.VolumeBackendAPIException(data=exception_message) data['total_capacity_gb'] = (float(attributes['capacity']) / units.GiB) data['free_capacity_gb'] = (float(attributes['free_capacity']) / units.GiB) data['easytier_support'] = attributes['easy_tier'] in ['on', 'auto'] data['compression_support'] = self._state['compression_enabled'] data['location_info'] = ('StorwizeSVCDriver:%(sys_id)s:%(pool)s' % {'sys_id': self._state['system_id'], 'pool': pool}) self._stats = data cinder-2014.1.5/cinder/volume/drivers/ibm/__init__.py0000664000567000056700000000000012540642603023451 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/ibm/ibmnas.py0000664000567000056700000003417312540642606023210 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. # Authors: # Nilesh Bhosale # Sasikanth Eda """ IBM NAS Volume Driver. Currently, it supports the following IBM Storage Systems: 1. IBM Scale Out NAS (SONAS) 2. IBM Storwize V7000 Unified Notes: 1. If you specify both a password and a key file, this driver will use the key file only. 2. When using a key file for authentication, it is up to the user or system administrator to store the private key in a safe manner. """ import os import re from oslo.config import cfg from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder import utils from cinder.volume.drivers import nfs from cinder.volume.drivers.nfs import nas_opts from cinder.volume.drivers.san import san VERSION = '1.0.0' LOG = logging.getLogger(__name__) CONF = cfg.CONF class IBMNAS_NFSDriver(nfs.NfsDriver, san.SanDriver): """IBM NAS NFS based cinder driver. Creates file on NFS share for using it as block device on hypervisor. Version history: 1.0.0 - Initial driver """ driver_volume_type = 'nfs' VERSION = VERSION def __init__(self, execute=utils.execute, *args, **kwargs): self._context = None super(IBMNAS_NFSDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(nas_opts) self.configuration.san_ip = self.configuration.nas_ip self.configuration.san_login = self.configuration.nas_login self.configuration.san_password = self.configuration.nas_password self.configuration.san_private_key = \ self.configuration.nas_private_key self.configuration.san_ssh_port = self.configuration.nas_ssh_port def set_execute(self, execute): self._execute = utils.execute def do_setup(self, context): """Any initialization the volume driver does while starting.""" super(IBMNAS_NFSDriver, self).do_setup(context) self._context = context def check_for_setup_error(self): """Ensure that the flags are set properly.""" required_flags = ['nas_ip', 'nas_ssh_port', 'nas_login'] for flag in required_flags: if not self.configuration.safe_get(flag): raise exception.InvalidInput(reason=_('%s is not set') % flag) # Ensure that either password or keyfile were set if not (self.configuration.nas_password or self.configuration.nas_private_key): raise exception.InvalidInput( reason=_('Password or SSH private key is required for ' 'authentication: set either nas_password or ' 'nas_private_key option')) def _get_provider_location(self, volume_id): """Returns provider location for given volume.""" LOG.debug(_("Enter _get_provider_location: volume_id %s") % volume_id) volume = self.db.volume_get(self._context, volume_id) LOG.debug("Exit _get_provider_location") return volume['provider_location'] def _get_export_path(self, volume_id): """Returns NFS export path for the given volume.""" LOG.debug(_("Enter _get_export_path: volume_id %s") % volume_id) return self._get_provider_location(volume_id).split(':')[1] def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Enter _update_volume_stats")) data = {} backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or 'IBMNAS_NFS' data['vendor_name'] = 'IBM' data['driver_version'] = self.get_version() data['storage_protocol'] = self.driver_volume_type self._ensure_shares_mounted() global_capacity = 0 global_free = 0 for share in self._mounted_shares: capacity, free, _used = self._get_capacity_info(share) global_capacity += capacity global_free += free data['total_capacity_gb'] = global_capacity / float(units.GiB) data['free_capacity_gb'] = global_free / float(units.GiB) data['reserved_percentage'] = 0 data['QoS_support'] = False self._stats = data LOG.debug("Exit _update_volume_stats") def _create_ibmnas_snap(self, src, dest, mount_path): """Create volume clones and snapshots.""" LOG.debug(_("Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s") % {'src': src, 'dest': dest}) if mount_path is not None: tmp_file_path = dest + '.snap' ssh_cmd = ['mkclone', '-p', dest, '-s', src, '-t', tmp_file_path] try: self._run_ssh(ssh_cmd) except processutils.ProcessExecutionError as e: msg = (_("Failed in _create_ibmnas_snap during " "create_snapshot. Error: %s") % e.stderr) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) #Now remove the tmp file tmp_file_local_path = os.path.join(mount_path, os.path.basename(tmp_file_path)) self._execute('rm', '-f', tmp_file_local_path, run_as_root=True) else: ssh_cmd = ['mkclone', '-s', src, '-t', dest] try: self._run_ssh(ssh_cmd) except processutils.ProcessExecutionError as e: msg = (_("Failed in _create_ibmnas_snap during " "create_volume_from_snapshot. Error: %s") % e.stderr) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug("Exit _create_ibmnas_snap") def _create_ibmnas_copy(self, src, dest, snap): """Create a cloned volume, parent & the clone both remain writable.""" LOG.debug(_('Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, ' 'snap %(snap)s') % {'src': src, 'dest': dest, 'snap': snap}) ssh_cmd = ['mkclone', '-p', snap, '-s', src, '-t', dest] try: self._run_ssh(ssh_cmd) except processutils.ProcessExecutionError as e: msg = (_("Failed in _create_ibmnas_copy. Error: %s") % e.stderr) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug("Exit _create_ibmnas_copy") def _resize_volume_file(self, path, new_size): """Resize the image file on share to new size.""" LOG.info(_('Resizing file to %sG'), new_size) try: image_utils.resize_image(path, new_size) except processutils.ProcessExecutionError as e: msg = (_("Failed to resize volume " "%(volume_id)s, error: %(error)s") % {'volume_id': os.path.basename(path).split('-')[1], 'error': e.stderr}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) return True def extend_volume(self, volume, new_size): """Extend an existing volume to the new size.""" LOG.info(_('Extending volume %s.'), volume['name']) path = self.local_path(volume) self._resize_volume_file(path, new_size) def _delete_snapfiles(self, fchild, mount_point): LOG.debug(_('Enter _delete_snapfiles: fchild %(fchild)s, ' 'mount_point %(mount_point)s') % {'fchild': fchild, 'mount_point': mount_point}) ssh_cmd = ['lsclone', fchild] try: (out, _err) = self._run_ssh(ssh_cmd, check_exit_code=False) except processutils.ProcessExecutionError as e: msg = (_("Failed in _delete_snapfiles. Error: %s") % e.stderr) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) fparent = None reInode = re.compile( r'.*\s+(?:yes|no)\s+\d+\s+(?P\d+)', re.M | re.S) match = reInode.match(out) if match: inode = match.group('inode') path = mount_point (out, _err) = self._execute('find', path, '-maxdepth', '1', '-inum', inode, run_as_root=True) if out: fparent = out.split('\n', 1)[0] fchild_local_path = os.path.join(mount_point, os.path.basename(fchild)) self._execute( 'rm', '-f', fchild_local_path, check_exit_code=False, run_as_root=True) # There is no need to check for volume references on this snapshot # because 'rm -f' itself serves as a simple and implicit check. If the # parent is referenced by another volume, system doesn't allow deleting # it. 'rm -f' silently fails and the subsequent check on the path # indicates whether there are any volumes derived from that snapshot. # If there are such volumes, we quit recursion and let the other # volumes delete the snapshot later. If there are no references, rm # would succeed and the snapshot is deleted. if not os.path.exists(fchild) and fparent: fpbase = os.path.basename(fparent) if (fpbase.endswith('.ts') or fpbase.endswith('.snap')): fparent_remote_path = os.path.join(os.path.dirname(fchild), fpbase) self._delete_snapfiles(fparent_remote_path, mount_point) LOG.debug("Exit _delete_snapfiles") def delete_volume(self, volume): """Deletes a logical volume.""" if not volume['provider_location']: LOG.warn(_('Volume %s does not have provider_location specified, ' 'skipping.'), volume['name']) return export_path = self._get_export_path(volume['id']) volume_name = volume['name'] volume_path = os.path.join(export_path, volume_name) mount_point = os.path.dirname(self.local_path(volume)) # Delete all dependent snapshots, the snapshot will get deleted # if the link count goes to zero, else rm will fail silently self._delete_snapfiles(volume_path, mount_point) def create_snapshot(self, snapshot): """Creates a volume snapshot.""" export_path = self._get_export_path(snapshot['volume_id']) snapshot_path = os.path.join(export_path, snapshot['name']) volume_path = os.path.join(export_path, snapshot['volume_name']) nfs_share = self._get_provider_location(snapshot['volume_id']) mount_path = self._get_mount_point_for_share(nfs_share) self._create_ibmnas_snap(src=volume_path, dest=snapshot_path, mount_path=mount_path) def delete_snapshot(self, snapshot): """Deletes a volume snapshot.""" # A snapshot file is deleted as a part of delete_volume when # all volumes derived from it are deleted. # Rename the deleted snapshot to indicate it no longer exists in # cinder db. Attempt to delete the snapshot. If the snapshot has # clone children, the delete will fail silently. When volumes that # are clone children are deleted in the future, the remaining ts # snapshots will also be deleted. nfs_share = self._get_provider_location(snapshot['volume_id']) mount_path = self._get_mount_point_for_share(nfs_share) snapshot_path = os.path.join(mount_path, snapshot['name']) snapshot_ts_path = '%s.ts' % snapshot_path self._execute('mv', '-f', snapshot_path, snapshot_ts_path, check_exit_code=True, run_as_root=True) self._execute('rm', '-f', snapshot_ts_path, check_exit_code=False, run_as_root=True) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from an existing volume snapshot. Extends the volume if the volume size is more than the snapshot size. """ export_path = self._get_export_path(snapshot['volume_id']) snapshot_path = os.path.join(export_path, snapshot.name) volume_path = os.path.join(export_path, volume['name']) self._create_ibmnas_snap(snapshot_path, volume_path, None) volume['provider_location'] = self._find_share(volume['size']) volume_path = self.local_path(volume) self._set_rw_permissions_for_all(volume_path) #Extend the volume if required self._resize_volume_file(volume_path, volume['size']) return {'provider_location': volume['provider_location']} def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume. Extends the volume if the new volume size is more than the source volume size. """ export_path = self._get_export_path(src_vref['id']) src_vol_path = os.path.join(export_path, src_vref['name']) dest_vol_path = os.path.join(export_path, volume['name']) snap_file_name = volume['name'] snap_file_name = snap_file_name + '.snap' snap_file_path = os.path.join(export_path, snap_file_name) self._create_ibmnas_copy(src_vol_path, dest_vol_path, snap_file_path) volume['provider_location'] = self._find_share(volume['size']) volume_path = self.local_path(volume) self._set_rw_permissions_for_all(volume_path) #Extend the volume if required self._resize_volume_file(volume_path, volume['size']) return {'provider_location': volume['provider_location']} cinder-2014.1.5/cinder/volume/drivers/ibm/xiv_ds8k.py0000664000567000056700000001215112540642606023466 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. # # Authors: # Erik Zaadi # Avishay Traeger """ Unified Volume driver for IBM XIV and DS8K Storage Systems. """ from oslo.config import cfg from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.volume.drivers.san import san xiv_ds8k_opts = [ cfg.StrOpt( 'xiv_ds8k_proxy', default='xiv_ds8k_openstack.nova_proxy.XIVDS8KNovaProxy', help='Proxy driver that connects to the IBM Storage Array'), cfg.StrOpt( 'xiv_ds8k_connection_type', default='iscsi', help='Connection type to the IBM Storage Array' ' (fibre_channel|iscsi)'), cfg.StrOpt( 'xiv_chap', default='disabled', help='CHAP authentication mode, effective only for iscsi' ' (disabled|enabled)'), ] CONF = cfg.CONF CONF.register_opts(xiv_ds8k_opts) LOG = logging.getLogger(__name__) class XIVDS8KDriver(san.SanDriver): """Unified IBM XIV and DS8K volume driver.""" def __init__(self, *args, **kwargs): """Initialize the driver.""" super(XIVDS8KDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(xiv_ds8k_opts) proxy = importutils.import_class(self.configuration.xiv_ds8k_proxy) #NOTE: All Array specific configurations are prefixed with: #"xiv_ds8k_array_" #These additional flags should be specified in the cinder.conf #preferably in each backend configuration. self.xiv_ds8k_proxy = proxy( { "xiv_ds8k_user": self.configuration.san_login, "xiv_ds8k_pass": self.configuration.san_password, "xiv_ds8k_address": self.configuration.san_ip, "xiv_ds8k_vol_pool": self.configuration.san_clustername, "xiv_ds8k_connection_type": self.configuration.xiv_ds8k_connection_type, "xiv_chap": self.configuration.xiv_chap }, LOG, exception, driver=self) def do_setup(self, context): """Setup and verify IBM XIV and DS8K Storage connection.""" self.xiv_ds8k_proxy.setup(context) def ensure_export(self, context, volume): """Ensure an export.""" return self.xiv_ds8k_proxy.ensure_export(context, volume) def create_export(self, context, volume): """Create an export.""" return self.xiv_ds8k_proxy.create_export(context, volume) def create_volume(self, volume): """Create a volume on the IBM XIV and DS8K Storage system.""" return self.xiv_ds8k_proxy.create_volume(volume) def delete_volume(self, volume): """Delete a volume on the IBM XIV and DS8K Storage system.""" self.xiv_ds8k_proxy.delete_volume(volume) def remove_export(self, context, volume): """Disconnect a volume from an attached instance.""" return self.xiv_ds8k_proxy.remove_export(context, volume) def initialize_connection(self, volume, connector): """Map the created volume.""" return self.xiv_ds8k_proxy.initialize_connection(volume, connector) def terminate_connection(self, volume, connector, **kwargs): """Terminate a connection to a volume.""" return self.xiv_ds8k_proxy.terminate_connection(volume, connector) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot.""" return self.xiv_ds8k_proxy.create_volume_from_snapshot( volume, snapshot) def create_snapshot(self, snapshot): """Create a snapshot.""" return self.xiv_ds8k_proxy.create_snapshot(snapshot) def delete_snapshot(self, snapshot): """Delete a snapshot.""" return self.xiv_ds8k_proxy.delete_snapshot(snapshot) def get_volume_stats(self, refresh=False): """Get volume stats.""" return self.xiv_ds8k_proxy.get_volume_stats(refresh) def create_cloned_volume(self, tgt_volume, src_volume): """Create Cloned Volume.""" return self.xiv_ds8k_proxy.create_cloned_volume(tgt_volume, src_volume) def extend_volume(self, volume, new_size): """Extend Created Volume.""" self.xiv_ds8k_proxy.extend_volume(volume, new_size) def migrate_volume(self, context, volume, host): """Migrate the volume to the specified host.""" return self.xiv_ds8k_proxy.migrate_volume(context, volume, host) cinder-2014.1.5/cinder/volume/drivers/windows/0000775000567000056700000000000012540643114022273 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/windows/windows_utils.py0000664000567000056700000003226712540642606025576 0ustar jenkinsjenkins00000000000000# Copyright 2013 Pedro Navarro Perez # All Rights Reserved. # # 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. """ Utility class for Windows Storage Server 2012 volume related operations. """ import os from cinder import exception from cinder.openstack.common import log as logging # Check needed for unit testing on Unix if os.name == 'nt': import wmi LOG = logging.getLogger(__name__) class WindowsUtils(object): """Executes volume driver commands on Windows Storage server.""" def __init__(self, *args, **kwargs): # Set the flags self._conn_wmi = wmi.WMI(moniker='//./root/wmi') self._conn_cimv2 = wmi.WMI(moniker='//./root/cimv2') def check_for_setup_error(self): """Check that the driver is working and can communicate. Invokes the portal and checks that is listening ISCSI traffic. """ try: wt_portal = self._conn_wmi.WT_Portal()[0] listen = wt_portal.Listen except wmi.x_wmi as exc: err_msg = (_('check_for_setup_error: the state of the WT Portal ' 'could not be verified. WMI exception: %s')) LOG.error(err_msg % exc) raise exception.VolumeBackendAPIException(data=err_msg % exc) if not listen: err_msg = (_('check_for_setup_error: there is no ISCSI traffic ' 'listening.')) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def get_host_information(self, volume, target_name): """Getting the portal and port information.""" try: wt_portal = self._conn_wmi.WT_Portal()[0] except wmi.x_wmi as exc: err_msg = (_('get_host_information: the state of the WT Portal ' 'could not be verified. WMI exception: %s')) LOG.error(err_msg % exc) raise exception.VolumeBackendAPIException(data=err_msg % exc) (address, port) = (wt_portal.Address, wt_portal.Port) # Getting the host information try: hosts = self._conn_wmi.WT_Host(Hostname=target_name) host = hosts[0] except wmi.x_wmi as exc: err_msg = (_('get_host_information: the ISCSI target information ' 'could not be retrieved. WMI exception: %s')) LOG.error(err_msg % exc) raise exception.VolumeBackendAPIException(data=err_msg) properties = {} properties['target_discovered'] = False properties['target_portal'] = '%s:%s' % (address, port) properties['target_iqn'] = host.TargetIQN properties['target_lun'] = 0 properties['volume_id'] = volume['id'] auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret return properties def associate_initiator_with_iscsi_target(self, initiator_name, target_name): """Sets information used by the iSCSI target entry.""" try: cl = self._conn_wmi.__getattr__("WT_IDMethod") wt_idmethod = cl.new() wt_idmethod.HostName = target_name # Identification method is IQN wt_idmethod.Method = 4 wt_idmethod.Value = initiator_name wt_idmethod.put() except wmi.x_wmi as exc: err_msg = (_('associate_initiator_with_iscsi_target: an ' 'association between initiator: %(init)s and ' 'target name: %(target)s could not be established. ' 'WMI exception: %(wmi_exc)s') % {'init': initiator_name, 'target': target_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def delete_iscsi_target(self, initiator_name, target_name): """Removes iSCSI targets to hosts.""" try: wt_idmethod = self._conn_wmi.WT_IDMethod(HostName=target_name, Method=4, Value=initiator_name)[0] wt_idmethod.Delete_() except wmi.x_wmi as exc: err_msg = (_( 'delete_iscsi_target: error when deleting the iscsi target ' 'associated with target name: %(target)s . ' 'WMI exception: %(wmi_exc)s') % {'target': target_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def create_volume(self, vhd_path, vol_name, vol_size): """Creates a volume.""" try: cl = self._conn_wmi.__getattr__("WT_Disk") cl.NewWTDisk(DevicePath=vhd_path, Description=vol_name, SizeInMB=vol_size * 1024) except wmi.x_wmi as exc: err_msg = (_( 'create_volume: error when creating the volume name: ' '%(vol_name)s . WMI exception: ' '%(wmi_exc)s') % {'vol_name': vol_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def delete_volume(self, vol_name, vhd_path): """Driver entry point for destroying existing volumes.""" try: disk = self._conn_wmi.WT_Disk(Description=vol_name) if not disk: LOG.debug(_('Skipping deleting disk %s as it does not ' 'exist.') % vol_name) return wt_disk = disk[0] wt_disk.Delete_() vhdfiles = self._conn_cimv2.query( "Select * from CIM_DataFile where Name = '" + vhd_path + "'") if len(vhdfiles) > 0: vhdfiles[0].Delete() except wmi.x_wmi as exc: err_msg = (_( 'delete_volume: error when deleting the volume name: ' '%(vol_name)s . WMI exception: ' '%(wmi_exc)s') % {'vol_name': vol_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def create_snapshot(self, vol_name, snapshot_name): """Driver entry point for creating a snapshot.""" try: wt_disk = self._conn_wmi.WT_Disk(Description=vol_name)[0] # API Calls gets Generic Failure cl = self._conn_wmi.__getattr__("WT_Snapshot") disk_id = wt_disk.WTD out = cl.Create(WTD=disk_id) # Setting description since it used as a KEY wt_snapshot_created = self._conn_wmi.WT_Snapshot(Id=out[0])[0] wt_snapshot_created.Description = snapshot_name wt_snapshot_created.put() except wmi.x_wmi as exc: err_msg = (_( 'create_snapshot: error when creating the snapshot name: ' '%(vol_name)s . WMI exception: ' '%(wmi_exc)s') % {'vol_name': snapshot_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def create_volume_from_snapshot(self, vol_name, snap_name): """Driver entry point for exporting snapshots as volumes.""" try: wt_snapshot = self._conn_wmi.WT_Snapshot(Description=snap_name)[0] disk_id = wt_snapshot.Export()[0] wt_disk = self._conn_wmi.WT_Disk(WTD=disk_id)[0] wt_disk.Description = vol_name wt_disk.put() except wmi.x_wmi as exc: err_msg = (_( 'create_volume_from_snapshot: error when creating the volume ' 'name: %(vol_name)s from snapshot name: %(snap_name)s. ' 'WMI exception: %(wmi_exc)s') % {'vol_name': vol_name, 'snap_name': snap_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def delete_snapshot(self, snap_name): """Driver entry point for deleting a snapshot.""" try: wt_snapshot = self._conn_wmi.WT_Snapshot(Description=snap_name)[0] wt_snapshot.Delete_() except wmi.x_wmi as exc: err_msg = (_( 'delete_snapshot: error when deleting the snapshot name: ' '%(snap_name)s . WMI exception: ' '%(wmi_exc)s') % {'snap_name': snap_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def create_iscsi_target(self, target_name, ensure): """Creates ISCSI target.""" try: cl = self._conn_wmi.__getattr__("WT_Host") cl.NewHost(HostName=target_name) except wmi.x_wmi as exc: excep_info = exc.com_error.excepinfo[2] if not ensure or excep_info.find(u'The file exists') == -1: err_msg = (_( 'create_iscsi_target: error when creating iscsi target: ' '%(tar_name)s . WMI exception: ' '%(wmi_exc)s') % {'tar_name': target_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) else: LOG.info(_('Ignored target creation error "%s"' ' while ensuring export'), exc) def remove_iscsi_target(self, target_name): """Removes ISCSI target.""" try: host = self._conn_wmi.WT_Host(HostName=target_name) if not host: LOG.debug(_('Skipping removing target %s as it does not ' 'exist.') % target_name) return wt_host = host[0] wt_host.RemoveAllWTDisks() wt_host.Delete_() except wmi.x_wmi as exc: err_msg = (_( 'remove_iscsi_target: error when deleting iscsi target: ' '%(tar_name)s . WMI exception: ' '%(wmi_exc)s') % {'tar_name': target_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def add_disk_to_target(self, vol_name, target_name): """Adds the disk to the target.""" try: q = self._conn_wmi.WT_Disk(Description=vol_name) wt_disk = q[0] wt_host = self._conn_wmi.WT_Host(HostName=target_name)[0] wt_host.AddWTDisk(wt_disk.WTD) except wmi.x_wmi as exc: err_msg = (_( 'add_disk_to_target: error adding disk associated to volume : ' '%(vol_name)s to the target name: %(tar_name)s ' '. WMI exception: %(wmi_exc)s') % {'tar_name': target_name, 'vol_name': vol_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def copy_vhd_disk(self, source_path, destination_path): """Copy the vhd disk from source path to destination path.""" try: vhdfiles = self._conn_cimv2.query( "Select * from CIM_DataFile where Name = '" + source_path + "'") if len(vhdfiles) > 0: vhdfiles[0].Copy(destination_path) except wmi.x_wmi as exc: err_msg = (_( 'copy_vhd_disk: error when copying disk from source path : ' '%(src_path)s to destination path: %(dest_path)s ' '. WMI exception: ' '%(wmi_exc)s') % {'src_path': source_path, 'dest_path': destination_path, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) def extend(self, vol_name, additional_size): """Extend an existing volume.""" try: q = self._conn_wmi.WT_Disk(Description=vol_name) wt_disk = q[0] wt_disk.Extend(additional_size) except wmi.x_wmi as exc: err_msg = (_( 'extend: error when extending the volume: %(vol_name)s ' '.WMI exception: %(wmi_exc)s') % {'vol_name': vol_name, 'wmi_exc': exc}) LOG.error(err_msg) raise exception.VolumeBackendAPIException(data=err_msg) cinder-2014.1.5/cinder/volume/drivers/windows/__init__.py0000664000567000056700000000000012540642603024374 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/windows/windows.py0000664000567000056700000002057112540642606024351 0ustar jenkinsjenkins00000000000000# Copyright 2012 Pedro Navarro Perez # All Rights Reserved. # # 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. """ Volume driver for Windows Server 2012 This driver requires ISCSI target role installed """ import os from oslo.config import cfg from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers.windows import windows_utils LOG = logging.getLogger(__name__) windows_opts = [ cfg.StrOpt('windows_iscsi_lun_path', default='C:\iSCSIVirtualDisks', help='Path to store VHD backed volumes'), ] CONF = cfg.CONF CONF.register_opts(windows_opts) class WindowsDriver(driver.ISCSIDriver): """Executes volume driver commands on Windows Storage server.""" VERSION = '1.0.0' def __init__(self, *args, **kwargs): super(WindowsDriver, self).__init__(*args, **kwargs) self.configuration = kwargs.get('configuration', None) if self.configuration: self.configuration.append_config_values(windows_opts) def do_setup(self, context): """Setup the Windows Volume driver. Called one time by the manager after the driver is loaded. Validate the flags we care about """ self.utils = windows_utils.WindowsUtils() def check_for_setup_error(self): """Check that the driver is working and can communicate.""" self.utils.check_for_setup_error() def initialize_connection(self, volume, connector): """Driver entry point to attach a volume to an instance.""" initiator_name = connector['initiator'] target_name = volume['provider_location'] self.utils.associate_initiator_with_iscsi_target(initiator_name, target_name) properties = self.utils.get_host_information(volume, target_name) return { 'driver_volume_type': 'iscsi', 'data': properties, } def terminate_connection(self, volume, connector, **kwargs): """Driver entry point to unattach a volume from an instance. Unmask the LUN on the storage system so the given initiator can no longer access it. """ initiator_name = connector['initiator'] target_name = volume['provider_location'] self.utils.delete_iscsi_target(initiator_name, target_name) def create_volume(self, volume): """Driver entry point for creating a new volume.""" vhd_path = self.local_path(volume) vol_name = volume['name'] vol_size = volume['size'] self.utils.create_volume(vhd_path, vol_name, vol_size) def local_path(self, volume): base_vhd_folder = self.configuration.windows_iscsi_lun_path if not os.path.exists(base_vhd_folder): LOG.debug(_('Creating folder %s '), base_vhd_folder) os.makedirs(base_vhd_folder) return os.path.join(base_vhd_folder, str(volume['name']) + ".vhd") def delete_volume(self, volume): """Driver entry point for destroying existing volumes.""" vol_name = volume['name'] vhd_path = self.local_path(volume) self.utils.delete_volume(vol_name, vhd_path) def create_snapshot(self, snapshot): """Driver entry point for creating a snapshot.""" # Getting WT_Snapshot class vol_name = snapshot['volume_name'] snapshot_name = snapshot['name'] self.utils.create_snapshot(vol_name, snapshot_name) def create_volume_from_snapshot(self, volume, snapshot): """Driver entry point for exporting snapshots as volumes.""" snapshot_name = snapshot['name'] vol_name = volume['name'] self.utils.create_volume_from_snapshot(vol_name, snapshot_name) def delete_snapshot(self, snapshot): """Driver entry point for deleting a snapshot.""" snapshot_name = snapshot['name'] self.utils.delete_snapshot(snapshot_name) def _do_export(self, _ctx, volume, ensure=False): """Do all steps to get disk exported as LUN 0 at separate target. :param volume: reference of volume to be exported :param ensure: if True, ignore errors caused by already existing resources :return: iscsiadm-formatted provider location string """ target_name = "%s%s" % (self.configuration.iscsi_target_prefix, volume['name']) self.utils.create_iscsi_target(target_name, ensure) # Get the disk to add vol_name = volume['name'] self.utils.add_disk_to_target(vol_name, target_name) return target_name def ensure_export(self, context, volume): """Driver entry point to get the export info for an existing volume.""" self._do_export(context, volume, ensure=True) def create_export(self, context, volume): """Driver entry point to get the export info for a new volume.""" loc = self._do_export(context, volume, ensure=False) return {'provider_location': loc} def remove_export(self, context, volume): """Driver entry point to remove an export for a volume. """ target_name = "%s%s" % (self.configuration.iscsi_target_prefix, volume['name']) self.utils.remove_iscsi_target(target_name) def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" # Convert to VHD and file back to VHD image_utils.fetch_to_vhd(context, image_service, image_id, self.local_path(volume), self.configuration.volume_dd_blocksize) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" # Copy the volume to the image conversion dir temp_vhd_path = os.path.join(self.configuration.image_conversion_dir, str(image_meta['id']) + ".vhd") self.utils.copy_vhd_disk(self.local_path(volume), temp_vhd_path) image_utils.upload_volume(context, image_service, image_meta, temp_vhd_path, 'vpc') def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" # Create a new volume # Copy VHD file of the volume to clone to the created volume self.create_volume(volume) self.utils.copy_vhd_disk(self.local_path(src_vref), self.local_path(volume)) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info for Windows device.""" LOG.debug(_("Updating volume stats")) data = {} backend_name = self.__class__.__name__ if self.configuration: backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or self.__class__.__name__ data["vendor_name"] = 'Microsoft' data["driver_version"] = self.VERSION data["storage_protocol"] = 'iSCSI' data['total_capacity_gb'] = 'infinite' data['free_capacity_gb'] = 'infinite' data['reserved_percentage'] = 100 data['QoS_support'] = False self._stats = data def extend_volume(self, volume, new_size): """Extend an Existing Volume.""" old_size = volume['size'] LOG.debug(_("Extend volume from %(old_size)s GB to %(new_size)s GB."), {'old_size': old_size, 'new_size': new_size}) additional_size = (new_size - old_size) * 1024 self.utils.extend(volume['name'], additional_size) cinder-2014.1.5/cinder/volume/drivers/nfs.py0000664000567000056700000005210012540642606021744 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # All Rights Reserved. # # 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. import errno import os import re from oslo.config import cfg from cinder.brick.remotefs import remotefs from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils from cinder import units from cinder import utils from cinder.volume import driver VERSION = '1.1.0' LOG = logging.getLogger(__name__) volume_opts = [ cfg.StrOpt('nfs_shares_config', default='/etc/cinder/nfs_shares', help='File with the list of available nfs shares'), cfg.BoolOpt('nfs_sparsed_volumes', default=True, help=('Create volumes as sparsed files which take no space.' 'If set to False volume is created as regular file.' 'In such case volume creation takes a lot of time.')), cfg.FloatOpt('nfs_used_ratio', default=0.95, help=('Percent of ACTUAL usage of the underlying volume ' 'before no new volumes can be allocated to the volume ' 'destination.')), cfg.FloatOpt('nfs_oversub_ratio', default=1.0, help=('This will compare the allocated to available space on ' 'the volume destination. If the ratio exceeds this ' 'number, the destination will no longer be valid.')), cfg.StrOpt('nfs_mount_point_base', default='$state_path/mnt', help=('Base dir containing mount points for nfs shares.')), cfg.StrOpt('nfs_mount_options', default=None, help=('Mount options passed to the nfs client. See section ' 'of the nfs man page for details.')), ] nas_opts = [ cfg.StrOpt('nas_ip', default='', help='IP address or Hostname of NAS system.'), cfg.StrOpt('nas_login', default='admin', help='User name to connect to NAS system.'), cfg.StrOpt('nas_password', default='', help='Password to connect to NAS system.', secret=True), cfg.IntOpt('nas_ssh_port', default=22, help='SSH port to use to connect to NAS system.'), cfg.StrOpt('nas_private_key', default='', help='Filename of private key to use for SSH authentication.'), ] CONF = cfg.CONF CONF.register_opts(volume_opts) CONF.register_opts(nas_opts) class RemoteFsDriver(driver.VolumeDriver): """Common base for drivers that work like NFS.""" VERSION = "0.0.0" def __init__(self, *args, **kwargs): super(RemoteFsDriver, self).__init__(*args, **kwargs) self.shares = {} self._mounted_shares = [] def check_for_setup_error(self): """Just to override parent behavior.""" pass def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info. :param volume: volume reference :param connector: connector reference """ data = {'export': volume['provider_location'], 'name': volume['name']} if volume['provider_location'] in self.shares: data['options'] = self.shares[volume['provider_location']] return { 'driver_volume_type': self.driver_volume_type, 'data': data, 'mount_point_base': self._get_mount_point_base() } def _get_mount_point_base(self): """Returns the mount point base for the remote fs. This method facilitates returning mount point base for the specific remote fs. Override this method in the respective driver to return the entry to be used while attach/detach using brick in cinder. If not overridden then it returns None without raising exception to continue working for cases when not used with brick. """ LOG.debug(_("Driver specific implementation needs to return" " mount_point_base.")) return None def create_volume(self, volume): """Creates a volume. :param volume: volume reference """ self._ensure_shares_mounted() volume['provider_location'] = self._find_share(volume['size']) LOG.info(_('casted to %s') % volume['provider_location']) self._do_create_volume(volume) return {'provider_location': volume['provider_location']} def _do_create_volume(self, volume): """Create a volume on given remote share. :param volume: volume reference """ volume_path = self.local_path(volume) volume_size = volume['size'] if getattr(self.configuration, self.driver_prefix + '_sparsed_volumes'): self._create_sparsed_file(volume_path, volume_size) else: self._create_regular_file(volume_path, volume_size) self._set_rw_permissions_for_all(volume_path) def _ensure_shares_mounted(self): """Look for remote shares in the flags and tries to mount them locally. """ mounted_shares = [] self._load_shares_config(getattr(self.configuration, self.driver_prefix + '_shares_config')) for share in self.shares.keys(): try: self._ensure_share_mounted(share) mounted_shares.append(share) except Exception as exc: LOG.warning(_('Exception during mounting %s') % (exc,)) self._mounted_shares = mounted_shares LOG.debug('Available shares %s' % self._mounted_shares) def create_cloned_volume(self, volume, src_vref): raise NotImplementedError() def delete_volume(self, volume): """Deletes a logical volume. :param volume: volume reference """ if not volume['provider_location']: LOG.warn(_('Volume %s does not have provider_location specified, ' 'skipping'), volume['name']) return self._ensure_share_mounted(volume['provider_location']) mounted_path = self.local_path(volume) self._execute('rm', '-f', mounted_path, run_as_root=True) def ensure_export(self, ctx, volume): """Synchronously recreates an export for a logical volume.""" self._ensure_share_mounted(volume['provider_location']) def create_export(self, ctx, volume): """Exports the volume. Can optionally return a Dictionary of changes to the volume object to be persisted. """ pass def remove_export(self, ctx, volume): """Removes an export for a logical volume.""" pass def delete_snapshot(self, snapshot): """Do nothing for this driver, but allow manager to handle deletion of snapshot in error state. """ pass def _create_sparsed_file(self, path, size): """Creates file with 0 disk usage.""" self._execute('truncate', '-s', '%sG' % size, path, run_as_root=True) def _create_regular_file(self, path, size): """Creates regular file of given size. Takes a lot of time for large files. """ block_size_mb = 1 block_count = size * units.GiB / (block_size_mb * units.MiB) self._execute('dd', 'if=/dev/zero', 'of=%s' % path, 'bs=%dM' % block_size_mb, 'count=%d' % block_count, run_as_root=True) def _create_qcow2_file(self, path, size_gb): """Creates a QCOW2 file of a given size.""" self._execute('qemu-img', 'create', '-f', 'qcow2', '-o', 'preallocation=metadata', path, str(size_gb * units.GiB), run_as_root=True) def _set_rw_permissions_for_all(self, path): """Sets 666 permissions for the path.""" self._execute('chmod', 'ugo+rw', path, run_as_root=True) def local_path(self, volume): """Get volume path (mounted locally fs path) for given volume :param volume: volume reference """ nfs_share = volume['provider_location'] return os.path.join(self._get_mount_point_for_share(nfs_share), volume['name']) def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" image_utils.fetch_to_raw(context, image_service, image_id, self.local_path(volume), self.configuration.volume_dd_blocksize, size=volume['size']) # NOTE (leseb): Set the virtual size of the image # the raw conversion overwrote the destination file # (which had the correct size) # with the fetched glance image size, # thus the initial 'size' parameter is not honored # this sets the size to the one asked in the first place by the user # and then verify the final virtual size image_utils.resize_image(self.local_path(volume), volume['size']) data = image_utils.qemu_img_info(self.local_path(volume)) virt_size = data.virtual_size / units.GiB if virt_size != volume['size']: raise exception.ImageUnacceptable( image_id=image_id, reason=(_("Expected volume size was %d") % volume['size']) + (_(" but size is now %d") % virt_size)) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" image_utils.upload_volume(context, image_service, image_meta, self.local_path(volume)) def _read_config_file(self, config_file): # Returns list of lines in file with open(config_file) as f: return f.readlines() def _load_shares_config(self, share_file): self.shares = {} for share in self._read_config_file(share_file): # A configuration line may be either: # host:/vol_name # or # host:/vol_name -o options=123,rw --other if not share.strip(): # Skip blank or whitespace-only lines continue if share.startswith('#'): continue share_info = share.split(' ', 1) # results in share_info = # [ 'address:/vol', '-o options=123,rw --other' ] share_address = share_info[0].strip().decode('unicode_escape') share_opts = share_info[1].strip() if len(share_info) > 1 else None if not re.match(r'.+:/.+', share_address): LOG.warn("Share %s ignored due to invalid format. Must be of " "form address:/export." % share_address) continue self.shares[share_address] = share_opts LOG.debug("shares loaded: %s", self.shares) def _get_mount_point_for_share(self, path): raise NotImplementedError() def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" pass def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, update the stats first. """ if refresh or not self._stats: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" data = {} backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or self.volume_backend_name data['vendor_name'] = 'Open Source' data['driver_version'] = self.get_version() data['storage_protocol'] = self.driver_volume_type self._ensure_shares_mounted() global_capacity = 0 global_free = 0 for share in self._mounted_shares: capacity, free, used = self._get_capacity_info(share) global_capacity += capacity global_free += free data['total_capacity_gb'] = global_capacity / float(units.GiB) data['free_capacity_gb'] = global_free / float(units.GiB) data['reserved_percentage'] = 0 data['QoS_support'] = False self._stats = data def _do_mount(self, cmd, ensure, share): """Finalize mount command. :param cmd: command to do the actual mount :param ensure: boolean to allow remounting a share with a warning :param share: description of the share for error reporting """ try: self._execute(*cmd, run_as_root=True) except putils.ProcessExecutionError as exc: if ensure and 'already mounted' in exc.stderr: LOG.warn(_("%s is already mounted"), share) else: raise def _get_capacity_info(self, nfs_share): raise NotImplementedError() def _find_share(self, volume_size_in_gib): raise NotImplementedError() def _ensure_share_mounted(self, nfs_share): raise NotImplementedError() class NfsDriver(RemoteFsDriver): """NFS based cinder driver. Creates file on NFS share for using it as block device on hypervisor. """ driver_volume_type = 'nfs' driver_prefix = 'nfs' volume_backend_name = 'Generic_NFS' VERSION = VERSION def __init__(self, execute=putils.execute, *args, **kwargs): self._remotefsclient = None super(NfsDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(volume_opts) root_helper = utils.get_root_helper() # base bound to instance is used in RemoteFsConnector. self.base = getattr(self.configuration, 'nfs_mount_point_base', CONF.nfs_mount_point_base) opts = getattr(self.configuration, 'nfs_mount_options', CONF.nfs_mount_options) self._remotefsclient = remotefs.RemoteFsClient( 'nfs', root_helper, execute=execute, nfs_mount_point_base=self.base, nfs_mount_options=opts) def set_execute(self, execute): super(NfsDriver, self).set_execute(execute) if self._remotefsclient: self._remotefsclient.set_execute(execute) def do_setup(self, context): """Any initialization the volume driver does while starting.""" super(NfsDriver, self).do_setup(context) config = self.configuration.nfs_shares_config if not config: msg = (_("There's no NFS config file configured (%s)") % 'nfs_shares_config') LOG.warn(msg) raise exception.NfsException(msg) if not os.path.exists(config): msg = (_("NFS config file at %(config)s doesn't exist") % {'config': config}) LOG.warn(msg) raise exception.NfsException(msg) if not self.configuration.nfs_oversub_ratio > 0: msg = _("NFS config 'nfs_oversub_ratio' invalid. Must be > 0: " "%s") % self.configuration.nfs_oversub_ratio LOG.error(msg) raise exception.NfsException(msg) if ((not self.configuration.nfs_used_ratio > 0) and (self.configuration.nfs_used_ratio <= 1)): msg = _("NFS config 'nfs_used_ratio' invalid. Must be > 0 " "and <= 1.0: %s") % self.configuration.nfs_used_ratio LOG.error(msg) raise exception.NfsException(msg) self.shares = {} # address : options # Check if mount.nfs is installed try: self._execute('mount.nfs', check_exit_code=False, run_as_root=True) except OSError as exc: if exc.errno == errno.ENOENT: raise exception.NfsException('mount.nfs is not installed') else: raise exc def _ensure_share_mounted(self, nfs_share): mnt_flags = [] if self.shares.get(nfs_share) is not None: mnt_flags = self.shares[nfs_share].split() self._remotefsclient.mount(nfs_share, mnt_flags) def _find_share(self, volume_size_in_gib): """Choose NFS share among available ones for given volume size. For instances with more than one share that meets the criteria, the share with the least "allocated" space will be selected. :param volume_size_in_gib: int size in GB """ if not self._mounted_shares: raise exception.NfsNoSharesMounted() target_share = None target_share_reserved = 0 for nfs_share in self._mounted_shares: if not self._is_share_eligible(nfs_share, volume_size_in_gib): continue total_size, total_available, total_allocated = \ self._get_capacity_info(nfs_share) if target_share is not None: if target_share_reserved > total_allocated: target_share = nfs_share target_share_reserved = total_allocated else: target_share = nfs_share target_share_reserved = total_allocated if target_share is None: raise exception.NfsNoSuitableShareFound( volume_size=volume_size_in_gib) LOG.debug(_('Selected %s as target nfs share.'), target_share) return target_share def _is_share_eligible(self, nfs_share, volume_size_in_gib): """Verifies NFS share is eligible to host volume with given size. First validation step: ratio of actual space (used_space / total_space) is less than 'nfs_used_ratio'. Second validation step: apparent space allocated (differs from actual space used when using sparse files) and compares the apparent available space (total_available * nfs_oversub_ratio) to ensure enough space is available for the new volume. :param nfs_share: nfs share :param volume_size_in_gib: int size in GB """ used_ratio = self.configuration.nfs_used_ratio oversub_ratio = self.configuration.nfs_oversub_ratio requested_volume_size = volume_size_in_gib * units.GiB total_size, total_available, total_allocated = \ self._get_capacity_info(nfs_share) apparent_size = max(0, total_size * oversub_ratio) apparent_available = max(0, apparent_size - total_allocated) used = (total_size - total_available) / total_size if used > used_ratio: # NOTE(morganfainberg): We check the used_ratio first since # with oversubscription it is possible to not have the actual # available space but be within our oversubscription limit # therefore allowing this share to still be selected as a valid # target. LOG.debug(_('%s is above nfs_used_ratio'), nfs_share) return False if apparent_available <= requested_volume_size: LOG.debug(_('%s is above nfs_oversub_ratio'), nfs_share) return False if total_allocated / total_size >= oversub_ratio: LOG.debug(_('%s reserved space is above nfs_oversub_ratio'), nfs_share) return False return True def _get_mount_point_for_share(self, nfs_share): """Needed by parent class.""" return self._remotefsclient.get_mount_point(nfs_share) def _get_capacity_info(self, nfs_share): """Calculate available space on the NFS share. :param nfs_share: example 172.18.194.100:/var/nfs """ mount_point = self._get_mount_point_for_share(nfs_share) df, _ = self._execute('stat', '-f', '-c', '%S %b %a', mount_point, run_as_root=True) block_size, blocks_total, blocks_avail = map(float, df.split()) total_available = block_size * blocks_avail total_size = block_size * blocks_total du, _ = self._execute('du', '-sb', '--apparent-size', '--exclude', '*snapshot*', mount_point, run_as_root=True) total_allocated = float(du.split()[0]) return total_size, total_available, total_allocated def _get_mount_point_base(self): return self.base cinder-2014.1.5/cinder/volume/drivers/san/0000775000567000056700000000000012540643114021362 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/san/hp/0000775000567000056700000000000012540643114021771 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_3par_fc.py0000664000567000056700000003234512540642606024363 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # Copyright 2012 OpenStack Foundation # # 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. # """ Volume driver for HP 3PAR Storage array. This driver requires 3.1.3 firmware on the 3PAR array, using the 3.x version of the hp3parclient. You will need to install the python hp3parclient. sudo pip install --upgrade "hp3parclient>=3.0" Set the following in the cinder.conf file to enable the 3PAR Fibre Channel Driver along with the required flags: volume_driver=cinder.volume.drivers.san.hp.hp_3par_fc.HP3PARFCDriver """ from hp3parclient import exceptions as hpexceptions from cinder.openstack.common import log as logging from cinder import utils import cinder.volume.driver from cinder.volume.drivers.san.hp import hp_3par_common as hpcommon from cinder.volume.drivers.san import san LOG = logging.getLogger(__name__) class HP3PARFCDriver(cinder.volume.driver.FibreChannelDriver): """OpenStack Fibre Channel driver to enable 3PAR storage array. Version history: 1.0 - Initial driver 1.1 - QoS, extend volume, multiple iscsi ports, remove domain, session changes, faster clone, requires 3.1.2 MU2 firmware, copy volume <--> Image. 1.2.0 - Updated the use of the hp3parclient to 2.0.0 and refactored the drivers to use the new APIs. 1.2.1 - Synchronized extend_volume method. 1.2.2 - Added try/finally around client login/logout. 1.2.3 - Added ability to add WWNs to host. 1.2.4 - Added metadata during attach/detach bug #1258033. 1.3.0 - Removed all SSH code. We rely on the hp3parclient now. 2.0.0 - Update hp3parclient API uses 3.0.x 2.0.2 - Add back-end assisted volume migrate 2.0.3 - Added initiator-target map for FC Zone Manager """ VERSION = "2.0.3" def __init__(self, *args, **kwargs): super(HP3PARFCDriver, self).__init__(*args, **kwargs) self.common = None self.configuration.append_config_values(hpcommon.hp3par_opts) self.configuration.append_config_values(san.san_opts) def _init_common(self): return hpcommon.HP3PARCommon(self.configuration) def _check_flags(self): """Sanity check to ensure we have required options set.""" required_flags = ['hp3par_api_url', 'hp3par_username', 'hp3par_password', 'san_ip', 'san_login', 'san_password'] self.common.check_flags(self.configuration, required_flags) @utils.synchronized('3par', external=True) def get_volume_stats(self, refresh): self.common.client_login() try: stats = self.common.get_volume_stats(refresh) stats['storage_protocol'] = 'FC' stats['driver_version'] = self.VERSION backend_name = self.configuration.safe_get('volume_backend_name') stats['volume_backend_name'] = (backend_name or self.__class__.__name__) return stats finally: self.common.client_logout() def do_setup(self, context): self.common = self._init_common() self._check_flags() self.common.do_setup(context) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" self._check_flags() @utils.synchronized('3par', external=True) def create_volume(self, volume): self.common.client_login() try: metadata = self.common.create_volume(volume) return {'metadata': metadata} finally: self.common.client_logout() @utils.synchronized('3par', external=True) def create_cloned_volume(self, volume, src_vref): self.common.client_login() try: new_vol = self.common.create_cloned_volume(volume, src_vref) return {'metadata': new_vol} finally: self.common.client_logout() @utils.synchronized('3par', external=True) def delete_volume(self, volume): self.common.client_login() try: self.common.delete_volume(volume) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot. TODO: support using the size from the user. """ self.common.client_login() try: metadata = self.common.create_volume_from_snapshot(volume, snapshot) return {'metadata': metadata} finally: self.common.client_logout() @utils.synchronized('3par', external=True) def create_snapshot(self, snapshot): self.common.client_login() try: self.common.create_snapshot(snapshot) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def delete_snapshot(self, snapshot): self.common.client_login() try: self.common.delete_snapshot(snapshot) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def initialize_connection(self, volume, connector): """Assigns the volume to a server. Assign any created volume to a compute node/host so that it can be used from that host. The driver returns a driver_volume_type of 'fibre_channel'. The target_wwn can be a single entry or a list of wwns that correspond to the list of remote wwn(s) that will export the volume. Example return values: { 'driver_volume_type': 'fibre_channel' 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': '1234567890123', } } or { 'driver_volume_type': 'fibre_channel' 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': ['1234567890123', '0987654321321'], } } Steps to export a volume on 3PAR * Create a host on the 3par with the target wwn * Create a VLUN for that HOST with the volume we want to export. """ self.common.client_login() try: # we have to make sure we have a host host = self._create_host(volume, connector) # now that we have a host, create the VLUN vlun = self.common.create_vlun(volume, host) target_wwns, init_targ_map = self._build_initiator_target_map( connector) info = {'driver_volume_type': 'fibre_channel', 'data': {'target_lun': vlun['lun'], 'target_discovered': True, 'target_wwn': target_wwns, 'initiator_target_map': init_targ_map}} return info finally: self.common.client_logout() @utils.synchronized('3par', external=True) def terminate_connection(self, volume, connector, **kwargs): """Driver entry point to unattach a volume from an instance.""" self.common.client_login() try: hostname = self.common._safe_hostname(connector['host']) self.common.terminate_connection(volume, hostname, wwn=connector['wwpns']) target_wwns, init_targ_map = self._build_initiator_target_map( connector) info = {'driver_volume_type': 'fibre_channel', 'data': {'target_wwn': target_wwns, 'initiator_target_map': init_targ_map}} return info finally: self.common.client_logout() def _build_initiator_target_map(self, connector): """Build the target_wwns and the initiator target map.""" fc_ports = self.common.get_active_fc_target_ports() target_wwns = [] for port in fc_ports: target_wwns.append(port['portWWN']) initiator_wwns = connector['wwpns'] init_targ_map = {} for initiator in initiator_wwns: init_targ_map[initiator] = target_wwns return target_wwns, init_targ_map def _create_3par_fibrechan_host(self, hostname, wwns, domain, persona_id): """Create a 3PAR host. Create a 3PAR host, if there is already a host on the 3par using the same wwn but with a different hostname, return the hostname used by 3PAR. """ # first search for an existing host host_found = None for wwn in wwns: host_found = self.common.client.findHost(wwn=wwn) if host_found is not None: break if host_found is not None: self.common.hosts_naming_dict[hostname] = host_found return host_found else: persona_id = int(persona_id) self.common.client.createHost(hostname, FCWwns=wwns, optional={'domain': domain, 'persona': persona_id}) return hostname def _modify_3par_fibrechan_host(self, hostname, wwn): mod_request = {'pathOperation': self.common.client.HOST_EDIT_ADD, 'FCWWNs': wwn} self.common.client.modifyHost(hostname, mod_request) def _create_host(self, volume, connector): """Creates or modifies existing 3PAR host.""" host = None hostname = self.common._safe_hostname(connector['host']) cpg = self.common.get_cpg(volume, allowSnap=True) domain = self.common.get_domain(cpg) try: host = self.common._get_3par_host(hostname) except hpexceptions.HTTPNotFound as ex: # get persona from the volume type extra specs persona_id = self.common.get_persona_type(volume) # host doesn't exist, we have to create it hostname = self._create_3par_fibrechan_host(hostname, connector['wwpns'], domain, persona_id) host = self.common._get_3par_host(hostname) return self._add_new_wwn_to_host(host, connector['wwpns']) def _add_new_wwn_to_host(self, host, wwns): """Add wwns to a host if one or more don't exist. Identify if argument wwns contains any world wide names not configured in the 3PAR host path. If any are found, add them to the 3PAR host. """ # get the currently configured wwns # from the host's FC paths host_wwns = [] if 'FCPaths' in host: for path in host['FCPaths']: wwn = path.get('wwn', None) if wwn is not None: host_wwns.append(wwn.lower()) # lower case all wwns in the compare list compare_wwns = [x.lower() for x in wwns] # calculate wwns in compare list, but not in host_wwns list new_wwns = list(set(compare_wwns).difference(host_wwns)) # if any wwns found that were not in host list, # add them to the host if (len(new_wwns) > 0): self._modify_3par_fibrechan_host(host['name'], new_wwns) host = self.common._get_3par_host(host['name']) return host @utils.synchronized('3par', external=True) def create_export(self, context, volume): pass @utils.synchronized('3par', external=True) def ensure_export(self, context, volume): pass @utils.synchronized('3par', external=True) def remove_export(self, context, volume): pass @utils.synchronized('3par', external=True) def extend_volume(self, volume, new_size): self.common.client_login() try: self.common.extend_volume(volume, new_size) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def attach_volume(self, context, volume, instance_uuid, host_name, mountpoint): self.common.attach_volume(volume, instance_uuid) @utils.synchronized('3par', external=True) def detach_volume(self, context, volume): self.common.detach_volume(volume) @utils.synchronized('3par', external=True) def migrate_volume(self, context, volume, host): self.common.client_login() try: return self.common.migrate_volume(volume, host) finally: self.common.client_logout() cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_msa_common.py0000664000567000056700000002657212540642606025203 0ustar jenkinsjenkins00000000000000# Copyright 2014 Objectif Libre # # 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. # """ Volume driver common utilities for HP MSA Storage array """ import base64 import uuid from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder.volume.drivers.san.hp import hp_msa_client as msa LOG = logging.getLogger(__name__) hpmsa_opt = [ cfg.StrOpt('msa_vdisk', default='OpenStack', help="The VDisk to use for volume creation."), ] CONF = cfg.CONF CONF.register_opts(hpmsa_opt) class HPMSACommon(object): VERSION = "0.1" stats = {} def __init__(self, config): self.config = config self.client = msa.HPMSAClient(self.config.san_ip, self.config.san_login, self.config.san_password) self.vdisk = self.config.msa_vdisk def get_version(self): return self.VERSION def do_setup(self, context): self.client_login() self._validate_vdisks() self.client_logout() def client_login(self): LOG.debug(_("Connecting to MSA")) try: self.client.login() except msa.HPMSAConnectionError as ex: msg = (_("Failed to connect to MSA Array (%(host)s): %(err)s") % {'host': self.config.san_ip, 'err': ex}) LOG.error(msg) raise exception.HPMSAConnectionError(reason=msg) except msa.HPMSAAuthenticationError as e: msg = _("Failed to log on MSA Array (invalid login?)") LOG.error(msg) raise exception.HPMSAConnectionError(reason=msg) def _validate_vdisks(self): if not self.client.vdisk_exists(self.vdisk): self.client_logout() raise exception.HPMSAInvalidVDisk(vdisk=self.vdisk) def client_logout(self): self.client.logout() LOG.debug(_("Disconnected from MSA Array")) def _get_vol_name(self, volume_id): volume_name = self._encode_name(volume_id) return "v%s" % volume_name def _get_snap_name(self, snapshot_id): snapshot_name = self._encode_name(snapshot_id) return "s%s" % snapshot_name def _encode_name(self, name): """Get converted MSA volume name. Converts the openstack volume id from ecffc30f-98cb-4cf5-85ee-d7309cc17cd2 to 7P_DD5jLTPWF7tcwnMF80g We convert the 128 bits of the uuid into a 24character long base64 encoded string. This still exceeds the limit of 20 characters so we truncate the name later. """ uuid_str = name.replace("-", "") vol_uuid = uuid.UUID('urn:uuid:%s' % uuid_str) vol_encoded = base64.b64encode(vol_uuid.bytes) vol_encoded = vol_encoded.replace('=', '') # + is not a valid character for MSA vol_encoded = vol_encoded.replace('+', '.') # since we use http URLs to send paramters, '/' is not an acceptable # parameter vol_encoded = vol_encoded.replace('/', '_') # NOTE(gpocentek): we limit the size to 20 characters since the array # doesn't support more than that for now. Duplicates should happen very # rarely. # We return 19 chars here because the _get_{vol,snap}_name functions # prepend a character return vol_encoded[:19] def check_flags(self, options, required_flags): for flag in required_flags: if not getattr(options, flag, None): msg = _('%s configuration option is not set') % flag LOG.error(msg) raise exception.InvalidInput(reason=msg) def create_volume(self, volume): volume_id = self._get_vol_name(volume['id']) LOG.debug(_("Create Volume (%(display_name)s: %(name)s %(id)s)") % {'display_name': volume['display_name'], 'name': volume['name'], 'id': volume_id}) # use base64 to encode the volume name (UUID is too long for MSA) volume_name = self._get_vol_name(volume['id']) volume_size = "%dGB" % volume['size'] try: metadata = self.client.create_volume(self.config.msa_vdisk, volume_name, volume_size) except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) return metadata def _assert_enough_space_for_copy(self, volume_size): """The MSA creates a snap pool before trying to copy the volume. The pool is 5.27GB or 20% of the volume size, whichever is larger. Verify that we have enough space for the pool and then copy """ pool_size = max(volume_size * 0.2, 5.27) required_size = pool_size + volume_size if required_size > self.stats['free_capacity_gb']: raise exception.HPMSANotEnoughSpace(vdisk=self.vdisk) def _assert_source_detached(self, volume): """The MSA requires a volume to be dettached to clone it. Make sure that the volume is not in use when trying to copy it. """ if volume['status'] != "available" or \ volume['attach_status'] == "attached": msg = _("Volume must be detached to perform a clone operation.") LOG.error(msg) raise exception.VolumeAttached(volume_id=volume['id']) def create_cloned_volume(self, volume, src_vref): self.get_volume_stats(True) self._assert_enough_space_for_copy(volume['size']) self._assert_source_detached(src_vref) LOG.debug(_("Cloning Volume %(source_id)s (%(dest_id)s)") % {'source_id': volume['source_volid'], 'dest_id': volume['id']}) orig_name = self._get_vol_name(volume['source_volid']) dest_name = self._get_vol_name(volume['id']) try: self.client.copy_volume(orig_name, dest_name, self.config.msa_vdisk) except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) return None def create_volume_from_snapshot(self, volume, snapshot): self.get_volume_stats(True) self._assert_enough_space_for_copy(volume['size']) LOG.debug(_("Creating Volume from snapshot %(source_id)s " "(%(dest_id)s)") % {'source_id': snapshot['id'], 'dest_id': volume['id']}) orig_name = self._get_snap_name(snapshot['id']) dest_name = self._get_vol_name(volume['id']) try: self.client.copy_volume(orig_name, dest_name, self.config.msa_vdisk) except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) return None def delete_volume(self, volume): LOG.debug(_("Deleting Volume (%s)") % volume['id']) volume_name = self._get_vol_name(volume['id']) try: self.client.delete_volume(volume_name) except msa.HPMSARequestError as ex: LOG.error(ex) # if the volume wasn't found, ignore the error if 'The volume was not found on this system.' in ex: return raise exception.Invalid(ex) def get_volume_stats(self, refresh): if refresh: self._update_volume_stats() return self.stats def _update_volume_stats(self): # storage_protocol and volume_backend_name are # set in the child classes stats = {'driver_version': self.VERSION, 'free_capacity_gb': 'unknown', 'reserved_percentage': 0, 'storage_protocol': None, 'total_capacity_gb': 'unknown', 'QoS_support': False, 'vendor_name': 'Hewlett-Packard', 'volume_backend_name': None} try: vdisk_stats = self.client.vdisk_stats(self.config.msa_vdisk) stats.update(vdisk_stats) except msa.HPMSARequestError: err = (_("Unable to get stats for VDisk (%s)") % self.config.msa_vdisk) LOG.error(err) raise exception.Invalid(reason=err) self.stats = stats def _assert_connector_ok(self, connector): if not connector['wwpns']: msg = _("Connector doesn't provide wwpns") LOG.error(msg) raise exception.InvalidInput(reason=msg) def map_volume(self, volume, connector): self._assert_connector_ok(connector) volume_name = self._get_vol_name(volume['id']) try: data = self.client.map_volume(volume_name, connector['wwpns']) return data except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) def unmap_volume(self, volume, connector): self._assert_connector_ok(connector) volume_name = self._get_vol_name(volume['id']) try: self.client.unmap_volume(volume_name, connector['wwpns']) except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) def get_active_fc_target_ports(self): return self.client.get_active_fc_target_ports() def create_snapshot(self, snapshot): LOG.debug(_("Creating Snapshot from %(volume_id)s (%(snap_id)s)") % {'volume_id': snapshot['volume_id'], 'snap_id': snapshot['id']}) snap_name = self._get_snap_name(snapshot['id']) vol_name = self._get_vol_name(snapshot['volume_id']) try: self.client.create_snapshot(vol_name, snap_name) except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) def delete_snapshot(self, snapshot): snap_name = self._get_snap_name(snapshot['id']) LOG.debug(_("Deleting Snapshot (%s)") % snapshot['id']) try: self.client.delete_snapshot(snap_name) except msa.HPMSARequestError as ex: LOG.error(ex) # if the volume wasn't found, ignore the error if 'The volume was not found on this system.' in ex: return raise exception.Invalid(ex) def extend_volume(self, volume, new_size): volume_name = self._get_vol_name(volume['id']) old_size = volume['size'] growth_size = int(new_size) - old_size LOG.debug(_("Extending Volume %(volume_name)s from %(old_size)s to " "%(new_size)s, by %(growth_size)s GB.") % {'volume_name': volume_name, 'old_size': old_size, 'new_size': new_size, 'growth_size': growth_size}) try: self.client.extend_volume(volume_name, "%dGB" % growth_size) except msa.HPMSARequestError as ex: LOG.error(ex) raise exception.Invalid(ex) cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_3par_iscsi.py0000664000567000056700000004237012540642606025104 0ustar jenkinsjenkins00000000000000# (c) Copyright 2012-2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # """ Volume driver for HP 3PAR Storage array. This driver requires 3.1.3 firmware on the 3PAR array, using the 3.x version of the hp3parclient. You will need to install the python hp3parclient. sudo pip install --upgrade "hp3parclient>=3.0" Set the following in the cinder.conf file to enable the 3PAR iSCSI Driver along with the required flags: volume_driver=cinder.volume.drivers.san.hp.hp_3par_iscsi.HP3PARISCSIDriver """ import sys from hp3parclient import exceptions as hpexceptions from cinder import exception from cinder.openstack.common import log as logging from cinder import utils import cinder.volume.driver from cinder.volume.drivers.san.hp import hp_3par_common as hpcommon from cinder.volume.drivers.san import san LOG = logging.getLogger(__name__) DEFAULT_ISCSI_PORT = 3260 class HP3PARISCSIDriver(cinder.volume.driver.ISCSIDriver): """OpenStack iSCSI driver to enable 3PAR storage array. Version history: 1.0 - Initial driver 1.1 - QoS, extend volume, multiple iscsi ports, remove domain, session changes, faster clone, requires 3.1.2 MU2 firmware. 1.2.0 - Updated the use of the hp3parclient to 2.0.0 and refactored the drivers to use the new APIs. 1.2.1 - Synchronized extend_volume method. 1.2.2 - Added try/finally around client login/logout. 1.2.3 - log exceptions before raising 1.2.4 - Fixed iSCSI active path bug #1224594 1.2.5 - Added metadata during attach/detach bug #1258033 1.2.6 - Use least-used iscsi n:s:p for iscsi volume attach bug #1269515 This update now requires 3.1.2 MU3 firmware 1.3.0 - Removed all SSH code. We rely on the hp3parclient now. 2.0.0 - Update hp3parclient API uses 3.0.x 2.0.2 - Add back-end assisted volume migrate """ VERSION = "2.0.2" def __init__(self, *args, **kwargs): super(HP3PARISCSIDriver, self).__init__(*args, **kwargs) self.common = None self.configuration.append_config_values(hpcommon.hp3par_opts) self.configuration.append_config_values(san.san_opts) def _init_common(self): return hpcommon.HP3PARCommon(self.configuration) def _check_flags(self): """Sanity check to ensure we have required options set.""" required_flags = ['hp3par_api_url', 'hp3par_username', 'hp3par_password', 'san_ip', 'san_login', 'san_password'] self.common.check_flags(self.configuration, required_flags) @utils.synchronized('3par', external=True) def get_volume_stats(self, refresh): self.common.client_login() try: stats = self.common.get_volume_stats(refresh) stats['storage_protocol'] = 'iSCSI' stats['driver_version'] = self.VERSION backend_name = self.configuration.safe_get('volume_backend_name') stats['volume_backend_name'] = (backend_name or self.__class__.__name__) return stats finally: self.common.client_logout() def do_setup(self, context): self.common = self._init_common() self._check_flags() self.common.do_setup(context) self.common.client_login() try: self.initialize_iscsi_ports() finally: self.common.client_logout() def initialize_iscsi_ports(self): # map iscsi_ip-> ip_port # -> iqn # -> nsp self.iscsi_ips = {} temp_iscsi_ip = {} # use the 3PAR ip_addr list for iSCSI configuration if len(self.configuration.hp3par_iscsi_ips) > 0: # add port values to ip_addr, if necessary for ip_addr in self.configuration.hp3par_iscsi_ips: ip = ip_addr.split(':') if len(ip) == 1: temp_iscsi_ip[ip_addr] = {'ip_port': DEFAULT_ISCSI_PORT} elif len(ip) == 2: temp_iscsi_ip[ip[0]] = {'ip_port': ip[1]} else: msg = _("Invalid IP address format '%s'") % ip_addr LOG.warn(msg) # add the single value iscsi_ip_address option to the IP dictionary. # This way we can see if it's a valid iSCSI IP. If it's not valid, # we won't use it and won't bother to report it, see below if (self.configuration.iscsi_ip_address not in temp_iscsi_ip): ip = self.configuration.iscsi_ip_address ip_port = self.configuration.iscsi_port temp_iscsi_ip[ip] = {'ip_port': ip_port} # get all the valid iSCSI ports from 3PAR # when found, add the valid iSCSI ip, ip port, iqn and nsp # to the iSCSI IP dictionary iscsi_ports = self.common.get_active_iscsi_target_ports() for port in iscsi_ports: ip = port['IPAddr'] if ip in temp_iscsi_ip: ip_port = temp_iscsi_ip[ip]['ip_port'] self.iscsi_ips[ip] = {'ip_port': ip_port, 'nsp': port['nsp'], 'iqn': port['iSCSIName'] } del temp_iscsi_ip[ip] # if the single value iscsi_ip_address option is still in the # temp dictionary it's because it defaults to $my_ip which doesn't # make sense in this context. So, if present, remove it and move on. if (self.configuration.iscsi_ip_address in temp_iscsi_ip): del temp_iscsi_ip[self.configuration.iscsi_ip_address] # lets see if there are invalid iSCSI IPs left in the temp dict if len(temp_iscsi_ip) > 0: msg = (_("Found invalid iSCSI IP address(s) in configuration " "option(s) hp3par_iscsi_ips or iscsi_ip_address '%s.'") % (", ".join(temp_iscsi_ip))) LOG.warn(msg) if not len(self.iscsi_ips) > 0: msg = _('At least one valid iSCSI IP address must be set.') LOG.error(msg) raise exception.InvalidInput(reason=(msg)) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" self._check_flags() @utils.synchronized('3par', external=True) def create_volume(self, volume): self.common.client_login() try: metadata = self.common.create_volume(volume) return {'metadata': metadata} finally: self.common.client_logout() @utils.synchronized('3par', external=True) def create_cloned_volume(self, volume, src_vref): """Clone an existing volume.""" self.common.client_login() try: new_vol = self.common.create_cloned_volume(volume, src_vref) return {'metadata': new_vol} finally: self.common.client_logout() @utils.synchronized('3par', external=True) def delete_volume(self, volume): self.common.client_login() try: self.common.delete_volume(volume) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. TODO: support using the size from the user. """ self.common.client_login() try: metadata = self.common.create_volume_from_snapshot(volume, snapshot) return {'metadata': metadata} finally: self.common.client_logout() @utils.synchronized('3par', external=True) def create_snapshot(self, snapshot): self.common.client_login() try: self.common.create_snapshot(snapshot) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def delete_snapshot(self, snapshot): self.common.client_login() try: self.common.delete_snapshot(snapshot) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def initialize_connection(self, volume, connector): """Assigns the volume to a server. Assign any created volume to a compute node/host so that it can be used from that host. This driver returns a driver_volume_type of 'iscsi'. The format of the driver data is defined in _get_iscsi_properties. Example return value: { 'driver_volume_type': 'iscsi' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:volume-00000001', 'target_protal': '127.0.0.1:3260', 'volume_id': 1, } } Steps to export a volume on 3PAR * Get the 3PAR iSCSI iqn * Create a host on the 3par * create vlun on the 3par """ self.common.client_login() try: # we have to make sure we have a host host = self._create_host(volume, connector) least_used_nsp = self._get_least_used_nsp_for_host(host['name']) # now that we have a host, create the VLUN vlun = self.common.create_vlun(volume, host, least_used_nsp) if least_used_nsp is None: msg = _("Least busy iSCSI port not found, " "using first iSCSI port in list.") LOG.warn(msg) iscsi_ip = self.iscsi_ips.keys()[0] else: iscsi_ip = self._get_ip_using_nsp(least_used_nsp) iscsi_ip_port = self.iscsi_ips[iscsi_ip]['ip_port'] iscsi_target_iqn = self.iscsi_ips[iscsi_ip]['iqn'] info = {'driver_volume_type': 'iscsi', 'data': {'target_portal': "%s:%s" % (iscsi_ip, iscsi_ip_port), 'target_iqn': iscsi_target_iqn, 'target_lun': vlun['lun'], 'target_discovered': True } } return info finally: self.common.client_logout() @utils.synchronized('3par', external=True) def terminate_connection(self, volume, connector, **kwargs): """Driver entry point to unattach a volume from an instance.""" self.common.client_login() try: hostname = self.common._safe_hostname(connector['host']) self.common.terminate_connection(volume, hostname, iqn=connector['initiator']) finally: self.common.client_logout() def _create_3par_iscsi_host(self, hostname, iscsi_iqn, domain, persona_id): """Create a 3PAR host. Create a 3PAR host, if there is already a host on the 3par using the same iqn but with a different hostname, return the hostname used by 3PAR. """ # first search for an existing host host_found = self.common.client.findHost(iqn=iscsi_iqn) if host_found is not None: self.common.hosts_naming_dict[hostname] = host_found return host_found else: if isinstance(iscsi_iqn, str) or isinstance(iscsi_iqn, unicode): iqn = [iscsi_iqn] else: iqn = iscsi_iqn persona_id = int(persona_id) self.common.client.createHost(hostname, iscsiNames=iqn, optional={'domain': domain, 'persona': persona_id}) return hostname def _modify_3par_iscsi_host(self, hostname, iscsi_iqn): mod_request = {'pathOperation': self.common.client.HOST_EDIT_ADD, 'iSCSINames': [iscsi_iqn]} self.common.client.modifyHost(hostname, mod_request) def _create_host(self, volume, connector): """Creates or modifies existing 3PAR host.""" # make sure we don't have the host already host = None hostname = self.common._safe_hostname(connector['host']) cpg = self.common.get_cpg(volume, allowSnap=True) domain = self.common.get_domain(cpg) try: host = self.common._get_3par_host(hostname) if 'iSCSIPaths' not in host or len(host['iSCSIPaths']) < 1: self._modify_3par_iscsi_host(hostname, connector['initiator']) host = self.common._get_3par_host(hostname) except hpexceptions.HTTPNotFound: # get persona from the volume type extra specs persona_id = self.common.get_persona_type(volume) # host doesn't exist, we have to create it hostname = self._create_3par_iscsi_host(hostname, connector['initiator'], domain, persona_id) host = self.common._get_3par_host(hostname) return host @utils.synchronized('3par', external=True) def create_export(self, context, volume): pass @utils.synchronized('3par', external=True) def ensure_export(self, context, volume): pass @utils.synchronized('3par', external=True) def remove_export(self, context, volume): pass def _get_least_used_nsp_for_host(self, hostname): """Get the least used NSP for the current host. Steps to determine which NSP to use. * If only one iSCSI NSP, return it * If there is already an active vlun to this host, return its NSP * Return NSP with fewest active vluns """ iscsi_nsps = self._get_iscsi_nsps() # If there's only one path, use it if len(iscsi_nsps) == 1: return iscsi_nsps[0] # Try to reuse an existing iscsi path to the host vluns = self.common.client.getVLUNs() for vlun in vluns['members']: if vlun['active']: if vlun['hostname'] == hostname: temp_nsp = self.common.build_nsp(vlun['portPos']) if temp_nsp in iscsi_nsps: # this host already has an iscsi path, so use it return temp_nsp # Calculate the least used iscsi nsp least_used_nsp = self._get_least_used_nsp(vluns['members'], self._get_iscsi_nsps()) return least_used_nsp def _get_iscsi_nsps(self): """Return the list of candidate nsps.""" nsps = [] for value in self.iscsi_ips.values(): nsps.append(value['nsp']) return nsps def _get_ip_using_nsp(self, nsp): """Return IP associated with given nsp.""" for (key, value) in self.iscsi_ips.items(): if value['nsp'] == nsp: return key def _get_least_used_nsp(self, vluns, nspss): """"Return the nsp that has the fewest active vluns.""" # return only the nsp (node:server:port) # count the number of nsps nsp_counts = {} for nsp in nspss: # initialize counts to zero nsp_counts[nsp] = 0 current_least_used_nsp = None for vlun in vluns: if vlun['active']: nsp = self.common.build_nsp(vlun['portPos']) if nsp in nsp_counts: nsp_counts[nsp] = nsp_counts[nsp] + 1 # identify key (nsp) of least used nsp current_smallest_count = sys.maxint for (nsp, count) in nsp_counts.iteritems(): if count < current_smallest_count: current_least_used_nsp = nsp current_smallest_count = count return current_least_used_nsp @utils.synchronized('3par', external=True) def extend_volume(self, volume, new_size): self.common.client_login() try: self.common.extend_volume(volume, new_size) finally: self.common.client_logout() @utils.synchronized('3par', external=True) def attach_volume(self, context, volume, instance_uuid, host_name, mountpoint): self.common.attach_volume(volume, instance_uuid) @utils.synchronized('3par', external=True) def detach_volume(self, context, volume): self.common.detach_volume(volume) @utils.synchronized('3par', external=True) def migrate_volume(self, context, volume, host): self.common.client_login() try: return self.common.migrate_volume(volume, host) finally: self.common.client_logout() cinder-2014.1.5/cinder/volume/drivers/san/hp/__init__.py0000664000567000056700000000000012540642603024072 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_msa_fc.py0000664000567000056700000001231312540642606024267 0ustar jenkinsjenkins00000000000000# Copyright 2014 Objectif Libre # # 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. # from cinder.openstack.common import log as logging from cinder import utils import cinder.volume.driver from cinder.volume.drivers.san.hp import hp_msa_common as hpcommon from cinder.volume.drivers.san import san LOG = logging.getLogger(__name__) class HPMSAFCDriver(cinder.volume.driver.FibreChannelDriver): VERSION = "0.1" def __init__(self, *args, **kwargs): super(HPMSAFCDriver, self).__init__(*args, **kwargs) self.common = None self.configuration.append_config_values(hpcommon.hpmsa_opt) self.configuration.append_config_values(san.san_opts) def _init_common(self): return hpcommon.HPMSACommon(self.configuration) def _check_flags(self): required_flags = ['san_ip', 'san_login', 'san_password'] self.common.check_flags(self.configuration, required_flags) def do_setup(self, context): self.common = self._init_common() self._check_flags() self.common.do_setup(context) def check_for_setup_error(self): self._check_flags() @utils.synchronized('msa', external=True) def create_volume(self, volume): self.common.client_login() try: metadata = self.common.create_volume(volume) return {'metadata': metadata} finally: self.common.client_logout() @utils.synchronized('msa', external=True) def create_volume_from_snapshot(self, volume, src_vref): self.common.client_login() try: self.common.create_volume_from_snapshot(volume, src_vref) finally: self.common.client_logout() @utils.synchronized('msa', external=True) def create_cloned_volume(self, volume, src_vref): self.common.client_login() try: new_vol = self.common.create_cloned_volume(volume, src_vref) return {'metadata': new_vol} finally: self.common.client_logout() @utils.synchronized('msa', external=True) def delete_volume(self, volume): self.common.client_login() try: self.common.delete_volume(volume) finally: self.common.client_logout() @utils.synchronized('msa', external=True) def initialize_connection(self, volume, connector): self.common.client_login() try: data = {} data['target_lun'] = self.common.map_volume(volume, connector) ports = self.common.get_active_fc_target_ports() data['target_discovered'] = True data['target_wwn'] = ports info = {'driver_volume_type': 'fibre_channel', 'data': data} return info finally: self.common.client_logout() @utils.synchronized('msa', external=True) def terminate_connection(self, volume, connector, **kwargs): self.common.client_login() try: self.common.unmap_volume(volume, connector) finally: self.common.client_logout() @utils.synchronized('msa', external=True) def get_volume_stats(self, refresh=False): if refresh: self.common.client_login() try: stats = self.common.get_volume_stats(refresh) stats['storage_protocol'] = 'FC' stats['driver_version'] = self.VERSION backend_name = self.configuration.safe_get('volume_backend_name') stats['volume_backend_name'] = (backend_name or self.__class__.__name__) return stats finally: if refresh: self.common.client_logout() @utils.synchronized('msa', external=True) def create_export(self, context, volume): pass @utils.synchronized('msa', external=True) def ensure_export(self, context, volume): pass @utils.synchronized('msa', external=True) def remove_export(self, context, volume): pass @utils.synchronized('msa', external=True) def create_snapshot(self, snapshot): self.common.client_login() try: self.common.create_snapshot(snapshot) finally: self.common.client_logout() @utils.synchronized('msa', external=True) def delete_snapshot(self, snapshot): self.common.client_login() try: self.common.delete_snapshot(snapshot) finally: self.common.client_logout() @utils.synchronized('msa', external=True) def extend_volume(self, volume, new_size): self.common.client_login() try: self.common.extend_volume(volume, new_size) finally: self.common.client_logout() cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py0000664000567000056700000004466712540642606027116 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # """ HP LeftHand SAN ISCSI Driver. The driver communicates to the backend aka Cliq via SSH to perform all the operations on the SAN. """ from lxml import etree from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder.volume.drivers.san.san import SanISCSIDriver LOG = logging.getLogger(__name__) class HPLeftHandCLIQProxy(SanISCSIDriver): """Executes commands relating to HP/LeftHand SAN ISCSI volumes. We use the CLIQ interface, over SSH. Rough overview of CLIQ commands used: :createVolume: (creates the volume) :deleteVolume: (deletes the volume) :modifyVolume: (extends the volume) :createSnapshot: (creates the snapshot) :deleteSnapshot: (deletes the snapshot) :cloneSnapshot: (creates the volume from a snapshot) :getVolumeInfo: (to discover the IQN etc) :getSnapshotInfo: (to discover the IQN etc) :getClusterInfo: (to discover the iSCSI target IP address) The 'trick' here is that the HP SAN enforces security by default, so normally a volume mount would need both to configure the SAN in the volume layer and do the mount on the compute layer. Multi-layer operations are not catered for at the moment in the cinder architecture, so instead we share the volume using CHAP at volume creation time. Then the mount need only use those CHAP credentials, so can take place exclusively in the compute layer. Version history: 1.0.0 - Initial driver 1.1.0 - Added create/delete snapshot, extend volume, create volume from snapshot support. 1.2.0 - Ported into the new HP LeftHand driver. 1.2.1 - Fixed bug #1279897, HP LeftHand CLIQ proxy may return incorrect capacity values. 1.2.2 - Fixed driver with Paramiko 1.13.0, bug #1298608. """ VERSION = "1.2.2" device_stats = {} def __init__(self, *args, **kwargs): super(HPLeftHandCLIQProxy, self).__init__(*args, **kwargs) self.cluster_vip = None def do_setup(self, context): pass def check_for_setup_error(self): pass def get_version_string(self): return (_('CLIQ %(proxy_ver)s') % {'proxy_ver': self.VERSION}) def _cliq_run(self, verb, cliq_args, check_exit_code=True): """Runs a CLIQ command over SSH, without doing any result parsing.""" cmd_list = [verb] for k, v in cliq_args.items(): cmd_list.append("%s=%s" % (k, v)) return self._run_ssh(cmd_list, check_exit_code) def _cliq_run_xml(self, verb, cliq_args, check_cliq_result=True): """Runs a CLIQ command over SSH, parsing and checking the output.""" cliq_args['output'] = 'XML' (out, _err) = self._cliq_run(verb, cliq_args, check_cliq_result) LOG.debug(_("CLIQ command returned %s"), out) result_xml = etree.fromstring(out.encode('utf8')) if check_cliq_result: response_node = result_xml.find("response") if response_node is None: msg = (_("Malformed response to CLIQ command " "%(verb)s %(cliq_args)s. Result=%(out)s") % {'verb': verb, 'cliq_args': cliq_args, 'out': out}) raise exception.VolumeBackendAPIException(data=msg) result_code = response_node.attrib.get("result") if result_code != "0": msg = (_("Error running CLIQ command %(verb)s %(cliq_args)s. " " Result=%(out)s") % {'verb': verb, 'cliq_args': cliq_args, 'out': out}) raise exception.VolumeBackendAPIException(data=msg) return result_xml def _cliq_get_cluster_info(self, cluster_name): """Queries for info about the cluster (including IP).""" cliq_args = {} cliq_args['clusterName'] = cluster_name cliq_args['searchDepth'] = '1' cliq_args['verbose'] = '0' result_xml = self._cliq_run_xml("getClusterInfo", cliq_args) return result_xml def _cliq_get_cluster_vip(self, cluster_name): """Gets the IP on which a cluster shares iSCSI volumes.""" cluster_xml = self._cliq_get_cluster_info(cluster_name) vips = [] for vip in cluster_xml.findall("response/cluster/vip"): vips.append(vip.attrib.get('ipAddress')) if len(vips) == 1: return vips[0] _xml = etree.tostring(cluster_xml) msg = (_("Unexpected number of virtual ips for cluster " " %(cluster_name)s. Result=%(_xml)s") % {'cluster_name': cluster_name, '_xml': _xml}) raise exception.VolumeBackendAPIException(data=msg) def _cliq_get_volume_info(self, volume_name): """Gets the volume info, including IQN.""" cliq_args = {} cliq_args['volumeName'] = volume_name result_xml = self._cliq_run_xml("getVolumeInfo", cliq_args) # Result looks like this: # # # # # # # # # Flatten the nodes into a dictionary; use prefixes to avoid collisions volume_attributes = {} volume_node = result_xml.find("response/volume") for k, v in volume_node.attrib.items(): volume_attributes["volume." + k] = v status_node = volume_node.find("status") if status_node is not None: for k, v in status_node.attrib.items(): volume_attributes["status." + k] = v # We only consider the first permission node permission_node = volume_node.find("permission") if permission_node is not None: for k, v in status_node.attrib.items(): volume_attributes["permission." + k] = v LOG.debug(_("Volume info: %(volume_name)s => %(volume_attributes)s") % {'volume_name': volume_name, 'volume_attributes': volume_attributes}) return volume_attributes def _cliq_get_snapshot_info(self, snapshot_name): """Gets the snapshot info, including IQN.""" cliq_args = {} cliq_args['snapshotName'] = snapshot_name result_xml = self._cliq_run_xml("getSnapshotInfo", cliq_args) # Result looks like this: # # # # # # # # # Flatten the nodes into a dictionary; use prefixes to avoid collisions snapshot_attributes = {} snapshot_node = result_xml.find("response/snapshot") for k, v in snapshot_node.attrib.items(): snapshot_attributes["snapshot." + k] = v status_node = snapshot_node.find("status") if status_node is not None: for k, v in status_node.attrib.items(): snapshot_attributes["status." + k] = v # We only consider the first permission node permission_node = snapshot_node.find("permission") if permission_node is not None: for k, v in status_node.attrib.items(): snapshot_attributes["permission." + k] = v LOG.debug(_("Snapshot info: %(name)s => %(attributes)s") % {'name': snapshot_name, 'attributes': snapshot_attributes}) return snapshot_attributes def create_volume(self, volume): """Creates a volume.""" cliq_args = {} cliq_args['clusterName'] = self.configuration.san_clustername if self.configuration.san_thin_provision: cliq_args['thinProvision'] = '1' else: cliq_args['thinProvision'] = '0' cliq_args['volumeName'] = volume['name'] if int(volume['size']) == 0: cliq_args['size'] = '100MB' else: cliq_args['size'] = '%sGB' % volume['size'] self._cliq_run_xml("createVolume", cliq_args) return self._get_model_update(volume['name']) def extend_volume(self, volume, new_size): """Extend the size of an existing volume.""" cliq_args = {} cliq_args['volumeName'] = volume['name'] cliq_args['size'] = '%sGB' % new_size self._cliq_run_xml("modifyVolume", cliq_args) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" cliq_args = {} cliq_args['snapshotName'] = snapshot['name'] cliq_args['volumeName'] = volume['name'] self._cliq_run_xml("cloneSnapshot", cliq_args) return self._get_model_update(volume['name']) def create_snapshot(self, snapshot): """Creates a snapshot.""" cliq_args = {} cliq_args['snapshotName'] = snapshot['name'] cliq_args['volumeName'] = snapshot['volume_name'] cliq_args['inheritAccess'] = 1 self._cliq_run_xml("createSnapshot", cliq_args) def delete_volume(self, volume): """Deletes a volume.""" cliq_args = {} cliq_args['volumeName'] = volume['name'] cliq_args['prompt'] = 'false' # Don't confirm try: volume_info = self._cliq_get_volume_info(volume['name']) except processutils.ProcessExecutionError: LOG.error(_("Volume did not exist. It will not be deleted")) return self._cliq_run_xml("deleteVolume", cliq_args) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" cliq_args = {} cliq_args['snapshotName'] = snapshot['name'] cliq_args['prompt'] = 'false' # Don't confirm try: volume_info = self._cliq_get_snapshot_info(snapshot['name']) except processutils.ProcessExecutionError: LOG.error(_("Snapshot did not exist. It will not be deleted")) return try: self._cliq_run_xml("deleteSnapshot", cliq_args) except Exception as ex: in_use_msg = 'cannot be deleted because it is a clone point' if in_use_msg in ex.message: raise exception.SnapshotIsBusy(ex) raise exception.VolumeBackendAPIException(ex) def local_path(self, volume): msg = _("local_path not supported") raise exception.VolumeBackendAPIException(data=msg) def initialize_connection(self, volume, connector): """Assigns the volume to a server. Assign any created volume to a compute node/host so that it can be used from that host. HP VSA requires a volume to be assigned to a server. This driver returns a driver_volume_type of 'iscsi'. The format of the driver data is defined in _get_iscsi_properties. Example return value: { 'driver_volume_type': 'iscsi' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:volume-00000001', 'target_protal': '127.0.0.1:3260', 'volume_id': 1, } } """ self._create_server(connector) cliq_args = {} cliq_args['volumeName'] = volume['name'] cliq_args['serverName'] = connector['host'] self._cliq_run_xml("assignVolumeToServer", cliq_args) iscsi_data = self._get_iscsi_properties(volume) return { 'driver_volume_type': 'iscsi', 'data': iscsi_data } def _create_server(self, connector): cliq_args = {} cliq_args['serverName'] = connector['host'] out = self._cliq_run_xml("getServerInfo", cliq_args, False) response = out.find("response") result = response.attrib.get("result") if result != '0': cliq_args = {} cliq_args['serverName'] = connector['host'] cliq_args['initiator'] = connector['initiator'] self._cliq_run_xml("createServer", cliq_args) def _get_model_update(self, volume_name): volume_info = self._cliq_get_volume_info(volume_name) cluster_name = volume_info['volume.clusterName'] iscsi_iqn = volume_info['volume.iscsiIqn'] # TODO(justinsb): Is this always 1? Does it matter? cluster_interface = '1' if not self.cluster_vip: self.cluster_vip = self._cliq_get_cluster_vip(cluster_name) iscsi_portal = self.cluster_vip + ":3260," + cluster_interface model_update = {} # NOTE(jdg): LH volumes always at lun 0 ? model_update['provider_location'] = ("%s %s %s" % (iscsi_portal, iscsi_iqn, 0)) return model_update def terminate_connection(self, volume, connector, **kwargs): """Unassign the volume from the host.""" cliq_args = {} cliq_args['volumeName'] = volume['name'] cliq_args['serverName'] = connector['host'] self._cliq_run_xml("unassignVolumeToServer", cliq_args) def get_volume_stats(self, refresh): if refresh: self._update_backend_status() return self.device_stats def _update_backend_status(self): data = {} backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or self.__class__.__name__ data['reserved_percentage'] = 0 data['storage_protocol'] = 'iSCSI' data['vendor_name'] = 'Hewlett-Packard' result_xml = self._cliq_run_xml( "getClusterInfo", { 'searchDepth': 1, 'clusterName': self.configuration.san_clustername}) cluster_node = result_xml.find("response/cluster") total_capacity = cluster_node.attrib.get("spaceTotal") free_capacity = cluster_node.attrib.get("unprovisionedSpace") GB = units.GiB data['total_capacity_gb'] = int(total_capacity) / GB data['free_capacity_gb'] = int(free_capacity) / GB self.device_stats = data def create_cloned_volume(self, volume, src_vref): raise NotImplementedError() def create_export(self, context, volume): pass def ensure_export(self, context, volume): pass def remove_export(self, context, volume): pass def retype(self, context, volume, new_type, diff, host): """Convert the volume to be of the new type. Returns a boolean indicating whether the retype occurred. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param new_type: A dictionary describing the volume type to convert to :param diff: A dictionary with the difference between the two types """ return False def migrate_volume(self, ctxt, volume, host): """Migrate the volume to the specified host. Returns a boolean indicating whether the migration occurred, as well as model_update. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ return (False, None) cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_3par_common.py0000664000567000056700000014446312540642606025270 0ustar jenkinsjenkins00000000000000# (c) Copyright 2012-2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # """ Volume driver common utilities for HP 3PAR Storage array The 3PAR drivers requires 3.1.3 firmware on the 3PAR array. You will need to install the python hp3parclient. sudo pip install hp3parclient The drivers uses both the REST service and the SSH command line to correctly operate. Since the ssh credentials and the REST credentials can be different we need to have settings for both. The drivers requires the use of the san_ip, san_login, san_password settings for ssh connections into the 3PAR array. It also requires the setting of hp3par_api_url, hp3par_username, hp3par_password for credentials to talk to the REST service on the 3PAR array. """ import ast import base64 import json import pprint import re import uuid import hp3parclient from hp3parclient import client from hp3parclient import exceptions as hpexceptions from oslo.config import cfg from cinder import context from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder import units from cinder.volume import qos_specs from cinder.volume import volume_types LOG = logging.getLogger(__name__) MIN_CLIENT_VERSION = '3.0.0' hp3par_opts = [ cfg.StrOpt('hp3par_api_url', default='', help="3PAR WSAPI Server Url like " "https://<3par ip>:8080/api/v1"), cfg.StrOpt('hp3par_username', default='', help="3PAR Super user username"), cfg.StrOpt('hp3par_password', default='', help="3PAR Super user password", secret=True), cfg.StrOpt('hp3par_cpg', default="OpenStack", help="The CPG to use for volume creation"), cfg.StrOpt('hp3par_cpg_snap', default="", help="The CPG to use for Snapshots for volumes. " "If empty hp3par_cpg will be used"), cfg.StrOpt('hp3par_snapshot_retention', default="", help="The time in hours to retain a snapshot. " "You can't delete it before this expires."), cfg.StrOpt('hp3par_snapshot_expiration', default="", help="The time in hours when a snapshot expires " " and is deleted. This must be larger than expiration"), cfg.BoolOpt('hp3par_debug', default=False, help="Enable HTTP debugging to 3PAR"), cfg.ListOpt('hp3par_iscsi_ips', default=[], help="List of target iSCSI addresses to use.") ] CONF = cfg.CONF CONF.register_opts(hp3par_opts) class HP3PARCommon(object): """Class that contains common code for the 3PAR drivers. Version history: 1.2.0 - Updated hp3parclient API use to 2.0.x 1.2.1 - Check that the VVS exists 1.2.2 - log prior to raising exceptions 1.2.3 - Methods to update key/value pair bug #1258033 1.2.4 - Remove deprecated config option hp3par_domain 1.2.5 - Raise Ex when deleting snapshot with dependencies bug #1250249 1.2.6 - Allow optional specifying n:s:p for vlun creation bug #1269515 This update now requires 3.1.2 MU3 firmware 1.3.0 - Removed all SSH code. We rely on the hp3parclient now. 2.0.0 - Update hp3parclient API uses 3.0.x 2.0.1 - Updated to use qos_specs, added new qos settings and personas 2.0.2 - Add back-end assisted volume migrate 2.0.3 - Allow deleting missing snapshots bug #1283233 2.0.4 - Allow volumes created from snapshots to be larger bug #1279478 2.0.5 - Fix extend volume units bug #1284368 2.0.6 - use loopingcall.wait instead of time.sleep 2.0.7 - Allow extend volume based on snapshot bug #1285906 2.0.8 - Fix detach issue for multiple hosts Bug #1288927 """ VERSION = "2.0.8" stats = {} # TODO(Ramy): move these to the 3PAR Client VLUN_TYPE_EMPTY = 1 VLUN_TYPE_PORT = 2 VLUN_TYPE_HOST = 3 VLUN_TYPE_MATCHED_SET = 4 VLUN_TYPE_HOST_SET = 5 # Valid values for volume type extra specs # The first value in the list is the default value valid_prov_values = ['thin', 'full'] valid_persona_values = ['1 - Generic', '2 - Generic-ALUA', '6 - Generic-legacy', '7 - HPUX-legacy', '8 - AIX-legacy', '9 - EGENERA', '10 - ONTAP-legacy', '11 - VMware', '12 - OpenVMS', '13 - HPUX', '15 - WindowsServer'] hp_qos_keys = ['minIOPS', 'maxIOPS', 'minBWS', 'maxBWS', 'latency', 'priority'] qos_priority_level = {'low': 1, 'normal': 2, 'high': 3} hp3par_valid_keys = ['cpg', 'snap_cpg', 'provisioning', 'persona', 'vvs'] def __init__(self, config): self.config = config self.hosts_naming_dict = dict() self.client = None def get_version(self): return self.VERSION def check_flags(self, options, required_flags): for flag in required_flags: if not getattr(options, flag, None): msg = _('%s is not set') % flag LOG.error(msg) raise exception.InvalidInput(reason=msg) def _create_client(self): cl = client.HP3ParClient(self.config.hp3par_api_url) client_version = hp3parclient.version if (client_version < MIN_CLIENT_VERSION): ex_msg = (_('Invalid hp3parclient version found (%(found)s). ' 'Version %(minimum)s or greater required.') % {'found': client_version, 'minimum': MIN_CLIENT_VERSION}) LOG.error(ex_msg) raise exception.InvalidInput(reason=ex_msg) cl.setSSHOptions(self.config.san_ip, self.config.san_login, self.config.san_password, port=self.config.san_ssh_port, conn_timeout=self.config.ssh_conn_timeout, privatekey=self.config.san_private_key) return cl def client_login(self): try: LOG.debug("Connecting to 3PAR") self.client.login(self.config.hp3par_username, self.config.hp3par_password) except hpexceptions.HTTPUnauthorized as ex: msg = (_("Failed to Login to 3PAR (%(url)s) because %(err)s") % {'url': self.config.hp3par_api_url, 'err': ex}) LOG.error(msg) raise exception.InvalidInput(reason=msg) def client_logout(self): self.client.logout() LOG.debug("Disconnect from 3PAR") def do_setup(self, context): try: self.client = self._create_client() except hpexceptions.UnsupportedVersion as ex: raise exception.InvalidInput(ex) LOG.info(_("HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s") % {"common_ver": self.VERSION, "rest_ver": hp3parclient.get_version_string()}) if self.config.hp3par_debug: self.client.debug_rest(True) self.client_login() try: # make sure the default CPG exists self.validate_cpg(self.config.hp3par_cpg) finally: self.client_logout() def validate_cpg(self, cpg_name): try: cpg = self.client.getCPG(cpg_name) except hpexceptions.HTTPNotFound as ex: err = (_("CPG (%s) doesn't exist on array") % cpg_name) LOG.error(err) raise exception.InvalidInput(reason=err) def get_domain(self, cpg_name): try: cpg = self.client.getCPG(cpg_name) except hpexceptions.HTTPNotFound: err = (_("Failed to get domain because CPG (%s) doesn't " "exist on array.") % cpg_name) LOG.error(err) raise exception.InvalidInput(reason=err) if 'domain' in cpg: return cpg['domain'] return None def extend_volume(self, volume, new_size): volume_name = self._get_3par_vol_name(volume['id']) old_size = volume['size'] growth_size = int(new_size) - old_size LOG.debug(_("Extending Volume %(vol)s from %(old)s to %(new)s, " " by %(diff)s GB.") % {'vol': volume_name, 'old': old_size, 'new': new_size, 'diff': growth_size}) growth_size_mib = growth_size * units.KiB self._extend_volume(volume, volume_name, growth_size_mib) def _extend_volume(self, volume, volume_name, growth_size_mib, _convert_to_base=False): try: if _convert_to_base: LOG.debug(_("Converting to base volume prior to growing.")) self._convert_to_base_volume(volume) self.client.growVolume(volume_name, growth_size_mib) except Exception as ex: with excutils.save_and_reraise_exception() as ex_ctxt: if (not _convert_to_base and isinstance(ex, hpexceptions.HTTPForbidden) and ex.get_code() == 150): # Error code 150 means 'invalid operation: Cannot grow # this type of volume'. # Suppress raising this exception because we can # resolve it by converting it into a base volume. # Afterwards, extending the volume should succeed, or # fail with a different exception/error code. ex_ctxt.reraise = False self._extend_volume(volume, volume_name, growth_size_mib, _convert_to_base=True) else: LOG.error(_("Error extending volume: %(vol)s. " "Exception: %(ex)s") % {'vol': volume_name, 'ex': ex}) def _get_3par_vol_name(self, volume_id): """Get converted 3PAR volume name. Converts the openstack volume id from ecffc30f-98cb-4cf5-85ee-d7309cc17cd2 to osv-7P.DD5jLTPWF7tcwnMF80g We convert the 128 bits of the uuid into a 24character long base64 encoded string to ensure we don't exceed the maximum allowed 31 character name limit on 3Par We strip the padding '=' and replace + with . and / with - """ volume_name = self._encode_name(volume_id) return "osv-%s" % volume_name def _get_3par_snap_name(self, snapshot_id): snapshot_name = self._encode_name(snapshot_id) return "oss-%s" % snapshot_name def _get_3par_vvs_name(self, volume_id): vvs_name = self._encode_name(volume_id) return "vvs-%s" % vvs_name def _encode_name(self, name): uuid_str = name.replace("-", "") vol_uuid = uuid.UUID('urn:uuid:%s' % uuid_str) vol_encoded = base64.b64encode(vol_uuid.bytes) # 3par doesn't allow +, nor / vol_encoded = vol_encoded.replace('+', '.') vol_encoded = vol_encoded.replace('/', '-') # strip off the == as 3par doesn't like those. vol_encoded = vol_encoded.replace('=', '') return vol_encoded def _capacity_from_size(self, vol_size): # because 3PAR volume sizes are in # Mebibytes, Gigibytes, not Megabytes. MB = 1000L MiB = 1.048576 if int(vol_size) == 0: capacity = MB # default: 1GB else: capacity = vol_size * MB capacity = int(round(capacity / MiB)) return capacity def _delete_3par_host(self, hostname): self.client.deleteHost(hostname) def _create_3par_vlun(self, volume, hostname, nsp): try: if nsp is None: self.client.createVLUN(volume, hostname=hostname, auto=True) else: port = self.build_portPos(nsp) self.client.createVLUN(volume, hostname=hostname, auto=True, portPos=port) except hpexceptions.HTTPBadRequest as e: if 'must be in the same domain' in e.get_description(): LOG.error(e.get_description()) raise exception.Invalid3PARDomain(err=e.get_description()) def _safe_hostname(self, hostname): """We have to use a safe hostname length for 3PAR host names.""" try: index = hostname.index('.') except ValueError: # couldn't find it index = len(hostname) # we'll just chop this off for now. if index > 23: index = 23 return hostname[:index] def _get_3par_host(self, hostname): return self.client.getHost(hostname) def get_ports(self): return self.client.getPorts() def get_active_target_ports(self): ports = self.get_ports() target_ports = [] for port in ports['members']: if ( port['mode'] == self.client.PORT_MODE_TARGET and port['linkState'] == self.client.PORT_STATE_READY ): port['nsp'] = self.build_nsp(port['portPos']) target_ports.append(port) return target_ports def get_active_fc_target_ports(self): ports = self.get_active_target_ports() fc_ports = [] for port in ports: if port['protocol'] == self.client.PORT_PROTO_FC: fc_ports.append(port) return fc_ports def get_active_iscsi_target_ports(self): ports = self.get_active_target_ports() iscsi_ports = [] for port in ports: if port['protocol'] == self.client.PORT_PROTO_ISCSI: iscsi_ports.append(port) return iscsi_ports def get_volume_stats(self, refresh): if refresh: self._update_volume_stats() return self.stats def _update_volume_stats(self): # const to convert MiB to GB const = 0.0009765625 # storage_protocol and volume_backend_name are # set in the child classes stats = {'driver_version': '1.0', 'free_capacity_gb': 'unknown', 'reserved_percentage': 0, 'storage_protocol': None, 'total_capacity_gb': 'unknown', 'QoS_support': True, 'vendor_name': 'Hewlett-Packard', 'volume_backend_name': None} try: cpg = self.client.getCPG(self.config.hp3par_cpg) if 'limitMiB' not in cpg['SDGrowth']: total_capacity = 'infinite' free_capacity = 'infinite' else: total_capacity = int(cpg['SDGrowth']['limitMiB'] * const) free_capacity = int((cpg['SDGrowth']['limitMiB'] - cpg['UsrUsage']['usedMiB']) * const) stats['total_capacity_gb'] = total_capacity stats['free_capacity_gb'] = free_capacity except hpexceptions.HTTPNotFound: err = (_("CPG (%s) doesn't exist on array") % self.config.hp3par_cpg) LOG.error(err) raise exception.InvalidInput(reason=err) info = self.client.getStorageSystemInfo() stats['location_info'] = ('HP3PARDriver:%(sys_id)s:%(dest_cpg)s' % {'sys_id': info['serialNumber'], 'dest_cpg': self.config.safe_get( 'hp3par_cpg')}) self.stats = stats def _get_vlun(self, volume_name, hostname): """find a VLUN on a 3PAR host.""" vluns = self.client.getHostVLUNs(hostname) found_vlun = None for vlun in vluns: if volume_name in vlun['volumeName']: found_vlun = vlun break msg = (_("3PAR vlun %(name)s not found on host %(host)s") % {'name': volume_name, 'host': hostname}) if found_vlun is None: LOG.warn(msg) return found_vlun def create_vlun(self, volume, host, nsp=None): """Create a VLUN. In order to export a volume on a 3PAR box, we have to create a VLUN. """ volume_name = self._get_3par_vol_name(volume['id']) self._create_3par_vlun(volume_name, host['name'], nsp) return self._get_vlun(volume_name, host['name']) def delete_vlun(self, volume, hostname): volume_name = self._get_3par_vol_name(volume['id']) vlun = self._get_vlun(volume_name, hostname) if vlun is not None: # VLUN Type of MATCHED_SET 4 requires the port to be provided if self.VLUN_TYPE_MATCHED_SET == vlun['type']: self.client.deleteVLUN(volume_name, vlun['lun'], hostname, vlun['portPos']) else: self.client.deleteVLUN(volume_name, vlun['lun'], hostname) try: self._delete_3par_host(hostname) self._remove_hosts_naming_dict_host(hostname) except hpexceptions.HTTPConflict as ex: # host will only be removed after all vluns # have been removed if 'has exported VLUN' in ex.get_description(): pass else: raise def _remove_hosts_naming_dict_host(self, hostname): items = self.hosts_naming_dict.items() lkey = None for key, value in items: if value == hostname: lkey = key if lkey is not None: del self.hosts_naming_dict[lkey] def _get_volume_type(self, type_id): ctxt = context.get_admin_context() return volume_types.get_volume_type(ctxt, type_id) def _get_key_value(self, hp3par_keys, key, default=None): if hp3par_keys is not None and key in hp3par_keys: return hp3par_keys[key] else: return default def _get_qos_value(self, qos, key, default=None): if key in qos: return qos[key] else: return default def _get_qos_by_volume_type(self, volume_type): qos = {} qos_specs_id = volume_type.get('qos_specs_id') specs = volume_type.get('extra_specs') #NOTE(kmartin): We prefer the qos_specs association # and override any existing extra-specs settings # if present. if qos_specs_id is not None: kvs = qos_specs.get_qos_specs(context.get_admin_context(), qos_specs_id)['specs'] else: kvs = specs for key, value in kvs.iteritems(): if 'qos:' in key: fields = key.split(':') key = fields[1] if key in self.hp_qos_keys: qos[key] = value return qos def _get_keys_by_volume_type(self, volume_type): hp3par_keys = {} specs = volume_type.get('extra_specs') for key, value in specs.iteritems(): if ':' in key: fields = key.split(':') key = fields[1] if key in self.hp3par_valid_keys: hp3par_keys[key] = value return hp3par_keys def _set_qos_rule(self, qos, vvs_name): min_io = self._get_qos_value(qos, 'minIOPS') max_io = self._get_qos_value(qos, 'maxIOPS') min_bw = self._get_qos_value(qos, 'minBWS') max_bw = self._get_qos_value(qos, 'maxBWS') latency = self._get_qos_value(qos, 'latency') priority = self._get_qos_value(qos, 'priority', 'normal') qosRule = {} if min_io: qosRule['ioMinGoal'] = int(min_io) if max_io is None: qosRule['ioMaxLimit'] = int(min_io) if max_io: qosRule['ioMaxLimit'] = int(max_io) if min_io is None: qosRule['ioMinGoal'] = int(max_io) if min_bw: qosRule['bwMinGoalKB'] = int(min_bw) * units.KiB if max_bw is None: qosRule['bwMaxLimitKB'] = int(min_bw) * units.KiB if max_bw: qosRule['bwMaxLimitKB'] = int(max_bw) * units.KiB if min_bw is None: qosRule['bwMinGoalKB'] = int(max_bw) * units.KiB if latency: qosRule['latencyGoal'] = int(latency) if priority: qosRule['priority'] = self.qos_priority_level.get(priority.lower()) try: self.client.createQoSRules(vvs_name, qosRule) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Error creating QOS rule %s") % qosRule) def _add_volume_to_volume_set(self, volume, volume_name, cpg, vvs_name, qos): if vvs_name is not None: # Admin has set a volume set name to add the volume to try: self.client.addVolumeToVolumeSet(vvs_name, volume_name) except hpexceptions.HTTPNotFound: msg = _('VV Set %s does not exist.') % vvs_name LOG.error(msg) raise exception.InvalidInput(reason=msg) else: vvs_name = self._get_3par_vvs_name(volume['id']) domain = self.get_domain(cpg) self.client.createVolumeSet(vvs_name, domain) try: self._set_qos_rule(qos, vvs_name) self.client.addVolumeToVolumeSet(vvs_name, volume_name) except Exception as ex: # Cleanup the volume set if unable to create the qos rule # or add the volume to the volume set self.client.deleteVolumeSet(vvs_name) raise exception.CinderException(ex) def get_cpg(self, volume, allowSnap=False): volume_name = self._get_3par_vol_name(volume['id']) vol = self.client.getVolume(volume_name) if 'userCPG' in vol: return vol['userCPG'] elif allowSnap: return vol['snapCPG'] return None def _get_3par_vol_comment(self, volume_name): vol = self.client.getVolume(volume_name) if 'comment' in vol: return vol['comment'] return None def get_persona_type(self, volume, hp3par_keys=None): default_persona = self.valid_persona_values[0] type_id = volume.get('volume_type_id', None) volume_type = None if type_id is not None: volume_type = self._get_volume_type(type_id) if hp3par_keys is None: hp3par_keys = self._get_keys_by_volume_type(volume_type) persona_value = self._get_key_value(hp3par_keys, 'persona', default_persona) if persona_value not in self.valid_persona_values: err = _("Must specify a valid persona %(valid)s, " "value '%(persona)s' is invalid.") % \ ({'valid': self.valid_persona_values, 'persona': persona_value}) LOG.error(err) raise exception.InvalidInput(reason=err) # persona is set by the id so remove the text and return the id # i.e for persona '1 - Generic' returns 1 persona_id = persona_value.split(' ') return persona_id[0] def get_volume_settings_from_type(self, volume): cpg = None snap_cpg = None volume_type = None vvs_name = None hp3par_keys = {} qos = {} type_id = volume.get('volume_type_id', None) if type_id is not None: volume_type = self._get_volume_type(type_id) hp3par_keys = self._get_keys_by_volume_type(volume_type) vvs_name = self._get_key_value(hp3par_keys, 'vvs') if vvs_name is None: qos = self._get_qos_by_volume_type(volume_type) cpg = self._get_key_value(hp3par_keys, 'cpg', self.config.hp3par_cpg) if cpg is not self.config.hp3par_cpg: # The cpg was specified in a volume type extra spec so it # needs to be validated that it's in the correct domain. self.validate_cpg(cpg) # Also, look to see if the snap_cpg was specified in volume # type extra spec, if not use the extra spec cpg as the # default. snap_cpg = self._get_key_value(hp3par_keys, 'snap_cpg', cpg) else: # default snap_cpg to hp3par_cpg_snap if it's not specified # in the volume type extra specs. snap_cpg = self.config.hp3par_cpg_snap # if it's still not set or empty then set it to the cpg # specified in the cinder.conf file. if not self.config.hp3par_cpg_snap: snap_cpg = cpg # if provisioning is not set use thin default_prov = self.valid_prov_values[0] prov_value = self._get_key_value(hp3par_keys, 'provisioning', default_prov) # check for valid provisioning type if prov_value not in self.valid_prov_values: err = _("Must specify a valid provisioning type %(valid)s, " "value '%(prov)s' is invalid.") % \ ({'valid': self.valid_prov_values, 'prov': prov_value}) LOG.error(err) raise exception.InvalidInput(reason=err) tpvv = True if prov_value == "full": tpvv = False # check for valid persona even if we don't use it until # attach time, this will give the end user notice that the # persona type is invalid at volume creation time self.get_persona_type(volume, hp3par_keys) return {'cpg': cpg, 'snap_cpg': snap_cpg, 'vvs_name': vvs_name, 'qos': qos, 'tpvv': tpvv, 'volume_type': volume_type} def create_volume(self, volume): LOG.debug("CREATE VOLUME (%s : %s %s)" % (volume['display_name'], volume['name'], self._get_3par_vol_name(volume['id']))) try: comments = {'volume_id': volume['id'], 'name': volume['name'], 'type': 'OpenStack'} name = volume.get('display_name', None) if name: comments['display_name'] = name # get the options supported by volume types type_info = self.get_volume_settings_from_type(volume) volume_type = type_info['volume_type'] vvs_name = type_info['vvs_name'] qos = type_info['qos'] cpg = type_info['cpg'] snap_cpg = type_info['snap_cpg'] tpvv = type_info['tpvv'] type_id = volume.get('volume_type_id', None) if type_id is not None: comments['volume_type_name'] = volume_type.get('name') comments['volume_type_id'] = type_id if vvs_name is not None: comments['vvs'] = vvs_name else: comments['qos'] = qos extras = {'comment': json.dumps(comments), 'snapCPG': snap_cpg, 'tpvv': tpvv} capacity = self._capacity_from_size(volume['size']) volume_name = self._get_3par_vol_name(volume['id']) self.client.createVolume(volume_name, cpg, capacity, extras) if qos or vvs_name is not None: try: self._add_volume_to_volume_set(volume, volume_name, cpg, vvs_name, qos) except exception.InvalidInput as ex: # Delete the volume if unable to add it to the volume set self.client.deleteVolume(volume_name) LOG.error(ex) raise exception.CinderException(ex) except hpexceptions.HTTPConflict: msg = _("Volume (%s) already exists on array") % volume_name LOG.error(msg) raise exception.Duplicate(msg) except hpexceptions.HTTPBadRequest as ex: LOG.error(ex) raise exception.Invalid(ex.get_description()) except exception.InvalidInput as ex: LOG.error(ex) raise ex except exception.CinderException as ex: LOG.error(ex) raise ex except Exception as ex: LOG.error(ex) raise exception.CinderException(ex) def _copy_volume(self, src_name, dest_name, cpg, snap_cpg=None, tpvv=True): # Virtual volume sets are not supported with the -online option LOG.debug(_('Creating clone of a volume %(src)s to %(dest)s.') % {'src': src_name, 'dest': dest_name}) optional = {'tpvv': tpvv, 'online': True} if snap_cpg is not None: optional['snapCPG'] = snap_cpg body = self.client.copyVolume(src_name, dest_name, cpg, optional) return body['taskid'] def get_next_word(self, s, search_string): """Return the next word. Search 's' for 'search_string', if found return the word preceding 'search_string' from 's'. """ word = re.search(search_string.strip(' ') + ' ([^ ]*)', s) return word.groups()[0].strip(' ') def _get_3par_vol_comment_value(self, vol_comment, key): comment_dict = dict(ast.literal_eval(vol_comment)) if key in comment_dict: return comment_dict[key] return None def create_cloned_volume(self, volume, src_vref): try: orig_name = self._get_3par_vol_name(volume['source_volid']) vol_name = self._get_3par_vol_name(volume['id']) type_info = self.get_volume_settings_from_type(volume) # make the 3PAR copy the contents. # can't delete the original until the copy is done. self._copy_volume(orig_name, vol_name, cpg=type_info['cpg'], snap_cpg=type_info['snap_cpg'], tpvv=type_info['tpvv']) return None except hpexceptions.HTTPForbidden: raise exception.NotAuthorized() except hpexceptions.HTTPNotFound: raise exception.NotFound() except Exception as ex: LOG.error(ex) raise exception.CinderException(ex) def delete_volume(self, volume): try: volume_name = self._get_3par_vol_name(volume['id']) # Try and delete the volume, it might fail here because # the volume is part of a volume set which will have the # volume set name in the error. try: self.client.deleteVolume(volume_name) except hpexceptions.HTTPBadRequest as ex: if ex.get_code() == 29: if self.client.isOnlinePhysicalCopy(volume_name): LOG.debug(_("Found an online copy for %(volume)s") % {'volume': volume_name}) # the volume is in process of being cloned. # stopOnlinePhysicalCopy will also delete # the volume once it stops the copy. self.client.stopOnlinePhysicalCopy(volume_name) else: LOG.error(ex) raise ex else: LOG.error(ex) raise ex except hpexceptions.HTTPConflict as ex: if ex.get_code() == 34: # This is a special case which means the # volume is part of a volume set. vvset_name = self.client.findVolumeSet(volume_name) LOG.debug("Returned vvset_name = %s" % vvset_name) if vvset_name is not None and \ vvset_name.startswith('vvs-'): # We have a single volume per volume set, so # remove the volume set. self.client.deleteVolumeSet( self._get_3par_vvs_name(volume['id'])) elif vvset_name is not None: # We have a pre-defined volume set just remove the # volume and leave the volume set. self.client.removeVolumeFromVolumeSet(vvset_name, volume_name) self.client.deleteVolume(volume_name) else: LOG.error(ex) raise ex except hpexceptions.HTTPNotFound as ex: # We'll let this act as if it worked # it helps clean up the cinder entries. msg = _("Delete volume id not found. Removing from cinder: " "%(id)s Ex: %(msg)s") % {'id': volume['id'], 'msg': ex} LOG.warning(msg) except hpexceptions.HTTPForbidden as ex: LOG.error(ex) raise exception.NotAuthorized(ex.get_description()) except hpexceptions.HTTPConflict as ex: LOG.error(ex) raise exception.VolumeIsBusy(ex.get_description()) except Exception as ex: LOG.error(ex) raise exception.CinderException(ex) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. """ LOG.debug("Create Volume from Snapshot\n%s\n%s" % (pprint.pformat(volume['display_name']), pprint.pformat(snapshot['display_name']))) if volume['size'] < snapshot['volume_size']: err = ("You cannot reduce size of the volume. It must " "be greater than or equal to the snapshot.") LOG.error(err) raise exception.InvalidInput(reason=err) try: snap_name = self._get_3par_snap_name(snapshot['id']) volume_name = self._get_3par_vol_name(volume['id']) extra = {'volume_id': volume['id'], 'snapshot_id': snapshot['id']} volume_type = None type_id = volume.get('volume_type_id', None) vvs_name = None qos = {} hp3par_keys = {} if type_id is not None: volume_type = self._get_volume_type(type_id) hp3par_keys = self._get_keys_by_volume_type(volume_type) vvs_name = self._get_key_value(hp3par_keys, 'vvs') if vvs_name is None: qos = self._get_qos_by_volume_type(volume_type) name = volume.get('display_name', None) if name: extra['display_name'] = name description = volume.get('display_description', None) if description: extra['description'] = description optional = {'comment': json.dumps(extra), 'readOnly': False} self.client.createSnapshot(volume_name, snap_name, optional) # Grow the snapshot if needed growth_size = volume['size'] - snapshot['volume_size'] if growth_size > 0: try: LOG.debug(_('Converting to base volume type: %s.') % volume['id']) self._convert_to_base_volume(volume) growth_size_mib = growth_size * units.GiB / units.MiB LOG.debug(_('Growing volume: %(id)s by %(size)s GiB.') % {'id': volume['id'], 'size': growth_size}) self.client.growVolume(volume_name, growth_size_mib) except Exception as ex: LOG.error(_("Error extending volume %(id)s. Ex: %(ex)s") % {'id': volume['id'], 'ex': ex}) # Delete the volume if unable to grow it self.client.deleteVolume(volume_name) raise exception.CinderException(ex) if qos or vvs_name is not None: cpg = self._get_key_value(hp3par_keys, 'cpg', self.config.hp3par_cpg) try: self._add_volume_to_volume_set(volume, volume_name, cpg, vvs_name, qos) except Exception as ex: # Delete the volume if unable to add it to the volume set self.client.deleteVolume(volume_name) LOG.error(ex) raise exception.CinderException(ex) except hpexceptions.HTTPForbidden as ex: LOG.error(ex) raise exception.NotAuthorized() except hpexceptions.HTTPNotFound as ex: LOG.error(ex) raise exception.NotFound() except Exception as ex: LOG.error(ex) raise exception.CinderException(ex) def create_snapshot(self, snapshot): LOG.debug("Create Snapshot\n%s" % pprint.pformat(snapshot)) try: snap_name = self._get_3par_snap_name(snapshot['id']) vol_name = self._get_3par_vol_name(snapshot['volume_id']) extra = {'volume_name': snapshot['volume_name']} vol_id = snapshot.get('volume_id', None) if vol_id: extra['volume_id'] = vol_id try: extra['display_name'] = snapshot['display_name'] except AttributeError: pass try: extra['description'] = snapshot['display_description'] except AttributeError: pass optional = {'comment': json.dumps(extra), 'readOnly': True} if self.config.hp3par_snapshot_expiration: optional['expirationHours'] = ( self.config.hp3par_snapshot_expiration) if self.config.hp3par_snapshot_retention: optional['retentionHours'] = ( self.config.hp3par_snapshot_retention) self.client.createSnapshot(snap_name, vol_name, optional) except hpexceptions.HTTPForbidden as ex: LOG.error(ex) raise exception.NotAuthorized() except hpexceptions.HTTPNotFound as ex: LOG.error(ex) raise exception.NotFound() def update_volume_key_value_pair(self, volume, key, value): """Updates key,value pair as metadata onto virtual volume. If key already exists, the value will be replaced. """ LOG.debug("VOLUME (%s : %s %s) Updating KEY-VALUE pair: (%s : %s)" % (volume['display_name'], volume['name'], self._get_3par_vol_name(volume['id']), key, value)) try: volume_name = self._get_3par_vol_name(volume['id']) if value is None: value = '' self.client.setVolumeMetaData(volume_name, key, value) except Exception as ex: msg = _('Failure in update_volume_key_value_pair:%s') % ex LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def clear_volume_key_value_pair(self, volume, key): """Clears key,value pairs metadata from virtual volume.""" LOG.debug("VOLUME (%s : %s %s) Clearing Key : %s)" % (volume['display_name'], volume['name'], self._get_3par_vol_name(volume['id']), key)) try: volume_name = self._get_3par_vol_name(volume['id']) self.client.removeVolumeMetaData(volume_name, key) except Exception as ex: msg = _('Failure in clear_volume_key_value_pair:%s') % ex LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def attach_volume(self, volume, instance_uuid): LOG.debug("Attach Volume\n%s" % pprint.pformat(volume)) try: self.update_volume_key_value_pair(volume, 'HPQ-CS-instance_uuid', instance_uuid) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Error attaching volume %s") % volume) def detach_volume(self, volume): LOG.debug("Detach Volume\n%s" % pprint.pformat(volume)) try: self.clear_volume_key_value_pair(volume, 'HPQ-CS-instance_uuid') except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Error detaching volume %s") % volume) def migrate_volume(self, volume, host): """Migrate directly if source and dest are managed by same storage. :param volume: A dictionary describing the volume to migrate :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. :returns (False, None) if the driver does not support migration, (True, None) if sucessful """ dbg = {'id': volume['id'], 'host': host['host']} LOG.debug(_('enter: migrate_volume: id=%(id)s, host=%(host)s.') % dbg) false_ret = (False, None) # Make sure volume is not attached if volume['status'] != 'available': LOG.debug(_('Volume is attached: migrate_volume: ' 'id=%(id)s, host=%(host)s.') % dbg) return false_ret if 'location_info' not in host['capabilities']: return false_ret info = host['capabilities']['location_info'] try: (dest_type, dest_id, dest_cpg) = info.split(':') except ValueError: return false_ret sys_info = self.client.getStorageSystemInfo() if not (dest_type == 'HP3PARDriver' and dest_id == sys_info['serialNumber']): LOG.debug(_('Dest does not match: migrate_volume: ' 'id=%(id)s, host=%(host)s.') % dbg) return false_ret type_info = self.get_volume_settings_from_type(volume) if dest_cpg == type_info['cpg']: LOG.debug(_('CPGs are the same: migrate_volume: ' 'id=%(id)s, host=%(host)s.') % dbg) return false_ret # Check to make sure CPGs are in the same domain src_domain = self.get_domain(type_info['cpg']) dst_domain = self.get_domain(dest_cpg) if src_domain != dst_domain: LOG.debug(_('CPGs in different domains: migrate_volume: ' 'id=%(id)s, host=%(host)s.') % dbg) return false_ret self._convert_to_base_volume(volume, new_cpg=dest_cpg) # TODO(Ramy) When volume retype is available, # use that to change the type LOG.debug(_('leave: migrate_volume: id=%(id)s, host=%(host)s.') % dbg) return (True, None) def _convert_to_base_volume(self, volume, new_cpg=None): try: type_info = self.get_volume_settings_from_type(volume) if new_cpg: cpg = new_cpg else: cpg = type_info['cpg'] # Change the name such that it is unique since 3PAR # names must be unique across all CPGs volume_name = self._get_3par_vol_name(volume['id']) temp_vol_name = volume_name.replace("osv-", "omv-") # Create a physical copy of the volume task_id = self._copy_volume(volume_name, temp_vol_name, cpg, cpg, type_info['tpvv']) LOG.debug(_('Copy volume scheduled: convert_to_base_volume: ' 'id=%s.') % volume['id']) # Wait for the physical copy task to complete def _wait_for_task(task_id): status = self.client.getTask(task_id) LOG.debug("3PAR Task id %(id)s status = %(status)s" % {'id': task_id, 'status': status['status']}) if status['status'] is not self.client.TASK_ACTIVE: self._task_status = status raise loopingcall.LoopingCallDone() self._task_status = None timer = loopingcall.FixedIntervalLoopingCall( _wait_for_task, task_id) timer.start(interval=1).wait() if self._task_status['status'] is not self.client.TASK_DONE: dbg = {'status': self._task_status, 'id': volume['id']} msg = _('Copy volume task failed: convert_to_base_volume: ' 'id=%(id)s, status=%(status)s.') % dbg raise exception.CinderException(msg) else: LOG.debug(_('Copy volume completed: convert_to_base_volume: ' 'id=%s.') % volume['id']) comment = self._get_3par_vol_comment(volume_name) if comment: self.client.modifyVolume(temp_vol_name, {'comment': comment}) LOG.debug(_('Volume rename completed: convert_to_base_volume: ' 'id=%s.') % volume['id']) # Delete source volume after the copy is complete self.client.deleteVolume(volume_name) LOG.debug(_('Delete src volume completed: convert_to_base_volume: ' 'id=%s.') % volume['id']) # Rename the new volume to the original name self.client.modifyVolume(temp_vol_name, {'newName': volume_name}) LOG.info(_('Completed: convert_to_base_volume: ' 'id=%s.') % volume['id']) except hpexceptions.HTTPConflict: msg = _("Volume (%s) already exists on array.") % volume_name LOG.error(msg) raise exception.Duplicate(msg) except hpexceptions.HTTPBadRequest as ex: LOG.error(ex) raise exception.Invalid(ex.get_description()) except exception.InvalidInput as ex: LOG.error(ex) raise ex except exception.CinderException as ex: LOG.error(ex) raise ex except Exception as ex: LOG.error(ex) raise exception.CinderException(ex) def delete_snapshot(self, snapshot): LOG.debug("Delete Snapshot id %s %s" % (snapshot['id'], pprint.pformat(snapshot))) try: snap_name = self._get_3par_snap_name(snapshot['id']) self.client.deleteVolume(snap_name) except hpexceptions.HTTPForbidden as ex: LOG.error(ex) raise exception.NotAuthorized() except hpexceptions.HTTPNotFound as ex: # We'll let this act as if it worked # it helps clean up the cinder entries. msg = _("Delete Snapshot id not found. Removing from cinder: " "%(id)s Ex: %(msg)s") % {'id': snapshot['id'], 'msg': ex} LOG.warning(msg) except hpexceptions.HTTPConflict as ex: LOG.error(ex) raise exception.SnapshotIsBusy(snapshot_name=snapshot['id']) def _get_3par_hostname_from_wwn_iqn(self, wwns, iqns): if wwns is not None and not isinstance(wwns, list): wwns = [wwns] if iqns is not None and not isinstance(iqns, list): iqns = [iqns] out = self.client.getHosts() hosts = out['members'] for host in hosts: if 'iSCSIPaths' in host and iqns is not None: iscsi_paths = host['iSCSIPaths'] for iscsi in iscsi_paths: for iqn in iqns: if iqn == iscsi['name']: return host['name'] if 'FCPaths' in host and wwns is not None: fc_paths = host['FCPaths'] for fc in fc_paths: for wwn in wwns: if wwn == fc['wwn']: return host['name'] def terminate_connection(self, volume, hostname, wwn=None, iqn=None): """Driver entry point to unattach a volume from an instance.""" try: # does 3par know this host by a different name? if hostname in self.hosts_naming_dict: hostname = self.hosts_naming_dict.get(hostname) self.delete_vlun(volume, hostname) return except hpexceptions.HTTPNotFound as e: if 'host does not exist' in e.get_description(): # use the wwn to see if we can find the hostname hostname = self._get_3par_hostname_from_wwn_iqn(wwn, iqn) # no 3par host, re-throw if (hostname is None): LOG.error(e) raise else: # not a 'host does not exist' HTTPNotFound exception, re-throw LOG.error(e) raise # try again with name retrieved from 3par self.delete_vlun(volume, hostname) def parse_create_host_error(self, hostname, out): search_str = "already used by host " if search_str in out[1]: # host exists, return name used by 3par hostname_3par = self.get_next_word(out[1], search_str) self.hosts_naming_dict[hostname] = hostname_3par return hostname_3par def build_nsp(self, portPos): return '%s:%s:%s' % (portPos['node'], portPos['slot'], portPos['cardPort']) def build_portPos(self, nsp): split = nsp.split(":") portPos = {} portPos['node'] = int(split[0]) portPos['slot'] = int(split[1]) portPos['cardPort'] = int(split[2]) return portPos cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_msa_client.py0000664000567000056700000001674612540642606025173 0ustar jenkinsjenkins00000000000000# Copyright 2014 Objectif Libre # # 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. # from hashlib import md5 import urllib2 from lxml import etree class HPMSAConnectionError(Exception): pass class HPMSAAuthenticationError(Exception): pass class HPMSARequestError(Exception): pass class HPMSAClient(object): def __init__(self, host, login, password, protocol='http'): self._login = login self._password = password self._base_url = "%s://%s/api" % (protocol, host) self._session_key = None def _get_auth_token(self, xml): """Parse an XML authentication reply to extract the session key.""" self._session_key = None obj = etree.XML(xml).find("OBJECT") for prop in obj.iter("PROPERTY"): if prop.get("name") == "response": self._session_key = prop.text break def login(self): """Authenticates the service on the device.""" hash = md5("%s_%s" % (self._login, self._password)) digest = hash.hexdigest() url = self._base_url + "/login/" + digest try: xml = urllib2.urlopen(url).read() except urllib2.URLError: raise HPMSAConnectionError() self._get_auth_token(xml) if self._session_key is None: raise HPMSAAuthenticationError() def _assert_response_ok(self, tree): """Parses the XML returned by the device to check the return code. Raises a HPMSARequestError error if the return code is not 0. """ for obj in tree.iter(): if obj.get("basetype") != "status": continue ret_code = ret_str = None for prop in obj.iter("PROPERTY"): if prop.get("name") == "return-code": ret_code = prop.text elif prop.get("name") == "response": ret_str = prop.text if ret_code != "0": raise HPMSARequestError(ret_str) else: return raise HPMSARequestError("No status found") def _build_request_url(self, path, args=None, **kargs): url = self._base_url + path if kargs: url += '/' + '/'.join(["%s/%s" % (k.replace('_', '-'), v) for (k, v) in kargs.items()]) if args: if not isinstance(args, list): args = [args] url += '/' + '/'.join(args) return url def _request(self, path, args=None, **kargs): """Performs an HTTP request on the device. Raises a HPMSARequestError if the device returned but the status is not 0. The device error message will be used in the exception message. If the status is OK, returns the XML data for further processing. """ url = self._build_request_url(path, args, **kargs) headers = {'dataType': 'api', 'sessionKey': self._session_key} req = urllib2.Request(url, headers=headers) try: xml = urllib2.urlopen(req).read() except urllib2.URLError: raise HPMSAConnectionError() try: tree = etree.XML(xml) except etree.LxmlError: raise HPMSAConnectionError() self._assert_response_ok(tree) return tree def logout(self): url = self._base_url + '/exit' try: urllib2.urlopen(url) return True except HPMSARequestError: return False def create_volume(self, vdisk, name, size): # NOTE: size is in this format: [0-9]+GB self._request("/create/volume", name, vdisk=vdisk, size=size) return None def delete_volume(self, name): self._request("/delete/volumes", name) def extend_volume(self, name, added_size): self._request("/expand/volume", name, size=added_size) def create_snapshot(self, volume_name, snap_name): self._request("/create/snapshots", snap_name, volumes=volume_name) def delete_snapshot(self, snap_name): self._request("/delete/snapshot", ["cleanup", snap_name]) def vdisk_exists(self, vdisk): try: self._request("/show/vdisks", vdisk) return True except HPMSARequestError: return False def vdisk_stats(self, vdisk): stats = {'free_capacity_gb': 0, 'total_capacity_gb': 0} tree = self._request("/show/vdisks", vdisk) for obj in tree.iter(): if obj.get("basetype") != "virtual-disks": continue for prop in obj.iter("PROPERTY"): # the sizes are given in number of blocks of 512 octets if prop.get("name") == "size-numeric": stats['total_capacity_gb'] = \ int(prop.text) * 512 / (10 ** 9) elif prop.get("name") == "freespace-numeric": stats['free_capacity_gb'] = \ int(prop.text) * 512 / (10 ** 9) return stats def _get_first_available_lun_for_host(self, host): luns = [] tree = self._request("/show/host-maps", host) for obj in tree.iter(): if obj.get("basetype") != "host-view-mappings": continue for prop in obj.iter("PROPERTY"): if prop.get("name") == "lun": luns.append(int(prop.text)) lun = 1 while True: if lun not in luns: return lun lun += 1 def map_volume(self, volume_name, wwpns): # NOTE(gpocentek): we assume that luns will be the same for all hosts lun = self._get_first_available_lun_for_host(wwpns[0]) hosts = ",".join(wwpns) self._request("/map/volume", volume_name, lun=str(lun), host=hosts, access="rw") return lun def unmap_volume(self, volume_name, wwpns): hosts = ",".join(wwpns) self._request("/unmap/volume", volume_name, host=hosts) def get_active_target_ports(self): ports = [] tree = self._request("/show/ports") for obj in tree.iter(): if obj.get("basetype") != "port": continue port = {} for prop in obj.iter("PROPERTY"): prop_name = prop.get("name") if prop_name in ["port-type", "target-id", "status"]: port[prop_name] = prop.text if port['status'] != 'Up': continue ports.append(port) return ports def get_active_fc_target_ports(self): ports = [] for port in self.get_active_target_ports(): if port['port-type'] == "FC": ports.append(port['target-id']) return ports def copy_volume(self, source_name, target_name, vdisk): self._request("/volumecopy", target_name, dest_vdisk=vdisk, source_volume=source_name, prompt='yes') cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py0000664000567000056700000001304612540642606026022 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # """ Volume driver for HP LeftHand Storage array. This driver requires 11.5 or greater firmware on the LeftHand array, using the 1.0 or greater version of the hplefthandclient. You will need to install the python hplefthandclient. sudo pip install hplefthandclient Set the following in the cinder.conf file to enable the LeftHand Channel Driver along with the required flags: volume_driver=cinder.volume.drivers.san.hp.hp_lefthand_iscsi. HPLeftHandISCSIDriver It also requires the setting of hplefthand_api_url, hplefthand_username, hplefthand_password for credentials to talk to the REST service on the LeftHand array. """ from cinder import exception from cinder.openstack.common import log as logging from cinder import utils from cinder.volume.driver import VolumeDriver from cinder.volume.drivers.san.hp import hp_lefthand_cliq_proxy as cliq_proxy from cinder.volume.drivers.san.hp import hp_lefthand_rest_proxy as rest_proxy LOG = logging.getLogger(__name__) class HPLeftHandISCSIDriver(VolumeDriver): """Executes commands relating to HP/LeftHand SAN ISCSI volumes. Version history: 1.0.0 - Initial driver 1.0.1 - Added support for retype 1.0.2 - Added support for volume migrate """ VERSION = "1.0.2" def __init__(self, *args, **kwargs): super(HPLeftHandISCSIDriver, self).__init__(*args, **kwargs) self.proxy = self._create_proxy(*args, **kwargs) def _create_proxy(self, *args, **kwargs): try: proxy = rest_proxy.HPLeftHandRESTProxy(*args, **kwargs) except exception.NotFound: proxy = cliq_proxy.HPLeftHandCLIQProxy(*args, **kwargs) return proxy @utils.synchronized('lefthand', external=True) def check_for_setup_error(self): self.proxy.check_for_setup_error() @utils.synchronized('lefthand', external=True) def do_setup(self, context): self.proxy.do_setup(context) LOG.info(_("HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s") % { "driver_ver": self.VERSION, "proxy_ver": self.proxy.get_version_string()}) @utils.synchronized('lefthand', external=True) def create_volume(self, volume): """Creates a volume.""" return self.proxy.create_volume(volume) @utils.synchronized('lefthand', external=True) def extend_volume(self, volume, new_size): """Extend the size of an existing volume.""" self.proxy.extend_volume(volume, new_size) @utils.synchronized('lefthand', external=True) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" return self.proxy.create_volume_from_snapshot(volume, snapshot) @utils.synchronized('lefthand', external=True) def create_snapshot(self, snapshot): """Creates a snapshot.""" self.proxy.create_snapshot(snapshot) @utils.synchronized('lefthand', external=True) def delete_volume(self, volume): """Deletes a volume.""" self.proxy.delete_volume(volume) @utils.synchronized('lefthand', external=True) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" self.proxy.delete_snapshot(snapshot) @utils.synchronized('lefthand', external=True) def initialize_connection(self, volume, connector): """Assigns the volume to a server.""" return self.proxy.initialize_connection(volume, connector) @utils.synchronized('lefthand', external=True) def terminate_connection(self, volume, connector, **kwargs): """Unassign the volume from the host.""" self.proxy.terminate_connection(volume, connector) @utils.synchronized('lefthand', external=True) def get_volume_stats(self, refresh): data = self.proxy.get_volume_stats(refresh) data['driver_version'] = self.VERSION return data @utils.synchronized('lefthand', external=True) def create_cloned_volume(self, volume, src_vref): return self.proxy.create_cloned_volume(volume, src_vref) @utils.synchronized('lefthand', external=True) def create_export(self, context, volume): return self.proxy.create_export(context, volume) @utils.synchronized('lefthand', external=True) def ensure_export(self, context, volume): return self.proxy.ensure_export(context, volume) @utils.synchronized('lefthand', external=True) def remove_export(self, context, volume): return self.proxy.remove_export(context, volume) @utils.synchronized('lefthand', external=True) def retype(self, context, volume, new_type, diff, host): """Convert the volume to be of the new type.""" return self.proxy.retype(context, volume, new_type, diff, host) @utils.synchronized('lefthand', external=True) def migrate_volume(self, ctxt, volume, host): """Migrate directly if source and dest are managed by same storage.""" return self.proxy.migrate_volume(ctxt, volume, host) cinder-2014.1.5/cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py0000664000567000056700000005237512540642606027136 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # """HP LeftHand SAN ISCSI REST Proxy.""" from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder import units from cinder import utils from cinder.volume.driver import ISCSIDriver from cinder.volume import volume_types from oslo.config import cfg LOG = logging.getLogger(__name__) try: import hplefthandclient from hplefthandclient import client from hplefthandclient import exceptions as hpexceptions except ImportError: LOG.error(_('Module hplefthandclient not installed.')) hplefthand_opts = [ cfg.StrOpt('hplefthand_api_url', default=None, help="HP LeftHand WSAPI Server Url like " "https://:8081/lhos"), cfg.StrOpt('hplefthand_username', default=None, help="HP LeftHand Super user username"), cfg.StrOpt('hplefthand_password', default=None, help="HP LeftHand Super user password", secret=True), cfg.StrOpt('hplefthand_clustername', default=None, help="HP LeftHand cluster name"), cfg.BoolOpt('hplefthand_iscsi_chap_enabled', default=False, help='Configure CHAP authentication for iSCSI connections ' '(Default: Disabled)'), cfg.BoolOpt('hplefthand_debug', default=False, help="Enable HTTP debugging to LeftHand"), ] CONF = cfg.CONF CONF.register_opts(hplefthand_opts) # map the extra spec key to the REST client option key extra_specs_key_map = { 'hplh:provisioning': 'isThinProvisioned', 'hplh:ao': 'isAdaptiveOptimizationEnabled', 'hplh:data_pl': 'dataProtectionLevel', } # map the extra spec value to the REST client option value extra_specs_value_map = { 'isThinProvisioned': {'thin': True, 'full': False}, 'isAdaptiveOptimizationEnabled': {'true': True, 'false': False}, 'dataProtectionLevel': { 'r-0': 0, 'r-5': 1, 'r-10-2': 2, 'r-10-3': 3, 'r-10-4': 4, 'r-6': 5} } class HPLeftHandRESTProxy(ISCSIDriver): """Executes REST commands relating to HP/LeftHand SAN ISCSI volumes. Version history: 1.0.0 - Initial REST iSCSI proxy 1.0.1 - Added support for retype 1.0.2 - Added support for volume migrate 1.0.3 - Fixed bug #1285829, HP LeftHand backend assisted migration should check for snapshots 1.0.4 - Fixed bug #1285925, LeftHand AO volume create performance improvement """ VERSION = "1.0.4" device_stats = {} def __init__(self, *args, **kwargs): super(HPLeftHandRESTProxy, self).__init__(*args, **kwargs) self.configuration.append_config_values(hplefthand_opts) if not self.configuration.hplefthand_api_url: raise exception.NotFound(_("HPLeftHand url not found")) # blank is the only invalid character for cluster names # so we need to use it as a separator self.DRIVER_LOCATION = self.__class__.__name__ + ' %(cluster)s %(vip)s' def do_setup(self, context): """Set up LeftHand client.""" try: self.client = client.HPLeftHandClient( self.configuration.hplefthand_api_url) self.client.login( self.configuration.hplefthand_username, self.configuration.hplefthand_password) if self.configuration.hplefthand_debug: self.client.debug_rest(True) cluster_info = self.client.getClusterByName( self.configuration.hplefthand_clustername) self.cluster_id = cluster_info['id'] virtual_ips = cluster_info['virtualIPAddresses'] self.cluster_vip = virtual_ips[0]['ipV4Address'] self._update_backend_status() except hpexceptions.HTTPNotFound: raise exception.DriverNotInitialized( _('LeftHand cluster not found')) except Exception as ex: raise exception.DriverNotInitialized(ex) def check_for_setup_error(self): pass def get_version_string(self): return (_('REST %(proxy_ver)s hplefthandclient %(rest_ver)s') % { 'proxy_ver': self.VERSION, 'rest_ver': hplefthandclient.get_version_string()}) def create_volume(self, volume): """Creates a volume.""" try: # get the extra specs of interest from this volume's volume type volume_extra_specs = self._get_volume_extra_specs(volume) extra_specs = self._get_lh_extra_specs( volume_extra_specs, extra_specs_key_map.keys()) # map the extra specs key/value pairs to key/value pairs # used as optional configuration values by the LeftHand backend optional = self._map_extra_specs(extra_specs) # if provisioning is not set, default to thin if 'isThinProvisioned' not in optional: optional['isThinProvisioned'] = True # AdaptiveOptimization defaults to 'true' if you don't specify the # value on a create, and that is the most efficient way to create # a volume. If you pass in 'false' or 'true' for AO, it will result # in an update operation following the create operation to set this # value, so it is best to not specify the value and let it default # to 'true'. if optional.get('isAdaptiveOptimizationEnabled'): del optional['isAdaptiveOptimizationEnabled'] clusterName = self.configuration.hplefthand_clustername optional['clusterName'] = clusterName volume_info = self.client.createVolume( volume['name'], self.cluster_id, volume['size'] * units.GiB, optional) return self._update_provider(volume_info) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def delete_volume(self, volume): """Deletes a volume.""" try: volume_info = self.client.getVolumeByName(volume['name']) self.client.deleteVolume(volume_info['id']) except hpexceptions.HTTPNotFound: LOG.error(_("Volume did not exist. It will not be deleted")) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def extend_volume(self, volume, new_size): """Extend the size of an existing volume.""" try: volume_info = self.client.getVolumeByName(volume['name']) # convert GB to bytes options = {'size': int(new_size) * units.GiB} self.client.modifyVolume(volume_info['id'], options) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def create_snapshot(self, snapshot): """Creates a snapshot.""" try: volume_info = self.client.getVolumeByName(snapshot['volume_name']) option = {'inheritAccess': True} self.client.createSnapshot(snapshot['name'], volume_info['id'], option) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" try: snap_info = self.client.getSnapshotByName(snapshot['name']) self.client.deleteSnapshot(snap_info['id']) except hpexceptions.HTTPNotFound: LOG.error(_("Snapshot did not exist. It will not be deleted")) except hpexceptions.HTTPServerError as ex: in_use_msg = 'cannot be deleted because it is a clone point' if in_use_msg in ex.get_description(): raise exception.SnapshotIsBusy(ex) raise exception.VolumeBackendAPIException(ex) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def get_volume_stats(self, refresh): """Gets volume stats.""" if refresh: self._update_backend_status() return self.device_stats def _update_backend_status(self): data = {} backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or self.__class__.__name__ data['reserved_percentage'] = 0 data['storage_protocol'] = 'iSCSI' data['vendor_name'] = 'Hewlett-Packard' data['location_info'] = (self.DRIVER_LOCATION % { 'cluster': self.configuration.hplefthand_clustername, 'vip': self.cluster_vip}) cluster_info = self.client.getCluster(self.cluster_id) total_capacity = cluster_info['spaceTotal'] free_capacity = cluster_info['spaceAvailable'] # convert to GB data['total_capacity_gb'] = int(total_capacity) / units.GiB data['free_capacity_gb'] = int(free_capacity) / units.GiB self.device_stats = data def initialize_connection(self, volume, connector): """Assigns the volume to a server. Assign any created volume to a compute node/host so that it can be used from that host. HP VSA requires a volume to be assigned to a server. """ try: server_info = self._create_server(connector) volume_info = self.client.getVolumeByName(volume['name']) self.client.addServerAccess(volume_info['id'], server_info['id']) iscsi_properties = self._get_iscsi_properties(volume) if ('chapAuthenticationRequired' in server_info and server_info['chapAuthenticationRequired']): iscsi_properties['auth_method'] = 'CHAP' iscsi_properties['auth_username'] = connector['initiator'] iscsi_properties['auth_password'] = ( server_info['chapTargetSecret']) return {'driver_volume_type': 'iscsi', 'data': iscsi_properties} except Exception as ex: raise exception.VolumeBackendAPIException(ex) def terminate_connection(self, volume, connector, **kwargs): """Unassign the volume from the host.""" try: volume_info = self.client.getVolumeByName(volume['name']) server_info = self.client.getServerByName(connector['host']) self.client.removeServerAccess( volume_info['id'], server_info['id']) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" try: snap_info = self.client.getSnapshotByName(snapshot['name']) volume_info = self.client.cloneSnapshot( volume['name'], snap_info['id']) return self._update_provider(volume_info) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def create_cloned_volume(self, volume, src_vref): try: volume_info = self.client.getVolumeByName(src_vref['name']) self.client.cloneVolume(volume['name'], volume_info['id']) except Exception as ex: raise exception.VolumeBackendAPIException(ex) def _get_volume_extra_specs(self, volume): """Get extra specs from a volume.""" extra_specs = {} type_id = volume.get('volume_type_id', None) if type_id is not None: ctxt = context.get_admin_context() volume_type = volume_types.get_volume_type(ctxt, type_id) extra_specs = volume_type.get('extra_specs') return extra_specs def _get_lh_extra_specs(self, extra_specs, valid_keys): """Get LeftHand extra_specs (valid_keys only).""" extra_specs_of_interest = {} for key, value in extra_specs.iteritems(): if key in valid_keys: extra_specs_of_interest[key] = value return extra_specs_of_interest def _map_extra_specs(self, extra_specs): """Map the extra spec key/values to LeftHand key/values.""" client_options = {} for key, value in extra_specs.iteritems(): # map extra spec key to lh client option key client_key = extra_specs_key_map[key] # map extra spect value to lh client option value try: value_map = extra_specs_value_map[client_key] # an invalid value will throw KeyError client_value = value_map[value] client_options[client_key] = client_value except KeyError: LOG.error(_("'%(value)s' is an invalid value " "for extra spec '%(key)s'") % {'value': value, 'key': key}) return client_options def _update_provider(self, volume_info): # TODO(justinsb): Is this always 1? Does it matter? cluster_interface = '1' iscsi_portal = self.cluster_vip + ":3260," + cluster_interface return {'provider_location': ( "%s %s %s" % (iscsi_portal, volume_info['iscsiIqn'], 0))} def _create_server(self, connector): server_info = None chap_enabled = self.configuration.hplefthand_iscsi_chap_enabled try: server_info = self.client.getServerByName(connector['host']) chap_secret = server_info['chapTargetSecret'] if not chap_enabled and chap_secret: LOG.warning(_('CHAP secret exists for host %s but CHAP is ' 'disabled') % connector['host']) if chap_enabled and chap_secret is None: LOG.warning(_('CHAP is enabled, but server secret not ' 'configured on server %s') % connector['host']) return server_info except hpexceptions.HTTPNotFound: # server does not exist, so create one pass optional = None if chap_enabled: chap_secret = utils.generate_password() optional = {'chapName': connector['initiator'], 'chapTargetSecret': chap_secret, 'chapAuthenticationRequired': True } server_info = self.client.createServer(connector['host'], connector['initiator'], optional) return server_info def create_export(self, context, volume): pass def ensure_export(self, context, volume): pass def remove_export(self, context, volume): pass def retype(self, ctxt, volume, new_type, diff, host): """Convert the volume to be of the new type. Returns a boolean indicating whether the retype occurred. :param ctxt: Context :param volume: A dictionary describing the volume to retype :param new_type: A dictionary describing the volume type to convert to :param diff: A dictionary with the difference between the two types :param host: A dictionary describing the host, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ LOG.debug(_('enter: retype: id=%(id)s, new_type=%(new_type)s,' 'diff=%(diff)s, host=%(host)s') % {'id': volume['id'], 'new_type': new_type, 'diff': diff, 'host': host}) try: volume_info = self.client.getVolumeByName(volume['name']) except hpexceptions.HTTPNotFound: raise exception.VolumeNotFound(volume_id=volume['id']) try: # pick out the LH extra specs new_extra_specs = dict(new_type).get('extra_specs') lh_extra_specs = self._get_lh_extra_specs( new_extra_specs, extra_specs_key_map.keys()) LOG.debug(_('LH specs=%(specs)s') % {'specs': lh_extra_specs}) # only set the ones that have changed changed_extra_specs = {} for key, value in lh_extra_specs.iteritems(): (old, new) = diff['extra_specs'][key] if old != new: changed_extra_specs[key] = value # map extra specs to LeftHand options options = self._map_extra_specs(changed_extra_specs) if len(options) > 0: self.client.modifyVolume(volume_info['id'], options) return True except Exception as ex: LOG.warning("%s" % ex) return False def migrate_volume(self, ctxt, volume, host): """Migrate the volume to the specified host. Backend assisted volume migration will occur if and only if; 1. Same LeftHand backend 2. Volume cannot be attached 3. Volumes with snapshots cannot be migrated 4. Source and Destination clusters must be in the same management group Volume re-type is not supported. Returns a boolean indicating whether the migration occurred, as well as model_update. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities. """ LOG.debug(_('enter: migrate_volume: id=%(id)s, host=%(host)s, ' 'cluster=%(cluster)s') % { 'id': volume['id'], 'host': host, 'cluster': self.configuration.hplefthand_clustername}) false_ret = (False, None) if 'location_info' not in host['capabilities']: return false_ret host_location = host['capabilities']['location_info'] (driver, cluster, vip) = host_location.split(' ') try: # get the cluster info, if it exists and compare cluster_info = self.client.getClusterByName(cluster) LOG.debug(_('Clister info: %s') % cluster_info) virtual_ips = cluster_info['virtualIPAddresses'] if driver != self.__class__.__name__: LOG.info(_("Cannot provide backend assisted migration for " "volume: %s because volume is from a different " "backend.") % volume['name']) return false_ret if vip != virtual_ips[0]['ipV4Address']: LOG.info(_("Cannot provide backend assisted migration for " "volume: %s because cluster exists in different " "management group.") % volume['name']) return false_ret except hpexceptions.HTTPNotFound: LOG.info(_("Cannot provide backend assisted migration for " "volume: %s because cluster exists in different " "management group.") % volume['name']) return false_ret try: volume_info = self.client.getVolumeByName(volume['name']) LOG.debug(_('Volume info: %s') % volume_info) # can't migrate if server is attached if volume_info['iscsiSessions'] is not None: LOG.info(_("Cannot provide backend assisted migration " "for volume: %s because the volume has been " "exported.") % volume['name']) return false_ret # can't migrate if volume has snapshots snap_info = self.client.getVolume( volume_info['id'], 'fields=snapshots,snapshots[resource[members[name]]]') LOG.debug(_('Snapshot info: %s') % snap_info) if snap_info['snapshots']['resource'] is not None: LOG.info(_("Cannot provide backend assisted migration " "for volume: %s because the volume has " "snapshots.") % volume['name']) return false_ret options = {'clusterName': cluster} self.client.modifyVolume(volume_info['id'], options) except hpexceptions.HTTPNotFound: LOG.info(_("Cannot provide backend assisted migration for " "volume: %s because volume does not exist in this " "management group.") % volume['name']) return false_ret except hpexceptions.HTTPServerError as ex: LOG.error(ex) return false_ret return (True, None) cinder-2014.1.5/cinder/volume/drivers/san/san.py0000664000567000056700000001565712540642606022540 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """ Default Driver for san-stored volumes. The unique thing about a SAN is that we don't expect that we can run the volume controller on the SAN hardware. We expect to access it over SSH or some API. """ import random from eventlet import greenthread from oslo.config import cfg from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import utils from cinder.volume import driver LOG = logging.getLogger(__name__) san_opts = [ cfg.BoolOpt('san_thin_provision', default=True, help='Use thin provisioning for SAN volumes?'), cfg.StrOpt('san_ip', default='', help='IP address of SAN controller'), cfg.StrOpt('san_login', default='admin', help='Username for SAN controller'), cfg.StrOpt('san_password', default='', help='Password for SAN controller', secret=True), cfg.StrOpt('san_private_key', default='', help='Filename of private key to use for SSH authentication'), cfg.StrOpt('san_clustername', default='', help='Cluster name to use for creating volumes'), cfg.IntOpt('san_ssh_port', default=22, help='SSH port to use with SAN'), cfg.BoolOpt('san_is_local', default=False, help='Execute commands locally instead of over SSH; ' 'use if the volume service is running on the SAN device'), cfg.IntOpt('ssh_conn_timeout', default=30, help="SSH connection timeout in seconds"), cfg.IntOpt('ssh_min_pool_conn', default=1, help='Minimum ssh connections in the pool'), cfg.IntOpt('ssh_max_pool_conn', default=5, help='Maximum ssh connections in the pool'), ] CONF = cfg.CONF CONF.register_opts(san_opts) class SanDriver(driver.VolumeDriver): """Base class for SAN-style storage volumes A SAN-style storage value is 'different' because the volume controller probably won't run on it, so we need to access is over SSH or another remote protocol. """ def __init__(self, *args, **kwargs): execute = kwargs.pop('execute', self.san_execute) super(SanDriver, self).__init__(execute=execute, *args, **kwargs) self.configuration.append_config_values(san_opts) self.run_local = self.configuration.san_is_local self.sshpool = None def san_execute(self, *cmd, **kwargs): if self.run_local: return utils.execute(*cmd, **kwargs) else: check_exit_code = kwargs.pop('check_exit_code', None) command = ' '.join(cmd) return self._run_ssh(command, check_exit_code) def _run_ssh(self, cmd_list, check_exit_code=True, attempts=1): utils.check_ssh_injection(cmd_list) command = ' '. join(cmd_list) if not self.sshpool: password = self.configuration.san_password privatekey = self.configuration.san_private_key min_size = self.configuration.ssh_min_pool_conn max_size = self.configuration.ssh_max_pool_conn self.sshpool = utils.SSHPool(self.configuration.san_ip, self.configuration.san_ssh_port, self.configuration.ssh_conn_timeout, self.configuration.san_login, password=password, privatekey=privatekey, min_size=min_size, max_size=max_size) last_exception = None try: total_attempts = attempts with self.sshpool.item() as ssh: while attempts > 0: attempts -= 1 try: return processutils.ssh_execute( ssh, command, check_exit_code=check_exit_code) except Exception as e: LOG.error(e) last_exception = e greenthread.sleep(random.randint(20, 500) / 100.0) try: raise processutils.ProcessExecutionError( exit_code=last_exception.exit_code, stdout=last_exception.stdout, stderr=last_exception.stderr, cmd=last_exception.cmd) except AttributeError: raise processutils.ProcessExecutionError( exit_code=-1, stdout="", stderr="Error running SSH command", cmd=command) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Error running SSH command: %s") % command) def ensure_export(self, context, volume): """Synchronously recreates an export for a logical volume.""" pass def create_export(self, context, volume): """Exports the volume.""" pass def remove_export(self, context, volume): """Removes an export for a logical volume.""" pass def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" if not self.run_local: if not (self.configuration.san_password or self.configuration.san_private_key): raise exception.InvalidInput( reason=_('Specify san_password or san_private_key')) # The san_ip must always be set, because we use it for the target if not self.configuration.san_ip: raise exception.InvalidInput(reason=_("san_ip must be set")) class SanISCSIDriver(SanDriver, driver.ISCSIDriver): def __init__(self, *args, **kwargs): super(SanISCSIDriver, self).__init__(*args, **kwargs) def _build_iscsi_target_name(self, volume): return "%s%s" % (self.configuration.iscsi_target_prefix, volume['name']) cinder-2014.1.5/cinder/volume/drivers/san/solaris.py0000664000567000056700000002424212540642606023421 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder.volume.drivers.san.san import SanISCSIDriver LOG = logging.getLogger(__name__) solaris_opts = [ cfg.StrOpt('san_zfs_volume_base', default='rpool/', help='The ZFS path under which to create zvols for volumes.'), ] CONF = cfg.CONF CONF.register_opts(solaris_opts) class SolarisISCSIDriver(SanISCSIDriver): """Executes commands relating to Solaris-hosted ISCSI volumes. Basic setup for a Solaris iSCSI server: pkg install storage-server SUNWiscsit svcadm enable stmf svcadm enable -r svc:/network/iscsi/target:default pfexec itadm create-tpg e1000g0 ${MYIP} pfexec itadm create-target -t e1000g0 Then grant the user that will be logging on lots of permissions. I'm not sure exactly which though: zfs allow justinsb create,mount,destroy rpool usermod -P'File System Management' justinsb usermod -P'Primary Administrator' justinsb Also make sure you can login using san_login & san_password/san_private_key """ def __init__(self, *cmd, **kwargs): super(SolarisISCSIDriver, self).__init__(execute=self.solaris_execute, *cmd, **kwargs) self.configuration.append_config_values(solaris_opts) def solaris_execute(self, *cmd, **kwargs): new_cmd = ['pfexec'] new_cmd.extend(cmd) return super(SolarisISCSIDriver, self).san_execute(*new_cmd, **kwargs) def _view_exists(self, luid): (out, _err) = self._execute('/usr/sbin/stmfadm', 'list-view', '-l', luid, check_exit_code=False) if "no views found" in out: return False if "View Entry:" in out: return True msg = _("Cannot parse list-view output: %s") % out raise exception.VolumeBackendAPIException(data=msg) def _get_target_groups(self): """Gets list of target groups from host.""" (out, _err) = self._execute('/usr/sbin/stmfadm', 'list-tg') matches = self._get_prefixed_values(out, 'Target group: ') LOG.debug("target_groups=%s" % matches) return matches def _target_group_exists(self, target_group_name): return target_group_name not in self._get_target_groups() def _get_target_group_members(self, target_group_name): (out, _err) = self._execute('/usr/sbin/stmfadm', 'list-tg', '-v', target_group_name) matches = self._get_prefixed_values(out, 'Member: ') LOG.debug("members of %s=%s" % (target_group_name, matches)) return matches def _is_target_group_member(self, target_group_name, iscsi_target_name): return iscsi_target_name in ( self._get_target_group_members(target_group_name)) def _get_iscsi_targets(self): (out, _err) = self._execute('/usr/sbin/itadm', 'list-target') matches = self._collect_lines(out) # Skip header if len(matches) != 0: assert 'TARGET NAME' in matches[0] matches = matches[1:] targets = [] for line in matches: items = line.split() assert len(items) == 3 targets.append(items[0]) LOG.debug("_get_iscsi_targets=%s" % (targets)) return targets def _iscsi_target_exists(self, iscsi_target_name): return iscsi_target_name in self._get_iscsi_targets() def _build_zfs_poolname(self, volume): zfs_poolname = '%s%s' % (self.configuration.san_zfs_volume_base, volume['name']) return zfs_poolname def create_volume(self, volume): """Creates a volume.""" if int(volume['size']) == 0: sizestr = '100M' else: sizestr = '%sG' % volume['size'] zfs_poolname = self._build_zfs_poolname(volume) # Create a zfs volume cmd = ['/usr/sbin/zfs', 'create'] if self.configuration.san_thin_provision: cmd.append('-s') cmd.extend(['-V', sizestr]) cmd.append(zfs_poolname) self._execute(*cmd) def _get_luid(self, volume): zfs_poolname = self._build_zfs_poolname(volume) zvol_name = '/dev/zvol/rdsk/%s' % zfs_poolname (out, _err) = self._execute('/usr/sbin/sbdadm', 'list-lu') lines = self._collect_lines(out) # Strip headers if len(lines) >= 1: if lines[0] == '': lines = lines[1:] if len(lines) >= 4: assert 'Found' in lines[0] assert '' == lines[1] assert 'GUID' in lines[2] assert '------------------' in lines[3] lines = lines[4:] for line in lines: items = line.split() assert len(items) == 3 if items[2] == zvol_name: luid = items[0].strip() return luid msg = _('LUID not found for %(zfs_poolname)s. ' 'Output=%(out)s') % {'zfs_poolname': zfs_poolname, 'out': out} raise exception.VolumeBackendAPIException(data=msg) def _is_lu_created(self, volume): luid = self._get_luid(volume) return luid def delete_volume(self, volume): """Deletes a volume.""" zfs_poolname = self._build_zfs_poolname(volume) self._execute('/usr/sbin/zfs', 'destroy', zfs_poolname) def local_path(self, volume): # TODO(justinsb): Is this needed here? escaped_group = self.configuration.volume_group.replace('-', '--') escaped_name = volume['name'].replace('-', '--') return "/dev/mapper/%s-%s" % (escaped_group, escaped_name) def ensure_export(self, context, volume): """Synchronously recreates an export for a logical volume.""" #TODO(justinsb): On bootup, this is called for every volume. # It then runs ~5 SSH commands for each volume, # most of which fetch the same info each time # This makes initial start stupid-slow return self._do_export(volume, force_create=False) def create_export(self, context, volume): return self._do_export(volume, force_create=True) def _do_export(self, volume, force_create): # Create a Logical Unit (LU) backed by the zfs volume zfs_poolname = self._build_zfs_poolname(volume) if force_create or not self._is_lu_created(volume): zvol_name = '/dev/zvol/rdsk/%s' % zfs_poolname self._execute('/usr/sbin/sbdadm', 'create-lu', zvol_name) luid = self._get_luid(volume) iscsi_name = self._build_iscsi_target_name(volume) target_group_name = 'tg-%s' % volume['name'] # Create a iSCSI target, mapped to just this volume if force_create or not self._target_group_exists(target_group_name): self._execute('/usr/sbin/stmfadm', 'create-tg', target_group_name) # Yes, we add the initiatior before we create it! # Otherwise, it complains that the target is already active if force_create or not self._is_target_group_member(target_group_name, iscsi_name): self._execute('/usr/sbin/stmfadm', 'add-tg-member', '-g', target_group_name, iscsi_name) if force_create or not self._iscsi_target_exists(iscsi_name): self._execute('/usr/sbin/itadm', 'create-target', '-n', iscsi_name) if force_create or not self._view_exists(luid): self._execute('/usr/sbin/stmfadm', 'add-view', '-t', target_group_name, luid) #TODO(justinsb): Is this always 1? Does it matter? iscsi_portal_interface = '1' iscsi_portal = \ self.configuration.san_ip + ":3260," + iscsi_portal_interface db_update = {} db_update['provider_location'] = ("%s %s" % (iscsi_portal, iscsi_name)) return db_update def remove_export(self, context, volume): """Removes an export for a logical volume.""" # This is the reverse of _do_export luid = self._get_luid(volume) iscsi_name = self._build_iscsi_target_name(volume) target_group_name = 'tg-%s' % volume['name'] if self._view_exists(luid): self._execute('/usr/sbin/stmfadm', 'remove-view', '-l', luid, '-a') if self._iscsi_target_exists(iscsi_name): self._execute('/usr/sbin/stmfadm', 'offline-target', iscsi_name) self._execute('/usr/sbin/itadm', 'delete-target', iscsi_name) # We don't delete the tg-member; we delete the whole tg! if self._target_group_exists(target_group_name): self._execute('/usr/sbin/stmfadm', 'delete-tg', target_group_name) if self._is_lu_created(volume): self._execute('/usr/sbin/sbdadm', 'delete-lu', luid) def _collect_lines(self, data): """Split lines from data into an array, trimming them.""" matches = [] for line in data.splitlines(): match = line.strip() matches.append(match) return matches def _get_prefixed_values(self, data, prefix): """Collect lines which start with prefix; with trimming.""" matches = [] for line in data.splitlines(): line = line.strip() if line.startswith(prefix): match = line[len(prefix):] match = match.strip() matches.append(match) return matches cinder-2014.1.5/cinder/volume/drivers/san/__init__.py0000664000567000056700000000175612540642606023511 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # 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. """ :mod:`cinder.volume.san` -- Cinder San Drivers ===================================================== .. automodule:: cinder.volume.san :platform: Unix :synopsis: Module containing all the Cinder San drivers. """ # Adding imports for backwards compatibility in loading volume_driver. from san import SanISCSIDriver # noqa from solaris import SolarisISCSIDriver # noqa cinder-2014.1.5/cinder/volume/drivers/coraid.py0000664000567000056700000004770612540642606022437 0ustar jenkinsjenkins00000000000000# Copyright 2012 Alyseo. # All Rights Reserved. # # 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. """ Desc : Driver to store volumes on Coraid Appliances. Require : Coraid EtherCloud ESM, Coraid VSX and Coraid SRX. Author : Jean-Baptiste RANSY Author : Alex Zasimov Author : Nikolay Sobolevsky Contrib : Larry Matter """ import cookielib import math import urllib import urllib2 from oslo.config import cfg import six.moves.urllib.parse as urlparse from cinder import exception from cinder.openstack.common import jsonutils from cinder.openstack.common import lockutils from cinder.openstack.common import log as logging from cinder import units from cinder.volume import driver from cinder.volume import volume_types LOG = logging.getLogger(__name__) coraid_opts = [ cfg.StrOpt('coraid_esm_address', default='', help='IP address of Coraid ESM'), cfg.StrOpt('coraid_user', default='admin', help='User name to connect to Coraid ESM'), cfg.StrOpt('coraid_group', default='admin', help='Name of group on Coraid ESM to which coraid_user belongs' ' (must have admin privilege)'), cfg.StrOpt('coraid_password', default='password', help='Password to connect to Coraid ESM'), cfg.StrOpt('coraid_repository_key', default='coraid_repository', help='Volume Type key name to store ESM Repository Name'), ] CONF = cfg.CONF CONF.register_opts(coraid_opts) ESM_SESSION_EXPIRED_STATES = ['GeneralAdminFailure', 'passwordInactivityTimeout', 'passwordAbsoluteTimeout'] class CoraidRESTClient(object): """Executes REST RPC requests on Coraid ESM EtherCloud Appliance.""" def __init__(self, esm_url): self._check_esm_url(esm_url) self._esm_url = esm_url self._cookie_jar = cookielib.CookieJar() self._url_opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(self._cookie_jar)) def _check_esm_url(self, esm_url): splitted = urlparse.urlsplit(esm_url) if splitted.scheme != 'https': raise ValueError( _('Invalid ESM url scheme "%s". Supported https only.') % splitted.scheme) @lockutils.synchronized('coraid_rpc', 'cinder-', False) def rpc(self, handle, url_params, data, allow_empty_response=False): return self._rpc(handle, url_params, data, allow_empty_response) def _rpc(self, handle, url_params, data, allow_empty_response): """Execute REST RPC using url /handle?url_params. Send JSON encoded data in body of POST request. Exceptions: urllib2.URLError 1. Name or service not found (e.reason is socket.gaierror) 2. Socket blocking operation timeout (e.reason is socket.timeout) 3. Network IO error (e.reason is socket.error) urllib2.HTTPError 1. HTTP 404, HTTP 500 etc. CoraidJsonEncodeFailure - bad REST response """ # Handle must be simple path, for example: # /configure if '?' in handle or '&' in handle: raise ValueError(_('Invalid REST handle name. Expected path.')) # Request url includes base ESM url, handle path and optional # URL params. rest_url = urlparse.urljoin(self._esm_url, handle) encoded_url_params = urllib.urlencode(url_params) if encoded_url_params: rest_url += '?' + encoded_url_params if data is None: json_request = None else: json_request = jsonutils.dumps(data) request = urllib2.Request(rest_url, json_request) response = self._url_opener.open(request).read() try: if not response and allow_empty_response: reply = {} else: reply = jsonutils.loads(response) except (TypeError, ValueError) as exc: msg = (_('Call to json.loads() failed: %(ex)s.' ' Response: %(resp)s') % {'ex': exc, 'resp': response}) raise exception.CoraidJsonEncodeFailure(msg) return reply def to_coraid_kb(gb): return math.ceil(float(gb) * units.GiB / 1000) def coraid_volume_size(gb): return '{0}K'.format(to_coraid_kb(gb)) class CoraidAppliance(object): def __init__(self, rest_client, username, password, group): self._rest_client = rest_client self._username = username self._password = password self._group = group self._logined = False def _login(self): """Login into ESM. Perform login request and return available groups. :returns: dict -- map with group_name to group_id """ ADMIN_GROUP_PREFIX = 'admin group:' url_params = {'op': 'login', 'username': self._username, 'password': self._password} reply = self._rest_client.rpc('admin', url_params, 'Login') if reply['state'] != 'adminSucceed': raise exception.CoraidESMBadCredentials() # Read groups map from login reply. groups_map = {} for group_info in reply.get('values', []): full_group_name = group_info['fullPath'] if full_group_name.startswith(ADMIN_GROUP_PREFIX): group_name = full_group_name[len(ADMIN_GROUP_PREFIX):] groups_map[group_name] = group_info['groupId'] return groups_map def _set_effective_group(self, groups_map, group): """Set effective group. Use groups_map returned from _login method. """ try: group_id = groups_map[group] except KeyError: raise exception.CoraidESMBadGroup(group_name=group) url_params = {'op': 'setRbacGroup', 'groupId': group_id} reply = self._rest_client.rpc('admin', url_params, 'Group') if reply['state'] != 'adminSucceed': raise exception.CoraidESMBadCredentials() self._logined = True def _ensure_session(self): if not self._logined: groups_map = self._login() self._set_effective_group(groups_map, self._group) def _relogin(self): self._logined = False self._ensure_session() def rpc(self, handle, url_params, data, allow_empty_response=False): self._ensure_session() relogin_attempts = 3 # Do action, relogin if needed and repeat action. while True: reply = self._rest_client.rpc(handle, url_params, data, allow_empty_response) if self._is_session_expired(reply): relogin_attempts -= 1 if relogin_attempts <= 0: raise exception.CoraidESMReloginFailed() LOG.debug(_('Session is expired. Relogin on ESM.')) self._relogin() else: return reply def _is_session_expired(self, reply): return ('state' in reply and reply['state'] in ESM_SESSION_EXPIRED_STATES and reply['metaCROp'] == 'reboot') def _is_bad_config_state(self, reply): return (not reply or 'configState' not in reply or reply['configState'] != 'completedSuccessfully') def configure(self, json_request): reply = self.rpc('configure', {}, json_request) if self._is_bad_config_state(reply): # Calculate error message if not reply: reason = _('Reply is empty.') else: reason = reply.get('message', _('Error message is empty.')) raise exception.CoraidESMConfigureError(reason=reason) return reply def esm_command(self, request): request['data'] = jsonutils.dumps(request['data']) return self.configure([request]) def get_volume_info(self, volume_name): """Retrieve volume information for a given volume name.""" url_params = {'shelf': 'cms', 'orchStrRepo': '', 'lv': volume_name} reply = self.rpc('fetch', url_params, None) try: volume_info = reply[0][1]['reply'][0] except (IndexError, KeyError): raise exception.VolumeNotFound(volume_id=volume_name) return {'pool': volume_info['lv']['containingPool'], 'repo': volume_info['repoName'], 'lun': volume_info['lv']['lvStatus']['exportedLun']['lun'], 'shelf': volume_info['lv']['lvStatus']['exportedLun']['shelf']} def get_volume_repository(self, volume_name): volume_info = self.get_volume_info(volume_name) return volume_info['repo'] def get_all_repos(self): reply = self.rpc('fetch', {'orchStrRepo': ''}, None) try: return reply[0][1]['reply'] except (IndexError, KeyError): return [] def ping(self): try: self.rpc('fetch', {}, None, allow_empty_response=True) except Exception as e: LOG.debug(_('Coraid Appliance ping failed: %s'), e) raise exception.CoraidESMNotAvailable(reason=e) def create_lun(self, repository_name, volume_name, volume_size_in_gb): request = {'addr': 'cms', 'data': { 'servers': [], 'repoName': repository_name, 'lvName': volume_name, 'size': coraid_volume_size(volume_size_in_gb)}, 'op': 'orchStrLun', 'args': 'add'} esm_result = self.esm_command(request) LOG.debug(_('Volume "%(name)s" created with VSX LUN "%(lun)s"') % {'name': volume_name, 'lun': esm_result['firstParam']}) return esm_result def delete_lun(self, volume_name): repository_name = self.get_volume_repository(volume_name) request = {'addr': 'cms', 'data': { 'repoName': repository_name, 'lvName': volume_name}, 'op': 'orchStrLun/verified', 'args': 'delete'} esm_result = self.esm_command(request) LOG.debug(_('Volume "%s" deleted.'), volume_name) return esm_result def resize_volume(self, volume_name, new_volume_size_in_gb): LOG.debug(_('Resize volume "%(name)s" to %(size)s GB.') % {'name': volume_name, 'size': new_volume_size_in_gb}) repository = self.get_volume_repository(volume_name) LOG.debug(_('Repository for volume "%(name)s" found: "%(repo)s"') % {'name': volume_name, 'repo': repository}) request = {'addr': 'cms', 'data': { 'lvName': volume_name, 'newLvName': volume_name + '-resize', 'size': coraid_volume_size(new_volume_size_in_gb), 'repoName': repository}, 'op': 'orchStrLunMods', 'args': 'resize'} esm_result = self.esm_command(request) LOG.debug(_('Volume "%(name)s" resized. New size is %(size)s GB.') % {'name': volume_name, 'size': new_volume_size_in_gb}) return esm_result def create_snapshot(self, volume_name, snapshot_name): volume_repository = self.get_volume_repository(volume_name) request = {'addr': 'cms', 'data': { 'repoName': volume_repository, 'lvName': volume_name, 'newLvName': snapshot_name}, 'op': 'orchStrLunMods', 'args': 'addClSnap'} esm_result = self.esm_command(request) return esm_result def delete_snapshot(self, snapshot_name): repository_name = self.get_volume_repository(snapshot_name) request = {'addr': 'cms', 'data': { 'repoName': repository_name, 'lvName': snapshot_name}, 'op': 'orchStrLunMods', 'args': 'delClSnap'} esm_result = self.esm_command(request) return esm_result def create_volume_from_snapshot(self, snapshot_name, volume_name, dest_repository_name): snapshot_repo = self.get_volume_repository(snapshot_name) request = {'addr': 'cms', 'data': { 'lvName': snapshot_name, 'repoName': snapshot_repo, 'newLvName': volume_name, 'newRepoName': dest_repository_name}, 'op': 'orchStrLunMods', 'args': 'addClone'} esm_result = self.esm_command(request) return esm_result def clone_volume(self, src_volume_name, dst_volume_name, dst_repository_name): src_volume_info = self.get_volume_info(src_volume_name) if src_volume_info['repo'] != dst_repository_name: raise exception.CoraidException( _('Cannot create clone volume in different repository.')) request = {'addr': 'cms', 'data': { 'shelfLun': '{0}.{1}'.format(src_volume_info['shelf'], src_volume_info['lun']), 'lvName': src_volume_name, 'repoName': src_volume_info['repo'], 'newLvName': dst_volume_name, 'newRepoName': dst_repository_name}, 'op': 'orchStrLunMods', 'args': 'addClone'} return self.esm_command(request) class CoraidDriver(driver.VolumeDriver): """This is the Class to set in cinder.conf (volume_driver).""" VERSION = '1.0.0' def __init__(self, *args, **kwargs): super(CoraidDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(coraid_opts) self._stats = {'driver_version': self.VERSION, 'free_capacity_gb': 'unknown', 'reserved_percentage': 0, 'storage_protocol': 'aoe', 'total_capacity_gb': 'unknown', 'vendor_name': 'Coraid'} backend_name = self.configuration.safe_get('volume_backend_name') self._stats['volume_backend_name'] = backend_name or 'EtherCloud ESM' @property def appliance(self): # NOTE(nsobolevsky): This is workaround for bug in the ESM appliance. # If there is a lot of request with the same session/cookie/connection, # the appliance could corrupt all following request in session. # For that purpose we just create a new appliance. esm_url = "https://{0}:8443".format( self.configuration.coraid_esm_address) return CoraidAppliance(CoraidRESTClient(esm_url), self.configuration.coraid_user, self.configuration.coraid_password, self.configuration.coraid_group) def check_for_setup_error(self): """Return an error if prerequisites aren't met.""" self.appliance.ping() def _get_repository(self, volume_type): """Get the ESM Repository from the Volume Type. The ESM Repository is stored into a volume_type_extra_specs key. """ volume_type_id = volume_type['id'] repository_key_name = self.configuration.coraid_repository_key repository = volume_types.get_volume_type_extra_specs( volume_type_id, repository_key_name) # Remove keyword from repository name if needed if repository.startswith(' '): return repository[len(' '):] else: return repository def create_volume(self, volume): """Create a Volume.""" repository = self._get_repository(volume['volume_type']) self.appliance.create_lun(repository, volume['name'], volume['size']) def create_cloned_volume(self, volume, src_vref): dst_volume_repository = self._get_repository(volume['volume_type']) self.appliance.clone_volume(src_vref['name'], volume['name'], dst_volume_repository) if volume['size'] != src_vref['size']: self.appliance.resize_volume(volume['name'], volume['size']) def delete_volume(self, volume): """Delete a Volume.""" try: self.appliance.delete_lun(volume['name']) except exception.VolumeNotFound: self.appliance.ping() def create_snapshot(self, snapshot): """Create a Snapshot.""" volume_name = snapshot['volume_name'] snapshot_name = snapshot['name'] self.appliance.create_snapshot(volume_name, snapshot_name) def delete_snapshot(self, snapshot): """Delete a Snapshot.""" snapshot_name = snapshot['name'] self.appliance.delete_snapshot(snapshot_name) def create_volume_from_snapshot(self, volume, snapshot): """Create a Volume from a Snapshot.""" snapshot_name = snapshot['name'] repository = self._get_repository(volume['volume_type']) self.appliance.create_volume_from_snapshot(snapshot_name, volume['name'], repository) if volume['size'] > snapshot['volume_size']: self.appliance.resize_volume(volume['name'], volume['size']) def extend_volume(self, volume, new_size): """Extend an existing volume.""" self.appliance.resize_volume(volume['name'], new_size) def initialize_connection(self, volume, connector): """Return connection information.""" volume_info = self.appliance.get_volume_info(volume['name']) shelf = volume_info['shelf'] lun = volume_info['lun'] LOG.debug(_('Initialize connection %(shelf)s/%(lun)s for %(name)s') % {'shelf': shelf, 'lun': lun, 'name': volume['name']}) aoe_properties = {'target_shelf': shelf, 'target_lun': lun} return {'driver_volume_type': 'aoe', 'data': aoe_properties} def _get_repository_capabilities(self): repos_list = map(lambda i: i['profile']['fullName'] + ':' + i['name'], self.appliance.get_all_repos()) return ' '.join(repos_list) def update_volume_stats(self): capabilities = self._get_repository_capabilities() self._stats[self.configuration.coraid_repository_key] = capabilities def get_volume_stats(self, refresh=False): """Return Volume Stats.""" if refresh: self.update_volume_stats() return self._stats def local_path(self, volume): pass def create_export(self, context, volume): pass def remove_export(self, context, volume): pass def terminate_connection(self, volume, connector, **kwargs): pass def ensure_export(self, context, volume): pass cinder-2014.1.5/cinder/volume/drivers/xenapi/0000775000567000056700000000000012540643114022065 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/xenapi/__init__.py0000664000567000056700000000000012540642606024171 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/xenapi/sm.py0000664000567000056700000002410312540642606023063 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from oslo.config import cfg from cinder import exception from cinder.image import glance from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers.xenapi import lib as xenapi_lib LOG = logging.getLogger(__name__) xenapi_opts = [ cfg.StrOpt('xenapi_connection_url', default=None, help='URL for XenAPI connection'), cfg.StrOpt('xenapi_connection_username', default='root', help='Username for XenAPI connection'), cfg.StrOpt('xenapi_connection_password', default=None, help='Password for XenAPI connection', secret=True), cfg.StrOpt('xenapi_sr_base_path', default='/var/run/sr-mount', help='Base path to the storage repository'), ] xenapi_nfs_opts = [ cfg.StrOpt('xenapi_nfs_server', default=None, help='NFS server to be used by XenAPINFSDriver'), cfg.StrOpt('xenapi_nfs_serverpath', default=None, help='Path of exported NFS, used by XenAPINFSDriver'), ] CONF = cfg.CONF CONF.register_opts(xenapi_opts) CONF.register_opts(xenapi_nfs_opts) class XenAPINFSDriver(driver.VolumeDriver): VERSION = "1.0.0" def __init__(self, *args, **kwargs): super(XenAPINFSDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(xenapi_opts) self.configuration.append_config_values(xenapi_nfs_opts) def do_setup(self, context): session_factory = xenapi_lib.SessionFactory( self.configuration.xenapi_connection_url, self.configuration.xenapi_connection_username, self.configuration.xenapi_connection_password ) self.nfs_ops = xenapi_lib.NFSBasedVolumeOperations(session_factory) def create_cloned_volume(self, volume, src_vref): raise NotImplementedError() def create_volume(self, volume): volume_details = self.nfs_ops.create_volume( self.configuration.xenapi_nfs_server, self.configuration.xenapi_nfs_serverpath, volume['size'], volume['display_name'], volume['display_description'] ) location = "%(sr_uuid)s/%(vdi_uuid)s" % volume_details return dict(provider_location=location) def create_export(self, context, volume): pass def delete_volume(self, volume): sr_uuid, vdi_uuid = volume['provider_location'].split('/') self.nfs_ops.delete_volume( self.configuration.xenapi_nfs_server, self.configuration.xenapi_nfs_serverpath, sr_uuid, vdi_uuid ) def remove_export(self, context, volume): pass def initialize_connection(self, volume, connector): sr_uuid, vdi_uuid = volume['provider_location'].split('/') return dict( driver_volume_type='xensm', data=dict( name_label=volume['display_name'] or '', name_description=volume['display_description'] or '', sr_uuid=sr_uuid, vdi_uuid=vdi_uuid, sr_type='nfs', server=self.configuration.xenapi_nfs_server, serverpath=self.configuration.xenapi_nfs_serverpath, introduce_sr_keys=['sr_type', 'server', 'serverpath'] ) ) def terminate_connection(self, volume, connector, **kwargs): pass def check_for_setup_error(self): """To override superclass' method.""" def create_volume_from_snapshot(self, volume, snapshot): return self._copy_volume( snapshot, volume['display_name'], volume['name_description']) def create_snapshot(self, snapshot): volume_id = snapshot['volume_id'] volume = snapshot['volume'] return self._copy_volume( volume, snapshot['display_name'], snapshot['display_description']) def _copy_volume(self, volume, target_name, target_desc): sr_uuid, vdi_uuid = volume['provider_location'].split('/') volume_details = self.nfs_ops.copy_volume( self.configuration.xenapi_nfs_server, self.configuration.xenapi_nfs_serverpath, sr_uuid, vdi_uuid, target_name, target_desc ) location = "%(sr_uuid)s/%(vdi_uuid)s" % volume_details return dict(provider_location=location) def delete_snapshot(self, snapshot): self.delete_volume(snapshot) def ensure_export(self, context, volume): pass def copy_image_to_volume(self, context, volume, image_service, image_id): if image_utils.is_xenserver_image(context, image_service, image_id): return self._use_glance_plugin_to_copy_image_to_volume( context, volume, image_service, image_id) return self._use_image_utils_to_pipe_bytes_to_volume( context, volume, image_service, image_id) def _use_image_utils_to_pipe_bytes_to_volume(self, context, volume, image_service, image_id): sr_uuid, vdi_uuid = volume['provider_location'].split('/') with self.nfs_ops.volume_attached_here(CONF.xenapi_nfs_server, CONF.xenapi_nfs_serverpath, sr_uuid, vdi_uuid, False) as device: image_utils.fetch_to_raw(context, image_service, image_id, device, self.configuration.volume_dd_blocksize, size=volume['size']) def _use_glance_plugin_to_copy_image_to_volume(self, context, volume, image_service, image_id): sr_uuid, vdi_uuid = volume['provider_location'].split('/') api_servers = glance.get_api_servers() glance_server = api_servers.next() auth_token = context.auth_token overwrite_result = self.nfs_ops.use_glance_plugin_to_overwrite_volume( CONF.xenapi_nfs_server, CONF.xenapi_nfs_serverpath, sr_uuid, vdi_uuid, glance_server, image_id, auth_token, CONF.xenapi_sr_base_path) if overwrite_result is False: raise exception.ImageCopyFailure(reason='Overwriting volume ' 'failed.') self.nfs_ops.resize_volume( CONF.xenapi_nfs_server, CONF.xenapi_nfs_serverpath, sr_uuid, vdi_uuid, volume['size']) def copy_volume_to_image(self, context, volume, image_service, image_meta): if image_utils.is_xenserver_format(image_meta): return self._use_glance_plugin_to_upload_volume( context, volume, image_service, image_meta) return self._use_image_utils_to_upload_volume( context, volume, image_service, image_meta) def _use_image_utils_to_upload_volume(self, context, volume, image_service, image_meta): sr_uuid, vdi_uuid = volume['provider_location'].split('/') with self.nfs_ops.volume_attached_here(CONF.xenapi_nfs_server, CONF.xenapi_nfs_serverpath, sr_uuid, vdi_uuid, True) as device: image_utils.upload_volume(context, image_service, image_meta, device) def _use_glance_plugin_to_upload_volume(self, context, volume, image_service, image_meta): image_id = image_meta['id'] sr_uuid, vdi_uuid = volume['provider_location'].split('/') api_servers = glance.get_api_servers() glance_server = api_servers.next() auth_token = context.auth_token self.nfs_ops.use_glance_plugin_to_upload_volume( CONF.xenapi_nfs_server, CONF.xenapi_nfs_serverpath, sr_uuid, vdi_uuid, glance_server, image_id, auth_token, CONF.xenapi_sr_base_path) def get_volume_stats(self, refresh=False): if refresh or not self._stats: data = {} backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or 'XenAPINFS', data['vendor_name'] = 'Open Source', data['driver_version'] = self.VERSION data['storage_protocol'] = 'xensm' data['total_capacity_gb'] = 'unknown' data['free_capacity_gb'] = 'unknown' data['reserved_percentage'] = 0 self._stats = data return self._stats def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" raise NotImplementedError() def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" raise NotImplementedError() cinder-2014.1.5/cinder/volume/drivers/xenapi/tools.py0000664000567000056700000000030412540642606023601 0ustar jenkinsjenkins00000000000000def _stripped_first_line_of(filename): with open(filename, 'rb') as f: return f.readline().strip() def get_this_vm_uuid(): return _stripped_first_line_of('/sys/hypervisor/uuid') cinder-2014.1.5/cinder/volume/drivers/xenapi/lib.py0000664000567000056700000004276512540642606023230 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import contextlib import os import pickle from cinder import units from cinder.volume.drivers.xenapi import tools class XenAPIException(Exception): def __init__(self, original_exception): super(XenAPIException, self).__init__(original_exception) self.original_exception = original_exception class OperationsBase(object): def __init__(self, xenapi_session): self.session = xenapi_session def call_xenapi(self, method, *args): return self.session.call_xenapi(method, *args) class VMOperations(OperationsBase): def get_by_uuid(self, vm_uuid): return self.call_xenapi('VM.get_by_uuid', vm_uuid) def get_vbds(self, vm_uuid): return self.call_xenapi('VM.get_VBDs', vm_uuid) class VBDOperations(OperationsBase): def create(self, vm_ref, vdi_ref, userdevice, bootable, mode, type, empty, other_config): vbd_rec = dict( VM=vm_ref, VDI=vdi_ref, userdevice=str(userdevice), bootable=bootable, mode=mode, type=type, empty=empty, other_config=other_config, qos_algorithm_type='', qos_algorithm_params=dict() ) return self.call_xenapi('VBD.create', vbd_rec) def destroy(self, vbd_ref): self.call_xenapi('VBD.destroy', vbd_ref) def get_device(self, vbd_ref): return self.call_xenapi('VBD.get_device', vbd_ref) def plug(self, vbd_ref): return self.call_xenapi('VBD.plug', vbd_ref) def unplug(self, vbd_ref): return self.call_xenapi('VBD.unplug', vbd_ref) def get_vdi(self, vbd_ref): return self.call_xenapi('VBD.get_VDI', vbd_ref) class PoolOperations(OperationsBase): def get_all(self): return self.call_xenapi('pool.get_all') def get_default_SR(self, pool_ref): return self.call_xenapi('pool.get_default_SR', pool_ref) class PbdOperations(OperationsBase): def get_all(self): return self.call_xenapi('PBD.get_all') def unplug(self, pbd_ref): self.call_xenapi('PBD.unplug', pbd_ref) def create(self, host_ref, sr_ref, device_config): return self.call_xenapi( 'PBD.create', dict( host=host_ref, SR=sr_ref, device_config=device_config ) ) def plug(self, pbd_ref): self.call_xenapi('PBD.plug', pbd_ref) class SrOperations(OperationsBase): def get_all(self): return self.call_xenapi('SR.get_all') def get_record(self, sr_ref): return self.call_xenapi('SR.get_record', sr_ref) def forget(self, sr_ref): self.call_xenapi('SR.forget', sr_ref) def scan(self, sr_ref): self.call_xenapi('SR.scan', sr_ref) def create(self, host_ref, device_config, name_label, name_description, sr_type, physical_size=None, content_type=None, shared=False, sm_config=None): return self.call_xenapi( 'SR.create', host_ref, device_config, physical_size or '0', name_label or '', name_description or '', sr_type, content_type or '', shared, sm_config or dict() ) def introduce(self, sr_uuid, name_label, name_description, sr_type, content_type=None, shared=False, sm_config=None): return self.call_xenapi( 'SR.introduce', sr_uuid, name_label or '', name_description or '', sr_type, content_type or '', shared, sm_config or dict() ) def get_uuid(self, sr_ref): return self.get_record(sr_ref)['uuid'] def get_name_label(self, sr_ref): return self.get_record(sr_ref)['name_label'] def get_name_description(self, sr_ref): return self.get_record(sr_ref)['name_description'] def destroy(self, sr_ref): self.call_xenapi('SR.destroy', sr_ref) class VdiOperations(OperationsBase): def get_all(self): return self.call_xenapi('VDI.get_all') def get_record(self, vdi_ref): return self.call_xenapi('VDI.get_record', vdi_ref) def get_by_uuid(self, vdi_uuid): return self.call_xenapi('VDI.get_by_uuid', vdi_uuid) def get_uuid(self, vdi_ref): return self.get_record(vdi_ref)['uuid'] def create(self, sr_ref, size, vdi_type, sharable=False, read_only=False, other_config=None): return self.call_xenapi('VDI.create', dict(SR=sr_ref, virtual_size=str(size), type=vdi_type, sharable=sharable, read_only=read_only, other_config=other_config or dict())) def destroy(self, vdi_ref): self.call_xenapi('VDI.destroy', vdi_ref) def copy(self, vdi_ref, sr_ref): return self.call_xenapi('VDI.copy', vdi_ref, sr_ref) def resize(self, vdi_ref, size): return self.call_xenapi('VDI.resize', vdi_ref, str(size)) class HostOperations(OperationsBase): def get_record(self, host_ref): return self.call_xenapi('host.get_record', host_ref) def get_uuid(self, host_ref): return self.get_record(host_ref)['uuid'] class XenAPISession(object): def __init__(self, session, exception_to_convert): self._session = session self._exception_to_convert = exception_to_convert self.handle = self._session.handle self.PBD = PbdOperations(self) self.SR = SrOperations(self) self.VDI = VdiOperations(self) self.host = HostOperations(self) self.pool = PoolOperations(self) self.VBD = VBDOperations(self) self.VM = VMOperations(self) def close(self): return self.call_xenapi('logout') @contextlib.contextmanager def exception_converter(self): try: yield None except self._exception_to_convert as e: raise XenAPIException(e) def call_xenapi(self, method, *args): with self.exception_converter(): return self._session.xenapi_request(method, args) def call_plugin(self, host_ref, plugin, function, args): with self.exception_converter(): return self._session.xenapi.host.call_plugin( host_ref, plugin, function, args) def get_pool(self): return self.call_xenapi('session.get_pool', self.handle) def get_this_host(self): return self.call_xenapi('session.get_this_host', self.handle) class CompoundOperations(object): def unplug_pbds_from_sr(self, sr_ref): sr_rec = self.SR.get_record(sr_ref) for pbd_ref in sr_rec.get('PBDs', []): self.PBD.unplug(pbd_ref) def unplug_pbds_and_forget_sr(self, sr_ref): self.unplug_pbds_from_sr(sr_ref) self.SR.forget(sr_ref) def create_new_vdi(self, sr_ref, size_in_gigabytes): return self.VDI.create(sr_ref, to_bytes(size_in_gigabytes), 'User', ) def to_bytes(size_in_gigs): return size_in_gigs * units.GiB class NFSOperationsMixIn(CompoundOperations): def is_nfs_sr(self, sr_ref): return self.SR.get_record(sr_ref).get('type') == 'nfs' @contextlib.contextmanager def new_sr_on_nfs(self, host_ref, server, serverpath, name_label=None, name_description=None): device_config = dict( server=server, serverpath=serverpath ) name_label = name_label or '' name_description = name_description or '' sr_type = 'nfs' sr_ref = self.SR.create( host_ref, device_config, name_label, name_description, sr_type, ) yield sr_ref self.unplug_pbds_and_forget_sr(sr_ref) def plug_nfs_sr(self, host_ref, server, serverpath, sr_uuid, name_label=None, name_description=None): device_config = dict( server=server, serverpath=serverpath ) sr_type = 'nfs' sr_ref = self.SR.introduce( sr_uuid, name_label, name_description, sr_type, ) pbd_ref = self.PBD.create( host_ref, sr_ref, device_config ) self.PBD.plug(pbd_ref) return sr_ref def connect_volume(self, server, serverpath, sr_uuid, vdi_uuid): host_ref = self.get_this_host() sr_ref = self.plug_nfs_sr( host_ref, server, serverpath, sr_uuid ) self.SR.scan(sr_ref) vdi_ref = self.VDI.get_by_uuid(vdi_uuid) return dict(sr_ref=sr_ref, vdi_ref=vdi_ref) def copy_vdi_to_sr(self, vdi_ref, sr_ref): return self.VDI.copy(vdi_ref, sr_ref) class ContextAwareSession(XenAPISession): def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): self.close() class OpenStackXenAPISession(ContextAwareSession, NFSOperationsMixIn): pass def connect(url, user, password): import XenAPI session = XenAPI.Session(url) session.login_with_password(user, password) return OpenStackXenAPISession(session, XenAPI.Failure) class SessionFactory(object): def __init__(self, url, user, password): self.url = url self.user = user self.password = password def get_session(self): return connect(self.url, self.user, self.password) class XapiPluginProxy(object): def __init__(self, session_factory, plugin_name): self._session_factory = session_factory self._plugin_name = plugin_name def call(self, function, *plugin_args, **plugin_kwargs): plugin_params = dict(args=plugin_args, kwargs=plugin_kwargs) args = dict(params=pickle.dumps(plugin_params)) with self._session_factory.get_session() as session: host_ref = session.get_this_host() result = session.call_plugin( host_ref, self._plugin_name, function, args) return pickle.loads(result) class GlancePluginProxy(XapiPluginProxy): def __init__(self, session_factory): super(GlancePluginProxy, self).__init__(session_factory, 'glance') def download_vhd(self, image_id, glance_host, glance_port, glance_use_ssl, uuid_stack, sr_path, auth_token): return self.call( 'download_vhd', image_id=image_id, glance_host=glance_host, glance_port=glance_port, glance_use_ssl=glance_use_ssl, uuid_stack=uuid_stack, sr_path=sr_path, auth_token=auth_token) def upload_vhd(self, vdi_uuids, image_id, glance_host, glance_port, glance_use_ssl, sr_path, auth_token, properties): return self.call( 'upload_vhd', vdi_uuids=vdi_uuids, image_id=image_id, glance_host=glance_host, glance_port=glance_port, glance_use_ssl=glance_use_ssl, sr_path=sr_path, auth_token=auth_token, properties=properties) class NFSBasedVolumeOperations(object): def __init__(self, session_factory): self._session_factory = session_factory self.glance_plugin = GlancePluginProxy(session_factory) def create_volume(self, server, serverpath, size, name=None, description=None): with self._session_factory.get_session() as session: host_ref = session.get_this_host() with session.new_sr_on_nfs(host_ref, server, serverpath, name, description) as sr_ref: vdi_ref = session.create_new_vdi(sr_ref, size) return dict( sr_uuid=session.SR.get_uuid(sr_ref), vdi_uuid=session.VDI.get_uuid(vdi_ref) ) def delete_volume(self, server, serverpath, sr_uuid, vdi_uuid): with self._session_factory.get_session() as session: refs = session.connect_volume( server, serverpath, sr_uuid, vdi_uuid) session.VDI.destroy(refs['vdi_ref']) sr_ref = refs['sr_ref'] session.unplug_pbds_from_sr(sr_ref) session.SR.destroy(sr_ref) def connect_volume(self, server, serverpath, sr_uuid, vdi_uuid): with self._session_factory.get_session() as session: refs = session.connect_volume( server, serverpath, sr_uuid, vdi_uuid) return session.VDI.get_uuid(refs['vdi_ref']) def disconnect_volume(self, vdi_uuid): with self._session_factory.get_session() as session: vdi_ref = session.VDI.get_by_uuid(vdi_uuid) vdi_rec = session.VDI.get_record(vdi_ref) sr_ref = vdi_rec['SR'] session.unplug_pbds_and_forget_sr(sr_ref) def copy_volume(self, server, serverpath, sr_uuid, vdi_uuid, name=None, description=None): with self._session_factory.get_session() as session: src_refs = session.connect_volume( server, serverpath, sr_uuid, vdi_uuid) try: host_ref = session.get_this_host() with session.new_sr_on_nfs(host_ref, server, serverpath, name, description) as target_sr_ref: target_vdi_ref = session.copy_vdi_to_sr( src_refs['vdi_ref'], target_sr_ref) dst_refs = dict( sr_uuid=session.SR.get_uuid(target_sr_ref), vdi_uuid=session.VDI.get_uuid(target_vdi_ref) ) finally: session.unplug_pbds_and_forget_sr(src_refs['sr_ref']) return dst_refs def resize_volume(self, server, serverpath, sr_uuid, vdi_uuid, size_in_gigabytes): self.connect_volume(server, serverpath, sr_uuid, vdi_uuid) try: with self._session_factory.get_session() as session: vdi_ref = session.VDI.get_by_uuid(vdi_uuid) session.VDI.resize(vdi_ref, to_bytes(size_in_gigabytes)) finally: self.disconnect_volume(vdi_uuid) def use_glance_plugin_to_overwrite_volume(self, server, serverpath, sr_uuid, vdi_uuid, glance_server, image_id, auth_token, sr_base_path): self.connect_volume(server, serverpath, sr_uuid, vdi_uuid) uuid_stack = [vdi_uuid] glance_host, glance_port, glance_use_ssl = glance_server try: result = self.glance_plugin.download_vhd( image_id, glance_host, glance_port, glance_use_ssl, uuid_stack, os.path.join(sr_base_path, sr_uuid), auth_token) finally: self.disconnect_volume(vdi_uuid) if len(result) != 1 or result['root']['uuid'] != vdi_uuid: return False return True def use_glance_plugin_to_upload_volume(self, server, serverpath, sr_uuid, vdi_uuid, glance_server, image_id, auth_token, sr_base_path): self.connect_volume(server, serverpath, sr_uuid, vdi_uuid) vdi_uuids = [vdi_uuid] glance_host, glance_port, glance_use_ssl = glance_server try: result = self.glance_plugin.upload_vhd( vdi_uuids, image_id, glance_host, glance_port, glance_use_ssl, os.path.join(sr_base_path, sr_uuid), auth_token, dict()) finally: self.disconnect_volume(vdi_uuid) @contextlib.contextmanager def volume_attached_here(self, server, serverpath, sr_uuid, vdi_uuid, readonly=True): self.connect_volume(server, serverpath, sr_uuid, vdi_uuid) with self._session_factory.get_session() as session: vm_uuid = tools.get_this_vm_uuid() vm_ref = session.VM.get_by_uuid(vm_uuid) vdi_ref = session.VDI.get_by_uuid(vdi_uuid) vbd_ref = session.VBD.create( vm_ref, vdi_ref, userdevice='autodetect', bootable=False, mode='RO' if readonly else 'RW', type='disk', empty=False, other_config=dict()) session.VBD.plug(vbd_ref) device = session.VBD.get_device(vbd_ref) try: yield "/dev/" + device finally: session.VBD.unplug(vbd_ref) session.VBD.destroy(vbd_ref) self.disconnect_volume(vdi_uuid) cinder-2014.1.5/cinder/volume/drivers/scality.py0000664000567000056700000002377612540642606022647 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Scality # # 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. """ Scality SOFS Volume Driver. """ import errno import os import urllib2 from oslo.config import cfg import six.moves.urllib.parse as urlparse from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder import units from cinder.volume import driver LOG = logging.getLogger(__name__) volume_opts = [ cfg.StrOpt('scality_sofs_config', default=None, help='Path or URL to Scality SOFS configuration file'), cfg.StrOpt('scality_sofs_mount_point', default='$state_path/scality', help='Base dir where Scality SOFS shall be mounted'), cfg.StrOpt('scality_sofs_volume_dir', default='cinder/volumes', help='Path from Scality SOFS root to volume dir'), ] CONF = cfg.CONF CONF.register_opts(volume_opts) class ScalityDriver(driver.VolumeDriver): """Scality SOFS cinder driver. Creates sparse files on SOFS for hypervisors to use as block devices. """ VERSION = '1.0.0' def _check_prerequisites(self): """Sanity checks before attempting to mount SOFS.""" # config is mandatory config = CONF.scality_sofs_config if not config: msg = _("Value required for 'scality_sofs_config'") LOG.warn(msg) raise exception.VolumeBackendAPIException(data=msg) # config can be a file path or a URL, check it if urlparse.urlparse(config).scheme == '': # turn local path into URL config = 'file://%s' % config try: urllib2.urlopen(config, timeout=5).close() except urllib2.URLError as e: msg = _("Cannot access 'scality_sofs_config': %s") % e LOG.warn(msg) raise exception.VolumeBackendAPIException(data=msg) # mount.sofs must be installed if not os.access('/sbin/mount.sofs', os.X_OK): msg = _("Cannot execute /sbin/mount.sofs") LOG.warn(msg) raise exception.VolumeBackendAPIException(data=msg) def _makedirs(self, path): try: os.makedirs(path) except OSError as e: if e.errno != errno.EEXIST: raise def _mount_sofs(self): config = CONF.scality_sofs_config mount_path = CONF.scality_sofs_mount_point sysdir = os.path.join(mount_path, 'sys') self._makedirs(mount_path) if not os.path.isdir(sysdir): self._execute('mount', '-t', 'sofs', config, mount_path, run_as_root=True) if not os.path.isdir(sysdir): msg = _("Cannot mount Scality SOFS, check syslog for errors") LOG.warn(msg) raise exception.VolumeBackendAPIException(data=msg) def _size_bytes(self, size_in_g): if int(size_in_g) == 0: return 100 * units.MiB return int(size_in_g) * units.GiB def _create_file(self, path, size): with open(path, "ab") as f: f.truncate(size) os.chmod(path, 0o666) def _copy_file(self, src_path, dest_path): self._execute('dd', 'if=%s' % src_path, 'of=%s' % dest_path, 'bs=1M', 'conv=fsync,nocreat,notrunc', run_as_root=True) def do_setup(self, context): """Any initialization the volume driver does while starting.""" self._check_prerequisites() self._mount_sofs() voldir = os.path.join(CONF.scality_sofs_mount_point, CONF.scality_sofs_volume_dir) if not os.path.isdir(voldir): self._makedirs(voldir) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" self._check_prerequisites() voldir = os.path.join(CONF.scality_sofs_mount_point, CONF.scality_sofs_volume_dir) if not os.path.isdir(voldir): msg = _("Cannot find volume dir for Scality SOFS at '%s'") % voldir LOG.warn(msg) raise exception.VolumeBackendAPIException(data=msg) def create_volume(self, volume): """Creates a logical volume. Can optionally return a Dictionary of changes to the volume object to be persisted. """ self._create_file(self.local_path(volume), self._size_bytes(volume['size'])) volume['provider_location'] = self._sofs_path(volume) return {'provider_location': volume['provider_location']} def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" changes = self.create_volume(volume) self._copy_file(self.local_path(snapshot), self.local_path(volume)) return changes def delete_volume(self, volume): """Deletes a logical volume.""" os.remove(self.local_path(volume)) def create_snapshot(self, snapshot): """Creates a snapshot.""" volume_path = os.path.join(CONF.scality_sofs_mount_point, CONF.scality_sofs_volume_dir, snapshot['volume_name']) snapshot_path = self.local_path(snapshot) self._create_file(snapshot_path, self._size_bytes(snapshot['volume_size'])) self._copy_file(volume_path, snapshot_path) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" os.remove(self.local_path(snapshot)) def _sofs_path(self, volume): return os.path.join(CONF.scality_sofs_volume_dir, volume['name']) def local_path(self, volume): return os.path.join(CONF.scality_sofs_mount_point, self._sofs_path(volume)) def ensure_export(self, context, volume): """Synchronously recreates an export for a logical volume.""" pass def create_export(self, context, volume): """Exports the volume. Can optionally return a Dictionary of changes to the volume object to be persisted. """ pass def remove_export(self, context, volume): """Removes an export for a logical volume.""" pass def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info.""" return { 'driver_volume_type': 'scality', 'data': { 'sofs_path': self._sofs_path(volume), } } def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" pass def detach_volume(self, context, volume): """Callback for volume detached.""" pass def get_volume_stats(self, refresh=False): """Return the current state of the volume service. If 'refresh' is True, run the update first. """ stats = { 'vendor_name': 'Scality', 'driver_version': self.VERSION, 'storage_protocol': 'scality', 'total_capacity_gb': 'infinite', 'free_capacity_gb': 'infinite', 'reserved_percentage': 0, } backend_name = self.configuration.safe_get('volume_backend_name') stats['volume_backend_name'] = backend_name or 'Scality_SOFS' return stats def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" image_utils.fetch_to_raw(context, image_service, image_id, self.local_path(volume), CONF.volume_dd_blocksize, size=volume['size']) self.create_volume(volume) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" image_utils.upload_volume(context, image_service, image_meta, self.local_path(volume)) def clone_image(self, volume, image_location, image_id, image_meta): """Create a volume efficiently from an existing image. image_location is a string whose format depends on the image service backend in use. The driver should use it to determine whether cloning is possible. image_id is a string which represents id of the image. It can be used by the driver to introspect internal stores or registry to do an efficient image clone. Returns a dict of volume properties eg. provider_location, boolean indicating whether cloning occurred """ return None, False def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" self.create_volume_from_snapshot(volume, src_vref) def extend_volume(self, volume, new_size): """Extend an existing volume.""" self._create_file(self.local_path(volume), self._size_bytes(new_size)) def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" raise NotImplementedError() def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" raise NotImplementedError() cinder-2014.1.5/cinder/volume/drivers/__init__.py0000664000567000056700000000150512540642603022715 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. """ :mod:`cinder.volume.driver` -- Cinder Drivers ===================================================== .. automodule:: cinder.volume.driver :platform: Unix :synopsis: Module containing all the Cinder drivers. """ cinder-2014.1.5/cinder/volume/drivers/rbd.py0000664000567000056700000010225112540642606021730 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # # 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. """RADOS Block Device Driver""" from __future__ import absolute_import import io import json import os import tempfile import urllib from oslo.config import cfg from cinder import exception from cinder.image import image_utils from cinder.openstack.common import fileutils from cinder.openstack.common import log as logging from cinder.openstack.common import strutils from cinder import units from cinder.volume import driver try: import rados import rbd except ImportError: rados = None rbd = None LOG = logging.getLogger(__name__) rbd_opts = [ cfg.StrOpt('rbd_pool', default='rbd', help='the RADOS pool in which rbd volumes are stored'), cfg.StrOpt('rbd_user', default=None, help='the RADOS client name for accessing rbd volumes ' '- only set when using cephx authentication'), cfg.StrOpt('rbd_ceph_conf', default='', # default determined by librados help='path to the ceph configuration file to use'), cfg.BoolOpt('rbd_flatten_volume_from_snapshot', default=False, help='flatten volumes created from snapshots to remove ' 'dependency'), cfg.StrOpt('rbd_secret_uuid', default=None, help='the libvirt uuid of the secret for the rbd_user' 'volumes'), cfg.StrOpt('volume_tmp_dir', default=None, help='where to store temporary image files if the volume ' 'driver does not write them directly to the volume'), cfg.IntOpt('rbd_max_clone_depth', default=5, help='maximum number of nested clones that can be taken of a ' 'volume before enforcing a flatten prior to next clone. ' 'A value of zero disables cloning'), cfg.IntOpt('rados_connect_timeout', default=-1, help=_('Timeout value (in seconds) used when connecting to ' 'ceph cluster. If value < 0, no timeout is set and ' 'default librados value is used.'))] CONF = cfg.CONF CONF.register_opts(rbd_opts) def ascii_str(string): """Convert a string to ascii, or return None if the input is None. This is useful when a parameter is None by default, or a string. LibRBD only accepts ascii, hence the need for conversion. """ if string is None: return string return str(string) class RBDImageMetadata(object): """RBD image metadata to be used with RBDImageIOWrapper.""" def __init__(self, image, pool, user, conf): self.image = image self.pool = str(pool) self.user = str(user) self.conf = str(conf) class RBDImageIOWrapper(io.RawIOBase): """Enables LibRBD.Image objects to be treated as Python IO objects. Calling unimplemented interfaces will raise IOError. """ def __init__(self, rbd_meta): super(RBDImageIOWrapper, self).__init__() self._rbd_meta = rbd_meta self._offset = 0 def _inc_offset(self, length): self._offset += length @property def rbd_image(self): return self._rbd_meta.image @property def rbd_user(self): return self._rbd_meta.user @property def rbd_pool(self): return self._rbd_meta.pool @property def rbd_conf(self): return self._rbd_meta.conf def read(self, length=None): offset = self._offset total = self._rbd_meta.image.size() # NOTE(dosaboy): posix files do not barf if you read beyond their # length (they just return nothing) but rbd images do so we need to # return empty string if we have reached the end of the image. if (offset >= total): return '' if length is None: length = total if (offset + length) > total: length = total - offset self._inc_offset(length) return self._rbd_meta.image.read(int(offset), int(length)) def write(self, data): self._rbd_meta.image.write(data, self._offset) self._inc_offset(len(data)) def seekable(self): return True def seek(self, offset, whence=0): if whence == 0: new_offset = offset elif whence == 1: new_offset = self._offset + offset elif whence == 2: new_offset = self._rbd_meta.image.size() new_offset += offset else: raise IOError(_("Invalid argument - whence=%s not supported") % (whence)) if (new_offset < 0): raise IOError(_("Invalid argument")) self._offset = new_offset def tell(self): return self._offset def flush(self): try: self._rbd_meta.image.flush() except AttributeError: LOG.warning(_("flush() not supported in this version of librbd")) def fileno(self): """RBD does not have support for fileno() so we raise IOError. Raising IOError is recommended way to notify caller that interface is not supported - see http://docs.python.org/2/library/io.html#io.IOBase """ raise IOError(_("fileno() not supported by RBD()")) # NOTE(dosaboy): if IO object is not closed explicitly, Python auto closes # it which, if this is not overridden, calls flush() prior to close which # in this case is unwanted since the rbd image may have been closed prior # to the autoclean - currently triggering a segfault in librbd. def close(self): pass class RBDVolumeProxy(object): """Context manager for dealing with an existing rbd volume. This handles connecting to rados and opening an ioctx automatically, and otherwise acts like a librbd Image object. The underlying librados client and ioctx can be accessed as the attributes 'client' and 'ioctx'. """ def __init__(self, driver, name, pool=None, snapshot=None, read_only=False): client, ioctx = driver._connect_to_rados(pool) try: self.volume = driver.rbd.Image(ioctx, str(name), snapshot=ascii_str(snapshot), read_only=read_only) except driver.rbd.Error: LOG.exception(_("error opening rbd image %s"), name) driver._disconnect_from_rados(client, ioctx) raise self.driver = driver self.client = client self.ioctx = ioctx def __enter__(self): return self def __exit__(self, type_, value, traceback): try: self.volume.close() finally: self.driver._disconnect_from_rados(self.client, self.ioctx) def __getattr__(self, attrib): return getattr(self.volume, attrib) class RADOSClient(object): """Context manager to simplify error handling for connecting to ceph.""" def __init__(self, driver, pool=None): self.driver = driver self.cluster, self.ioctx = driver._connect_to_rados(pool) def __enter__(self): return self def __exit__(self, type_, value, traceback): self.driver._disconnect_from_rados(self.cluster, self.ioctx) class RBDDriver(driver.VolumeDriver): """Implements RADOS block device (RBD) volume commands.""" VERSION = '1.1.0' def __init__(self, *args, **kwargs): super(RBDDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(rbd_opts) self._stats = {} # allow overrides for testing self.rados = kwargs.get('rados', rados) self.rbd = kwargs.get('rbd', rbd) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" if rados is None: msg = _('rados and rbd python libraries not found') raise exception.VolumeBackendAPIException(data=msg) try: with RADOSClient(self): pass except self.rados.Error: msg = _('error connecting to ceph cluster') LOG.exception(msg) raise exception.VolumeBackendAPIException(data=msg) def _ceph_args(self): args = [] if self.configuration.rbd_user: args.extend(['--id', self.configuration.rbd_user]) if self.configuration.rbd_ceph_conf: args.extend(['--conf', self.configuration.rbd_ceph_conf]) return args def _connect_to_rados(self, pool=None): ascii_user = ascii_str(self.configuration.rbd_user) ascii_conf = ascii_str(self.configuration.rbd_ceph_conf) client = self.rados.Rados(rados_id=ascii_user, conffile=ascii_conf) try: if self.configuration.rados_connect_timeout >= 0: client.connect( timeout=self.configuration.rados_connect_timeout) else: client.connect() pool_to_open = str(pool or self.configuration.rbd_pool) ioctx = client.open_ioctx(pool_to_open) return client, ioctx except self.rados.Error: # shutdown cannot raise an exception client.shutdown() raise def _disconnect_from_rados(self, client, ioctx): # closing an ioctx cannot raise an exception ioctx.close() client.shutdown() def _get_backup_snaps(self, rbd_image): """Get list of any backup snapshots that exist on this volume. There should only ever be one but accept all since they need to be deleted before the volume can be. """ # NOTE(dosaboy): we do the import here otherwise we get import conflict # issues between the rbd driver and the ceph backup driver. These # issues only seem to occur when NOT using them together and are # triggered when the ceph backup driver imports the rbd volume driver. from cinder.backup.drivers import ceph return ceph.CephBackupDriver.get_backup_snaps(rbd_image) def _get_mon_addrs(self): args = ['ceph', 'mon', 'dump', '--format=json'] args.extend(self._ceph_args()) out, _ = self._execute(*args) lines = out.split('\n') if lines[0].startswith('dumped monmap epoch'): lines = lines[1:] monmap = json.loads('\n'.join(lines)) addrs = [mon['addr'] for mon in monmap['mons']] hosts = [] ports = [] for addr in addrs: host_port = addr[:addr.rindex('/')] host, port = host_port.rsplit(':', 1) hosts.append(host.strip('[]')) ports.append(port) return hosts, ports def _update_volume_stats(self): stats = { 'vendor_name': 'Open Source', 'driver_version': self.VERSION, 'storage_protocol': 'ceph', 'total_capacity_gb': 'unknown', 'free_capacity_gb': 'unknown', 'reserved_percentage': 0, } backend_name = self.configuration.safe_get('volume_backend_name') stats['volume_backend_name'] = backend_name or 'RBD' try: with RADOSClient(self) as client: new_stats = client.cluster.get_cluster_stats() stats['total_capacity_gb'] = new_stats['kb'] / units.MiB stats['free_capacity_gb'] = new_stats['kb_avail'] / units.MiB except self.rados.Error: # just log and return unknown capacities LOG.exception(_('error refreshing volume stats')) self._stats = stats def get_volume_stats(self, refresh=False): """Return the current state of the volume service. If 'refresh' is True, run the update first. """ if refresh: self._update_volume_stats() return self._stats def _supports_layering(self): return hasattr(self.rbd, 'RBD_FEATURE_LAYERING') def _get_clone_depth(self, client, volume_name, depth=0): """Returns the number of ancestral clones (if any) of the given volume. """ parent_volume = self.rbd.Image(client.ioctx, volume_name) try: pool, parent, snap = self._get_clone_info(parent_volume, volume_name) finally: parent_volume.close() if not parent: return depth # If clone depth was reached, flatten should have occurred so if it has # been exceeded then something has gone wrong. if depth > CONF.rbd_max_clone_depth: raise Exception(_("clone depth exceeds limit of %s") % (CONF.rbd_max_clone_depth)) return self._get_clone_depth(client, parent, depth + 1) def create_cloned_volume(self, volume, src_vref): """Create a cloned volume from another volume. Since we are cloning from a volume and not a snapshot, we must first create a snapshot of the source volume. The user has the option to limit how long a volume's clone chain can be by setting rbd_max_clone_depth. If a clone is made of another clone and that clone has rbd_max_clone_depth clones behind it, the source volume will be flattened. """ src_name = str(src_vref['name']) dest_name = str(volume['name']) flatten_parent = False # Do full copy if requested if CONF.rbd_max_clone_depth <= 0: with RBDVolumeProxy(self, src_name, read_only=True) as vol: vol.copy(vol.ioctx, dest_name) return # Otherwise do COW clone. with RADOSClient(self) as client: depth = self._get_clone_depth(client, src_name) # If source volume is a clone and rbd_max_clone_depth reached, # flatten the source before cloning. Zero rbd_max_clone_depth means # infinite is allowed. if depth == CONF.rbd_max_clone_depth: LOG.debug(_("maximum clone depth (%d) has been reached - " "flattening source volume") % (CONF.rbd_max_clone_depth)) flatten_parent = True src_volume = self.rbd.Image(client.ioctx, src_name) try: # First flatten source volume if required. if flatten_parent: pool, parent, snap = self._get_clone_info(src_volume, src_name) # Flatten source volume LOG.debug(_("flattening source volume %s") % (src_name)) src_volume.flatten() # Delete parent clone snap parent_volume = self.rbd.Image(client.ioctx, parent) try: parent_volume.unprotect_snap(snap) parent_volume.remove_snap(snap) finally: parent_volume.close() # Create new snapshot of source volume clone_snap = "%s.clone_snap" % dest_name LOG.debug(_("creating snapshot='%s'") % (clone_snap)) src_volume.create_snap(clone_snap) src_volume.protect_snap(clone_snap) except Exception as exc: # Only close if exception since we still need it. src_volume.close() raise exc # Now clone source volume snapshot try: LOG.debug(_("cloning '%(src_vol)s@%(src_snap)s' to " "'%(dest)s'") % {'src_vol': src_name, 'src_snap': clone_snap, 'dest': dest_name}) self.rbd.RBD().clone(client.ioctx, src_name, clone_snap, client.ioctx, dest_name, features=self.rbd.RBD_FEATURE_LAYERING) except Exception as exc: src_volume.unprotect_snap(clone_snap) src_volume.remove_snap(clone_snap) raise exc finally: src_volume.close() LOG.debug(_("clone created successfully")) def create_volume(self, volume): """Creates a logical volume.""" if int(volume['size']) == 0: size = 100 * units.MiB else: size = int(volume['size']) * units.GiB LOG.debug(_("creating volume '%s'") % (volume['name'])) old_format = True features = 0 if self._supports_layering(): old_format = False features = self.rbd.RBD_FEATURE_LAYERING with RADOSClient(self) as client: self.rbd.RBD().create(client.ioctx, str(volume['name']), size, old_format=old_format, features=features) def _flatten(self, pool, volume_name): LOG.debug(_('flattening %(pool)s/%(img)s') % dict(pool=pool, img=volume_name)) with RBDVolumeProxy(self, volume_name, pool) as vol: vol.flatten() def _clone(self, volume, src_pool, src_image, src_snap): LOG.debug(_('cloning %(pool)s/%(img)s@%(snap)s to %(dst)s') % dict(pool=src_pool, img=src_image, snap=src_snap, dst=volume['name'])) with RADOSClient(self, src_pool) as src_client: with RADOSClient(self) as dest_client: self.rbd.RBD().clone(src_client.ioctx, str(src_image), str(src_snap), dest_client.ioctx, str(volume['name']), features=self.rbd.RBD_FEATURE_LAYERING) def _resize(self, volume, **kwargs): size = kwargs.get('size', None) if not size: size = int(volume['size']) * units.GiB with RBDVolumeProxy(self, volume['name']) as vol: vol.resize(size) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" self._clone(volume, self.configuration.rbd_pool, snapshot['volume_name'], snapshot['name']) if self.configuration.rbd_flatten_volume_from_snapshot: self._flatten(self.configuration.rbd_pool, volume['name']) if int(volume['size']): self._resize(volume) def _delete_backup_snaps(self, rbd_image): backup_snaps = self._get_backup_snaps(rbd_image) if backup_snaps: for snap in backup_snaps: rbd_image.remove_snap(snap['name']) else: LOG.debug(_("volume has no backup snaps")) def _get_clone_info(self, volume, volume_name, snap=None): """If volume is a clone, return its parent info. Returns a tuple of (pool, parent, snap). A snapshot may optionally be provided for the case where a cloned volume has been flattened but it's snapshot still depends on the parent. """ try: snap and volume.set_snap(snap) pool, parent, parent_snap = tuple(volume.parent_info()) snap and volume.set_snap(None) # Strip the tag off the end of the volume name since it will not be # in the snap name. if volume_name.endswith('.deleted'): volume_name = volume_name[:-len('.deleted')] # Now check the snap name matches. if parent_snap == "%s.clone_snap" % volume_name: return pool, parent, parent_snap except self.rbd.ImageNotFound: LOG.debug(_("volume %s is not a clone") % volume_name) volume.set_snap(None) return (None, None, None) def _delete_clone_parent_refs(self, client, parent_name, parent_snap): """Walk back up the clone chain and delete references. Deletes references i.e. deleted parent volumes and snapshots. """ parent_rbd = self.rbd.Image(client.ioctx, parent_name) parent_has_snaps = False try: # Check for grandparent _pool, g_parent, g_parent_snap = self._get_clone_info(parent_rbd, parent_name, parent_snap) LOG.debug(_("deleting parent snapshot %s") % (parent_snap)) parent_rbd.unprotect_snap(parent_snap) parent_rbd.remove_snap(parent_snap) parent_has_snaps = bool(list(parent_rbd.list_snaps())) finally: parent_rbd.close() # If parent has been deleted in Cinder, delete the silent reference and # keep walking up the chain if it is itself a clone. if (not parent_has_snaps) and parent_name.endswith('.deleted'): LOG.debug(_("deleting parent %s") % (parent_name)) self.rbd.RBD().remove(client.ioctx, parent_name) # Now move up to grandparent if there is one if g_parent: self._delete_clone_parent_refs(client, g_parent, g_parent_snap) def delete_volume(self, volume): """Deletes a logical volume.""" # NOTE(dosaboy): this was broken by commit cbe1d5f. Ensure names are # utf-8 otherwise librbd will barf. volume_name = strutils.safe_encode(volume['name']) with RADOSClient(self) as client: try: rbd_image = self.rbd.Image(client.ioctx, volume_name) except self.rbd.ImageNotFound: LOG.info(_("volume %s no longer exists in backend") % (volume_name)) return clone_snap = None parent = None # Ensure any backup snapshots are deleted self._delete_backup_snaps(rbd_image) # If the volume has non-clone snapshots this delete is expected to # raise VolumeIsBusy so do so straight away. try: snaps = rbd_image.list_snaps() for snap in snaps: if snap['name'].endswith('.clone_snap'): LOG.debug(_("volume has clone snapshot(s)")) # We grab one of these and use it when fetching parent # info in case the volume has been flattened. clone_snap = snap['name'] break raise exception.VolumeIsBusy(volume_name=volume_name) # Determine if this volume is itself a clone pool, parent, parent_snap = self._get_clone_info(rbd_image, volume_name, clone_snap) finally: rbd_image.close() if clone_snap is None: LOG.debug(_("deleting rbd volume %s") % (volume_name)) try: self.rbd.RBD().remove(client.ioctx, volume_name) except self.rbd.ImageBusy: msg = (_("ImageBusy error raised while deleting rbd " "volume. This may have been caused by a " "connection from a client that has crashed and, " "if so, may be resolved by retrying the delete " "after 30 seconds has elapsed.")) LOG.warn(msg) # Now raise this so that volume stays available so that we # delete can be retried. raise exception.VolumeIsBusy(msg, volume_name=volume_name) except self.rbd.ImageNotFound: msg = (_("RBD volume %s not found, allowing delete " "operation to proceed.") % volume_name) LOG.info(msg) return # If it is a clone, walk back up the parent chain deleting # references. if parent: LOG.debug(_("volume is a clone so cleaning references")) self._delete_clone_parent_refs(client, parent, parent_snap) else: # If the volume has copy-on-write clones we will not be able to # delete it. Instead we will keep it as a silent volume which # will be deleted when it's snapshot and clones are deleted. new_name = "%s.deleted" % (volume_name) self.rbd.RBD().rename(client.ioctx, volume_name, new_name) def create_snapshot(self, snapshot): """Creates an rbd snapshot.""" with RBDVolumeProxy(self, snapshot['volume_name']) as volume: snap = str(snapshot['name']) volume.create_snap(snap) if self._supports_layering(): volume.protect_snap(snap) def delete_snapshot(self, snapshot): """Deletes an rbd snapshot.""" # NOTE(dosaboy): this was broken by commit cbe1d5f. Ensure names are # utf-8 otherwise librbd will barf. volume_name = strutils.safe_encode(snapshot['volume_name']) snap_name = strutils.safe_encode(snapshot['name']) with RBDVolumeProxy(self, volume_name) as volume: if self._supports_layering(): try: volume.unprotect_snap(snap_name) except self.rbd.ImageBusy: raise exception.SnapshotIsBusy(snapshot_name=snap_name) volume.remove_snap(snap_name) def ensure_export(self, context, volume): """Synchronously recreates an export for a logical volume.""" pass def create_export(self, context, volume): """Exports the volume.""" pass def remove_export(self, context, volume): """Removes an export for a logical volume.""" pass def initialize_connection(self, volume, connector): hosts, ports = self._get_mon_addrs() data = { 'driver_volume_type': 'rbd', 'data': { 'name': '%s/%s' % (self.configuration.rbd_pool, volume['name']), 'hosts': hosts, 'ports': ports, 'auth_enabled': (self.configuration.rbd_user is not None), 'auth_username': self.configuration.rbd_user, 'secret_type': 'ceph', 'secret_uuid': self.configuration.rbd_secret_uuid, } } LOG.debug(_('connection data: %s'), data) return data def terminate_connection(self, volume, connector, **kwargs): pass def _parse_location(self, location): prefix = 'rbd://' if not location.startswith(prefix): reason = _('Not stored in rbd') raise exception.ImageUnacceptable(image_id=location, reason=reason) pieces = map(urllib.unquote, location[len(prefix):].split('/')) if any(map(lambda p: p == '', pieces)): reason = _('Blank components') raise exception.ImageUnacceptable(image_id=location, reason=reason) if len(pieces) != 4: reason = _('Not an rbd snapshot') raise exception.ImageUnacceptable(image_id=location, reason=reason) return pieces def _get_fsid(self): with RADOSClient(self) as client: return client.cluster.get_fsid() def _is_cloneable(self, image_location, image_meta): try: fsid, pool, image, snapshot = self._parse_location(image_location) except exception.ImageUnacceptable as e: LOG.debug(_('not cloneable: %s'), e) return False if self._get_fsid() != fsid: reason = _('%s is in a different ceph cluster') % image_location LOG.debug(reason) return False if image_meta['disk_format'] != 'raw': reason = _("rbd image clone requires image format to be " "'raw' but image {0} is '{1}'").format( image_location, image_meta['disk_format']) LOG.debug(reason) return False # check that we can read the image try: with RBDVolumeProxy(self, image, pool=pool, snapshot=snapshot, read_only=True): return True except self.rbd.Error as e: LOG.debug(_('Unable to open image %(loc)s: %(err)s') % dict(loc=image_location, err=e)) return False def clone_image(self, volume, image_location, image_id, image_meta): image_location = image_location[0] if image_location else None if image_location is None or not self._is_cloneable( image_location, image_meta): return ({}, False) prefix, pool, image, snapshot = self._parse_location(image_location) self._clone(volume, pool, image, snapshot) self._resize(volume) return {'provider_location': None}, True def _ensure_tmp_exists(self): tmp_dir = self.configuration.volume_tmp_dir if tmp_dir and not os.path.exists(tmp_dir): os.makedirs(tmp_dir) def copy_image_to_volume(self, context, volume, image_service, image_id): self._ensure_tmp_exists() tmp_dir = self.configuration.volume_tmp_dir with tempfile.NamedTemporaryFile(dir=tmp_dir) as tmp: image_utils.fetch_to_raw(context, image_service, image_id, tmp.name, self.configuration.volume_dd_blocksize, size=volume['size']) self.delete_volume(volume) # keep using the command line import instead of librbd since it # detects zeroes to preserve sparseness in the image args = ['rbd', 'import', '--pool', self.configuration.rbd_pool, tmp.name, volume['name']] if self._supports_layering(): args.append('--new-format') args.extend(self._ceph_args()) self._try_execute(*args) self._resize(volume) def copy_volume_to_image(self, context, volume, image_service, image_meta): self._ensure_tmp_exists() tmp_dir = self.configuration.volume_tmp_dir or '/tmp' tmp_file = os.path.join(tmp_dir, volume['name'] + '-' + image_meta['id']) with fileutils.remove_path_on_error(tmp_file): args = ['rbd', 'export', '--pool', self.configuration.rbd_pool, volume['name'], tmp_file] args.extend(self._ceph_args()) self._try_execute(*args) image_utils.upload_volume(context, image_service, image_meta, tmp_file) os.unlink(tmp_file) def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" volume = self.db.volume_get(context, backup['volume_id']) pool = self.configuration.rbd_pool with RBDVolumeProxy(self, volume['name'], pool) as rbd_image: rbd_meta = RBDImageMetadata(rbd_image, self.configuration.rbd_pool, self.configuration.rbd_user, self.configuration.rbd_ceph_conf) rbd_fd = RBDImageIOWrapper(rbd_meta) backup_service.backup(backup, rbd_fd) LOG.debug(_("volume backup complete.")) def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" pool = self.configuration.rbd_pool with RBDVolumeProxy(self, volume['name'], pool) as rbd_image: rbd_meta = RBDImageMetadata(rbd_image, self.configuration.rbd_pool, self.configuration.rbd_user, self.configuration.rbd_ceph_conf) rbd_fd = RBDImageIOWrapper(rbd_meta) backup_service.restore(backup, volume['id'], rbd_fd) LOG.debug(_("volume restore complete.")) def extend_volume(self, volume, new_size): """Extend an existing volume.""" old_size = volume['size'] try: size = int(new_size) * units.GiB self._resize(volume, size=size) except Exception: msg = _('Failed to Extend Volume ' '%(volname)s') % {'volname': volume['name']} LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_("Extend volume from %(old_size)s GB to %(new_size)s GB."), {'old_size': old_size, 'new_size': new_size}) cinder-2014.1.5/cinder/volume/drivers/vmware/0000775000567000056700000000000012540643114022102 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/vmware/read_write_util.py0000664000567000056700000003076312540642606025654 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Classes to handle image files. Collection of classes to handle image upload/download to/from Image service (like Glance image storage and retrieval service) from/to VMware server. """ import httplib import netaddr import urllib import urllib2 import six.moves.urllib.parse as urlparse from cinder.openstack.common import log as logging from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import vim_util LOG = logging.getLogger(__name__) USER_AGENT = 'OpenStack-ESX-Adapter' READ_CHUNKSIZE = 65536 class GlanceFileRead(object): """Glance file read handler class.""" def __init__(self, glance_read_iter): self.glance_read_iter = glance_read_iter self.iter = self.get_next() def read(self, chunk_size): """Read an item from the queue. The chunk size is ignored for the Client ImageBodyIterator uses its own CHUNKSIZE. """ try: return self.iter.next() except StopIteration: return "" def get_next(self): """Get the next item from the image iterator.""" for data in self.glance_read_iter: yield data def close(self): """A dummy close just to maintain consistency.""" pass class VMwareHTTPFile(object): """Base class for VMDK file access over HTTP.""" def __init__(self, file_handle): self.eof = False self.file_handle = file_handle def close(self): """Close the file handle.""" try: self.file_handle.close() except Exception as exc: LOG.exception(exc) def __del__(self): """Close the file handle on garbage collection.""" self.close() def _build_vim_cookie_headers(self, vim_cookies): """Build ESX host session cookie headers.""" cookie_header = "" for vim_cookie in vim_cookies: cookie_header = vim_cookie.name + '=' + vim_cookie.value break return cookie_header def write(self, data): """Write data to the file.""" raise NotImplementedError() def read(self, chunk_size): """Read a chunk of data.""" raise NotImplementedError() def get_size(self): """Get size of the file to be read.""" raise NotImplementedError() def _is_valid_ipv6(self, address): """Whether given host address is a valid IPv6 address.""" try: return netaddr.valid_ipv6(address) except Exception: return False def get_soap_url(self, scheme, host): """return IPv4/v6 compatible url constructed for host.""" if self._is_valid_ipv6(host): return '%s://[%s]' % (scheme, host) return '%s://%s' % (scheme, host) def _fix_esx_url(self, url, host): """Fix netloc if it is a ESX host. For a ESX host the netloc is set to '*' in the url returned in HttpNfcLeaseInfo. The netloc is right IP when talking to a VC. """ urlp = urlparse.urlparse(url) if urlp.netloc == '*': scheme, _, path, params, query, fragment = urlp url = urlparse.urlunparse((scheme, host, path, params, query, fragment)) return url def find_vmdk_url(self, lease_info, host): """Find the URL corresponding to a vmdk disk in lease info.""" url = None for deviceUrl in lease_info.deviceUrl: if deviceUrl.disk: url = self._fix_esx_url(deviceUrl.url, host) break return url class VMwareHTTPWriteFile(VMwareHTTPFile): """VMware file write handler class.""" def __init__(self, host, data_center_name, datastore_name, cookies, file_path, file_size, scheme='https'): soap_url = self.get_soap_url(scheme, host) base_url = '%s/folder/%s' % (soap_url, file_path) param_list = {'dcPath': data_center_name, 'dsName': datastore_name} base_url = base_url + '?' + urllib.urlencode(param_list) _urlparse = urlparse.urlparse(base_url) scheme, netloc, path, params, query, fragment = _urlparse if scheme == 'http': conn = httplib.HTTPConnection(netloc) elif scheme == 'https': conn = httplib.HTTPSConnection(netloc) conn.putrequest('PUT', path + '?' + query) conn.putheader('User-Agent', USER_AGENT) conn.putheader('Content-Length', file_size) conn.putheader('Cookie', self._build_vim_cookie_headers(cookies)) conn.endheaders() self.conn = conn VMwareHTTPFile.__init__(self, conn) def write(self, data): """Write to the file.""" self.file_handle.send(data) def close(self): """Get the response and close the connection.""" try: self.conn.getresponse() except Exception as excep: LOG.debug(_("Exception during HTTP connection close in " "VMwareHTTPWrite. Exception is %s.") % excep) super(VMwareHTTPWriteFile, self).close() class VMwareHTTPWriteVmdk(VMwareHTTPFile): """Write VMDK over HTTP using VMware HttpNfcLease.""" def __init__(self, session, host, rp_ref, vm_folder_ref, vm_create_spec, vmdk_size): """Initialize a writer for vmdk file. :param session: a valid api session to ESX/VC server :param host: the ESX or VC host IP :param rp_ref: resource pool into which backing VM is imported :param vm_folder_ref: VM folder in ESX/VC inventory to use as parent of backing VM :param vm_create_spec: backing VM created using this create spec :param vmdk_size: VMDK size to be imported into backing VM """ self._session = session self._vmdk_size = vmdk_size self._progress = 0 lease = session.invoke_api(session.vim, 'ImportVApp', rp_ref, spec=vm_create_spec, folder=vm_folder_ref) session.wait_for_lease_ready(lease) self._lease = lease lease_info = session.invoke_api(vim_util, 'get_object_property', session.vim, lease, 'info') # Find the url for vmdk device url = self.find_vmdk_url(lease_info, host) if not url: msg = _("Could not retrieve URL from lease.") LOG.exception(msg) raise error_util.VimException(msg) LOG.info(_("Opening vmdk url: %s for write.") % url) # Prepare the http connection to the vmdk url cookies = session.vim.client.options.transport.cookiejar _urlparse = urlparse.urlparse(url) scheme, netloc, path, params, query, fragment = _urlparse if scheme == 'http': conn = httplib.HTTPConnection(netloc) elif scheme == 'https': conn = httplib.HTTPSConnection(netloc) if query: path = path + '?' + query conn.putrequest('PUT', path) conn.putheader('User-Agent', USER_AGENT) conn.putheader('Content-Length', str(vmdk_size)) conn.putheader('Overwrite', 't') conn.putheader('Cookie', self._build_vim_cookie_headers(cookies)) conn.putheader('Content-Type', 'binary/octet-stream') conn.endheaders() self.conn = conn VMwareHTTPFile.__init__(self, conn) def write(self, data): """Write to the file.""" self._progress += len(data) LOG.debug(_("Written %s bytes to vmdk.") % self._progress) self.file_handle.send(data) def update_progress(self): """Updates progress to lease. This call back to the lease is essential to keep the lease alive across long running write operations. """ percent = int(float(self._progress) / self._vmdk_size * 100) try: LOG.debug(_("Updating progress to %s percent.") % percent) self._session.invoke_api(self._session.vim, 'HttpNfcLeaseProgress', self._lease, percent=percent) except error_util.VimException as ex: LOG.exception(ex) raise ex def close(self): """End the lease and close the connection.""" state = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, self._lease, 'state') if state == 'ready': self._session.invoke_api(self._session.vim, 'HttpNfcLeaseComplete', self._lease) LOG.debug(_("Lease released.")) else: LOG.debug(_("Lease is already in state: %s.") % state) super(VMwareHTTPWriteVmdk, self).close() class VMwareHTTPReadVmdk(VMwareHTTPFile): """read VMDK over HTTP using VMware HttpNfcLease.""" def __init__(self, session, host, vm_ref, vmdk_path, vmdk_size): """Initialize a writer for vmdk file. During an export operation the vmdk disk is converted to a stream-optimized sparse disk format. So the size of the VMDK after export may be smaller than the current vmdk disk size. :param session: a valid api session to ESX/VC server :param host: the ESX or VC host IP :param vm_ref: backing VM whose vmdk is to be exported :param vmdk_path: datastore relative path to vmdk file to be exported :param vmdk_size: current disk size of vmdk file to be exported """ self._session = session self._vmdk_size = vmdk_size self._progress = 0 lease = session.invoke_api(session.vim, 'ExportVm', vm_ref) session.wait_for_lease_ready(lease) self._lease = lease lease_info = session.invoke_api(vim_util, 'get_object_property', session.vim, lease, 'info') # find the right disk url corresponding to given vmdk_path url = self.find_vmdk_url(lease_info, host) if not url: msg = _("Could not retrieve URL from lease.") LOG.exception(msg) raise error_util.VimException(msg) LOG.info(_("Opening vmdk url: %s for read.") % url) cookies = session.vim.client.options.transport.cookiejar headers = {'User-Agent': USER_AGENT, 'Cookie': self._build_vim_cookie_headers(cookies)} request = urllib2.Request(url, None, headers) conn = urllib2.urlopen(request) VMwareHTTPFile.__init__(self, conn) def read(self, chunk_size): """Read a chunk from file.""" data = self.file_handle.read(READ_CHUNKSIZE) self._progress += len(data) LOG.debug("Read %s bytes from vmdk." % self._progress) return data def update_progress(self): """Updates progress to lease. This call back to the lease is essential to keep the lease alive across long running read operations. """ percent = int(float(self._progress) / self._vmdk_size * 100) try: LOG.debug(_("Updating progress to %s percent.") % percent) self._session.invoke_api(self._session.vim, 'HttpNfcLeaseProgress', self._lease, percent=percent) except error_util.VimException as ex: LOG.exception(ex) raise ex def close(self): """End the lease and close the connection.""" state = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, self._lease, 'state') if state == 'ready': self._session.invoke_api(self._session.vim, 'HttpNfcLeaseComplete', self._lease) LOG.debug(_("Lease released.")) else: LOG.debug(_("Lease is already in state: %s.") % state) super(VMwareHTTPReadVmdk, self).close() cinder-2014.1.5/cinder/volume/drivers/vmware/vim.py0000664000567000056700000002373712540642606023270 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Classes for making VMware VI SOAP calls. """ import httplib import urllib2 import suds from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import vim_util RESP_NOT_XML_ERROR = "Response is 'text/html', not 'text/xml'" CONN_ABORT_ERROR = 'Software caused connection abort' ADDRESS_IN_USE_ERROR = 'Address already in use' def get_moref(value, type): """Get managed object reference. :param value: value for the managed object :param type: type of the managed object :return: Managed object reference with with input value and type """ moref = suds.sudsobject.Property(value) moref._type = type return moref class VIMMessagePlugin(suds.plugin.MessagePlugin): def addAttributeForValue(self, node): """Helper to handle AnyType. suds does not handle AnyType properly. VI SDK requires type attribute to be set when AnyType is used :param node: XML value node """ if node.name == 'value': node.set('xsi:type', 'xsd:string') def marshalled(self, context): """Marshal soap context. Provides the plugin with the opportunity to prune empty nodes and fixup nodes before sending it to the server. :param context: SOAP context """ # suds builds the entire request object based on the wsdl schema. # VI SDK throws server errors if optional SOAP nodes are sent # without values, e.g. as opposed to test context.envelope.prune() context.envelope.walk(self.addAttributeForValue) class Vim(object): """The VIM Object.""" def __init__(self, protocol='https', host='localhost', wsdl_loc=None): """Create communication interfaces for initiating SOAP transactions. :param protocol: http or https :param host: Server IPAddress[:port] or Hostname[:port] """ self._protocol = protocol self._host_name = host if not wsdl_loc: wsdl_loc = Vim._get_wsdl_loc(protocol, host) soap_url = vim_util.get_soap_url(protocol, host) self._client = suds.client.Client(wsdl_loc, location=soap_url, plugins=[VIMMessagePlugin()], cache=suds.cache.NoCache()) self._service_content = self.RetrieveServiceContent('ServiceInstance') @staticmethod def _get_wsdl_loc(protocol, host_name): """Return default WSDL file location hosted at the server. :param protocol: http or https :param host_name: ESX/VC server host name :return: Default WSDL file location hosted at the server """ return vim_util.get_soap_url(protocol, host_name) + '/vimService.wsdl' @property def service_content(self): return self._service_content @property def client(self): return self._client def __getattr__(self, attr_name): """Makes the API call and gets the result.""" def retrieve_properties_ex_fault_checker(response): """Checks the RetrievePropertiesEx response for errors. Certain faults are sent as part of the SOAP body as property of missingSet. For example NotAuthenticated fault. The method raises appropriate VimFaultException when an error is found. :param response: Response from RetrievePropertiesEx API call """ fault_list = [] if not response: # This is the case when the session has timed out. ESX SOAP # server sends an empty RetrievePropertiesExResponse. Normally # missingSet in the returnval field has the specifics about # the error, but that's not the case with a timed out idle # session. It is as bad as a terminated session for we cannot # use the session. So setting fault to NotAuthenticated fault. fault_list = [error_util.NOT_AUTHENTICATED] else: for obj_cont in response: if hasattr(obj_cont, 'missingSet'): for missing_elem in obj_cont.missingSet: fault_type = missing_elem.fault.fault.__class__ # Fault needs to be added to the type of fault # for uniformity in error checking as SOAP faults # define fault_list.append(fault_type.__name__) if fault_list: exc_msg_list = ', '.join(fault_list) raise error_util.VimFaultException(fault_list, _("Error(s): %s occurred " "in the call to " "RetrievePropertiesEx.") % exc_msg_list) def vim_request_handler(managed_object, **kwargs): """Handler for VI SDK calls. Builds the SOAP message and parses the response for fault checking and other errors. :param managed_object:Managed object reference :param kwargs: Keyword arguments of the call :return: Response of the API call """ try: if isinstance(managed_object, str): # For strings use string value for value and type # of the managed object. managed_object = get_moref(managed_object, managed_object) request = getattr(self.client.service, attr_name) response = request(managed_object, **kwargs) if (attr_name.lower() == 'retrievepropertiesex'): retrieve_properties_ex_fault_checker(response) return response except error_util.VimFaultException as excep: raise except suds.WebFault as excep: doc = excep.document detail = doc.childAtPath('/Envelope/Body/Fault/detail') fault_list = [] for child in detail.getChildren(): fault_list.append(child.get('type')) raise error_util.VimFaultException(fault_list, excep) except AttributeError as excep: raise error_util.VimAttributeException(_("No such SOAP method " "%(attr)s. Detailed " "error: %(excep)s.") % {'attr': attr_name, 'excep': excep}) except (httplib.CannotSendRequest, httplib.ResponseNotReady, httplib.CannotSendHeader) as excep: raise error_util.SessionOverLoadException(_("httplib error in " "%(attr)s: " "%(excep)s.") % {'attr': attr_name, 'excep': excep}) except (urllib2.URLError, urllib2.HTTPError) as excep: raise error_util.VimConnectionException( _("urllib2 error in %(attr)s: %(excep)s.") % {'attr': attr_name, 'excep': excep}) except Exception as excep: # Socket errors which need special handling for they # might be caused by server API call overload if (str(excep).find(ADDRESS_IN_USE_ERROR) != -1 or str(excep).find(CONN_ABORT_ERROR)) != -1: raise error_util.SessionOverLoadException(_("Socket error " "in %(attr)s: " "%(excep)s.") % {'attr': attr_name, 'excep': excep}) # Type error that needs special handling for it might be # caused by server API call overload elif str(excep).find(RESP_NOT_XML_ERROR) != -1: raise error_util.SessionOverLoadException(_("Type error " "in %(attr)s: " "%(excep)s.") % {'attr': attr_name, 'excep': excep}) else: raise error_util.VimException(_("Error in %(attr)s. " "Detailed error: " "%(excep)s.") % {'attr': attr_name, 'excep': excep}) return vim_request_handler def __repr__(self): return "VIM Object." def __str__(self): return "VIM Object." cinder-2014.1.5/cinder/volume/drivers/vmware/pbm.py0000664000567000056700000000714712540642606023250 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Class for making VMware PBM SOAP calls. This is used for storage policy based placement of volumes. Read more about it here: http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.vspsdk.apiref.doc/\ right-pane.html """ import suds import suds.sax.element as element from cinder.openstack.common import log as logging from cinder.volume.drivers.vmware import vim as vim_module from cinder.volume.drivers.vmware import vim_util LOG = logging.getLogger(__name__) SERVICE_INSTANCE = 'ServiceInstance' SERVICE_TYPE = 'PbmServiceInstance' class PBMClient(vim_module.Vim): """Sets up a client to interact with the vSphere PBM APIs. This client piggy backs on Vim object's authenticated cookie to invoke PBM API calls. Note that this class needs the PBM wsdl file in order to make SOAP API calls. This wsdl file is included in the VMware Storage Policy SDK. A user of this feature needs to install this SDK on the Cinder volume nodes and configure the path in the cinder.conf file. """ def __init__(self, vimSession, pbm_wsdl, protocol='https', host='localhost'): """Constructs a PBM client object. :param vimSession: an authenticated api.VMwareAPISession object :param pbm_wsdl: URL path to where pbmService.wsdl file is located. :param protocol: http or https :param host: Server IPAddress[:port] or Hostname[:port] """ self._vimSession = vimSession self._url = vim_util.get_soap_url(protocol, host, 'pbm') # create the pbm client self._client = suds.client.Client(pbm_wsdl, location=self._url, cache=suds.cache.NoCache()) PBMClient._copy_client_cookie(self._vimSession, self._client) # Get the PBM service content si_moref = vim_module.get_moref(SERVICE_INSTANCE, SERVICE_TYPE) self._sc = self._client.service.PbmRetrieveServiceContent(si_moref) @staticmethod def _copy_client_cookie(vimSession, pbmClient): """Copy the vim session cookie to pbm client soap header. :param vimSession: an vim session authenticated with VC/ESX :param pbmClient: a PBMClient object to set the session cookie """ vcSessionCookie = PBMClient._get_vc_session_cookie(vimSession) vcc = element.Element('vcSessionCookie').setText(vcSessionCookie) pbmClient.set_options(soapheaders=vcc) @staticmethod def _get_vc_session_cookie(vimSession): """Look for vmware_soap_session cookie in vimSession.""" cookies = vimSession.client.options.transport.cookiejar for c in cookies: if c.name.lower() == 'vmware_soap_session': return c.value @property def service_content(self): return self._sc @property def client(self): return self._client def set_cookie(self): """Set the authenticated vim session cookie in this pbm client.""" PBMClient._copy_client_cookie(self._vimSession, self.client) cinder-2014.1.5/cinder/volume/drivers/vmware/vmdk.py0000664000567000056700000016705112540642606023434 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Volume driver for VMware vCenter/ESX managed datastores. The volumes created by this driver are backed by VMDK (Virtual Machine Disk) files stored in datastores. For ease of managing the VMDKs, the driver creates a virtual machine for each of the volumes. This virtual machine is never powered on and is often referred as the shadow VM. """ import distutils.version as dist_version # pylint: disable=E0611 import os from oslo.config import cfg from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import units from cinder.volume import driver from cinder.volume.drivers.vmware import api from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import vim from cinder.volume.drivers.vmware import vim_util from cinder.volume.drivers.vmware import vmware_images from cinder.volume.drivers.vmware import volumeops from cinder.volume import volume_types LOG = logging.getLogger(__name__) THIN_VMDK_TYPE = 'thin' THICK_VMDK_TYPE = 'thick' EAGER_ZEROED_THICK_VMDK_TYPE = 'eagerZeroedThick' vmdk_opts = [ cfg.StrOpt('vmware_host_ip', default=None, help='IP address for connecting to VMware ESX/VC server.'), cfg.StrOpt('vmware_host_username', default=None, help='Username for authenticating with VMware ESX/VC server.'), cfg.StrOpt('vmware_host_password', default=None, help='Password for authenticating with VMware ESX/VC server.', secret=True), cfg.StrOpt('vmware_wsdl_location', default=None, help='Optional VIM service WSDL Location ' 'e.g http:///vimService.wsdl. Optional over-ride ' 'to default location for bug work-arounds.'), cfg.IntOpt('vmware_api_retry_count', default=10, help='Number of times VMware ESX/VC server API must be ' 'retried upon connection related issues.'), cfg.IntOpt('vmware_task_poll_interval', default=5, help='The interval (in seconds) for polling remote tasks ' 'invoked on VMware ESX/VC server.'), cfg.StrOpt('vmware_volume_folder', default='cinder-volumes', help='Name for the folder in the VC datacenter that will ' 'contain cinder volumes.'), cfg.IntOpt('vmware_image_transfer_timeout_secs', default=7200, help='Timeout in seconds for VMDK volume transfer between ' 'Cinder and Glance.'), cfg.IntOpt('vmware_max_objects_retrieval', default=100, help='Max number of objects to be retrieved per batch. ' 'Query results will be obtained in batches from the ' 'server and not in one shot. Server may still limit the ' 'count to something less than the configured value.'), cfg.StrOpt('vmware_host_version', help='Optional string specifying the VMware VC server version. ' 'The driver attempts to retrieve the version from VMware ' 'VC server. Set this configuration only if you want to ' 'override the VC server version.'), ] CONF = cfg.CONF CONF.register_opts(vmdk_opts) def _get_volume_type_extra_spec(type_id, spec_key, possible_values=None, default_value=None): """Get extra spec value. If the spec value is not present in the input possible_values, then default_value will be returned. If the type_id is None, then default_value is returned. The caller must not consider scope and the implementation adds/removes scope. The scope used here is 'vmware' e.g. key 'vmware:vmdk_type' and so the caller must pass vmdk_type as an input ignoring the scope. :param type_id: Volume type ID :param spec_key: Extra spec key :param possible_values: Permitted values for the extra spec if known :param default_value: Default value for the extra spec incase of an invalid value or if the entry does not exist :return: extra spec value """ if not type_id: return default_value spec_key = ('vmware:%s') % spec_key spec_value = volume_types.get_volume_type_extra_specs(type_id, spec_key) if not spec_value: LOG.debug(_("Returning default spec value: %s.") % default_value) return default_value if possible_values is None: return spec_value if spec_value in possible_values: LOG.debug(_("Returning spec value %s") % spec_value) return spec_value LOG.debug(_("Invalid spec value: %s specified.") % spec_value) class VMwareEsxVmdkDriver(driver.VolumeDriver): """Manage volumes on VMware ESX server.""" # 1.0 - initial version of driver # 1.1.0 - selection of datastore based on number of host mounts # 1.2.0 - storage profile volume types based placement of volumes VERSION = '1.2.0' def _do_deprecation_warning(self): LOG.warn(_('The VMware ESX VMDK driver is now deprecated and will be ' 'removed in the Juno release. The VMware vCenter VMDK ' 'driver will remain and continue to be supported.')) def __init__(self, *args, **kwargs): super(VMwareEsxVmdkDriver, self).__init__(*args, **kwargs) self._do_deprecation_warning() self.configuration.append_config_values(vmdk_opts) self._session = None self._stats = None self._volumeops = None # No storage policy based placement possible when connecting # directly to ESX self._storage_policy_enabled = False @property def session(self): if not self._session: ip = self.configuration.vmware_host_ip username = self.configuration.vmware_host_username password = self.configuration.vmware_host_password api_retry_count = self.configuration.vmware_api_retry_count task_poll_interval = self.configuration.vmware_task_poll_interval wsdl_loc = self.configuration.safe_get('vmware_wsdl_location') self._session = api.VMwareAPISession(ip, username, password, api_retry_count, task_poll_interval, wsdl_loc=wsdl_loc) return self._session @property def volumeops(self): if not self._volumeops: max_objects = self.configuration.vmware_max_objects_retrieval self._volumeops = volumeops.VMwareVolumeOps(self.session, max_objects) return self._volumeops def do_setup(self, context): """Perform validations and establish connection to server. :param context: Context information """ # Throw error if required parameters are not set. required_params = ['vmware_host_ip', 'vmware_host_username', 'vmware_host_password'] for param in required_params: if not getattr(self.configuration, param, None): raise exception.InvalidInput(_("%s not set.") % param) # Create the session object for the first time for ESX driver driver = self.__class__.__name__ if driver == 'VMwareEsxVmdkDriver': max_objects = self.configuration.vmware_max_objects_retrieval self._volumeops = volumeops.VMwareVolumeOps(self.session, max_objects) LOG.info(_("Successfully setup driver: %(driver)s for " "server: %(ip)s.") % {'driver': driver, 'ip': self.configuration.vmware_host_ip}) def check_for_setup_error(self): pass def get_volume_stats(self, refresh=False): """Obtain status of the volume service. :param refresh: Whether to get refreshed information """ if not self._stats: backend_name = self.configuration.safe_get('volume_backend_name') if not backend_name: backend_name = self.__class__.__name__ data = {'volume_backend_name': backend_name, 'vendor_name': 'VMware', 'driver_version': self.VERSION, 'storage_protocol': 'LSI Logic SCSI', 'reserved_percentage': 0, 'total_capacity_gb': 'unknown', 'free_capacity_gb': 'unknown'} self._stats = data return self._stats def _verify_volume_creation(self, volume): """Verify the volume can be created. Verify that there is a datastore that can accommodate this volume. If this volume is being associated with a volume_type then verify the storage_profile exists and can accommodate this volume. Raise an exception otherwise. :param volume: Volume object """ try: # find if any host can accommodate the volume self._select_ds_for_volume(volume) except error_util.VimException as excep: msg = _("Not able to find a suitable datastore for the volume: " "%s.") % volume['name'] LOG.exception(msg) raise error_util.VimFaultException([excep], msg) LOG.debug(_("Verified volume %s can be created."), volume['name']) def create_volume(self, volume): """Creates a volume. We do not create any backing. We do it only the first time it is being attached to a virtual machine. :param volume: Volume object """ self._verify_volume_creation(volume) def _delete_volume(self, volume): """Delete the volume backing if it is present. :param volume: Volume object """ backing = self.volumeops.get_backing(volume['name']) if not backing: LOG.info(_("Backing not available, no operation to be performed.")) return self.volumeops.delete_backing(backing) def delete_volume(self, volume): """Deletes volume backing. :param volume: Volume object """ self._delete_volume(volume) def _get_volume_group_folder(self, datacenter): """Return vmFolder of datacenter as we cannot create folder in ESX. :param datacenter: Reference to the datacenter :return: vmFolder reference of the datacenter """ return self.volumeops.get_vmfolder(datacenter) def _compute_space_utilization(self, datastore_summary): """Compute the space utilization of the given datastore. :param datastore_summary: Summary of the datastore for which space utilization is to be computed :return: space utilization in the range [0..1] """ return ( 1.0 - datastore_summary.freeSpace / float(datastore_summary.capacity) ) def _select_datastore_summary(self, size_bytes, datastores): """Get the best datastore summary from the given datastore list. The implementation selects a datastore which is connected to maximum number of hosts, provided there is enough space to accommodate the volume. Ties are broken based on space utilization; datastore with low space utilization is preferred. :param size_bytes: Size in bytes of the volume :param datastores: Datastores from which a choice is to be made for the volume :return: Summary of the best datastore selected for volume """ best_summary = None max_host_count = 0 best_space_utilization = 1.0 for datastore in datastores: summary = self.volumeops.get_summary(datastore) if summary.freeSpace > size_bytes: host_count = len(self.volumeops.get_connected_hosts(datastore)) if host_count > max_host_count: max_host_count = host_count best_space_utilization = self._compute_space_utilization( summary ) best_summary = summary elif host_count == max_host_count: # break the tie based on space utilization space_utilization = self._compute_space_utilization( summary ) if space_utilization < best_space_utilization: best_space_utilization = space_utilization best_summary = summary if not best_summary: msg = _("Unable to pick datastore to accommodate %(size)s bytes " "from the datastores: %(dss)s.") % {'size': size_bytes, 'dss': datastores} LOG.error(msg) raise error_util.VimException(msg) LOG.debug(_("Selected datastore: %(datastore)s with %(host_count)d " "connected host(s) for the volume.") % {'datastore': best_summary, 'host_count': max_host_count}) return best_summary def _get_storage_profile(self, volume): """Get storage profile associated with the given volume's volume_type. :param volume: Volume whose storage profile should be queried :return: String value of storage profile if volume type is associated and contains storage_profile extra_spec option; None otherwise """ type_id = volume['volume_type_id'] if type_id is None: return None return _get_volume_type_extra_spec(type_id, 'storage_profile') def _filter_ds_by_profile(self, datastores, storage_profile): """Filter out datastores that do not match given storage profile. :param datastores: list of candidate datastores :param storage_profile: storage profile name required to be satisfied :return: subset of datastores that match storage_profile, or empty list if none of the datastores match """ LOG.debug(_("Filter datastores matching storage profile %(profile)s: " "%(dss)s."), {'profile': storage_profile, 'dss': datastores}) profileId = self.volumeops.retrieve_profile_id(storage_profile) if not profileId: msg = _("No such storage profile '%s; is defined in vCenter.") LOG.error(msg, storage_profile) raise error_util.VimException(msg % storage_profile) pbm_cf = self.session.pbm.client.factory hubs = vim_util.convert_datastores_to_hubs(pbm_cf, datastores) filtered_hubs = self.volumeops.filter_matching_hubs(hubs, profileId) return vim_util.convert_hubs_to_datastores(filtered_hubs, datastores) def _get_folder_ds_summary(self, volume, resource_pool, datastores): """Get folder and best datastore summary where volume can be placed. :param volume: volume to place into one of the datastores :param resource_pool: Resource pool reference :param datastores: Datastores from which a choice is to be made for the volume :return: Folder and best datastore summary where volume can be placed on. """ datacenter = self.volumeops.get_dc(resource_pool) folder = self._get_volume_group_folder(datacenter) storage_profile = self._get_storage_profile(volume) if self._storage_policy_enabled and storage_profile: LOG.debug(_("Storage profile required for this volume: %s."), storage_profile) datastores = self._filter_ds_by_profile(datastores, storage_profile) if not datastores: msg = _("Aborting since none of the datastores match the " "given storage profile %s.") LOG.error(msg, storage_profile) raise error_util.VimException(msg % storage_profile) elif storage_profile: LOG.warn(_("Ignoring storage profile %s requirement for this " "volume since policy based placement is " "disabled."), storage_profile) size_bytes = volume['size'] * units.GiB datastore_summary = self._select_datastore_summary(size_bytes, datastores) return (folder, datastore_summary) @staticmethod def _get_disk_type(volume): """Get disk type from volume type. :param volume: Volume object :return: Disk type """ return _get_volume_type_extra_spec(volume['volume_type_id'], 'vmdk_type', (THIN_VMDK_TYPE, THICK_VMDK_TYPE, EAGER_ZEROED_THICK_VMDK_TYPE), THIN_VMDK_TYPE) def _create_backing(self, volume, host): """Create volume backing under the given host. :param volume: Volume object :param host: Reference of the host :return: Reference to the created backing """ # Get datastores and resource pool of the host (datastores, resource_pool) = self.volumeops.get_dss_rp(host) # Pick a folder and datastore to create the volume backing on (folder, summary) = self._get_folder_ds_summary(volume, resource_pool, datastores) disk_type = VMwareEsxVmdkDriver._get_disk_type(volume) size_kb = volume['size'] * units.MiB storage_profile = self._get_storage_profile(volume) profileId = None if self._storage_policy_enabled and storage_profile: profile = self.volumeops.retrieve_profile_id(storage_profile) if profile: profileId = profile.uniqueId return self.volumeops.create_backing(volume['name'], size_kb, disk_type, folder, resource_pool, host, summary.name, profileId) def _relocate_backing(self, volume, backing, host): pass def _select_ds_for_volume(self, volume): """Select datastore that can accommodate a volume of given size. Returns the selected datastore summary along with a compute host and its resource pool and folder where the volume can be created :return: (host, rp, folder, summary) """ retrv_result = self.volumeops.get_hosts() while retrv_result: hosts = retrv_result.objects if not hosts: break (selected_host, rp, folder, summary) = (None, None, None, None) for host in hosts: host = host.obj try: (dss, rp) = self.volumeops.get_dss_rp(host) (folder, summary) = self._get_folder_ds_summary(volume, rp, dss) selected_host = host break except error_util.VimException as excep: LOG.warn(_("Unable to find suitable datastore for volume " "of size: %(vol)s GB under host: %(host)s. " "More details: %(excep)s") % {'vol': volume['size'], 'host': host, 'excep': excep}) if selected_host: self.volumeops.cancel_retrieval(retrv_result) return (selected_host, rp, folder, summary) retrv_result = self.volumeops.continue_retrieval(retrv_result) msg = _("Unable to find host to accommodate a disk of size: %s " "in the inventory.") % volume['size'] LOG.error(msg) raise error_util.VimException(msg) def _create_backing_in_inventory(self, volume): """Creates backing under any suitable host. The method tries to pick datastore that can fit the volume under any host in the inventory. :param volume: Volume object :return: Reference to the created backing """ retrv_result = self.volumeops.get_hosts() while retrv_result: hosts = retrv_result.objects if not hosts: break backing = None for host in hosts: try: backing = self._create_backing(volume, host.obj) if backing: break except error_util.VimException as excep: LOG.warn(_("Unable to find suitable datastore for " "volume: %(vol)s under host: %(host)s. " "More details: %(excep)s") % {'vol': volume['name'], 'host': host.obj, 'excep': excep}) if backing: self.volumeops.cancel_retrieval(retrv_result) return backing retrv_result = self.volumeops.continue_retrieval(retrv_result) msg = _("Unable to create volume: %s in the inventory.") LOG.error(msg % volume['name']) raise error_util.VimException(msg % volume['name']) def _initialize_connection(self, volume, connector): """Get information of volume's backing. If the volume does not have a backing yet. It will be created. :param volume: Volume object :param connector: Connector information :return: Return connection information """ connection_info = {'driver_volume_type': 'vmdk'} backing = self.volumeops.get_backing(volume['name']) if 'instance' in connector: # The instance exists instance = vim.get_moref(connector['instance'], 'VirtualMachine') LOG.debug(_("The instance: %s for which initialize connection " "is called, exists.") % instance) # Get host managing the instance host = self.volumeops.get_host(instance) if not backing: # Create a backing in case it does not exist under the # host managing the instance. LOG.info(_("There is no backing for the volume: %s. " "Need to create one.") % volume['name']) backing = self._create_backing(volume, host) else: # Relocate volume is necessary self._relocate_backing(volume, backing, host) else: # The instance does not exist LOG.debug(_("The instance for which initialize connection " "is called, does not exist.")) if not backing: # Create a backing in case it does not exist. It is a bad use # case to boot from an empty volume. LOG.warn(_("Trying to boot from an empty volume: %s.") % volume['name']) # Create backing backing = self._create_backing_in_inventory(volume) # Set volume's moref value and name connection_info['data'] = {'volume': backing.value, 'volume_id': volume['id']} LOG.info(_("Returning connection_info: %(info)s for volume: " "%(volume)s with connector: %(connector)s.") % {'info': connection_info, 'volume': volume['name'], 'connector': connector}) return connection_info def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info. The implementation returns the following information: {'driver_volume_type': 'vmdk' 'data': {'volume': $VOLUME_MOREF_VALUE 'volume_id': $VOLUME_ID } } :param volume: Volume object :param connector: Connector information :return: Return connection information """ return self._initialize_connection(volume, connector) def terminate_connection(self, volume, connector, force=False, **kwargs): pass def create_export(self, context, volume): pass def ensure_export(self, context, volume): pass def remove_export(self, context, volume): pass def _create_snapshot(self, snapshot): """Creates a snapshot. If the volume does not have a backing then simply pass, else create a snapshot. Snapshot of only available volume is supported. :param snapshot: Snapshot object """ volume = snapshot['volume'] if volume['status'] != 'available': msg = _("Snapshot of volume not supported in state: %s.") LOG.error(msg % volume['status']) raise exception.InvalidVolume(msg % volume['status']) backing = self.volumeops.get_backing(snapshot['volume_name']) if not backing: LOG.info(_("There is no backing, so will not create " "snapshot: %s.") % snapshot['name']) return self.volumeops.create_snapshot(backing, snapshot['name'], snapshot['display_description']) LOG.info(_("Successfully created snapshot: %s.") % snapshot['name']) def create_snapshot(self, snapshot): """Creates a snapshot. :param snapshot: Snapshot object """ self._create_snapshot(snapshot) def _delete_snapshot(self, snapshot): """Delete snapshot. If the volume does not have a backing or the snapshot does not exist then simply pass, else delete the snapshot. Snapshot deletion of only available volume is supported. :param snapshot: Snapshot object """ volume = snapshot['volume'] if volume['status'] != 'available': msg = _("Delete snapshot of volume not supported in state: %s.") LOG.error(msg % volume['status']) raise exception.InvalidVolume(msg % volume['status']) backing = self.volumeops.get_backing(snapshot['volume_name']) if not backing: LOG.info(_("There is no backing, and so there is no " "snapshot: %s.") % snapshot['name']) else: self.volumeops.delete_snapshot(backing, snapshot['name']) LOG.info(_("Successfully deleted snapshot: %s.") % snapshot['name']) def delete_snapshot(self, snapshot): """Delete snapshot. :param snapshot: Snapshot object """ self._delete_snapshot(snapshot) def _create_backing_by_copying(self, volume, src_vmdk_path, src_size_in_gb): """Create volume backing. Creates a backing for the input volume and replaces its VMDK file with the input VMDK file copy. :param volume: New Volume object :param src_vmdk_path: VMDK file path of the source volume backing :param src_size_in_gb: The size of the original volume to be cloned in GB. The size of the target volume is saved in volume['size']. This parameter is used to check if the size specified by the user is greater than the original size. If so, the target volume should extend its size. """ # Create a backing backing = self._create_backing_in_inventory(volume) dest_vmdk_path = self.volumeops.get_vmdk_path(backing) datacenter = self.volumeops.get_dc(backing) # Deleting the current VMDK file self.volumeops.delete_vmdk_file(dest_vmdk_path, datacenter) # Copying the source VMDK file self.volumeops.copy_vmdk_file(datacenter, src_vmdk_path, dest_vmdk_path) # If the target volume has a larger size than the source # volume/snapshot, we need to resize/extend the size of the # vmdk virtual disk to the value specified by the user. if volume['size'] > src_size_in_gb: self._extend_volumeops_virtual_disk(volume['size'], dest_vmdk_path, datacenter) LOG.info(_("Successfully cloned new backing: %(back)s from " "source VMDK file: %(vmdk)s.") % {'back': backing, 'vmdk': src_vmdk_path}) def _create_cloned_volume(self, volume, src_vref): """Creates volume clone. If source volume's backing does not exist, then pass. Creates a backing and replaces its VMDK file with a copy of the source backing's VMDK file. :param volume: New Volume object :param src_vref: Volume object that must be cloned """ self._verify_volume_creation(volume) backing = self.volumeops.get_backing(src_vref['name']) if not backing: LOG.info(_("There is no backing for the source volume: " "%(svol)s. Not creating any backing for the " "volume: %(vol)s.") % {'svol': src_vref['name'], 'vol': volume['name']}) return src_vmdk_path = self.volumeops.get_vmdk_path(backing) self._create_backing_by_copying(volume, src_vmdk_path, src_vref['size']) def create_cloned_volume(self, volume, src_vref): """Creates volume clone. :param volume: New Volume object :param src_vref: Volume object that must be cloned """ self._create_cloned_volume(volume, src_vref) def _create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. If the snapshot does not exist or source volume's backing does not exist, then pass. Else creates clone of source volume backing by copying its VMDK file. :param volume: Volume object :param snapshot: Snapshot object """ self._verify_volume_creation(volume) backing = self.volumeops.get_backing(snapshot['volume_name']) if not backing: LOG.info(_("There is no backing for the source snapshot: " "%(snap)s. Not creating any backing for the " "volume: %(vol)s.") % {'snap': snapshot['name'], 'vol': volume['name']}) return snapshot_moref = self.volumeops.get_snapshot(backing, snapshot['name']) if not snapshot_moref: LOG.info(_("There is no snapshot point for the snapshotted " "volume: %(snap)s. Not creating any backing for " "the volume: %(vol)s.") % {'snap': snapshot['name'], 'vol': volume['name']}) return src_vmdk_path = self.volumeops.get_vmdk_path(snapshot_moref) self._create_backing_by_copying(volume, src_vmdk_path, snapshot['volume_size']) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. :param volume: Volume object :param snapshot: Snapshot object """ self._create_volume_from_snapshot(volume, snapshot) def _get_ds_name_flat_vmdk_path(self, backing, vol_name): """Get datastore name and folder path of the flat VMDK of the backing. :param backing: Reference to the backing entity :param vol_name: Name of the volume :return: datastore name and folder path of the VMDK of the backing """ file_path_name = self.volumeops.get_path_name(backing) (datastore_name, folder_path, _) = volumeops.split_datastore_path(file_path_name) flat_vmdk_path = '%s%s-flat.vmdk' % (folder_path, vol_name) return (datastore_name, flat_vmdk_path) @staticmethod def _validate_disk_format(disk_format): """Verify vmdk as disk format. :param disk_format: Disk format of the image """ if disk_format and disk_format.lower() != 'vmdk': msg = _("Cannot create image of disk format: %s. Only vmdk " "disk format is accepted.") % disk_format LOG.error(msg) raise exception.ImageUnacceptable(msg) def _fetch_flat_image(self, context, volume, image_service, image_id, image_size): """Creates a volume from flat glance image. Creates a backing for the volume under the ESX/VC server and copies the VMDK flat file from the glance image content. The method assumes glance image is VMDK disk format and its vmware_disktype is "sparse" or "preallocated", but not "streamOptimized" """ # Set volume size in GB from image metadata volume['size'] = float(image_size) / units.GiB # First create empty backing in the inventory backing = self._create_backing_in_inventory(volume) try: (datastore_name, flat_vmdk_path) = self._get_ds_name_flat_vmdk_path(backing, volume['name']) host = self.volumeops.get_host(backing) datacenter = self.volumeops.get_dc(host) datacenter_name = self.volumeops.get_entity_name(datacenter) flat_vmdk_ds_path = '[%s] %s' % (datastore_name, flat_vmdk_path) # Delete the *-flat.vmdk file within the backing self.volumeops.delete_file(flat_vmdk_ds_path, datacenter) # copy over image from glance into *-flat.vmdk timeout = self.configuration.vmware_image_transfer_timeout_secs host_ip = self.configuration.vmware_host_ip cookies = self.session.vim.client.options.transport.cookiejar LOG.debug(_("Fetching glance image: %(id)s to server: %(host)s.") % {'id': image_id, 'host': host_ip}) vmware_images.fetch_flat_image(context, timeout, image_service, image_id, image_size=image_size, host=host_ip, data_center_name=datacenter_name, datastore_name=datastore_name, cookies=cookies, file_path=flat_vmdk_path) LOG.info(_("Done copying image: %(id)s to volume: %(vol)s.") % {'id': image_id, 'vol': volume['name']}) except Exception as excep: err_msg = (_("Exception in copy_image_to_volume: " "%(excep)s. Deleting the backing: " "%(back)s.") % {'excep': excep, 'back': backing}) # delete the backing self.volumeops.delete_backing(backing) raise exception.VolumeBackendAPIException(data=err_msg) def _fetch_stream_optimized_image(self, context, volume, image_service, image_id, image_size): """Creates volume from image using HttpNfc VM import. Uses Nfc API to download the VMDK file from Glance. Nfc creates the backing VM that wraps the VMDK in the ESX/VC inventory. This method assumes glance image is VMDK disk format and its vmware_disktype is 'streamOptimized'. """ try: # find host in which to create the volume (host, rp, folder, summary) = self._select_ds_for_volume(volume) except error_util.VimException as excep: err_msg = (_("Exception in _select_ds_for_volume: " "%s."), excep) raise exception.VolumeBackendAPIException(data=err_msg) size_gb = volume['size'] LOG.debug(_("Selected datastore %(ds)s for new volume of size " "%(size)s GB.") % {'ds': summary.name, 'size': size_gb}) # prepare create spec for backing vm disk_type = VMwareEsxVmdkDriver._get_disk_type(volume) # The size of stream optimized glance image is often suspect, # so better let VC figure out the disk capacity during import. dummy_disk_size = 0 vm_create_spec = self.volumeops._get_create_spec(volume['name'], dummy_disk_size, disk_type, summary.name) # convert vm_create_spec to vm_import_spec cf = self.session.vim.client.factory vm_import_spec = cf.create('ns0:VirtualMachineImportSpec') vm_import_spec.configSpec = vm_create_spec try: # fetching image from glance will also create the backing timeout = self.configuration.vmware_image_transfer_timeout_secs host_ip = self.configuration.vmware_host_ip LOG.debug(_("Fetching glance image: %(id)s to server: %(host)s.") % {'id': image_id, 'host': host_ip}) vmware_images.fetch_stream_optimized_image(context, timeout, image_service, image_id, session=self.session, host=host_ip, resource_pool=rp, vm_folder=folder, vm_create_spec= vm_import_spec, image_size=image_size) except exception.CinderException as excep: with excutils.save_and_reraise_exception(): LOG.exception(_("Exception in copy_image_to_volume: %s."), excep) backing = self.volumeops.get_backing(volume['name']) if backing: LOG.exception(_("Deleting the backing: %s") % backing) # delete the backing self.volumeops.delete_backing(backing) LOG.info(_("Done copying image: %(id)s to volume: %(vol)s.") % {'id': image_id, 'vol': volume['name']}) def _extend_vmdk_virtual_disk(self, name, new_size_in_gb): """Extend the size of the vmdk virtual disk to the new size. :param name: the name of the volume :param new_size_in_gb: the new size the vmdk virtual disk extends to """ backing = self.volumeops.get_backing(name) if not backing: LOG.info(_("The backing is not found, so there is no need " "to extend the vmdk virtual disk for the volume " "%s."), name) else: root_vmdk_path = self.volumeops.get_vmdk_path(backing) datacenter = self.volumeops.get_dc(backing) self._extend_volumeops_virtual_disk(new_size_in_gb, root_vmdk_path, datacenter) def _extend_volumeops_virtual_disk(self, new_size_in_gb, root_vmdk_path, datacenter): """Call the ExtendVirtualDisk_Task. :param new_size_in_gb: the new size the vmdk virtual disk extends to :param root_vmdk_path: the path for the vmdk file :param datacenter: reference to the datacenter """ try: self.volumeops.extend_virtual_disk(new_size_in_gb, root_vmdk_path, datacenter) except error_util.VimException: with excutils.save_and_reraise_exception(): LOG.exception(_("Unable to extend the size of the " "vmdk virtual disk at the path %s."), root_vmdk_path) def copy_image_to_volume(self, context, volume, image_service, image_id): """Creates volume from image. This method only supports Glance image of VMDK disk format. Uses flat vmdk file copy for "sparse" and "preallocated" disk types Uses HttpNfc import API for "streamOptimized" disk types. This API creates a backing VM that wraps the VMDK in the ESX/VC inventory. :param context: context :param volume: Volume object :param image_service: Glance image service :param image_id: Glance image id """ LOG.debug(_("Copy glance image: %s to create new volume.") % image_id) # Record the volume size specified by the user, if the size is input # from the API. volume_size_in_gb = volume['size'] # Verify glance image is vmdk disk format metadata = image_service.show(context, image_id) VMwareEsxVmdkDriver._validate_disk_format(metadata['disk_format']) # Get disk_type for vmdk disk disk_type = None image_size_in_bytes = metadata['size'] properties = metadata['properties'] if properties and 'vmware_disktype' in properties: disk_type = properties['vmware_disktype'] try: if disk_type == 'streamOptimized': self._fetch_stream_optimized_image(context, volume, image_service, image_id, image_size_in_bytes) else: self._fetch_flat_image(context, volume, image_service, image_id, image_size_in_bytes) except exception.CinderException as excep: with excutils.save_and_reraise_exception(): LOG.exception(_("Exception in copying the image to the " "volume: %s."), excep) # image_size_in_bytes is the capacity of the image in Bytes and # volume_size_in_gb is the size specified by the user, if the # size is input from the API. # # Convert the volume_size_in_gb into bytes and compare with the # image size. If the volume_size_in_gb is greater, meaning the # user specifies a larger volume, we need to extend/resize the vmdk # virtual disk to the capacity specified by the user. if volume_size_in_gb * units.GiB > image_size_in_bytes: self._extend_vmdk_virtual_disk(volume['name'], volume_size_in_gb) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Creates glance image from volume. Upload of only available volume is supported. The uploaded glance image has a vmdk disk type of "streamOptimized" that can only be downloaded using the HttpNfc API. Steps followed are: 1. Get the name of the vmdk file which the volume points to right now. Can be a chain of snapshots, so we need to know the last in the chain. 2. Use Nfc APIs to upload the contents of the vmdk file to glance. """ # if volume is attached raise exception if volume['instance_uuid'] or volume['attached_host']: msg = _("Upload to glance of attached volume is not supported.") LOG.error(msg) raise exception.InvalidVolume(msg) # validate disk format is vmdk LOG.debug(_("Copy Volume: %s to new image.") % volume['name']) VMwareEsxVmdkDriver._validate_disk_format(image_meta['disk_format']) # get backing vm of volume and its vmdk path backing = self.volumeops.get_backing(volume['name']) if not backing: LOG.info(_("Backing not found, creating for volume: %s") % volume['name']) backing = self._create_backing_in_inventory(volume) vmdk_file_path = self.volumeops.get_vmdk_path(backing) # Upload image from vmdk timeout = self.configuration.vmware_image_transfer_timeout_secs host_ip = self.configuration.vmware_host_ip vmware_images.upload_image(context, timeout, image_service, image_meta['id'], volume['project_id'], session=self.session, host=host_ip, vm=backing, vmdk_file_path=vmdk_file_path, vmdk_size=volume['size'] * units.GiB, image_name=image_meta['name'], image_version=1) LOG.info(_("Done copying volume %(vol)s to a new image %(img)s") % {'vol': volume['name'], 'img': image_meta['name']}) def extend_volume(self, volume, new_size): """Extend vmdk to new_size. Extends the vmdk backing to new volume size. First try to extend in place on the same datastore. If that fails, try to relocate the volume to a different datastore that can accommodate the new_size'd volume. :param volume: dictionary describing the existing 'available' volume :param new_size: new size in GB to extend this volume to """ vol_name = volume['name'] # try extending vmdk in place try: self._extend_vmdk_virtual_disk(vol_name, new_size) LOG.info(_("Done extending volume %(vol)s to size %(size)s GB.") % {'vol': vol_name, 'size': new_size}) return except error_util.VimFaultException: LOG.info(_("Relocating volume %s vmdk to a different " "datastore since trying to extend vmdk file " "in place failed."), vol_name) # If in place extend fails, then try to relocate the volume try: (host, rp, folder, summary) = self._select_ds_for_volume(new_size) except error_util.VimException: with excutils.save_and_reraise_exception(): LOG.exception(_("Not able to find a different datastore to " "place the extended volume %s."), vol_name) LOG.info(_("Selected datastore %(ds)s to place extended volume of " "size %(size)s GB.") % {'ds': summary.name, 'size': new_size}) try: backing = self.volumeops.get_backing(vol_name) self.volumeops.relocate_backing(backing, summary.datastore, rp, host) self._extend_vmdk_virtual_disk(vol_name, new_size) self.volumeops.move_backing_to_folder(backing, folder) except error_util.VimException: with excutils.save_and_reraise_exception(): LOG.exception(_("Not able to relocate volume %s for " "extending."), vol_name) LOG.info(_("Done extending volume %(vol)s to size %(size)s GB.") % {'vol': vol_name, 'size': new_size}) class VMwareVcVmdkDriver(VMwareEsxVmdkDriver): """Manage volumes on VMware VC server.""" # PBM is enabled only for VC versions 5.5 and above PBM_ENABLED_VC_VERSION = dist_version.LooseVersion('5.5') def __init__(self, *args, **kwargs): super(VMwareVcVmdkDriver, self).__init__(*args, **kwargs) self._session = None @property def session(self): if not self._session: ip = self.configuration.vmware_host_ip username = self.configuration.vmware_host_username password = self.configuration.vmware_host_password api_retry_count = self.configuration.vmware_api_retry_count task_poll_interval = self.configuration.vmware_task_poll_interval wsdl_loc = self.configuration.safe_get('vmware_wsdl_location') pbm_wsdl = self.pbm_wsdl if hasattr(self, 'pbm_wsdl') else None self._session = api.VMwareAPISession(ip, username, password, api_retry_count, task_poll_interval, wsdl_loc=wsdl_loc, pbm_wsdl=pbm_wsdl) return self._session def _get_pbm_wsdl_location(self, vc_version): """Return PBM WSDL file location corresponding to VC version.""" if not vc_version: return ver = str(vc_version).split('.') major_minor = ver[0] if len(ver) >= 2: major_minor = major_minor + '.' + ver[1] curr_dir = os.path.abspath(os.path.dirname(__file__)) pbm_service_wsdl = os.path.join(curr_dir, 'wsdl', major_minor, 'pbmService.wsdl') if not os.path.exists(pbm_service_wsdl): LOG.warn(_("PBM WSDL file %s is missing!"), pbm_service_wsdl) return pbm_wsdl = 'file://' + pbm_service_wsdl LOG.info(_("Using PBM WSDL location: %s"), pbm_wsdl) return pbm_wsdl def _get_vc_version(self): """Connect to VC server and fetch version. Can be over-ridden by setting 'vmware_host_version' config. :returns: VC version as a LooseVersion object """ version_str = self.configuration.vmware_host_version if version_str: LOG.info(_("Using overridden vmware_host_version from config: " "%s"), version_str) else: version_str = self.session.vim.service_content.about.version LOG.info(_("Fetched VC server version: %s"), version_str) # convert version_str to LooseVersion and return version = None try: version = dist_version.LooseVersion(version_str) except Exception: with excutils.save_and_reraise_exception(): LOG.exception(_("Version string '%s' is not parseable"), version_str) return version def do_setup(self, context): """Any initialization the volume driver does while starting.""" super(VMwareVcVmdkDriver, self).do_setup(context) # VC specific setup is done here # Enable pbm only if VC version is greater than 5.5 vc_version = self._get_vc_version() if vc_version and vc_version >= self.PBM_ENABLED_VC_VERSION: self.pbm_wsdl = self._get_pbm_wsdl_location(vc_version) if not self.pbm_wsdl: LOG.error(_("Not able to configure PBM for VC server: %s"), vc_version) raise error_util.VMwareDriverException() self._storage_policy_enabled = True # Destroy current session so that it is recreated with pbm enabled self._session = None # recreate session and initialize volumeops max_objects = self.configuration.vmware_max_objects_retrieval self._volumeops = volumeops.VMwareVolumeOps(self.session, max_objects) LOG.info(_("Successfully setup driver: %(driver)s for server: " "%(ip)s.") % {'driver': self.__class__.__name__, 'ip': self.configuration.vmware_host_ip}) def _get_volume_group_folder(self, datacenter): """Get volume group folder. Creates a folder under the vmFolder of the input datacenter with the volume group name if it does not exists. :param datacenter: Reference to the datacenter :return: Reference to the volume folder """ vm_folder = super(VMwareVcVmdkDriver, self)._get_volume_group_folder(datacenter) volume_folder = self.configuration.vmware_volume_folder return self.volumeops.create_folder(vm_folder, volume_folder) def _relocate_backing(self, volume, backing, host): """Relocate volume backing under host and move to volume_group folder. If the volume backing is on a datastore that is visible to the host, then need not do any operation. :param volume: volume to be relocated :param backing: Reference to the backing :param host: Reference to the host """ # Check if volume's datastore is visible to host managing # the instance (datastores, resource_pool) = self.volumeops.get_dss_rp(host) datastore = self.volumeops.get_datastore(backing) visible_to_host = False for _datastore in datastores: if _datastore.value == datastore.value: visible_to_host = True break if visible_to_host: return # The volume's backing is on a datastore that is not visible to the # host managing the instance. We relocate the volume's backing. # Pick a folder and datastore to relocate volume backing to (folder, summary) = self._get_folder_ds_summary(volume, resource_pool, datastores) LOG.info(_("Relocating volume: %(backing)s to %(ds)s and %(rp)s.") % {'backing': backing, 'ds': summary, 'rp': resource_pool}) # Relocate the backing to the datastore and folder self.volumeops.relocate_backing(backing, summary.datastore, resource_pool, host) self.volumeops.move_backing_to_folder(backing, folder) @staticmethod def _get_clone_type(volume): """Get clone type from volume type. :param volume: Volume object :return: Clone type from the extra spec if present, else return default 'full' clone type """ return _get_volume_type_extra_spec(volume['volume_type_id'], 'clone_type', (volumeops.FULL_CLONE_TYPE, volumeops.LINKED_CLONE_TYPE), volumeops.FULL_CLONE_TYPE) def _clone_backing(self, volume, backing, snapshot, clone_type, src_vsize): """Clone the backing. :param volume: New Volume object :param backing: Reference to the backing entity :param snapshot: Reference to the snapshot entity :param clone_type: type of the clone :param src_vsize: the size of the source volume """ datastore = None if not clone_type == volumeops.LINKED_CLONE_TYPE: # Pick a datastore where to create the full clone under any host (host, rp, folder, summary) = self._select_ds_for_volume(volume) datastore = summary.datastore clone = self.volumeops.clone_backing(volume['name'], backing, snapshot, clone_type, datastore) # If the volume size specified by the user is greater than # the size of the source volume, the newly created volume will # allocate the capacity to the size of the source volume in the backend # VMDK datastore, though the volume information indicates it has a # capacity of the volume size. If the volume size is greater, # we need to extend/resize the capacity of the vmdk virtual disk from # the size of the source volume to the volume size. if volume['size'] > src_vsize: self._extend_vmdk_virtual_disk(volume['name'], volume['size']) LOG.info(_("Successfully created clone: %s.") % clone) def _create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. If the snapshot does not exist or source volume's backing does not exist, then pass. :param volume: New Volume object :param snapshot: Reference to snapshot entity """ self._verify_volume_creation(volume) backing = self.volumeops.get_backing(snapshot['volume_name']) if not backing: LOG.info(_("There is no backing for the snapshotted volume: " "%(snap)s. Not creating any backing for the " "volume: %(vol)s.") % {'snap': snapshot['name'], 'vol': volume['name']}) return snapshot_moref = self.volumeops.get_snapshot(backing, snapshot['name']) if not snapshot_moref: LOG.info(_("There is no snapshot point for the snapshotted " "volume: %(snap)s. Not creating any backing for " "the volume: %(vol)s.") % {'snap': snapshot['name'], 'vol': volume['name']}) return clone_type = VMwareVcVmdkDriver._get_clone_type(volume) self._clone_backing(volume, backing, snapshot_moref, clone_type, snapshot['volume_size']) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. :param volume: New Volume object :param snapshot: Reference to snapshot entity """ self._create_volume_from_snapshot(volume, snapshot) def _create_cloned_volume(self, volume, src_vref): """Creates volume clone. If source volume's backing does not exist, then pass. Linked clone of attached volume is not supported. :param volume: New Volume object :param src_vref: Source Volume object """ self._verify_volume_creation(volume) backing = self.volumeops.get_backing(src_vref['name']) if not backing: LOG.info(_("There is no backing for the source volume: %(src)s. " "Not creating any backing for volume: %(vol)s.") % {'src': src_vref['name'], 'vol': volume['name']}) return clone_type = VMwareVcVmdkDriver._get_clone_type(volume) snapshot = None if clone_type == volumeops.LINKED_CLONE_TYPE: if src_vref['status'] != 'available': msg = _("Linked clone of source volume not supported " "in state: %s.") LOG.error(msg % src_vref['status']) raise exception.InvalidVolume(msg % src_vref['status']) # For performing a linked clone, we snapshot the volume and # then create the linked clone out of this snapshot point. name = 'snapshot-%s' % volume['id'] snapshot = self.volumeops.create_snapshot(backing, name, None) self._clone_backing(volume, backing, snapshot, clone_type, src_vref['size']) def create_cloned_volume(self, volume, src_vref): """Creates volume clone. :param volume: New Volume object :param src_vref: Source Volume object """ self._create_cloned_volume(volume, src_vref) cinder-2014.1.5/cinder/volume/drivers/vmware/__init__.py0000664000567000056700000000130212540642603024211 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ :mod:`vmware` -- Volume support for VMware compatible datastores. """ cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/0000775000567000056700000000000012540643114023053 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/5.5/0000775000567000056700000000000012540643114023362 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/5.5/pbm-messagetypes.xsd0000664000567000056700000001551712540642606027405 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/5.5/pbm.wsdl0000664000567000056700000011765112540642606025053 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/5.5/pbm-types.xsd0000664000567000056700000007262512540642606026043 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/5.5/pbmService.wsdl0000664000567000056700000000106312540642606026361 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/volume/drivers/vmware/wsdl/5.5/core-types.xsd0000664000567000056700000002032512540642606026203 0ustar jenkinsjenkins00000000000000 cinder-2014.1.5/cinder/volume/drivers/vmware/vmware_images.py0000664000567000056700000001646412540642606025322 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Utility functions for Image transfer. """ from eventlet import timeout from cinder import exception from cinder.openstack.common import log as logging from cinder.volume.drivers.vmware import io_util from cinder.volume.drivers.vmware import read_write_util as rw_util LOG = logging.getLogger(__name__) QUEUE_BUFFER_SIZE = 10 def start_transfer(context, timeout_secs, read_file_handle, max_data_size, write_file_handle=None, image_service=None, image_id=None, image_meta=None): """Start the data transfer from the reader to the writer. Reader writes to the pipe and the writer reads from the pipe. This means that the total transfer time boils down to the slower of the read/write and not the addition of the two times. """ if not image_meta: image_meta = {} # The pipe that acts as an intermediate store of data for reader to write # to and writer to grab from. thread_safe_pipe = io_util.ThreadSafePipe(QUEUE_BUFFER_SIZE, max_data_size) # The read thread. In case of glance it is the instance of the # GlanceFileRead class. The glance client read returns an iterator # and this class wraps that iterator to provide datachunks in calls # to read. read_thread = io_util.IOThread(read_file_handle, thread_safe_pipe) # In case of Glance - VMware transfer, we just need a handle to the # HTTP Connection that is to send transfer data to the VMware datastore. if write_file_handle: write_thread = io_util.IOThread(thread_safe_pipe, write_file_handle) # In case of VMware - Glance transfer, we relinquish VMware HTTP file read # handle to Glance Client instance, but to be sure of the transfer we need # to be sure of the status of the image on glance changing to active. # The GlanceWriteThread handles the same for us. elif image_service and image_id: write_thread = io_util.GlanceWriteThread(context, thread_safe_pipe, image_service, image_id, image_meta) # Start the read and write threads. read_event = read_thread.start() write_event = write_thread.start() timer = timeout.Timeout(timeout_secs) try: # Wait on the read and write events to signal their end read_event.wait() write_event.wait() except (timeout.Timeout, Exception) as exc: # In case of any of the reads or writes raising an exception, # stop the threads so that we un-necessarily don't keep the other one # waiting. read_thread.stop() write_thread.stop() # Log and raise the exception. LOG.exception(exc) raise exception.CinderException(exc) finally: timer.cancel() # No matter what, try closing the read and write handles, if it so # applies. read_file_handle.close() if write_file_handle: write_file_handle.close() def fetch_flat_image(context, timeout_secs, image_service, image_id, **kwargs): """Download flat image from the glance image server.""" LOG.debug(_("Downloading image: %s from glance image server as a flat vmdk" " file.") % image_id) file_size = int(kwargs.get('image_size')) read_iter = image_service.download(context, image_id) read_handle = rw_util.GlanceFileRead(read_iter) write_handle = rw_util.VMwareHTTPWriteFile(kwargs.get('host'), kwargs.get('data_center_name'), kwargs.get('datastore_name'), kwargs.get('cookies'), kwargs.get('file_path'), file_size) start_transfer(context, timeout_secs, read_handle, file_size, write_file_handle=write_handle) LOG.info(_("Downloaded image: %s from glance image server.") % image_id) def fetch_stream_optimized_image(context, timeout_secs, image_service, image_id, **kwargs): """Download stream optimized image from glance image server.""" LOG.debug(_("Downloading image: %s from glance image server using HttpNfc" " import.") % image_id) file_size = int(kwargs.get('image_size')) read_iter = image_service.download(context, image_id) read_handle = rw_util.GlanceFileRead(read_iter) write_handle = rw_util.VMwareHTTPWriteVmdk(kwargs.get('session'), kwargs.get('host'), kwargs.get('resource_pool'), kwargs.get('vm_folder'), kwargs.get('vm_create_spec'), file_size) start_transfer(context, timeout_secs, read_handle, file_size, write_file_handle=write_handle) LOG.info(_("Downloaded image: %s from glance image server.") % image_id) def upload_image(context, timeout_secs, image_service, image_id, owner_id, **kwargs): """Upload the vm's disk file to Glance image server.""" LOG.debug(_("Uploading image: %s to the Glance image server using HttpNfc" " export.") % image_id) file_size = kwargs.get('vmdk_size') read_handle = rw_util.VMwareHTTPReadVmdk(kwargs.get('session'), kwargs.get('host'), kwargs.get('vm'), kwargs.get('vmdk_file_path'), file_size) # The properties and other fields that we need to set for the image. # Important to set the 'size' to 0 here. Otherwise the glance client # uses the volume size which may not be image size after upload since # it is converted to a stream-optimized sparse disk image_metadata = {'disk_format': 'vmdk', 'is_public': 'false', 'name': kwargs.get('image_name'), 'status': 'active', 'container_format': 'bare', 'size': 0, 'properties': {'vmware_image_version': kwargs.get('image_version'), 'vmware_disktype': 'streamOptimized', 'owner_id': owner_id}} start_transfer(context, timeout_secs, read_handle, file_size, image_service=image_service, image_id=image_id, image_meta=image_metadata) LOG.info(_("Uploaded image: %s to the Glance image server.") % image_id) cinder-2014.1.5/cinder/volume/drivers/vmware/api.py0000664000567000056700000003627312540642606023245 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Session and API call management for VMware ESX/VC server. Provides abstraction over cinder.volume.drivers.vmware.vim.Vim SOAP calls. """ from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import pbm from cinder.volume.drivers.vmware import vim from cinder.volume.drivers.vmware import vim_util LOG = logging.getLogger(__name__) class Retry(object): """Decorator for retrying a function upon suggested exceptions. The method retries for given number of times and the sleep time increments till the max sleep time is reached. If max retries is set to -1, then the decorated function is invoked indefinitely till no exception is thrown or if the caught exception is not in the list of suggested exceptions. """ def __init__(self, max_retry_count=-1, inc_sleep_time=10, max_sleep_time=60, exceptions=()): """Initialize retry object based on input params. :param max_retry_count: Max number of times, a function must be retried when one of input 'exceptions' is caught. The default -1 will always retry the function till a non-exception case, or an un-wanted error case arises. :param inc_sleep_time: Incremental time in seconds for sleep time between retrial :param max_sleep_time: Max sleep time beyond which the sleep time will not be incremented using param inc_sleep_time and max_sleep_time will be used as sleep time :param exceptions: Suggested exceptions for which the function must be retried """ self._max_retry_count = max_retry_count self._inc_sleep_time = inc_sleep_time self._max_sleep_time = max_sleep_time self._exceptions = exceptions self._retry_count = 0 self._sleep_time = 0 def __call__(self, f): def _func(*args, **kwargs): try: result = f(*args, **kwargs) except self._exceptions as excep: LOG.exception(_("Failure while invoking function: " "%(func)s. Error: %(excep)s.") % {'func': f.__name__, 'excep': excep}) if (self._max_retry_count != -1 and self._retry_count >= self._max_retry_count): raise excep else: self._retry_count += 1 self._sleep_time += self._inc_sleep_time return self._sleep_time except Exception as excep: raise excep # got result. Stop the loop. raise loopingcall.LoopingCallDone(result) def func(*args, **kwargs): loop = loopingcall.DynamicLoopingCall(_func, *args, **kwargs) timer = loop.start(periodic_interval_max=self._max_sleep_time) return timer.wait() return func class VMwareAPISession(object): """Sets up a session with the server and handles all calls made to it.""" def __init__(self, server_ip, server_username, server_password, api_retry_count, task_poll_interval, scheme='https', create_session=True, wsdl_loc=None, pbm_wsdl=None): """Constructs session object. :param server_ip: IP address of ESX/VC server :param server_username: Username of ESX/VC server admin user :param server_password: Password for param server_username :param api_retry_count: Number of times an API must be retried upon session/connection related errors :param task_poll_interval: Sleep time in seconds for polling an on-going async task as part of the API call :param scheme: http or https protocol :param create_session: Boolean whether to set up connection at the time of instance creation :param wsdl_loc: VIM WSDL file location for invoking SOAP calls on server using suds :param pbm_wsdl: PBM WSDL file location. If set to None the storage policy related functionality will be disabled. """ self._server_ip = server_ip self._server_username = server_username self._server_password = server_password self._wsdl_loc = wsdl_loc self._api_retry_count = api_retry_count self._task_poll_interval = task_poll_interval self._scheme = scheme self._session_id = None self._session_username = None self._vim = None self._pbm_wsdl = pbm_wsdl self._pbm = None if create_session: self.create_session() @property def vim(self): if not self._vim: self._vim = vim.Vim(protocol=self._scheme, host=self._server_ip, wsdl_loc=self._wsdl_loc) return self._vim @property def pbm(self): if not self._pbm and self._pbm_wsdl: self._pbm = pbm.PBMClient(self.vim, self._pbm_wsdl, protocol=self._scheme, host=self._server_ip) return self._pbm @Retry(exceptions=(error_util.VimConnectionException,)) def create_session(self): """Establish session with the server.""" # Login and setup the session with the server for making # API calls session_manager = self.vim.service_content.sessionManager session = self.vim.Login(session_manager, userName=self._server_username, password=self._server_password) # Terminate the earlier session, if possible (For the sake of # preserving sessions as there is a limit to the number of # sessions we can have) if self._session_id: try: self.vim.TerminateSession(session_manager, sessionId=[self._session_id]) except Exception as excep: # This exception is something we can live with. It is # just an extra caution on our side. The session may # have been cleared. We could have made a call to # SessionIsActive, but that is an overhead because we # anyway would have to call TerminateSession. LOG.exception(_("Error while terminating session: %s.") % excep) self._session_id = session.key # We need to save the username in the session since we may need it # later to check active session. The SessionIsActive method requires # the username parameter to be exactly same as that in the session # object. We can't use the username used for login since the Login # method ignores the case. self._session_username = session.userName if self.pbm: self.pbm.set_cookie() LOG.info(_("Successfully established connection to the server.")) def __del__(self): """Logs-out the sessions.""" try: self.vim.Logout(self.vim.service_content.sessionManager) except Exception as excep: LOG.exception(_("Error while logging out from vim session: %s."), excep) if self._pbm: try: self.pbm.Logout(self.pbm.service_content.sessionManager) except Exception as excep: LOG.exception(_("Error while logging out from pbm session: " "%s."), excep) def invoke_api(self, module, method, *args, **kwargs): """Wrapper method for invoking APIs. Here we retry the API calls for exceptions which may come because of session overload. Make sure if a Vim instance is being passed here, this session's Vim (self.vim) instance is used, as we retry establishing session in case of session timedout. :param module: Module invoking the VI SDK calls :param method: Method in the module that invokes the VI SDK call :param args: Arguments to the method :param kwargs: Keyword arguments to the method :return: Response of the API call """ @Retry(max_retry_count=self._api_retry_count, exceptions=(error_util.SessionOverLoadException, error_util.VimConnectionException)) def _invoke_api(module, method, *args, **kwargs): while True: try: api_method = getattr(module, method) return api_method(*args, **kwargs) except error_util.VimFaultException as excep: if error_util.NOT_AUTHENTICATED not in excep.fault_list: raise excep # If it is a not-authenticated fault, we re-authenticate # the user and retry the API invocation. # The not-authenticated fault is set by the fault checker # due to an empty response. An empty response could be a # valid response; for e.g., response for the query to # return the VMs in an ESX server which has no VMs in it. # Also, the server responds with an empty response in the # case of an inactive session. Therefore, we need a way to # differentiate between these two cases. if self._is_current_session_active(): LOG.debug(_("Returning empty response for " "%(module)s.%(method)s invocation."), {'module': module, 'method': method}) return [] # empty response is due to an inactive session LOG.warn(_("Current session: %(session)s is inactive; " "re-creating the session while invoking " "method %(module)s.%(method)s."), {'session': self._session_id, 'module': module, 'method': method}, exc_info=True) self.create_session() return _invoke_api(module, method, *args, **kwargs) def _is_current_session_active(self): """Check if current session is active. :returns: True if the session is active; False otherwise """ LOG.debug(_("Checking if the current session: %s is active."), self._session_id) is_active = False try: is_active = self.vim.SessionIsActive( self.vim.service_content.sessionManager, sessionID=self._session_id, userName=self._session_username) except error_util.VimException: LOG.warn(_("Error occurred while checking whether the " "current session: %s is active."), self._session_id, exc_info=True) return is_active def wait_for_task(self, task): """Return a deferred that will give the result of the given task. The task is polled until it completes. The method returns the task information upon successful completion. :param task: Managed object reference of the task :return: Task info upon successful completion of the task """ loop = loopingcall.FixedIntervalLoopingCall(self._poll_task, task) return loop.start(self._task_poll_interval).wait() def _poll_task(self, task): """Poll the given task. If the task completes successfully then returns task info. In case of error sends back appropriate error. :param task: Managed object reference of the task :param event: Event that captures task status """ try: task_info = self.invoke_api(vim_util, 'get_object_property', self.vim, task, 'info') if task_info.state in ['queued', 'running']: # If task already completed on server, it will not return # the progress. if hasattr(task_info, 'progress'): LOG.debug(_("Task: %(task)s progress: %(prog)s.") % {'task': task, 'prog': task_info.progress}) return elif task_info.state == 'success': LOG.debug(_("Task %s status: success.") % task) else: error_msg = str(task_info.error.localizedMessage) LOG.exception(_("Task: %(task)s failed with error: %(err)s.") % {'task': task, 'err': error_msg}) raise error_util.VimFaultException([], error_msg) except Exception as excep: LOG.exception(_("Task: %(task)s failed with error: %(err)s.") % {'task': task, 'err': excep}) raise excep # got the result. So stop the loop. raise loopingcall.LoopingCallDone(task_info) def wait_for_lease_ready(self, lease): loop = loopingcall.FixedIntervalLoopingCall(self._poll_lease, lease) return loop.start(self._task_poll_interval).wait() def _poll_lease(self, lease): try: state = self.invoke_api(vim_util, 'get_object_property', self.vim, lease, 'state') if state == 'ready': # done LOG.debug(_("Lease is ready.")) elif state == 'initializing': LOG.debug(_("Lease initializing...")) return elif state == 'error': error_msg = self.invoke_api(vim_util, 'get_object_property', self.vim, lease, 'error') LOG.exception(error_msg) excep = error_util.VimFaultException([], error_msg) raise excep else: # unknown state - complain error_msg = _("Error: unknown lease state %s.") % state raise error_util.VimFaultException([], error_msg) except Exception as excep: LOG.exception(excep) raise excep # stop the loop since state is ready raise loopingcall.LoopingCallDone() cinder-2014.1.5/cinder/volume/drivers/vmware/io_util.py0000664000567000056700000001573112540642606024134 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Utility classes for defining the time saving transfer of data from the reader to the write using a LightQueue as a Pipe between the reader and the writer. """ import errno from eventlet import event from eventlet import greenthread from eventlet import queue from cinder import exception from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) IO_THREAD_SLEEP_TIME = .01 GLANCE_POLL_INTERVAL = 5 class ThreadSafePipe(queue.LightQueue): """The pipe to hold the data which the reader writes to and the writer reads from. """ def __init__(self, maxsize, max_transfer_size): queue.LightQueue.__init__(self, maxsize) self.max_transfer_size = max_transfer_size self.transferred = 0 def read(self, chunk_size): """Read data from the pipe. Chunksize is ignored for we have ensured that the data chunks written to the pipe by readers is the same as the chunks asked for by Writer. """ if self.transferred < self.max_transfer_size: data_item = self.get() self.transferred += len(data_item) LOG.debug(_("Read %(bytes)s out of %(max)s from ThreadSafePipe.") % {'bytes': self.transferred, 'max': self.max_transfer_size}) return data_item else: LOG.debug(_("Completed transfer of size %s.") % self.transferred) return "" def write(self, data): """Put a data item in the pipe.""" self.put(data) def seek(self, offset, whence=0): """Set the file's current position at the offset.""" # Illegal seek; the file object is a pipe raise IOError(errno.ESPIPE, "Illegal seek") def tell(self): """Get size of the file to be read.""" return self.max_transfer_size def close(self): """A place-holder to maintain consistency.""" pass class GlanceWriteThread(object): """Ensures that image data is written to in the glance client and that it is in correct ('active')state. """ def __init__(self, context, input_file, image_service, image_id, image_meta=None): if not image_meta: image_meta = {} self.context = context self.input_file = input_file self.image_service = image_service self.image_id = image_id self.image_meta = image_meta self._running = False def start(self): self.done = event.Event() def _inner(): """Initiate write thread. Function to do the image data transfer through an update and thereon checks if the state is 'active'. """ LOG.debug(_("Initiating image service update on image: %(image)s " "with meta: %(meta)s") % {'image': self.image_id, 'meta': self.image_meta}) self.image_service.update(self.context, self.image_id, self.image_meta, data=self.input_file) self._running = True while self._running: try: image_meta = self.image_service.show(self.context, self.image_id) image_status = image_meta.get('status') if image_status == 'active': self.stop() LOG.debug(_("Glance image: %s is now active.") % self.image_id) self.done.send(True) # If the state is killed, then raise an exception. elif image_status == 'killed': self.stop() msg = (_("Glance image: %s is in killed state.") % self.image_id) LOG.error(msg) excep = exception.CinderException(msg) self.done.send_exception(excep) elif image_status in ['saving', 'queued']: greenthread.sleep(GLANCE_POLL_INTERVAL) else: self.stop() msg = _("Glance image %(id)s is in unknown state " "- %(state)s") % {'id': self.image_id, 'state': image_status} LOG.error(msg) excep = exception.CinderException(msg) self.done.send_exception(excep) except Exception as exc: self.stop() self.done.send_exception(exc) greenthread.spawn(_inner) return self.done def stop(self): self._running = False def wait(self): return self.done.wait() def close(self): pass class IOThread(object): """Class that reads chunks from the input file and writes them to the output file till the transfer is completely done. """ def __init__(self, input_file, output_file): self.input_file = input_file self.output_file = output_file self._running = False self.got_exception = False def start(self): self.done = event.Event() def _inner(): """Read data from input and write the same to output.""" self._running = True while self._running: try: data = self.input_file.read(None) if not data: self.stop() self.done.send(True) self.output_file.write(data) if hasattr(self.input_file, "update_progress"): self.input_file.update_progress() if hasattr(self.output_file, "update_progress"): self.output_file.update_progress() greenthread.sleep(IO_THREAD_SLEEP_TIME) except Exception as exc: self.stop() LOG.exception(exc) self.done.send_exception(exc) greenthread.spawn(_inner) return self.done def stop(self): self._running = False def wait(self): return self.done.wait() cinder-2014.1.5/cinder/volume/drivers/vmware/volumeops.py0000664000567000056700000010765412540642606024527 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Implements operations on volumes residing on VMware datastores. """ from cinder.openstack.common import log as logging from cinder import units from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import vim_util LOG = logging.getLogger(__name__) LINKED_CLONE_TYPE = 'linked' FULL_CLONE_TYPE = 'full' ALREADY_EXISTS = 'AlreadyExists' FILE_ALREADY_EXISTS = 'FileAlreadyExists' def split_datastore_path(datastore_path): """Split the datastore path to components. return the datastore name, relative folder path and the file name E.g. datastore_path = [datastore1] my_volume/my_volume.vmdk, returns (datastore1, my_volume/, my_volume.vmdk) :param datastore_path: Datastore path of a file :return: Parsed datastore name, relative folder path and file name """ splits = datastore_path.split('[', 1)[1].split(']', 1) datastore_name = None folder_path = None file_name = None if len(splits) == 1: datastore_name = splits[0] else: datastore_name, path = splits # Path will be of form my_volume/my_volume.vmdk # we need into my_volumes/ and my_volume.vmdk splits = path.split('/') file_name = splits[len(splits) - 1] folder_path = path[:-len(file_name)] return (datastore_name.strip(), folder_path.strip(), file_name.strip()) class VMwareVolumeOps(object): """Manages volume operations.""" def __init__(self, session, max_objects): self._session = session self._max_objects = max_objects def get_backing(self, name): """Get the backing based on name. :param name: Name of the backing :return: Managed object reference to the backing """ retrieve_result = self._session.invoke_api(vim_util, 'get_objects', self._session.vim, 'VirtualMachine', self._max_objects) while retrieve_result: vms = retrieve_result.objects for vm in vms: if vm.propSet[0].val == name: # We got the result, so cancel further retrieval. self.cancel_retrieval(retrieve_result) return vm.obj # Result not obtained, continue retrieving results. retrieve_result = self.continue_retrieval(retrieve_result) LOG.debug(_("Did not find any backing with name: %s") % name) def delete_backing(self, backing): """Delete the backing. :param backing: Managed object reference to the backing """ LOG.debug(_("Deleting the VM backing: %s.") % backing) task = self._session.invoke_api(self._session.vim, 'Destroy_Task', backing) LOG.debug(_("Initiated deletion of VM backing: %s.") % backing) self._session.wait_for_task(task) LOG.info(_("Deleted the VM backing: %s.") % backing) # TODO(kartikaditya) Keep the methods not specific to volume in # a different file def get_host(self, instance): """Get host under which instance is present. :param instance: Managed object reference of the instance VM :return: Host managing the instance VM """ return self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, instance, 'runtime.host') def get_hosts(self): """Get all host from the inventory. :return: All the hosts from the inventory """ return self._session.invoke_api(vim_util, 'get_objects', self._session.vim, 'HostSystem', self._max_objects) def continue_retrieval(self, retrieve_result): """Continue retrieval of results if necessary. :param retrieve_result: Result from RetrievePropertiesEx """ return self._session.invoke_api(vim_util, 'continue_retrieval', self._session.vim, retrieve_result) def cancel_retrieval(self, retrieve_result): """Cancel retrieval of results if necessary. :param retrieve_result: Result from RetrievePropertiesEx """ self._session.invoke_api(vim_util, 'cancel_retrieval', self._session.vim, retrieve_result) def _is_usable(self, datastore, mount_info): """Check if the given datastore is usable as per the given mount info. The datastore is considered to be usable for a host only if it is writable, mounted and accessible. :param datastore: Reference to the datastore entity :param mount_info: host mount information :return: True if datastore is usable """ writable = mount_info.accessMode == "readWrite" # If mounted attribute is not set, then default is True mounted = True if hasattr(mount_info, "mounted"): mounted = mount_info.mounted if hasattr(mount_info, "accessible"): accessible = mount_info.accessible else: # If accessible attribute is not set, we look at summary summary = self.get_summary(datastore) accessible = summary.accessible return writable and mounted and accessible def get_connected_hosts(self, datastore): """Get all the hosts to which the datastore is connected and usable. The datastore is considered to be usable for a host only if it is writable, mounted and accessible. :param datastore: Reference to the datastore entity :return: List of managed object references of all connected hosts """ host_mounts = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, datastore, 'host') connected_hosts = [] for host_mount in host_mounts.DatastoreHostMount: if self._is_usable(datastore, host_mount.mountInfo): connected_hosts.append(host_mount.key.value) return connected_hosts def _is_valid(self, datastore, host): """Check if host's datastore is accessible, mounted and writable. :param datastore: Reference to the datastore entity :param host: Reference to the host entity :return: True if datastore can be used for volume creation """ host_mounts = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, datastore, 'host') for host_mount in host_mounts.DatastoreHostMount: if host_mount.key.value == host.value: return self._is_usable(datastore, host_mount.mountInfo) return False def get_dss_rp(self, host): """Get accessible datastores and resource pool of the host. :param host: Managed object reference of the host :return: Datastores accessible to the host and resource pool to which the host belongs to """ props = self._session.invoke_api(vim_util, 'get_object_properties', self._session.vim, host, ['datastore', 'parent']) # Get datastores and compute resource or cluster compute resource datastores = [] compute_resource = None for elem in props: for prop in elem.propSet: if prop.name == 'datastore' and prop.val: # Consider only if datastores are present under host datastores = prop.val.ManagedObjectReference elif prop.name == 'parent': compute_resource = prop.val LOG.debug(_("Datastores attached to host %(host)s are: %(ds)s."), {'host': host, 'ds': datastores}) # Filter datastores based on if it is accessible, mounted and writable valid_dss = [] for datastore in datastores: if self._is_valid(datastore, host): valid_dss.append(datastore) # Get resource pool from compute resource or cluster compute resource resource_pool = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, compute_resource, 'resourcePool') if not valid_dss: msg = _("There are no valid datastores attached to %s.") % host LOG.error(msg) raise error_util.VimException(msg) else: LOG.debug(_("Valid datastores are: %s"), valid_dss) return (valid_dss, resource_pool) def _get_parent(self, child, parent_type): """Get immediate parent of given type via 'parent' property. :param child: Child entity reference :param parent_type: Entity type of the parent :return: Immediate parent of specific type up the hierarchy via 'parent' property """ if not child: return None if child._type == parent_type: return child parent = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, child, 'parent') return self._get_parent(parent, parent_type) def get_dc(self, child): """Get parent datacenter up the hierarchy via 'parent' property. :param child: Reference of the child entity :return: Parent Datacenter of the param child entity """ return self._get_parent(child, 'Datacenter') def get_vmfolder(self, datacenter): """Get the vmFolder. :param datacenter: Reference to the datacenter entity :return: vmFolder property of the datacenter """ return self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, datacenter, 'vmFolder') def create_folder(self, parent_folder, child_folder_name): """Creates child folder with given name under the given parent folder. The method first checks if a child folder already exists, if it does, then it returns a moref for the folder, else it creates one and then return the moref. :param parent_folder: Reference to the folder entity :param child_folder_name: Name of the child folder :return: Reference to the child folder with input name if it already exists, else create one and return the reference """ LOG.debug(_("Creating folder: %(child_folder_name)s under parent " "folder: %(parent_folder)s.") % {'child_folder_name': child_folder_name, 'parent_folder': parent_folder}) # Get list of child entities for the parent folder prop_val = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, parent_folder, 'childEntity') child_entities = prop_val.ManagedObjectReference # Return if the child folder with input name is already present for child_entity in child_entities: if child_entity._type != 'Folder': continue child_entity_name = self.get_entity_name(child_entity) if child_entity_name == child_folder_name: LOG.debug(_("Child folder already present: %s.") % child_entity) return child_entity # Need to create the child folder child_folder = self._session.invoke_api(self._session.vim, 'CreateFolder', parent_folder, name=child_folder_name) LOG.debug(_("Created child folder: %s.") % child_folder) return child_folder def extend_virtual_disk(self, requested_size_in_gb, name, dc_ref, eager_zero=False): """Extend the virtual disk to the requested size. :param requested_size_in_gb: Size of the volume in GB :param name: Name of the backing :param dc_ref: Reference datacenter :param eager_zero: Boolean determining if the free space is zeroed out """ LOG.debug(_("Extending the volume %(name)s to %(size)s GB."), {'name': name, 'size': requested_size_in_gb}) diskMgr = self._session.vim.service_content.virtualDiskManager # VMWare API needs the capacity unit to be in KB, so convert the # capacity unit from GB to KB. size_in_kb = requested_size_in_gb * units.MiB task = self._session.invoke_api(self._session.vim, "ExtendVirtualDisk_Task", diskMgr, name=name, datacenter=dc_ref, newCapacityKb=size_in_kb, eagerZero=eager_zero) self._session.wait_for_task(task) LOG.info(_("Successfully extended the volume %(name)s to " "%(size)s GB."), {'name': name, 'size': requested_size_in_gb}) def _get_create_spec(self, name, size_kb, disk_type, ds_name, profileId=None): """Return spec for creating volume backing. :param name: Name of the backing :param size_kb: Size in KB of the backing :param disk_type: VMDK type for the disk :param ds_name: Datastore name where the disk is to be provisioned :param profileId: storage profile ID for the backing :return: Spec for creation """ cf = self._session.vim.client.factory controller_device = cf.create('ns0:VirtualLsiLogicController') controller_device.key = -100 controller_device.busNumber = 0 controller_device.sharedBus = 'noSharing' controller_spec = cf.create('ns0:VirtualDeviceConfigSpec') controller_spec.operation = 'add' controller_spec.device = controller_device disk_device = cf.create('ns0:VirtualDisk') # for very small disks allocate at least 1KB disk_device.capacityInKB = max(1, int(size_kb)) disk_device.key = -101 disk_device.unitNumber = 0 disk_device.controllerKey = -100 disk_device_bkng = cf.create('ns0:VirtualDiskFlatVer2BackingInfo') if disk_type == 'eagerZeroedThick': disk_device_bkng.eagerlyScrub = True elif disk_type == 'thin': disk_device_bkng.thinProvisioned = True disk_device_bkng.fileName = '' disk_device_bkng.diskMode = 'persistent' disk_device.backing = disk_device_bkng disk_spec = cf.create('ns0:VirtualDeviceConfigSpec') disk_spec.operation = 'add' disk_spec.fileOperation = 'create' disk_spec.device = disk_device vm_file_info = cf.create('ns0:VirtualMachineFileInfo') vm_file_info.vmPathName = '[%s]' % ds_name create_spec = cf.create('ns0:VirtualMachineConfigSpec') create_spec.name = name create_spec.guestId = 'otherGuest' create_spec.numCPUs = 1 create_spec.memoryMB = 128 create_spec.deviceChange = [controller_spec, disk_spec] create_spec.files = vm_file_info if profileId: vmProfile = cf.create('ns0:VirtualMachineDefinedProfileSpec') vmProfile.profileId = profileId create_spec.vmProfile = [vmProfile] LOG.debug(_("Spec for creating the backing: %s.") % create_spec) return create_spec def create_backing(self, name, size_kb, disk_type, folder, resource_pool, host, ds_name, profileId=None): """Create backing for the volume. Creates a VM with one VMDK based on the given inputs. :param name: Name of the backing :param size_kb: Size in KB of the backing :param disk_type: VMDK type for the disk :param folder: Folder, where to create the backing under :param resource_pool: Resource pool reference :param host: Host reference :param ds_name: Datastore name where the disk is to be provisioned :param profileId: storage profile ID to be associated with backing :return: Reference to the created backing entity """ LOG.debug(_("Creating volume backing name: %(name)s " "disk_type: %(disk_type)s size_kb: %(size_kb)s at " "folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s.") % {'name': name, 'disk_type': disk_type, 'size_kb': size_kb, 'folder': folder, 'resource_pool': resource_pool, 'ds_name': ds_name, 'profile': profileId}) create_spec = self._get_create_spec(name, size_kb, disk_type, ds_name, profileId) task = self._session.invoke_api(self._session.vim, 'CreateVM_Task', folder, config=create_spec, pool=resource_pool, host=host) LOG.debug(_("Initiated creation of volume backing: %s.") % name) task_info = self._session.wait_for_task(task) backing = task_info.result LOG.info(_("Successfully created volume backing: %s.") % backing) return backing def get_datastore(self, backing): """Get datastore where the backing resides. :param backing: Reference to the backing :return: Datastore reference to which the backing belongs """ return self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, backing, 'datastore').ManagedObjectReference[0] def get_summary(self, datastore): """Get datastore summary. :param datastore: Reference to the datastore :return: 'summary' property of the datastore """ return self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, datastore, 'summary') def _get_relocate_spec(self, datastore, resource_pool, host, disk_move_type): """Return spec for relocating volume backing. :param datastore: Reference to the datastore :param resource_pool: Reference to the resource pool :param host: Reference to the host :param disk_move_type: Disk move type option :return: Spec for relocation """ cf = self._session.vim.client.factory relocate_spec = cf.create('ns0:VirtualMachineRelocateSpec') relocate_spec.datastore = datastore relocate_spec.pool = resource_pool relocate_spec.host = host relocate_spec.diskMoveType = disk_move_type LOG.debug(_("Spec for relocating the backing: %s.") % relocate_spec) return relocate_spec def relocate_backing(self, backing, datastore, resource_pool, host): """Relocates backing to the input datastore and resource pool. The implementation uses moveAllDiskBackingsAndAllowSharing disk move type. :param backing: Reference to the backing :param datastore: Reference to the datastore :param resource_pool: Reference to the resource pool :param host: Reference to the host """ LOG.debug(_("Relocating backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s.") % {'backing': backing, 'ds': datastore, 'rp': resource_pool}) # Relocate the volume backing disk_move_type = 'moveAllDiskBackingsAndAllowSharing' relocate_spec = self._get_relocate_spec(datastore, resource_pool, host, disk_move_type) task = self._session.invoke_api(self._session.vim, 'RelocateVM_Task', backing, spec=relocate_spec) LOG.debug(_("Initiated relocation of volume backing: %s.") % backing) self._session.wait_for_task(task) LOG.info(_("Successfully relocated volume backing: %(backing)s " "to datastore: %(ds)s and resource pool: %(rp)s.") % {'backing': backing, 'ds': datastore, 'rp': resource_pool}) def move_backing_to_folder(self, backing, folder): """Move the volume backing to the folder. :param backing: Reference to the backing :param folder: Reference to the folder """ LOG.debug(_("Moving backing: %(backing)s to folder: %(fol)s.") % {'backing': backing, 'fol': folder}) task = self._session.invoke_api(self._session.vim, 'MoveIntoFolder_Task', folder, list=[backing]) LOG.debug(_("Initiated move of volume backing: %(backing)s into the " "folder: %(fol)s.") % {'backing': backing, 'fol': folder}) self._session.wait_for_task(task) LOG.info(_("Successfully moved volume backing: %(backing)s into the " "folder: %(fol)s.") % {'backing': backing, 'fol': folder}) def create_snapshot(self, backing, name, description, quiesce=False): """Create snapshot of the backing with given name and description. :param backing: Reference to the backing entity :param name: Snapshot name :param description: Snapshot description :param quiesce: Whether to quiesce the backing when taking snapshot :return: Created snapshot entity reference """ LOG.debug(_("Snapshoting backing: %(backing)s with name: %(name)s.") % {'backing': backing, 'name': name}) task = self._session.invoke_api(self._session.vim, 'CreateSnapshot_Task', backing, name=name, description=description, memory=False, quiesce=quiesce) LOG.debug(_("Initiated snapshot of volume backing: %(backing)s " "named: %(name)s.") % {'backing': backing, 'name': name}) task_info = self._session.wait_for_task(task) snapshot = task_info.result LOG.info(_("Successfully created snapshot: %(snap)s for volume " "backing: %(backing)s.") % {'snap': snapshot, 'backing': backing}) return snapshot @staticmethod def _get_snapshot_from_tree(name, root): """Get snapshot by name from the snapshot tree root. :param name: Snapshot name :param root: Current root node in the snapshot tree :return: None in the snapshot tree with given snapshot name """ if not root: return None if root.name == name: return root.snapshot if (not hasattr(root, 'childSnapshotList') or not root.childSnapshotList): # When root does not have children, the childSnapshotList attr # is missing sometime. Adding an additional check. return None for node in root.childSnapshotList: snapshot = VMwareVolumeOps._get_snapshot_from_tree(name, node) if snapshot: return snapshot def get_snapshot(self, backing, name): """Get snapshot of the backing with given name. :param backing: Reference to the backing entity :param name: Snapshot name :return: Snapshot entity of the backing with given name """ snapshot = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, backing, 'snapshot') if not snapshot or not snapshot.rootSnapshotList: return None for root in snapshot.rootSnapshotList: return VMwareVolumeOps._get_snapshot_from_tree(name, root) def delete_snapshot(self, backing, name): """Delete a given snapshot from volume backing. :param backing: Reference to the backing entity :param name: Snapshot name """ LOG.debug(_("Deleting the snapshot: %(name)s from backing: " "%(backing)s.") % {'name': name, 'backing': backing}) snapshot = self.get_snapshot(backing, name) if not snapshot: LOG.info(_("Did not find the snapshot: %(name)s for backing: " "%(backing)s. Need not delete anything.") % {'name': name, 'backing': backing}) return task = self._session.invoke_api(self._session.vim, 'RemoveSnapshot_Task', snapshot, removeChildren=False) LOG.debug(_("Initiated snapshot: %(name)s deletion for backing: " "%(backing)s.") % {'name': name, 'backing': backing}) self._session.wait_for_task(task) LOG.info(_("Successfully deleted snapshot: %(name)s of backing: " "%(backing)s.") % {'backing': backing, 'name': name}) def _get_folder(self, backing): """Get parent folder of the backing. :param backing: Reference to the backing entity :return: Reference to parent folder of the backing entity """ return self._get_parent(backing, 'Folder') def _get_clone_spec(self, datastore, disk_move_type, snapshot): """Get the clone spec. :param datastore: Reference to datastore :param disk_move_type: Disk move type :param snapshot: Reference to snapshot :return: Clone spec """ relocate_spec = self._get_relocate_spec(datastore, None, None, disk_move_type) cf = self._session.vim.client.factory clone_spec = cf.create('ns0:VirtualMachineCloneSpec') clone_spec.location = relocate_spec clone_spec.powerOn = False clone_spec.template = False clone_spec.snapshot = snapshot LOG.debug(_("Spec for cloning the backing: %s.") % clone_spec) return clone_spec def clone_backing(self, name, backing, snapshot, clone_type, datastore): """Clone backing. If the clone_type is 'full', then a full clone of the source volume backing will be created. Else, if it is 'linked', then a linked clone of the source volume backing will be created. :param name: Name for the clone :param backing: Reference to the backing entity :param snapshot: Snapshot point from which the clone should be done :param clone_type: Whether a full clone or linked clone is to be made :param datastore: Reference to the datastore entity """ LOG.debug(_("Creating a clone of backing: %(back)s, named: %(name)s, " "clone type: %(type)s from snapshot: %(snap)s on " "datastore: %(ds)s") % {'back': backing, 'name': name, 'type': clone_type, 'snap': snapshot, 'ds': datastore}) folder = self._get_folder(backing) if clone_type == LINKED_CLONE_TYPE: disk_move_type = 'createNewChildDiskBacking' else: disk_move_type = 'moveAllDiskBackingsAndDisallowSharing' clone_spec = self._get_clone_spec(datastore, disk_move_type, snapshot) task = self._session.invoke_api(self._session.vim, 'CloneVM_Task', backing, folder=folder, name=name, spec=clone_spec) LOG.debug(_("Initiated clone of backing: %s.") % name) task_info = self._session.wait_for_task(task) new_backing = task_info.result LOG.info(_("Successfully created clone: %s.") % new_backing) return new_backing def delete_file(self, file_path, datacenter=None): """Delete file or folder on the datastore. :param file_path: Datastore path of the file or folder """ LOG.debug(_("Deleting file: %(file)s under datacenter: %(dc)s.") % {'file': file_path, 'dc': datacenter}) fileManager = self._session.vim.service_content.fileManager task = self._session.invoke_api(self._session.vim, 'DeleteDatastoreFile_Task', fileManager, name=file_path, datacenter=datacenter) LOG.debug(_("Initiated deletion via task: %s.") % task) self._session.wait_for_task(task) LOG.info(_("Successfully deleted file: %s.") % file_path) def get_path_name(self, backing): """Get path name of the backing. :param backing: Reference to the backing entity :return: Path name of the backing """ return self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, backing, 'config.files').vmPathName def get_entity_name(self, entity): """Get name of the managed entity. :param entity: Reference to the entity :return: Name of the managed entity """ return self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, entity, 'name') def get_vmdk_path(self, backing): """Get the vmdk file name of the backing. The vmdk file path of the backing returned is of the form: "[datastore1] my_folder/my_vm.vmdk" :param backing: Reference to the backing :return: VMDK file path of the backing """ hardware_devices = self._session.invoke_api(vim_util, 'get_object_property', self._session.vim, backing, 'config.hardware.device') if hardware_devices.__class__.__name__ == "ArrayOfVirtualDevice": hardware_devices = hardware_devices.VirtualDevice for device in hardware_devices: if device.__class__.__name__ == "VirtualDisk": bkng = device.backing if bkng.__class__.__name__ == "VirtualDiskFlatVer2BackingInfo": return bkng.fileName def copy_vmdk_file(self, dc_ref, src_vmdk_file_path, dest_vmdk_file_path): """Copy contents of the src vmdk file to dest vmdk file. During the copy also coalesce snapshots of src if present. dest_vmdk_file_path will be created if not already present. :param dc_ref: Reference to datacenter containing src and dest :param src_vmdk_file_path: Source vmdk file path :param dest_vmdk_file_path: Destination vmdk file path """ LOG.debug(_('Copying disk data before snapshot of the VM')) diskMgr = self._session.vim.service_content.virtualDiskManager task = self._session.invoke_api(self._session.vim, 'CopyVirtualDisk_Task', diskMgr, sourceName=src_vmdk_file_path, sourceDatacenter=dc_ref, destName=dest_vmdk_file_path, destDatacenter=dc_ref, force=True) LOG.debug(_("Initiated copying disk data via task: %s.") % task) self._session.wait_for_task(task) LOG.info(_("Successfully copied disk at: %(src)s to: %(dest)s.") % {'src': src_vmdk_file_path, 'dest': dest_vmdk_file_path}) def delete_vmdk_file(self, vmdk_file_path, dc_ref): """Delete given vmdk files. :param vmdk_file_path: VMDK file path to be deleted :param dc_ref: Reference to datacenter that contains this VMDK file """ LOG.debug(_("Deleting vmdk file: %s.") % vmdk_file_path) diskMgr = self._session.vim.service_content.virtualDiskManager task = self._session.invoke_api(self._session.vim, 'DeleteVirtualDisk_Task', diskMgr, name=vmdk_file_path, datacenter=dc_ref) LOG.debug(_("Initiated deleting vmdk file via task: %s.") % task) self._session.wait_for_task(task) LOG.info(_("Deleted vmdk file: %s.") % vmdk_file_path) def get_all_profiles(self): """Get all profiles defined in current VC. :return: PbmProfile data objects from VC """ LOG.debug(_("Get all profiles defined in current VC.")) pbm = self._session.pbm profile_manager = pbm.service_content.profileManager res_type = pbm.client.factory.create('ns0:PbmProfileResourceType') res_type.resourceType = 'STORAGE' profileIds = self._session.invoke_api(pbm, 'PbmQueryProfile', profile_manager, resourceType=res_type) LOG.debug(_("Got profile IDs: %s"), profileIds) return self._session.invoke_api(pbm, 'PbmRetrieveContent', profile_manager, profileIds=profileIds) def retrieve_profile_id(self, profile_name): """Get the profile uuid from current VC for given profile name. :param profile_name: profile name as string :return: profile id as string """ LOG.debug(_("Trying to retrieve profile id for %s"), profile_name) for profile in self.get_all_profiles(): if profile.name == profile_name: profileId = profile.profileId LOG.debug(_("Got profile id %(id)s for profile %(name)s."), {'id': profileId, 'name': profile_name}) return profileId def filter_matching_hubs(self, hubs, profile_id): """Filter and return only hubs that match given profile. :param hubs: PbmPlacementHub morefs candidates :param profile_id: profile id string :return: subset of hubs that match given profile_id """ LOG.debug(_("Filtering hubs %(hubs)s that match profile " "%(profile)s."), {'hubs': hubs, 'profile': profile_id}) pbm = self._session.pbm placement_solver = pbm.service_content.placementSolver filtered_hubs = self._session.invoke_api(pbm, 'PbmQueryMatchingHub', placement_solver, hubsToSearch=hubs, profile=profile_id) LOG.debug(_("Filtered hubs: %s"), filtered_hubs) return filtered_hubs cinder-2014.1.5/cinder/volume/drivers/vmware/error_util.py0000664000567000056700000000405312540642606024651 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Exception classes and SOAP response error checking module. """ from cinder import exception NOT_AUTHENTICATED = 'NotAuthenticated' class VimException(exception.CinderException): """The VIM Exception class.""" def __init__(self, msg): exception.CinderException.__init__(self, msg) class SessionOverLoadException(VimException): """Session Overload Exception.""" pass class VimAttributeException(VimException): """VI Attribute Error.""" pass class VimConnectionException(VimException): """Thrown when there is a connection problem.""" pass class VimFaultException(VimException): """Exception thrown when there are faults during VIM API calls.""" def __init__(self, fault_list, msg): super(VimFaultException, self).__init__(msg) self.fault_list = fault_list class VMwareDriverException(exception.CinderException): """Base class for all exceptions raised by the VMDK driver. All exceptions raised by the vmdk driver should raise an exception descended from this class as a root. This will allow the driver to potentially trap problems related to its own internal configuration before halting the cinder-volume node. """ message = _("VMware VMDK driver exception.") class VMwaredriverConfigurationException(VMwareDriverException): """Base class for all configuration exceptions. """ message = _("VMware VMDK driver configuration error.") cinder-2014.1.5/cinder/volume/drivers/vmware/vim_util.py0000664000567000056700000003300512540642606024312 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ The VMware API utility module. """ import netaddr def get_soap_url(protocol, host, path='sdk'): """Return URL to SOAP services for ESX/VC server. :param protocol: https or http :param host: ESX/VC server host IP :param path: path part of the SOAP URL :return: URL to SOAP services for ESX/VC server """ if netaddr.valid_ipv6(host): return '%s://[%s]/%s' % (protocol, host, path) return '%s://%s/%s' % (protocol, host, path) def build_selection_spec(client_factory, name): """Builds the selection spec. :param client_factory: Factory to get API input specs :param name: Name for the selection spec :return: Selection spec """ sel_spec = client_factory.create('ns0:SelectionSpec') sel_spec.name = name return sel_spec def build_traversal_spec(client_factory, name, type, path, skip, select_set): """Builds the traversal spec object. :param client_factory: Factory to get API input specs :param name: Name for the traversal spec :param type: Type of the managed object reference :param path: Property path of the managed object reference :param skip: Whether or not to filter the object identified by param path :param select_set: Set of selection specs specifying additional objects to filter :return: Traversal spec """ traversal_spec = client_factory.create('ns0:TraversalSpec') traversal_spec.name = name traversal_spec.type = type traversal_spec.path = path traversal_spec.skip = skip traversal_spec.selectSet = select_set return traversal_spec def build_recursive_traversal_spec(client_factory): """Builds Recursive Traversal Spec to traverse managed object hierarchy. :param client_factory: Factory to get API input specs :return: Recursive traversal spec """ visit_folders_select_spec = build_selection_spec(client_factory, 'visitFolders') # Next hop from Datacenter dc_to_hf = build_traversal_spec(client_factory, 'dc_to_hf', 'Datacenter', 'hostFolder', False, [visit_folders_select_spec]) dc_to_vmf = build_traversal_spec(client_factory, 'dc_to_vmf', 'Datacenter', 'vmFolder', False, [visit_folders_select_spec]) # Next hop from HostSystem h_to_vm = build_traversal_spec(client_factory, 'h_to_vm', 'HostSystem', 'vm', False, [visit_folders_select_spec]) # Next hop from ComputeResource cr_to_h = build_traversal_spec(client_factory, 'cr_to_h', 'ComputeResource', 'host', False, []) cr_to_ds = build_traversal_spec(client_factory, 'cr_to_ds', 'ComputeResource', 'datastore', False, []) rp_to_rp_select_spec = build_selection_spec(client_factory, 'rp_to_rp') rp_to_vm_select_spec = build_selection_spec(client_factory, 'rp_to_vm') cr_to_rp = build_traversal_spec(client_factory, 'cr_to_rp', 'ComputeResource', 'resourcePool', False, [rp_to_rp_select_spec, rp_to_vm_select_spec]) # Next hop from ClusterComputeResource ccr_to_h = build_traversal_spec(client_factory, 'ccr_to_h', 'ClusterComputeResource', 'host', False, []) ccr_to_ds = build_traversal_spec(client_factory, 'ccr_to_ds', 'ClusterComputeResource', 'datastore', False, []) ccr_to_rp = build_traversal_spec(client_factory, 'ccr_to_rp', 'ClusterComputeResource', 'resourcePool', False, [rp_to_rp_select_spec, rp_to_vm_select_spec]) # Next hop from ResourcePool rp_to_rp = build_traversal_spec(client_factory, 'rp_to_rp', 'ResourcePool', 'resourcePool', False, [rp_to_rp_select_spec, rp_to_vm_select_spec]) rp_to_vm = build_traversal_spec(client_factory, 'rp_to_vm', 'ResourcePool', 'vm', False, [rp_to_rp_select_spec, rp_to_vm_select_spec]) # Get the assorted traversal spec which takes care of the objects to # be searched for from the rootFolder traversal_spec = build_traversal_spec(client_factory, 'visitFolders', 'Folder', 'childEntity', False, [visit_folders_select_spec, h_to_vm, dc_to_hf, dc_to_vmf, cr_to_ds, cr_to_h, cr_to_rp, ccr_to_h, ccr_to_ds, ccr_to_rp, rp_to_rp, rp_to_vm]) return traversal_spec def build_property_spec(client_factory, type='VirtualMachine', properties_to_collect=None, all_properties=False): """Builds the Property Spec. :param client_factory: Factory to get API input specs :param type: Type of the managed object reference property :param properties_to_collect: Properties of the managed object reference to be collected while traversal filtering :param all_properties: Whether all the properties of managed object reference needs to be collected :return: Property spec """ if not properties_to_collect: properties_to_collect = ['name'] property_spec = client_factory.create('ns0:PropertySpec') property_spec.all = all_properties property_spec.pathSet = properties_to_collect property_spec.type = type return property_spec def build_object_spec(client_factory, root_folder, traversal_specs): """Builds the object Spec. :param client_factory: Factory to get API input specs :param root_folder: Root folder reference as the starting point for traversal :param traversal_specs: filter specs required for traversal :return: Object spec """ object_spec = client_factory.create('ns0:ObjectSpec') object_spec.obj = root_folder object_spec.skip = False object_spec.selectSet = traversal_specs return object_spec def build_property_filter_spec(client_factory, property_specs, object_specs): """Builds the Property Filter Spec. :param client_factory: Factory to get API input specs :param property_specs: Property specs to be collected for filtered objects :param object_specs: Object specs to identify objects to be filtered :return: Property filter spec """ property_filter_spec = client_factory.create('ns0:PropertyFilterSpec') property_filter_spec.propSet = property_specs property_filter_spec.objectSet = object_specs return property_filter_spec def get_objects(vim, type, max_objects, props_to_collect=None, all_properties=False): """Gets all managed object references of a specified type. It is caller's responsibility to continue or cancel retrieval. :param vim: Vim object :param type: Type of the managed object reference :param max_objects: Maximum number of objects that should be returned in a single call :param props_to_collect: Properties of the managed object reference to be collected :param all_properties: Whether all properties of the managed object reference are to be collected :return: All managed object references of a specified type """ if not props_to_collect: props_to_collect = ['name'] client_factory = vim.client.factory recur_trav_spec = build_recursive_traversal_spec(client_factory) object_spec = build_object_spec(client_factory, vim.service_content.rootFolder, [recur_trav_spec]) property_spec = build_property_spec(client_factory, type=type, properties_to_collect=props_to_collect, all_properties=all_properties) property_filter_spec = build_property_filter_spec(client_factory, [property_spec], [object_spec]) options = client_factory.create('ns0:RetrieveOptions') options.maxObjects = max_objects return vim.RetrievePropertiesEx(vim.service_content.propertyCollector, specSet=[property_filter_spec], options=options) def get_object_properties(vim, mobj, properties): """Gets properties of the managed object specified. :param vim: Vim object :param mobj: Reference to the managed object :param properties: Properties of the managed object reference to be retrieved :return: Properties of the managed object specified """ client_factory = vim.client.factory if mobj is None: return None collector = vim.service_content.propertyCollector property_filter_spec = client_factory.create('ns0:PropertyFilterSpec') property_spec = client_factory.create('ns0:PropertySpec') property_spec.all = (properties is None or len(properties) == 0) property_spec.pathSet = properties property_spec.type = mobj._type object_spec = client_factory.create('ns0:ObjectSpec') object_spec.obj = mobj object_spec.skip = False property_filter_spec.propSet = [property_spec] property_filter_spec.objectSet = [object_spec] options = client_factory.create('ns0:RetrieveOptions') options.maxObjects = 1 retrieve_result = vim.RetrievePropertiesEx(collector, specSet=[property_filter_spec], options=options) cancel_retrieval(vim, retrieve_result) return retrieve_result.objects def _get_token(retrieve_result): """Get token from results to obtain next set of results. :retrieve_result: Result from the RetrievePropertiesEx API :return: Token to obtain next set of results. None if no more results. """ return getattr(retrieve_result, 'token', None) def cancel_retrieval(vim, retrieve_result): """Cancels the retrieve operation if necessary. :param vim: Vim object :param retrieve_result: Result from the RetrievePropertiesEx API """ token = _get_token(retrieve_result) if token: collector = vim.service_content.propertyCollector vim.CancelRetrievePropertiesEx(collector, token=token) def continue_retrieval(vim, retrieve_result): """Continue retrieving results, if present. :param vim: Vim object :param retrieve_result: Result from the RetrievePropertiesEx API """ token = _get_token(retrieve_result) if token: collector = vim.service_content.propertyCollector return vim.ContinueRetrievePropertiesEx(collector, token=token) def get_object_property(vim, mobj, property_name): """Gets property of the managed object specified. :param vim: Vim object :param mobj: Reference to the managed object :param property_name: Name of the property to be retrieved :return: Property of the managed object specified """ props = get_object_properties(vim, mobj, [property_name]) prop_val = None if props: prop = None if hasattr(props[0], 'propSet'): # propSet will be set only if the server provides value # for the field prop = props[0].propSet if prop: prop_val = prop[0].val return prop_val def convert_datastores_to_hubs(pbm_client_factory, datastores): """Convert Datastore morefs to PbmPlacementHub morefs. :param pbm_client_factory: pbm client factory :param datastores: list of datastore morefs :returns: list of PbmPlacementHub morefs """ hubs = [] for ds in datastores: hub = pbm_client_factory.create('ns0:PbmPlacementHub') hub.hubId = ds.value hub.hubType = 'Datastore' hubs.append(hub) return hubs def convert_hubs_to_datastores(hubs, datastores): """Get filtered subset of datastores as represented by hubs. :param hubs: represents a sub set of datastore ids :param datastores: represents all candidate datastores :returns: that subset of datastores objects that are also present in hubs """ hubIds = [hub.hubId for hub in hubs] filtered_dss = [ds for ds in datastores if ds.value in hubIds] return filtered_dss cinder-2014.1.5/cinder/volume/drivers/hds/0000775000567000056700000000000012540643114021357 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/hds/hus_backend.py0000664000567000056700000001655112540642606024214 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Hitachi Data Systems, Inc. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. # """ Hitachi Unified Storage (HUS) platform. Backend operations. """ from cinder.openstack.common import log as logging from cinder import utils LOG = logging.getLogger("cinder.volume.driver") class HusBackend: """Back end. Talks to HUS.""" def get_version(self, cmd, ver, ip0, ip1, user, pw): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--version', '1', run_as_root=True, check_exit_code=True) LOG.debug('get_version: ' + out + ' -- ' + err) return out def get_iscsi_info(self, cmd, ver, ip0, ip1, user, pw): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--iscsi', '1', check_exit_code=True) LOG.debug('get_iscsi_info: ' + out + ' -- ' + err) return out def get_hdp_info(self, cmd, ver, ip0, ip1, user, pw): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--hdp', '1', check_exit_code=True) LOG.debug('get_hdp_info: ' + out + ' -- ' + err) return out def create_lu(self, cmd, ver, ip0, ip1, user, pw, id, hdp, start, end, size): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--create-lun', '1', '--array-id', id, '--hdp', hdp, '--start', start, '--end', end, '--size', size, check_exit_code=True) LOG.debug('create_lu: ' + out + ' -- ' + err) return out def delete_lu(self, cmd, ver, ip0, ip1, user, pw, id, lun): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--delete-lun', '1', '--array-id', id, '--lun', lun, '--force', 1, check_exit_code=True) LOG.debug('delete_lu: ' + out + ' -- ' + err) return out def create_dup(self, cmd, ver, ip0, ip1, user, pw, id, src_lun, hdp, start, end, size): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--create-dup', '1', '--array-id', id, '--pvol', src_lun, '--hdp', hdp, '--start', start, '--end', end, '--size', size, check_exit_code=True) LOG.debug('create_dup: ' + out + ' -- ' + err) return out def extend_vol(self, cmd, ver, ip0, ip1, user, pw, id, lun, new_size): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--extend-lun', '1', '--array-id', id, '--lun', lun, '--size', new_size, check_exit_code=True) LOG.debug('extend_vol: ' + out + ' -- ' + err) return out def add_iscsi_conn(self, cmd, ver, ip0, ip1, user, pw, id, lun, ctl, port, iqn, initiator): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--add-iscsi-connection', '1', '--array-id', id, '--lun', lun, '--ctl', ctl, '--port', port, '--target', iqn, '--initiator', initiator, check_exit_code=True) LOG.debug('add_iscsi_conn: ' + out + ' -- ' + err) return out def del_iscsi_conn(self, cmd, ver, ip0, ip1, user, pw, id, lun, ctl, port, iqn, initiator): out, err = utils.execute(cmd, '--driver-version', ver, '--ip0', ip0, '--ip1', ip1, '--user', user, '--password', pw, '--delete-iscsi-connection', '1', '--array-id', id, '--lun', lun, '--ctl', ctl, '--port', port, '--target', iqn, '--initiator', initiator, '--force', 1, check_exit_code=True) LOG.debug('del_iscsi_conn: ' + out + ' -- ' + err) return out cinder-2014.1.5/cinder/volume/drivers/hds/__init__.py0000664000567000056700000000000012540642603023460 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/hds/hds.py0000664000567000056700000005353112540642606022523 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Hitachi Data Systems, Inc. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. # """ iSCSI Cinder Volume driver for Hitachi Unified Storage (HUS) platform. """ from oslo.config import cfg from xml.etree import ElementTree as ETree from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import utils from cinder.volume import driver from cinder.volume.drivers.hds.hus_backend import HusBackend HDS_VERSION = '1.0.2' LOG = logging.getLogger(__name__) HUS_OPTS = [ cfg.StrOpt('hds_cinder_config_file', default='/opt/hds/hus/cinder_hus_conf.xml', help='configuration file for HDS cinder plugin for HUS'), ] CONF = cfg.CONF CONF.register_opts(HUS_OPTS) HI_IQN = 'iqn.1994-04.jp.co.hitachi:' # fixed string, for now. HUS_DEFAULT_CONFIG = {'hus_cmd': 'hus-cmd', 'lun_start': '0', 'lun_end': '8192'} def factory_bend(): """Factory over-ride in self-tests.""" return HusBackend() def _loc_info(loc): """Parse info from location string.""" info = {} tup = loc.split(',') if len(tup) < 5: info['id_lu'] = tup[0].split('.') return info info['id_lu'] = tup[2].split('.') info['tgt'] = tup return info def _do_lu_range_check(start, end, maxlun): """Validate array allocation range.""" LOG.debug(_("Range: start LU: %(start)s, end LU: %(end)s") % {'start': start, 'end': end}) if int(start) < 0: msg = 'start LU limit too low: ' + start raise exception.InvalidInput(reason=msg) if int(start) >= int(maxlun): msg = 'start LU limit high: ' + start + ' max: ' + maxlun raise exception.InvalidInput(reason=msg) if int(end) <= int(start): msg = 'LU end limit too low: ' + end raise exception.InvalidInput(reason=msg) if int(end) > int(maxlun): end = maxlun LOG.debug(_("setting LU upper (end) limit to %s") % maxlun) return (start, end) def _xml_read(root, element, check=None): """Read an xml element.""" try: val = root.findtext(element) LOG.info(_("%(element)s: %(val)s") % {'element': element, 'val': val}) if val: return val.strip() if check: raise exception.ParameterNotFound(param=element) return None except ETree.ParseError as e: if check: with excutils.save_and_reraise_exception(): LOG.error(_("XML exception reading parameter: %s") % element) else: LOG.info(_("XML exception reading parameter: %s") % element) return None def _read_config(xml_config_file): """Read hds driver specific xml config file.""" try: root = ETree.parse(xml_config_file).getroot() except Exception: raise exception.NotFound(message='config file not found: ' + xml_config_file) config = {} arg_prereqs = ['mgmt_ip0', 'mgmt_ip1', 'username', 'password'] for req in arg_prereqs: config[req] = _xml_read(root, req, 'check') config['hdp'] = {} config['services'] = {} for svc in ['svc_0', 'svc_1', 'svc_2', 'svc_3']: # min one needed if _xml_read(root, svc) is None: continue service = {} service['label'] = svc for arg in ['volume_type', 'hdp', 'iscsi_ip']: # none optional service[arg] = _xml_read(root, svc + '/' + arg, 'check') config['services'][service['volume_type']] = service config['hdp'][service['hdp']] = service['hdp'] if config['services'].keys() is None: # at least one service required! raise exception.ParameterNotFound(param="No service found") config['snapshot_hdp'] = _xml_read(root, 'snapshot/hdp', 'check') for arg in ['hus_cmd', 'lun_start', 'lun_end']: # optional config[arg] = _xml_read(root, arg) or HUS_DEFAULT_CONFIG[arg] return config class HUSDriver(driver.ISCSIDriver): """HDS HUS volume driver.""" VERSION = HDS_VERSION def _array_info_get(self): """Get array parameters.""" out = self.bend.get_version(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password']) inf = out.split() return(inf[1], 'hus_' + inf[1], inf[6]) def _get_iscsi_info(self): """Validate array iscsi parameters.""" out = self.bend.get_iscsi_info(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password']) lines = out.split('\n') conf = {} # dict based on iSCSI portal ip addresses for line in lines: if 'CTL' in line: inf = line.split() (ctl, port, ip, ipp) = (inf[1], inf[3], inf[5], inf[7]) conf[ip] = {} conf[ip]['ctl'] = ctl conf[ip]['port'] = port conf[ip]['iscsi_port'] = ipp # HUS default: 3260 msg = _('portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s') LOG.debug(msg % {'ip': ip, 'ipp': ipp, 'ctl': ctl, 'port': port}) return conf def _get_service(self, volume): """Get the available service parameters for a given volume type.""" label = None if volume['volume_type']: label = volume['volume_type']['name'] label = label or 'default' if label in self.config['services'].keys(): svc = self.config['services'][label] service = (svc['iscsi_ip'], svc['iscsi_port'], svc['ctl'], svc['port'], svc['hdp']) # ip, ipp, ctl, port, hdp else: LOG.error(_("No configuration found for service: %s") % label) raise exception.ParameterNotFound(param=label) return service def _get_stats(self): """Get HDP stats from HUS.""" total_cap = 0 total_used = 0 out = self.bend.get_hdp_info(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password']) for line in out.split('\n'): if 'HDP' in line: (hdp, size, _ign, used) = line.split()[1:5] # in MB if hdp in self.config['hdp'].keys(): total_cap += int(size) total_used += int(used) hus_stat = {} hus_stat['total_capacity_gb'] = int(total_cap / 1024) # in GB hus_stat['free_capacity_gb'] = int((total_cap - total_used) / 1024) be_name = self.configuration.safe_get('volume_backend_name') hus_stat["volume_backend_name"] = be_name or 'HUSDriver' hus_stat["vendor_name"] = 'HDS' hus_stat["driver_version"] = HDS_VERSION hus_stat["storage_protocol"] = 'iSCSI' hus_stat['QoS_support'] = False hus_stat['reserved_percentage'] = 0 return hus_stat def _get_hdp_list(self): """Get HDPs from HUS.""" out = self.bend.get_hdp_info(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password']) hdp_list = [] for line in out.split('\n'): if 'HDP' in line: hdp_list.extend(line.split()[1:2]) return hdp_list def _check_hdp_list(self): """Verify all HDPs specified in the configuration exist.""" hdpl = self._get_hdp_list() lst = self.config['hdp'].keys() lst.extend([self.config['snapshot_hdp'], ]) for hdp in lst: if hdp not in hdpl: LOG.error(_("HDP not found: %s") % hdp) err = "HDP not found: " + hdp raise exception.ParameterNotFound(param=err) def _id_to_vol(self, idd): """Given the volume id, retrieve the volume object from database.""" vol = self.db.volume_get(self.context, idd) return vol def _update_vol_location(self, id, loc): """Update the provider location.""" update = {} update['provider_location'] = loc self.db.volume_update(self.context, id, update) def __init__(self, *args, **kwargs): """Initialize, read different config parameters.""" super(HUSDriver, self).__init__(*args, **kwargs) self.driver_stats = {} self.context = {} self.bend = factory_bend() self.configuration.append_config_values(HUS_OPTS) self.config = _read_config(self.configuration.hds_cinder_config_file) (self.arid, self.hus_name, self.lumax) = self._array_info_get() self._check_hdp_list() start = self.config['lun_start'] end = self.config['lun_end'] maxlun = self.lumax (self.start, self.end) = _do_lu_range_check(start, end, maxlun) iscsi_info = self._get_iscsi_info() for svc in self.config['services'].keys(): svc_ip = self.config['services'][svc]['iscsi_ip'] if svc_ip in iscsi_info.keys(): self.config['services'][svc]['port'] = ( iscsi_info[svc_ip]['port']) self.config['services'][svc]['ctl'] = iscsi_info[svc_ip]['ctl'] self.config['services'][svc]['iscsi_port'] = ( iscsi_info[svc_ip]['iscsi_port']) else: # config iscsi address not found on device! LOG.error(_("iSCSI portal not found for service: %s") % svc_ip) raise exception.ParameterNotFound(param=svc_ip) return def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" return def do_setup(self, context): """do_setup. Setup and verify HDS HUS storage connection. But moved it to __init__ as (setup/errors) could became an infinite loop. """ self.context = context def ensure_export(self, context, volume): return def create_export(self, context, volume): """Create an export. Moved to initialize_connection.""" return @utils.synchronized('hds_hus', external=True) def create_volume(self, volume): """Create a LU on HUS.""" service = self._get_service(volume) (_ip, _ipp, _ctl, _port, hdp) = service out = self.bend.create_lu(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], self.arid, hdp, self.start, self.end, '%s' % (int(volume['size']) * 1024)) lun = self.arid + '.' + out.split()[1] sz = int(out.split()[5]) LOG.debug(_("LUN %(lun)s of size %(sz)s MB is created.") % {'lun': lun, 'sz': sz}) return {'provider_location': lun} @utils.synchronized('hds_hus', external=True) def create_cloned_volume(self, dst, src): """Create a clone of a volume.""" if src['size'] != dst['size']: msg = 'clone volume size mismatch' raise exception.VolumeBackendAPIException(data=msg) service = self._get_service(dst) (_ip, _ipp, _ctl, _port, hdp) = service size = int(src['size']) * 1024 source_vol = self._id_to_vol(src['id']) (arid, slun) = _loc_info(source_vol['provider_location'])['id_lu'] out = self.bend.create_dup(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, slun, hdp, self.start, self.end, '%s' % (size)) lun = self.arid + '.' + out.split()[1] size = int(out.split()[5]) LOG.debug(_("LUN %(lun)s of size %(size)s MB is cloned.") % {'lun': lun, 'size': size}) return {'provider_location': lun} @utils.synchronized('hds_hus', external=True) def extend_volume(self, volume, new_size): """Extend an existing volume.""" (arid, lun) = _loc_info(volume['provider_location'])['id_lu'] out = self.bend.extend_vol(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, lun, '%s' % (new_size * 1024)) LOG.debug(_("LUN %(lun)s extended to %(size)s GB.") % {'lun': lun, 'size': new_size}) @utils.synchronized('hds_hus', external=True) def delete_volume(self, volume): """Delete an LU on HUS.""" prov_loc = volume['provider_location'] if prov_loc is None: return info = _loc_info(prov_loc) (arid, lun) = info['id_lu'] if 'tgt' in info.keys(): # connected? (_portal, iqn, loc, ctl, port) = info['tgt'] _out = self.bend.del_iscsi_conn(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, lun, ctl, port, iqn, '') name = self.hus_name LOG.debug(_("delete lun %(lun)s on %(name)s") % {'lun': lun, 'name': name}) _out = self.bend.delete_lu(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, lun) def remove_export(self, context, volume): """Disconnect a volume from an attached instance.""" return @utils.synchronized('hds_hus', external=True) def initialize_connection(self, volume, connector): """Map the created volume to connector['initiator'].""" service = self._get_service(volume) (ip, ipp, ctl, port, _hdp) = service info = _loc_info(volume['provider_location']) if 'tgt' in info.keys(): # spurious repeat connection return (arid, lun) = info['id_lu'] loc = arid + '.' + lun iqn = HI_IQN + connector['host'] out = self.bend.add_iscsi_conn(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, lun, ctl, port, iqn, connector['initiator']) hus_portal = ip + ':' + ipp tgt = hus_portal + ',' + iqn + ',' + loc + ',' + ctl + ',' + port properties = {} hlun = out.split()[1] properties['provider_location'] = tgt self._update_vol_location(volume['id'], tgt) properties['target_discovered'] = False properties['target_portal'] = hus_portal properties['target_iqn'] = iqn properties['target_lun'] = hlun properties['volume_id'] = volume['id'] return {'driver_volume_type': 'iscsi', 'data': properties} @utils.synchronized('hds_hus', external=True) def terminate_connection(self, volume, connector, **kwargs): """Terminate a connection to a volume.""" info = _loc_info(volume['provider_location']) if 'tgt' not in info.keys(): # spurious disconnection return (arid, lun) = info['id_lu'] (_portal, iqn, loc, ctl, port) = info['tgt'] _out = self.bend.del_iscsi_conn(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, lun, ctl, port, iqn, connector['initiator']) self._update_vol_location(volume['id'], loc) return {'provider_location': loc} @utils.synchronized('hds_hus', external=True) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from a snapshot.""" size = int(snapshot['volume_size']) * 1024 (arid, slun) = _loc_info(snapshot['provider_location'])['id_lu'] service = self._get_service(volume) (_ip, _ipp, _ctl, _port, hdp) = service out = self.bend.create_dup(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, slun, hdp, self.start, self.end, '%s' % (size)) lun = self.arid + '.' + out.split()[1] sz = int(out.split()[5]) LOG.debug(_("LUN %(lun)s of size %(sz)s MB is created from snapshot.") % {'lun': lun, 'sz': sz}) return {'provider_location': lun} @utils.synchronized('hds_hus', external=True) def create_snapshot(self, snapshot): """Create a snapshot.""" source_vol = self._id_to_vol(snapshot['volume_id']) size = int(snapshot['volume_size']) * 1024 (arid, slun) = _loc_info(source_vol['provider_location'])['id_lu'] out = self.bend.create_dup(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, slun, self.config['snapshot_hdp'], self.start, self.end, '%s' % (size)) lun = self.arid + '.' + out.split()[1] size = int(out.split()[5]) LOG.debug(_("LUN %(lun)s of size %(size)s MB is created as snapshot.") % {'lun': lun, 'size': size}) return {'provider_location': lun} @utils.synchronized('hds_hus', external=True) def delete_snapshot(self, snapshot): """Delete a snapshot.""" loc = snapshot['provider_location'] if loc is None: # to take care of spurious input return # which could cause exception. (arid, lun) = loc.split('.') _out = self.bend.delete_lu(self.config['hus_cmd'], HDS_VERSION, self.config['mgmt_ip0'], self.config['mgmt_ip1'], self.config['username'], self.config['password'], arid, lun) LOG.debug(_("LUN %s is deleted.") % lun) return @utils.synchronized('hds_hus', external=True) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh', run update the stats first.""" if refresh: self.driver_stats = self._get_stats() return self.driver_stats cinder-2014.1.5/cinder/volume/drivers/netapp/0000775000567000056700000000000012540643114022070 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/netapp/ssc_utils.py0000664000567000056700000006204512540642606024466 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Storage service catalog utility functions and classes for NetApp systems. """ import copy from threading import Timer from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import utils from cinder.volume import driver from cinder.volume.drivers.netapp import api from cinder.volume.drivers.netapp import utils as na_utils LOG = logging.getLogger(__name__) class NetAppVolume(object): """Represents a NetApp volume. Present attributes id - name, vserver, junction_path, type aggr - name, raid_type, ha_policy, disk_type sis - dedup, compression state - status, vserver_root, cluster_volume, inconsistent, invalid, junction_active qos - qos_policy_group space - space-guarantee-enabled, space-guarantee, thin_provisioned, size_avl_bytes, size_total_bytes mirror - mirrored i.e. dp mirror export - path """ def __init__(self, name, vserver=None): self.id = {} self.aggr = {} self.sis = {} self.state = {} self.qos = {} self.space = {} self.mirror = {} self.export = {} self.id['name'] = name self.id['vserver'] = vserver def __eq__(self, other): """Checks for equality.""" if (self.id['name'] == other.id['name'] and self.id['vserver'] == other.id['vserver']): return True def __hash__(self): """Computes hash for the object.""" return hash(self.id['name']) def __cmp__(self, other): """Implements comparison logic for volumes.""" self_size_avl = self.space.get('size_avl_bytes') other_size_avl = other.space.get('size_avl_bytes') if self_size_avl is None and other_size_avl is not None: return -1 elif self_size_avl is not None and other_size_avl is None: return 1 elif self_size_avl is None and other_size_avl is None: return 0 elif int(self_size_avl) < int(other_size_avl): return -1 elif int(self_size_avl) > int(other_size_avl): return 1 else: return 0 def __str__(self): """Returns human readable form for object.""" vol_str = "NetApp Volume id: %s, aggr: %s,"\ " space: %s, sis: %s, state: %s, qos: %s"\ % (self.id, self.aggr, self.space, self.sis, self.state, self.qos) return vol_str def get_cluster_vols_with_ssc(na_server, vserver, volume=None): """Gets ssc vols for cluster vserver.""" volumes = query_cluster_vols_for_ssc(na_server, vserver, volume) sis_vols = get_sis_vol_dict(na_server, vserver, volume) mirrored_vols = get_snapmirror_vol_dict(na_server, vserver, volume) aggrs = {} for vol in volumes: aggr_name = vol.aggr['name'] if aggr_name: if aggr_name in aggrs: aggr_attrs = aggrs[aggr_name] else: aggr_attrs = query_aggr_options(na_server, aggr_name) if aggr_attrs: eff_disk_type = query_aggr_storage_disk(na_server, aggr_name) aggr_attrs['disk_type'] = eff_disk_type aggrs[aggr_name] = aggr_attrs vol.aggr['raid_type'] = aggr_attrs.get('raid_type') vol.aggr['ha_policy'] = aggr_attrs.get('ha_policy') vol.aggr['disk_type'] = aggr_attrs.get('disk_type') if sis_vols: if vol.id['name'] in sis_vols: vol.sis['dedup'] = sis_vols[vol.id['name']]['dedup'] vol.sis['compression'] =\ sis_vols[vol.id['name']]['compression'] else: vol.sis['dedup'] = False vol.sis['compression'] = False if (vol.space['space-guarantee-enabled'] and (vol.space['space-guarantee'] == 'file' or vol.space['space-guarantee'] == 'volume')): vol.space['thin_provisioned'] = False else: vol.space['thin_provisioned'] = True if mirrored_vols: vol.mirror['mirrored'] = False if vol.id['name'] in mirrored_vols: for mirr_attrs in mirrored_vols[vol.id['name']]: if (mirr_attrs['rel_type'] == 'data_protection' and mirr_attrs['mirr_state'] == 'snapmirrored'): vol.mirror['mirrored'] = True break return volumes def query_cluster_vols_for_ssc(na_server, vserver, volume=None): """Queries cluster volumes for ssc.""" query = {'volume-attributes': None} volume_id = {'volume-id-attributes': {'owning-vserver-name': vserver}} if volume: volume_id['volume-id-attributes']['name'] = volume query['volume-attributes'] = volume_id des_attr = {'volume-attributes': ['volume-id-attributes', 'volume-space-attributes', 'volume-state-attributes', 'volume-qos-attributes']} result = na_utils.invoke_api(na_server, api_name='volume-get-iter', api_family='cm', query=query, des_result=des_attr, additional_elems=None, is_iter=True) vols = set() for res in result: records = res.get_child_content('num-records') if records > 0: attr_list = res.get_child_by_name('attributes-list') if attr_list: vol_attrs = attr_list.get_children() vols_found = create_vol_list(vol_attrs) vols.update(vols_found) return vols def create_vol_list(vol_attrs): """Creates vol list with features from attr list.""" vols = set() for v in vol_attrs: try: # name and vserver are mandatory # Absence will skip by giving KeyError. name = v['volume-id-attributes']['name'] vserver = v['volume-id-attributes']['owning-vserver-name'] vol = NetAppVolume(name, vserver) vol.id['type'] =\ v['volume-id-attributes'].get_child_content('type') if vol.id['type'] == "tmp": continue vol.id['junction_path'] =\ v['volume-id-attributes'].get_child_content('junction-path') # state attributes mandatory. vol.state['vserver_root'] =\ na_utils.to_bool( v['volume-state-attributes'].get_child_content( 'is-vserver-root')) if vol.state['vserver_root']: continue vol.state['status'] =\ v['volume-state-attributes'].get_child_content('state') vol.state['inconsistent'] =\ na_utils.to_bool( v['volume-state-attributes'].get_child_content( 'is-inconsistent')) vol.state['invalid'] =\ na_utils.to_bool( v['volume-state-attributes'].get_child_content( 'is-invalid')) vol.state['junction_active'] =\ na_utils.to_bool( v['volume-state-attributes'].get_child_content( 'is-junction-active')) vol.state['cluster_volume'] =\ na_utils.to_bool( v['volume-state-attributes'].get_child_content( 'is-cluster-volume')) if (vol.state['status'] != 'online' or vol.state['inconsistent'] or vol.state['invalid']): # offline, invalid and inconsistent volumes are not usable continue # aggr attributes mandatory. vol.aggr['name'] =\ v['volume-id-attributes']['containing-aggregate-name'] # space attributes mandatory. vol.space['size_avl_bytes'] =\ v['volume-space-attributes']['size-available'] vol.space['size_total_bytes'] =\ v['volume-space-attributes']['size-total'] vol.space['space-guarantee-enabled'] =\ na_utils.to_bool( v['volume-space-attributes'].get_child_content( 'is-space-guarantee-enabled')) vol.space['space-guarantee'] =\ v['volume-space-attributes'].get_child_content( 'space-guarantee') # qos attributes optional. if v.get_child_by_name('volume-qos-attributes'): vol.qos['qos_policy_group'] =\ v['volume-qos-attributes'].get_child_content( 'policy-group-name') else: vol.qos['qos_policy_group'] = None vols.add(vol) except KeyError as e: LOG.debug(_('Unexpected error while creating' ' ssc vol list. Message - %s') % (e.message)) continue return vols def query_aggr_options(na_server, aggr_name): """Queries cluster aggr for attributes. Currently queries for raid and ha-policy. """ add_elems = {'aggregate': aggr_name} attrs = {} try: result = na_utils.invoke_api(na_server, api_name='aggr-options-list-info', api_family='cm', query=None, des_result=None, additional_elems=add_elems, is_iter=False) for res in result: options = res.get_child_by_name('options') if options: op_list = options.get_children() for op in op_list: if op.get_child_content('name') == 'ha_policy': attrs['ha_policy'] = op.get_child_content('value') if op.get_child_content('name') == 'raidtype': attrs['raid_type'] = op.get_child_content('value') except Exception as e: LOG.debug(_("Exception querying aggr options. %s"), e) return attrs def get_sis_vol_dict(na_server, vserver, volume=None): """Queries sis for volumes. If volume is present sis is queried for it. Records dedup and compression enabled. """ sis_vols = {} query_attr = {'vserver': vserver} if volume: vol_path = '/vol/%s' % (volume) query_attr['path'] = vol_path query = {'sis-status-info': query_attr} try: result = na_utils.invoke_api(na_server, api_name='sis-get-iter', api_family='cm', query=query, is_iter=True) for res in result: attr_list = res.get_child_by_name('attributes-list') if attr_list: sis_status = attr_list.get_children() for sis in sis_status: path = sis.get_child_content('path') if not path: continue (___, __, vol) = path.rpartition('/') if not vol: continue v_sis = {} v_sis['compression'] = na_utils.to_bool( sis.get_child_content('is-compression-enabled')) v_sis['dedup'] = na_utils.to_bool( sis.get_child_content('state')) sis_vols[vol] = v_sis except Exception as e: LOG.debug(_("Exception querying sis information. %s"), e) return sis_vols def get_snapmirror_vol_dict(na_server, vserver, volume=None): """Queries snapmirror volumes.""" mirrored_vols = {} query_attr = {'source-vserver': vserver} if volume: query_attr['source-volume'] = volume query = {'snapmirror-info': query_attr} try: result = na_utils.invoke_api(na_server, api_name='snapmirror-get-iter', api_family='cm', query=query, is_iter=True) for res in result: attr_list = res.get_child_by_name('attributes-list') if attr_list: snap_info = attr_list.get_children() for snap in snap_info: src_volume = snap.get_child_content('source-volume') v_snap = {} v_snap['dest_loc'] =\ snap.get_child_content('destination-location') v_snap['rel_type'] =\ snap.get_child_content('relationship-type') v_snap['mirr_state'] =\ snap.get_child_content('mirror-state') if mirrored_vols.get(src_volume): mirrored_vols.get(src_volume).append(v_snap) else: mirrored_vols[src_volume] = [v_snap] except Exception as e: LOG.debug(_("Exception querying mirror information. %s"), e) return mirrored_vols def query_aggr_storage_disk(na_server, aggr): """Queries for storage disks associated to an aggregate.""" query = {'storage-disk-info': {'disk-raid-info': {'disk-aggregate-info': {'aggregate-name': aggr}}}} des_attr = {'storage-disk-info': {'disk-raid-info': ['effective-disk-type']}} try: result = na_utils.invoke_api(na_server, api_name='storage-disk-get-iter', api_family='cm', query=query, des_result=des_attr, additional_elems=None, is_iter=True) for res in result: attr_list = res.get_child_by_name('attributes-list') if attr_list: storage_disks = attr_list.get_children() for disk in storage_disks: raid_info = disk.get_child_by_name('disk-raid-info') if raid_info: eff_disk_type =\ raid_info.get_child_content('effective-disk-type') if eff_disk_type: return eff_disk_type else: continue except Exception as e: LOG.debug(_("Exception querying storage disk. %s"), e) return 'unknown' def get_cluster_ssc(na_server, vserver): """Provides cluster volumes with ssc.""" netapp_volumes = get_cluster_vols_with_ssc(na_server, vserver) mirror_vols = set() dedup_vols = set() compress_vols = set() thin_prov_vols = set() ssc_map = {'mirrored': mirror_vols, 'dedup': dedup_vols, 'compression': compress_vols, 'thin': thin_prov_vols, 'all': netapp_volumes} for vol in netapp_volumes: if vol.sis.get('dedup'): dedup_vols.add(vol) if vol.sis.get('compression'): compress_vols.add(vol) if vol.mirror.get('mirrored'): mirror_vols.add(vol) if vol.space.get('thin_provisioned'): thin_prov_vols.add(vol) return ssc_map def refresh_cluster_stale_ssc(*args, **kwargs): """Refreshes stale ssc volumes with latest.""" backend = args[0] na_server = args[1] vserver = args[2] identity = str(id(backend)) lock_pr = '%s_%s' % ('refresh_ssc', identity) try: job_set = na_utils.set_safe_attr( backend, 'refresh_stale_running', True) if not job_set: return @utils.synchronized(lock_pr) def refresh_stale_ssc(): stale_vols = backend._update_stale_vols(reset=True) LOG.info(_('Running stale ssc refresh job for %(server)s' ' and vserver %(vs)s') % {'server': na_server, 'vs': vserver}) # refreshing single volumes can create inconsistency # hence doing manipulations on copy ssc_vols_copy = copy.deepcopy(backend.ssc_vols) refresh_vols = set() expired_vols = set() for vol in stale_vols: name = vol.id['name'] res = get_cluster_vols_with_ssc(na_server, vserver, name) if res: refresh_vols.add(res.pop()) else: expired_vols.add(vol) for vol in refresh_vols: for k in ssc_vols_copy: vol_set = ssc_vols_copy[k] vol_set.discard(vol) if k == "mirrored" and vol.mirror.get('mirrored'): vol_set.add(vol) if k == "dedup" and vol.sis.get('dedup'): vol_set.add(vol) if k == "compression" and vol.sis.get('compression'): vol_set.add(vol) if k == "thin" and vol.space.get('thin_provisioned'): vol_set.add(vol) if k == "all": vol_set.add(vol) for vol in expired_vols: for k in ssc_vols_copy: vol_set = ssc_vols_copy[k] vol_set.discard(vol) backend.refresh_ssc_vols(ssc_vols_copy) LOG.info(_('Successfully completed stale refresh job for' ' %(server)s and vserver %(vs)s') % {'server': na_server, 'vs': vserver}) refresh_stale_ssc() finally: na_utils.set_safe_attr(backend, 'refresh_stale_running', False) def get_cluster_latest_ssc(*args, **kwargs): """Updates volumes including ssc.""" backend = args[0] na_server = args[1] vserver = args[2] identity = str(id(backend)) lock_pr = '%s_%s' % ('refresh_ssc', identity) # As this depends on stale job running state # set flag as soon as job starts to avoid # job accumulation. try: job_set = na_utils.set_safe_attr(backend, 'ssc_job_running', True) if not job_set: return @utils.synchronized(lock_pr) def get_latest_ssc(): LOG.info(_('Running cluster latest ssc job for %(server)s' ' and vserver %(vs)s') % {'server': na_server, 'vs': vserver}) ssc_vols = get_cluster_ssc(na_server, vserver) backend.refresh_ssc_vols(ssc_vols) backend.ssc_run_time = timeutils.utcnow() LOG.info(_('Successfully completed ssc job for %(server)s' ' and vserver %(vs)s') % {'server': na_server, 'vs': vserver}) get_latest_ssc() finally: na_utils.set_safe_attr(backend, 'ssc_job_running', False) def refresh_cluster_ssc(backend, na_server, vserver, synchronous=False): """Refresh cluster ssc for backend.""" if not isinstance(backend, driver.VolumeDriver): raise exception.InvalidInput(reason=_("Backend not a VolumeDriver.")) if not isinstance(na_server, api.NaServer): raise exception.InvalidInput(reason=_("Backend server not NaServer.")) delta_secs = getattr(backend, 'ssc_run_delta_secs', 1800) if getattr(backend, 'ssc_job_running', None): LOG.warn(_('ssc job in progress. Returning... ')) return elif (getattr(backend, 'ssc_run_time', None) is None or (backend.ssc_run_time and timeutils.is_newer_than(backend.ssc_run_time, delta_secs))): if synchronous: get_cluster_latest_ssc(backend, na_server, vserver) else: t = Timer(0, get_cluster_latest_ssc, args=[backend, na_server, vserver]) t.start() elif getattr(backend, 'refresh_stale_running', None): LOG.warn(_('refresh stale ssc job in progress. Returning... ')) return else: if backend.stale_vols: if synchronous: refresh_cluster_stale_ssc(backend, na_server, vserver) else: t = Timer(0, refresh_cluster_stale_ssc, args=[backend, na_server, vserver]) t.start() def get_volumes_for_specs(ssc_vols, specs): """Shortlists volumes for extra specs provided.""" if specs is None or not isinstance(specs, dict): return ssc_vols['all'] result = copy.deepcopy(ssc_vols['all']) raid_type = specs.get('netapp:raid_type') disk_type = specs.get('netapp:disk_type') bool_specs_list = ['netapp_mirrored', 'netapp_unmirrored', 'netapp_dedup', 'netapp_nodedup', 'netapp_compression', 'netapp_nocompression', 'netapp_thin_provisioned', 'netapp_thick_provisioned'] b_specs = {} for spec in bool_specs_list: b_specs[spec] = na_utils.to_bool(specs.get(spec))\ if specs.get(spec) else None def _spec_ineffect(b_specs, spec, opp_spec): """If the spec with opposite spec is ineffective.""" if ((b_specs[spec] is None and b_specs[opp_spec] is None) or (b_specs[spec] == b_specs[opp_spec])): return True else: return False if _spec_ineffect(b_specs, 'netapp_mirrored', 'netapp_unmirrored'): pass else: if b_specs['netapp_mirrored'] or b_specs['netapp_unmirrored'] is False: result = result & ssc_vols['mirrored'] else: result = result - ssc_vols['mirrored'] if _spec_ineffect(b_specs, 'netapp_dedup', 'netapp_nodedup'): pass else: if b_specs['netapp_dedup'] or b_specs['netapp_nodedup'] is False: result = result & ssc_vols['dedup'] else: result = result - ssc_vols['dedup'] if _spec_ineffect(b_specs, 'netapp_compression', 'netapp_nocompression'): pass else: if (b_specs['netapp_compression'] or b_specs['netapp_nocompression'] is False): result = result & ssc_vols['compression'] else: result = result - ssc_vols['compression'] if _spec_ineffect(b_specs, 'netapp_thin_provisioned', 'netapp_thick_provisioned'): pass else: if (b_specs['netapp_thin_provisioned'] or b_specs['netapp_thick_provisioned'] is False): result = result & ssc_vols['thin'] else: result = result - ssc_vols['thin'] if raid_type or disk_type: tmp = copy.deepcopy(result) for vol in tmp: if raid_type: vol_raid = vol.aggr['raid_type'] vol_raid = vol_raid.lower() if vol_raid else None if raid_type.lower() != vol_raid: result.discard(vol) if disk_type: vol_dtype = vol.aggr['disk_type'] vol_dtype = vol_dtype.lower() if vol_dtype else None if disk_type.lower() != vol_dtype: result.discard(vol) return result def check_ssc_api_permissions(na_server): """Checks backend ssc api permissions for the user.""" api_map = {'storage-disk-get-iter': ['netapp:disk_type'], 'snapmirror-get-iter': ['netapp_mirrored', 'netapp_unmirrored'], 'sis-get-iter': ['netapp_dedup', 'netapp_nodedup', 'netapp_compression', 'netapp_nocompression'], 'aggr-options-list-info': ['netapp:raid_type'], 'volume-get-iter': []} failed_apis = na_utils.check_apis_on_cluster(na_server, api_map.keys()) if failed_apis: if 'volume-get-iter' in failed_apis: msg = _("Fatal error: User not permitted" " to query NetApp volumes.") raise exception.VolumeBackendAPIException(data=msg) else: unsupp_ssc_features = [] for fail in failed_apis: unsupp_ssc_features.extend(api_map[fail]) LOG.warn(_("The user does not have access or sufficient" " privileges to use all netapp apis. The following" " extra_specs will fail or be ignored: %s"), unsupp_ssc_features) cinder-2014.1.5/cinder/volume/drivers/netapp/iscsi.py0000664000567000056700000020243412540642606023566 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Volume driver for NetApp iSCSI storage systems. This driver requires NetApp Clustered Data ONTAP or 7-mode storage systems with installed iSCSI licenses. """ import copy import math import sys import time import uuid from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import units from cinder import utils from cinder.volume import driver from cinder.volume.drivers.netapp.api import NaApiError from cinder.volume.drivers.netapp.api import NaElement from cinder.volume.drivers.netapp.api import NaServer from cinder.volume.drivers.netapp.options import netapp_7mode_opts from cinder.volume.drivers.netapp.options import netapp_basicauth_opts from cinder.volume.drivers.netapp.options import netapp_cluster_opts from cinder.volume.drivers.netapp.options import netapp_connection_opts from cinder.volume.drivers.netapp.options import netapp_provisioning_opts from cinder.volume.drivers.netapp.options import netapp_transport_opts from cinder.volume.drivers.netapp import ssc_utils from cinder.volume.drivers.netapp.utils import get_volume_extra_specs from cinder.volume.drivers.netapp.utils import provide_ems from cinder.volume.drivers.netapp.utils import set_safe_attr from cinder.volume.drivers.netapp.utils import validate_instantiation LOG = logging.getLogger(__name__) class NetAppLun(object): """Represents a LUN on NetApp storage.""" def __init__(self, handle, name, size, metadata_dict): self.handle = handle self.name = name self.size = size self.metadata = metadata_dict or {} def get_metadata_property(self, prop): """Get the metadata property of a LUN.""" if prop in self.metadata: return self.metadata[prop] name = self.name msg = _("No metadata property %(prop)s defined for the" " LUN %(name)s") msg_fmt = {'prop': prop, 'name': name} LOG.debug(msg % msg_fmt) def __str__(self, *args, **kwargs): return 'NetApp Lun[handle:%s, name:%s, size:%s, metadata:%s]'\ % (self.handle, self.name, self.size, self.metadata) class NetAppDirectISCSIDriver(driver.ISCSIDriver): """NetApp Direct iSCSI volume driver.""" # do not increment this as it may be used in volume type definitions VERSION = "1.0.0" IGROUP_PREFIX = 'openstack-' required_flags = ['netapp_transport_type', 'netapp_login', 'netapp_password', 'netapp_server_hostname', 'netapp_server_port'] def __init__(self, *args, **kwargs): self._app_version = kwargs.pop("app_version", "unknown") super(NetAppDirectISCSIDriver, self).__init__(*args, **kwargs) validate_instantiation(**kwargs) self.configuration.append_config_values(netapp_connection_opts) self.configuration.append_config_values(netapp_basicauth_opts) self.configuration.append_config_values(netapp_transport_opts) self.configuration.append_config_values(netapp_provisioning_opts) self.lun_table = {} def _create_client(self, **kwargs): """Instantiate a client for NetApp server. This method creates NetApp server client for api communication. """ host_filer = kwargs['hostname'] LOG.debug(_('Using NetApp filer: %s') % host_filer) self.client = NaServer(host=host_filer, server_type=NaServer.SERVER_TYPE_FILER, transport_type=kwargs['transport_type'], style=NaServer.STYLE_LOGIN_PASSWORD, username=kwargs['login'], password=kwargs['password']) def _do_custom_setup(self): """Does custom setup depending on the type of filer.""" raise NotImplementedError() def _check_flags(self): """Ensure that the flags we care about are set.""" required_flags = self.required_flags for flag in required_flags: if not getattr(self.configuration, flag, None): msg = _('%s is not set') % flag raise exception.InvalidInput(reason=msg) def do_setup(self, context): """Setup the NetApp Volume driver. Called one time by the manager after the driver is loaded. Validate the flags we care about and setup NetApp client. """ self._check_flags() self._create_client( transport_type=self.configuration.netapp_transport_type, login=self.configuration.netapp_login, password=self.configuration.netapp_password, hostname=self.configuration.netapp_server_hostname, port=self.configuration.netapp_server_port) self._do_custom_setup() def check_for_setup_error(self): """Check that the driver is working and can communicate. Discovers the LUNs on the NetApp server. """ self.lun_table = {} self._get_lun_list() LOG.debug(_("Success getting LUN list from server")) def create_volume(self, volume): """Driver entry point for creating a new volume.""" default_size = '104857600' # 100 MB gigabytes = 1073741824L # 2^30 name = volume['name'] if int(volume['size']) == 0: size = default_size else: size = str(int(volume['size']) * gigabytes) metadata = {} metadata['OsType'] = 'linux' metadata['SpaceReserved'] = 'true' extra_specs = get_volume_extra_specs(volume) self._create_lun_on_eligible_vol(name, size, metadata, extra_specs) LOG.debug(_("Created LUN with name %s") % name) handle = self._create_lun_handle(metadata) self._add_lun_to_table(NetAppLun(handle, name, size, metadata)) def delete_volume(self, volume): """Driver entry point for destroying existing volumes.""" name = volume['name'] metadata = self._get_lun_attr(name, 'metadata') if not metadata: msg = _("No entry in LUN table for volume/snapshot %(name)s.") msg_fmt = {'name': name} LOG.warn(msg % msg_fmt) return self._destroy_lun(metadata['Path']) self.lun_table.pop(name) def _destroy_lun(self, path, force=True): """Destroys the lun at the path.""" lun_destroy = NaElement.create_node_with_children( 'lun-destroy', **{'path': path}) if force: lun_destroy.add_new_child('force', 'true') self.client.invoke_successfully(lun_destroy, True) seg = path.split("/") LOG.debug(_("Destroyed LUN %s") % seg[-1]) def ensure_export(self, context, volume): """Driver entry point to get the export info for an existing volume.""" handle = self._get_lun_attr(volume['name'], 'handle') return {'provider_location': handle} def create_export(self, context, volume): """Driver entry point to get the export info for a new volume.""" handle = self._get_lun_attr(volume['name'], 'handle') return {'provider_location': handle} def remove_export(self, context, volume): """Driver entry point to remove an export for a volume. Since exporting is idempotent in this driver, we have nothing to do for unexporting. """ pass def initialize_connection(self, volume, connector): """Driver entry point to attach a volume to an instance. Do the LUN masking on the storage system so the initiator can access the LUN on the target. Also return the iSCSI properties so the initiator can find the LUN. This implementation does not call _get_iscsi_properties() to get the properties because cannot store the LUN number in the database. We only find out what the LUN number will be during this method call so we construct the properties dictionary ourselves. """ initiator_name = connector['initiator'] name = volume['name'] lun_id = self._map_lun(name, initiator_name, 'iscsi', None) msg = _("Mapped LUN %(name)s to the initiator %(initiator_name)s") msg_fmt = {'name': name, 'initiator_name': initiator_name} LOG.debug(msg % msg_fmt) iqn = self._get_iscsi_service_details() target_details_list = self._get_target_details() msg = _("Successfully fetched target details for LUN %(name)s and " "initiator %(initiator_name)s") msg_fmt = {'name': name, 'initiator_name': initiator_name} LOG.debug(msg % msg_fmt) if not target_details_list: msg = _('Failed to get LUN target details for the LUN %s') raise exception.VolumeBackendAPIException(data=msg % name) target_details = None for tgt_detail in target_details_list: if tgt_detail.get('interface-enabled', 'true') == 'true': target_details = tgt_detail break if not target_details: target_details = target_details_list[0] if not target_details['address'] and target_details['port']: msg = _('Failed to get target portal for the LUN %s') raise exception.VolumeBackendAPIException(data=msg % name) if not iqn: msg = _('Failed to get target IQN for the LUN %s') raise exception.VolumeBackendAPIException(data=msg % name) properties = {} properties['target_discovered'] = False (address, port) = (target_details['address'], target_details['port']) properties['target_portal'] = '%s:%s' % (address, port) properties['target_iqn'] = iqn properties['target_lun'] = lun_id properties['volume_id'] = volume['id'] auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret return { 'driver_volume_type': 'iscsi', 'data': properties, } def create_snapshot(self, snapshot): """Driver entry point for creating a snapshot. This driver implements snapshots by using efficient single-file (LUN) cloning. """ vol_name = snapshot['volume_name'] snapshot_name = snapshot['name'] lun = self.lun_table[vol_name] self._clone_lun(lun.name, snapshot_name, 'false') def delete_snapshot(self, snapshot): """Driver entry point for deleting a snapshot.""" self.delete_volume(snapshot) LOG.debug(_("Snapshot %s deletion successful") % snapshot['name']) def create_volume_from_snapshot(self, volume, snapshot): """Driver entry point for creating a new volume from a snapshot. Many would call this "cloning" and in fact we use cloning to implement this feature. """ vol_size = volume['size'] snap_size = snapshot['volume_size'] snapshot_name = snapshot['name'] new_name = volume['name'] self._clone_lun(snapshot_name, new_name, 'true') if vol_size != snap_size: try: self.extend_volume(volume, volume['size']) except Exception: with excutils.save_and_reraise_exception(): LOG.error( _("Resizing %s failed. Cleaning volume."), new_name) self.delete_volume(volume) def terminate_connection(self, volume, connector, **kwargs): """Driver entry point to unattach a volume from an instance. Unmask the LUN on the storage system so the given initiator can no longer access it. """ initiator_name = connector['initiator'] name = volume['name'] metadata = self._get_lun_attr(name, 'metadata') path = metadata['Path'] self._unmap_lun(path, initiator_name) msg = _("Unmapped LUN %(name)s from the initiator " "%(initiator_name)s") msg_fmt = {'name': name, 'initiator_name': initiator_name} LOG.debug(msg % msg_fmt) def _get_ontapi_version(self): """Gets the supported ontapi version.""" ontapi_version = NaElement('system-get-ontapi-version') res = self.client.invoke_successfully(ontapi_version, False) major = res.get_child_content('major-version') minor = res.get_child_content('minor-version') return (major, minor) def _create_lun_on_eligible_vol(self, name, size, metadata, extra_specs=None): """Creates an actual lun on filer.""" raise NotImplementedError() def create_lun(self, volume, lun, size, metadata, qos_policy_group=None): """Issues api request for creating lun on volume.""" path = '/vol/%s/%s' % (volume, lun) lun_create = NaElement.create_node_with_children( 'lun-create-by-size', **{'path': path, 'size': size, 'ostype': metadata['OsType'], 'space-reservation-enabled': metadata['SpaceReserved']}) if qos_policy_group: lun_create.add_new_child('qos-policy-group', qos_policy_group) self.client.invoke_successfully(lun_create, True) def _get_iscsi_service_details(self): """Returns iscsi iqn.""" raise NotImplementedError() def _get_target_details(self): """Gets the target portal details.""" raise NotImplementedError() def _create_lun_handle(self, metadata): """Returns lun handle based on filer type.""" raise NotImplementedError() def _get_lun_list(self): """Gets the list of luns on filer.""" raise NotImplementedError() def _extract_and_populate_luns(self, api_luns): """Extracts the luns from api. Populates in the lun table. """ for lun in api_luns: meta_dict = self._create_lun_meta(lun) path = lun.get_child_content('path') (rest, splitter, name) = path.rpartition('/') handle = self._create_lun_handle(meta_dict) size = lun.get_child_content('size') discovered_lun = NetAppLun(handle, name, size, meta_dict) self._add_lun_to_table(discovered_lun) def _is_naelement(self, elem): """Checks if element is NetApp element.""" if not isinstance(elem, NaElement): raise ValueError('Expects NaElement') def _map_lun(self, name, initiator, initiator_type='iscsi', lun_id=None): """Maps lun to the initiator and returns lun id assigned.""" metadata = self._get_lun_attr(name, 'metadata') os = metadata['OsType'] path = metadata['Path'] if self._check_allowed_os(os): os = os else: os = 'default' igroup_name = self._get_or_create_igroup(initiator, initiator_type, os) lun_map = NaElement.create_node_with_children( 'lun-map', **{'path': path, 'initiator-group': igroup_name}) if lun_id: lun_map.add_new_child('lun-id', lun_id) try: result = self.client.invoke_successfully(lun_map, True) return result.get_child_content('lun-id-assigned') except NaApiError as e: code = e.code message = e.message msg = _('Error mapping lun. Code :%(code)s, Message:%(message)s') msg_fmt = {'code': code, 'message': message} exc_info = sys.exc_info() LOG.warn(msg % msg_fmt) (igroup, lun_id) = self._find_mapped_lun_igroup(path, initiator) if lun_id is not None: return lun_id else: raise exc_info[0], exc_info[1], exc_info[2] def _unmap_lun(self, path, initiator): """Unmaps a lun from given initiator.""" (igroup_name, lun_id) = self._find_mapped_lun_igroup(path, initiator) lun_unmap = NaElement.create_node_with_children( 'lun-unmap', **{'path': path, 'initiator-group': igroup_name}) try: self.client.invoke_successfully(lun_unmap, True) except NaApiError as e: msg = _("Error unmapping lun. Code :%(code)s," " Message:%(message)s") msg_fmt = {'code': e.code, 'message': e.message} exc_info = sys.exc_info() LOG.warn(msg % msg_fmt) # if the lun is already unmapped if e.code == '13115' or e.code == '9016': pass else: raise exc_info[0], exc_info[1], exc_info[2] def _find_mapped_lun_igroup(self, path, initiator, os=None): """Find the igroup for mapped lun with initiator.""" raise NotImplementedError() def _get_or_create_igroup(self, initiator, initiator_type='iscsi', os='default'): """Checks for an igroup for an initiator. Creates igroup if not found. """ igroups = self._get_igroup_by_initiator(initiator=initiator) igroup_name = None for igroup in igroups: if igroup['initiator-group-os-type'] == os: if igroup['initiator-group-type'] == initiator_type or \ igroup['initiator-group-type'] == 'mixed': if igroup['initiator-group-name'].startswith( self.IGROUP_PREFIX): igroup_name = igroup['initiator-group-name'] break if not igroup_name: igroup_name = self.IGROUP_PREFIX + str(uuid.uuid4()) self._create_igroup(igroup_name, initiator_type, os) self._add_igroup_initiator(igroup_name, initiator) return igroup_name def _get_igroup_by_initiator(self, initiator): """Get igroups by initiator.""" raise NotImplementedError() def _check_allowed_os(self, os): """Checks if the os type supplied is NetApp supported.""" if os in ['linux', 'aix', 'hpux', 'windows', 'solaris', 'netware', 'vmware', 'openvms', 'xen', 'hyper_v']: return True else: return False def _create_igroup(self, igroup, igroup_type='iscsi', os_type='default'): """Creates igroup with specified args.""" igroup_create = NaElement.create_node_with_children( 'igroup-create', **{'initiator-group-name': igroup, 'initiator-group-type': igroup_type, 'os-type': os_type}) self.client.invoke_successfully(igroup_create, True) def _add_igroup_initiator(self, igroup, initiator): """Adds initiators to the specified igroup.""" igroup_add = NaElement.create_node_with_children( 'igroup-add', **{'initiator-group-name': igroup, 'initiator': initiator}) self.client.invoke_successfully(igroup_add, True) def _add_lun_to_table(self, lun): """Adds LUN to cache table.""" if not isinstance(lun, NetAppLun): msg = _("Object is not a NetApp LUN.") raise exception.VolumeBackendAPIException(data=msg) self.lun_table[lun.name] = lun def _get_lun_from_table(self, name): """Gets LUN from cache table. Refreshes cache if lun not found in cache. """ lun = self.lun_table.get(name) if lun is None: self._get_lun_list() lun = self.lun_table.get(name) if lun is None: raise exception.VolumeNotFound(volume_id=name) return lun def _clone_lun(self, name, new_name, space_reserved='true', src_block=0, dest_block=0, block_count=0): """Clone LUN with the given name to the new name.""" raise NotImplementedError() def _get_lun_by_args(self, **args): """Retrieves luns with specified args.""" raise NotImplementedError() def _get_lun_attr(self, name, attr): """Get the lun attribute if found else None.""" try: attr = getattr(self._get_lun_from_table(name), attr) return attr except exception.VolumeNotFound as e: LOG.error(_("Message: %s"), e.msg) except Exception as e: LOG.error(_("Error getting lun attribute. Exception: %s"), e.__str__()) return None def _create_lun_meta(self, lun): raise NotImplementedError() def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" vol_size = volume['size'] src_vol = self.lun_table[src_vref['name']] src_vol_size = src_vref['size'] new_name = volume['name'] self._clone_lun(src_vol.name, new_name, 'true') if vol_size != src_vol_size: try: self.extend_volume(volume, volume['size']) except Exception: with excutils.save_and_reraise_exception(): LOG.error( _("Resizing %s failed. Cleaning volume."), new_name) self.delete_volume(volume) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" raise NotImplementedError() def extend_volume(self, volume, new_size): """Extend an existing volume to the new size.""" name = volume['name'] path = self.lun_table[name].metadata['Path'] curr_size_bytes = str(self.lun_table[name].size) new_size_bytes = str(int(new_size) * units.GiB) # Reused by clone scenarios. # Hence comparing the stored size. if curr_size_bytes != new_size_bytes: lun_geometry = self._get_lun_geometry(path) if (lun_geometry and lun_geometry.get("max_resize") and int(lun_geometry.get("max_resize")) >= int(new_size_bytes)): self._do_direct_resize(path, new_size_bytes) else: self._do_sub_clone_resize(path, new_size_bytes) self.lun_table[name].size = new_size_bytes else: LOG.info(_("No need to extend volume %s" " as it is already the requested new size."), name) def _do_direct_resize(self, path, new_size_bytes, force=True): """Uses the resize api to resize the lun.""" seg = path.split("/") LOG.info(_("Resizing lun %s directly to new size."), seg[-1]) lun_resize = NaElement("lun-resize") lun_resize.add_new_child('path', path) lun_resize.add_new_child('size', new_size_bytes) if force: lun_resize.add_new_child('force', 'true') self.client.invoke_successfully(lun_resize, True) def _get_lun_geometry(self, path): """Gets the lun geometry.""" geometry = {} lun_geo = NaElement("lun-get-geometry") lun_geo.add_new_child('path', path) try: result = self.client.invoke_successfully(lun_geo, True) geometry['size'] = result.get_child_content("size") geometry['bytes_per_sector'] =\ result.get_child_content("bytes-per-sector") geometry['sectors_per_track'] =\ result.get_child_content("sectors-per-track") geometry['tracks_per_cylinder'] =\ result.get_child_content("tracks-per-cylinder") geometry['cylinders'] =\ result.get_child_content("cylinders") geometry['max_resize'] =\ result.get_child_content("max-resize-size") except Exception as e: LOG.error(_("Lun %(path)s geometry failed. Message - %(msg)s") % {'path': path, 'msg': e.message}) return geometry def _get_volume_options(self, volume_name): """Get the value for the volume option.""" opts = [] vol_option_list = NaElement("volume-options-list-info") vol_option_list.add_new_child('volume', volume_name) result = self.client.invoke_successfully(vol_option_list, True) options = result.get_child_by_name("options") if options: opts = options.get_children() return opts def _get_vol_option(self, volume_name, option_name): """Get the value for the volume option.""" value = None options = self._get_volume_options(volume_name) for opt in options: if opt.get_child_content('name') == option_name: value = opt.get_child_content('value') break return value def _move_lun(self, path, new_path): """Moves the lun at path to new path.""" seg = path.split("/") new_seg = new_path.split("/") LOG.debug(_("Moving lun %(name)s to %(new_name)s.") % {'name': seg[-1], 'new_name': new_seg[-1]}) lun_move = NaElement("lun-move") lun_move.add_new_child("path", path) lun_move.add_new_child("new-path", new_path) self.client.invoke_successfully(lun_move, True) def _do_sub_clone_resize(self, path, new_size_bytes): """Does sub lun clone after verification. Clones the block ranges and swaps the luns also deletes older lun after a successful clone. """ seg = path.split("/") LOG.info(_("Resizing lun %s using sub clone to new size."), seg[-1]) name = seg[-1] vol_name = seg[2] lun = self.lun_table[name] metadata = lun.metadata compression = self._get_vol_option(vol_name, 'compression') if compression == "on": msg = _('%s cannot be sub clone resized' ' as it is hosted on compressed volume') raise exception.VolumeBackendAPIException(data=msg % name) else: block_count = self._get_lun_block_count(path) if block_count == 0: msg = _('%s cannot be sub clone resized' ' as it contains no blocks.') raise exception.VolumeBackendAPIException(data=msg % name) new_lun = 'new-%s' % (name) self.create_lun(vol_name, new_lun, new_size_bytes, metadata) try: self._clone_lun(name, new_lun, block_count=block_count) self._post_sub_clone_resize(path) except Exception: with excutils.save_and_reraise_exception(): new_path = '/vol/%s/%s' % (vol_name, new_lun) self._destroy_lun(new_path) def _post_sub_clone_resize(self, path): """Try post sub clone resize in a transactional manner.""" st_tm_mv, st_nw_mv, st_del_old = None, None, None seg = path.split("/") LOG.info(_("Post clone resize lun %s"), seg[-1]) new_lun = 'new-%s' % (seg[-1]) tmp_lun = 'tmp-%s' % (seg[-1]) tmp_path = "/vol/%s/%s" % (seg[2], tmp_lun) new_path = "/vol/%s/%s" % (seg[2], new_lun) try: st_tm_mv = self._move_lun(path, tmp_path) st_nw_mv = self._move_lun(new_path, path) st_del_old = self._destroy_lun(tmp_path) except Exception as e: if st_tm_mv is None: msg = _("Failure staging lun %s to tmp.") raise exception.VolumeBackendAPIException(data=msg % (seg[-1])) else: if st_nw_mv is None: self._move_lun(tmp_path, path) msg = _("Failure moving new cloned lun to %s.") raise exception.VolumeBackendAPIException( data=msg % (seg[-1])) elif st_del_old is None: LOG.error(_("Failure deleting staged tmp lun %s."), tmp_lun) else: LOG.error(_("Unknown exception in" " post clone resize lun %s."), seg[-1]) LOG.error(_("Exception details: %s") % (e.__str__())) def _get_lun_block_count(self, path): """Gets block counts for the lun.""" LOG.debug(_("Getting lun block count.")) block_count = 0 lun_infos = self._get_lun_by_args(path=path) if not lun_infos: seg = path.split('/') msg = _('Failure getting lun info for %s.') raise exception.VolumeBackendAPIException(data=msg % seg[-1]) lun_info = lun_infos[-1] bs = int(lun_info.get_child_content('block-size')) ls = int(lun_info.get_child_content('size')) block_count = ls / bs return block_count class NetAppDirectCmodeISCSIDriver(NetAppDirectISCSIDriver): """NetApp C-mode iSCSI volume driver.""" DEFAULT_VS = 'openstack' def __init__(self, *args, **kwargs): super(NetAppDirectCmodeISCSIDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(netapp_cluster_opts) def _do_custom_setup(self): """Does custom setup for ontap cluster.""" self.vserver = self.configuration.netapp_vserver self.vserver = self.vserver if self.vserver else self.DEFAULT_VS # We set vserver in client permanently. # To use tunneling enable_tunneling while invoking api self.client.set_vserver(self.vserver) # Default values to run first api self.client.set_api_version(1, 15) (major, minor) = self._get_ontapi_version() self.client.set_api_version(major, minor) self.ssc_vols = None self.stale_vols = set() def check_for_setup_error(self): """Check that the driver is working and can communicate.""" ssc_utils.check_ssc_api_permissions(self.client) super(NetAppDirectCmodeISCSIDriver, self).check_for_setup_error() def _create_lun_on_eligible_vol(self, name, size, metadata, extra_specs=None): """Creates an actual lun on filer.""" req_size = float(size) *\ float(self.configuration.netapp_size_multiplier) qos_policy_group = None if extra_specs: qos_policy_group = extra_specs.pop('netapp:qos_policy_group', None) volumes = self._get_avl_volumes(req_size, extra_specs) if not volumes: msg = _('Failed to get vol with required' ' size and extra specs for volume: %s') raise exception.VolumeBackendAPIException(data=msg % name) for volume in volumes: try: self.create_lun(volume.id['name'], name, size, metadata, qos_policy_group=qos_policy_group) metadata['Path'] = '/vol/%s/%s' % (volume.id['name'], name) metadata['Volume'] = volume.id['name'] metadata['Qtree'] = None return except NaApiError as ex: msg = _("Error provisioning vol %(name)s on " "%(volume)s. Details: %(ex)s") LOG.error(msg % {'name': name, 'volume': volume.id['name'], 'ex': ex}) finally: self._update_stale_vols(volume=volume) msg = _("Failure creating volume /vol/%(vol_id)s/%(name)s.") % { 'vol_id': volume.id['name'], 'name': name} raise exception.VolumeBackendAPIException(msg) def _get_avl_volumes(self, size, extra_specs=None): """Get the available volume by size, extra_specs.""" result = [] volumes = ssc_utils.get_volumes_for_specs( self.ssc_vols, extra_specs) if volumes: sorted_vols = sorted(volumes, reverse=True) for vol in sorted_vols: if int(vol.space['size_avl_bytes']) >= int(size): result.append(vol) return result def _get_target_details(self): """Gets the target portal details.""" iscsi_if_iter = NaElement('iscsi-interface-get-iter') result = self.client.invoke_successfully(iscsi_if_iter, True) tgt_list = [] if result.get_child_content('num-records')\ and int(result.get_child_content('num-records')) >= 1: attr_list = result.get_child_by_name('attributes-list') iscsi_if_list = attr_list.get_children() for iscsi_if in iscsi_if_list: d = dict() d['address'] = iscsi_if.get_child_content('ip-address') d['port'] = iscsi_if.get_child_content('ip-port') d['tpgroup-tag'] = iscsi_if.get_child_content('tpgroup-tag') d['interface-enabled'] = iscsi_if.get_child_content( 'is-interface-enabled') tgt_list.append(d) return tgt_list def _get_iscsi_service_details(self): """Returns iscsi iqn.""" iscsi_service_iter = NaElement('iscsi-service-get-iter') result = self.client.invoke_successfully(iscsi_service_iter, True) if result.get_child_content('num-records') and\ int(result.get_child_content('num-records')) >= 1: attr_list = result.get_child_by_name('attributes-list') iscsi_service = attr_list.get_child_by_name('iscsi-service-info') return iscsi_service.get_child_content('node-name') LOG.debug(_('No iscsi service found for vserver %s') % (self.vserver)) return None def _create_lun_handle(self, metadata): """Returns lun handle based on filer type.""" return '%s:%s' % (self.vserver, metadata['Path']) def _get_lun_list(self): """Gets the list of luns on filer. Gets the luns from cluster with vserver. """ tag = None while True: api = NaElement('lun-get-iter') api.add_new_child('max-records', '100') if tag: api.add_new_child('tag', tag, True) lun_info = NaElement('lun-info') lun_info.add_new_child('vserver', self.vserver) query = NaElement('query') query.add_child_elem(lun_info) api.add_child_elem(query) result = self.client.invoke_successfully(api) if result.get_child_by_name('num-records') and\ int(result.get_child_content('num-records')) >= 1: attr_list = result.get_child_by_name('attributes-list') self._extract_and_populate_luns(attr_list.get_children()) tag = result.get_child_content('next-tag') if tag is None: break def _find_mapped_lun_igroup(self, path, initiator, os=None): """Find the igroup for mapped lun with initiator.""" initiator_igroups = self._get_igroup_by_initiator(initiator=initiator) lun_maps = self._get_lun_map(path) if initiator_igroups and lun_maps: for igroup in initiator_igroups: igroup_name = igroup['initiator-group-name'] if igroup_name.startswith(self.IGROUP_PREFIX): for lun_map in lun_maps: if lun_map['initiator-group'] == igroup_name: return (igroup_name, lun_map['lun-id']) return (None, None) def _get_lun_map(self, path): """Gets the lun map by lun path.""" tag = None map_list = [] while True: lun_map_iter = NaElement('lun-map-get-iter') lun_map_iter.add_new_child('max-records', '100') if tag: lun_map_iter.add_new_child('tag', tag, True) query = NaElement('query') lun_map_iter.add_child_elem(query) query.add_node_with_children('lun-map-info', **{'path': path}) result = self.client.invoke_successfully(lun_map_iter, True) tag = result.get_child_content('next-tag') if result.get_child_content('num-records') and \ int(result.get_child_content('num-records')) >= 1: attr_list = result.get_child_by_name('attributes-list') lun_maps = attr_list.get_children() for lun_map in lun_maps: lun_m = dict() lun_m['initiator-group'] = lun_map.get_child_content( 'initiator-group') lun_m['lun-id'] = lun_map.get_child_content('lun-id') lun_m['vserver'] = lun_map.get_child_content('vserver') map_list.append(lun_m) if tag is None: break return map_list def _get_igroup_by_initiator(self, initiator): """Get igroups by initiator.""" tag = None igroup_list = [] while True: igroup_iter = NaElement('igroup-get-iter') igroup_iter.add_new_child('max-records', '100') if tag: igroup_iter.add_new_child('tag', tag, True) query = NaElement('query') igroup_iter.add_child_elem(query) igroup_info = NaElement('initiator-group-info') query.add_child_elem(igroup_info) igroup_info.add_new_child('vserver', self.vserver) initiators = NaElement('initiators') igroup_info.add_child_elem(initiators) initiators.add_node_with_children('initiator-info', **{'initiator-name': initiator}) des_attrs = NaElement('desired-attributes') des_ig_info = NaElement('initiator-group-info') des_attrs.add_child_elem(des_ig_info) des_ig_info.add_node_with_children('initiators', **{'initiator-info': None}) des_ig_info.add_new_child('vserver', None) des_ig_info.add_new_child('initiator-group-name', None) des_ig_info.add_new_child('initiator-group-type', None) des_ig_info.add_new_child('initiator-group-os-type', None) igroup_iter.add_child_elem(des_attrs) result = self.client.invoke_successfully(igroup_iter, False) tag = result.get_child_content('next-tag') if result.get_child_content('num-records') and\ int(result.get_child_content('num-records')) > 0: attr_list = result.get_child_by_name('attributes-list') igroups = attr_list.get_children() for igroup in igroups: ig = dict() ig['initiator-group-os-type'] = igroup.get_child_content( 'initiator-group-os-type') ig['initiator-group-type'] = igroup.get_child_content( 'initiator-group-type') ig['initiator-group-name'] = igroup.get_child_content( 'initiator-group-name') igroup_list.append(ig) if tag is None: break return igroup_list def _clone_lun(self, name, new_name, space_reserved='true', src_block=0, dest_block=0, block_count=0): """Clone LUN with the given handle to the new name.""" metadata = self._get_lun_attr(name, 'metadata') volume = metadata['Volume'] # zAPI can only handle 2^24 blocks per range bc_limit = 2 ** 24 # 8GB # zAPI can only handle 32 block ranges per call br_limit = 32 z_limit = br_limit * bc_limit # 256 GB z_calls = int(math.ceil(block_count / float(z_limit))) zbc = block_count if z_calls == 0: z_calls = 1 for call in range(0, z_calls): if zbc > z_limit: block_count = z_limit zbc -= z_limit else: block_count = zbc clone_create = NaElement.create_node_with_children( 'clone-create', **{'volume': volume, 'source-path': name, 'destination-path': new_name, 'space-reserve': space_reserved}) if block_count > 0: block_ranges = NaElement("block-ranges") segments = int(math.ceil(block_count / float(bc_limit))) bc = block_count for segment in range(0, segments): if bc > bc_limit: block_count = bc_limit bc -= bc_limit else: block_count = bc block_range = NaElement.create_node_with_children( 'block-range', **{'source-block-number': str(src_block), 'destination-block-number': str(dest_block), 'block-count': str(block_count)}) block_ranges.add_child_elem(block_range) src_block += int(block_count) dest_block += int(block_count) clone_create.add_child_elem(block_ranges) self.client.invoke_successfully(clone_create, True) LOG.debug(_("Cloned LUN with new name %s") % new_name) lun = self._get_lun_by_args(vserver=self.vserver, path='/vol/%s/%s' % (volume, new_name)) if len(lun) == 0: msg = _("No cloned lun named %s found on the filer") raise exception.VolumeBackendAPIException(data=msg % (new_name)) clone_meta = self._create_lun_meta(lun[0]) self._add_lun_to_table(NetAppLun('%s:%s' % (clone_meta['Vserver'], clone_meta['Path']), new_name, lun[0].get_child_content('size'), clone_meta)) self._update_stale_vols( volume=ssc_utils.NetAppVolume(volume, self.vserver)) def _get_lun_by_args(self, **args): """Retrieves lun with specified args.""" lun_iter = NaElement('lun-get-iter') lun_iter.add_new_child('max-records', '100') query = NaElement('query') lun_iter.add_child_elem(query) query.add_node_with_children('lun-info', **args) luns = self.client.invoke_successfully(lun_iter) attr_list = luns.get_child_by_name('attributes-list') return attr_list.get_children() def _create_lun_meta(self, lun): """Creates lun metadata dictionary.""" self._is_naelement(lun) meta_dict = {} self._is_naelement(lun) meta_dict['Vserver'] = lun.get_child_content('vserver') meta_dict['Volume'] = lun.get_child_content('volume') meta_dict['Qtree'] = lun.get_child_content('qtree') meta_dict['Path'] = lun.get_child_content('path') meta_dict['OsType'] = lun.get_child_content('multiprotocol-type') meta_dict['SpaceReserved'] = \ lun.get_child_content('is-space-reservation-enabled') return meta_dict def _configure_tunneling(self, do_tunneling=False): """Configures tunneling for ontap cluster.""" if do_tunneling: self.client.set_vserver(self.vserver) else: self.client.set_vserver(None) def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = {} netapp_backend = 'NetApp_iSCSI_Cluster_direct' backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = ( backend_name or netapp_backend) data["vendor_name"] = 'NetApp' data["driver_version"] = '1.0' data["storage_protocol"] = 'iSCSI' data['total_capacity_gb'] = 0 data['free_capacity_gb'] = 0 data['reserved_percentage'] = 0 data['QoS_support'] = False self._update_cluster_vol_stats(data) provide_ems(self, self.client, netapp_backend, self._app_version) self._stats = data def _update_cluster_vol_stats(self, data): """Updates vol stats with cluster config.""" sync = True if self.ssc_vols is None else False ssc_utils.refresh_cluster_ssc(self, self.client, self.vserver, synchronous=sync) if self.ssc_vols: data['netapp_mirrored'] = 'true'\ if self.ssc_vols['mirrored'] else 'false' data['netapp_unmirrored'] = 'true'\ if len(self.ssc_vols['all']) > len(self.ssc_vols['mirrored'])\ else 'false' data['netapp_dedup'] = 'true'\ if self.ssc_vols['dedup'] else 'false' data['netapp_nodedup'] = 'true'\ if len(self.ssc_vols['all']) > len(self.ssc_vols['dedup'])\ else 'false' data['netapp_compression'] = 'true'\ if self.ssc_vols['compression'] else 'false' data['netapp_nocompression'] = 'true'\ if len(self.ssc_vols['all']) >\ len(self.ssc_vols['compression'])\ else 'false' data['netapp_thin_provisioned'] = 'true'\ if self.ssc_vols['thin'] else 'false' data['netapp_thick_provisioned'] = 'true'\ if len(self.ssc_vols['all']) >\ len(self.ssc_vols['thin']) else 'false' if self.ssc_vols['all']: vol_max = max(self.ssc_vols['all']) data['total_capacity_gb'] =\ int(vol_max.space['size_total_bytes']) / units.GiB data['free_capacity_gb'] =\ int(vol_max.space['size_avl_bytes']) / units.GiB else: data['total_capacity_gb'] = 0 data['free_capacity_gb'] = 0 else: LOG.warn(_("Cluster ssc is not updated. No volume stats found.")) @utils.synchronized('update_stale') def _update_stale_vols(self, volume=None, reset=False): """Populates stale vols with vol and returns set copy if reset.""" if volume: self.stale_vols.add(volume) if reset: set_copy = copy.deepcopy(self.stale_vols) self.stale_vols.clear() return set_copy @utils.synchronized("refresh_ssc_vols") def refresh_ssc_vols(self, vols): """Refreshes ssc_vols with latest entries.""" self.ssc_vols = vols def delete_volume(self, volume): """Driver entry point for destroying existing volumes.""" lun = self.lun_table.get(volume['name']) netapp_vol = None if lun: netapp_vol = lun.get_metadata_property('Volume') super(NetAppDirectCmodeISCSIDriver, self).delete_volume(volume) if netapp_vol: self._update_stale_vols( volume=ssc_utils.NetAppVolume(netapp_vol, self.vserver)) class NetAppDirect7modeISCSIDriver(NetAppDirectISCSIDriver): """NetApp 7-mode iSCSI volume driver.""" def __init__(self, *args, **kwargs): super(NetAppDirect7modeISCSIDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(netapp_7mode_opts) def _do_custom_setup(self): """Does custom setup depending on the type of filer.""" self.vfiler = self.configuration.netapp_vfiler self.volume_list = self.configuration.netapp_volume_list if self.volume_list: self.volume_list = self.volume_list.split(',') self.volume_list = [el.strip() for el in self.volume_list] (major, minor) = self._get_ontapi_version() self.client.set_api_version(major, minor) if self.vfiler: self.client.set_vfiler(self.vfiler) self.vol_refresh_time = None self.vol_refresh_interval = 1800 self.vol_refresh_running = False self.vol_refresh_voluntary = False # Setting it infinite at set up # This will not rule out backend from scheduling self.total_gb = 'infinite' self.free_gb = 'infinite' def check_for_setup_error(self): """Check that the driver is working and can communicate.""" api_version = self.client.get_api_version() if api_version: major, minor = api_version if major == 1 and minor < 9: msg = _("Unsupported ONTAP version." " ONTAP version 7.3.1 and above is supported.") raise exception.VolumeBackendAPIException(data=msg) else: msg = _("Api version could not be determined.") raise exception.VolumeBackendAPIException(data=msg) super(NetAppDirect7modeISCSIDriver, self).check_for_setup_error() def _create_lun_on_eligible_vol(self, name, size, metadata, extra_specs=None): """Creates an actual lun on filer.""" req_size = float(size) *\ float(self.configuration.netapp_size_multiplier) volume = self._get_avl_volume_by_size(req_size) if not volume: msg = _('Failed to get vol with required size for volume: %s') raise exception.VolumeBackendAPIException(data=msg % name) self.create_lun(volume['name'], name, size, metadata) metadata['Path'] = '/vol/%s/%s' % (volume['name'], name) metadata['Volume'] = volume['name'] metadata['Qtree'] = None self.vol_refresh_voluntary = True def _get_filer_volumes(self, volume=None): """Returns list of filer volumes in api format.""" vol_request = NaElement('volume-list-info') if volume: vol_request.add_new_child('volume', volume) res = self.client.invoke_successfully(vol_request, True) volumes = res.get_child_by_name('volumes') if volumes: return volumes.get_children() return [] def _get_avl_volume_by_size(self, size): """Get the available volume by size.""" vols = self._get_filer_volumes() for vol in vols: avl_size = vol.get_child_content('size-available') state = vol.get_child_content('state') if float(avl_size) >= float(size) and state == 'online': avl_vol = dict() avl_vol['name'] = vol.get_child_content('name') avl_vol['block-type'] = vol.get_child_content('block-type') avl_vol['type'] = vol.get_child_content('type') avl_vol['size-available'] = avl_size if self.volume_list: if avl_vol['name'] in self.volume_list: return avl_vol elif self._get_vol_option(avl_vol['name'], 'root') != 'true': return avl_vol return None def _get_igroup_by_initiator(self, initiator): """Get igroups by initiator.""" igroup_list = NaElement('igroup-list-info') result = self.client.invoke_successfully(igroup_list, True) igroups = [] igs = result.get_child_by_name('initiator-groups') if igs: ig_infos = igs.get_children() if ig_infos: for info in ig_infos: initiators = info.get_child_by_name('initiators') init_infos = initiators.get_children() if init_infos: for init in init_infos: if init.get_child_content('initiator-name')\ == initiator: d = dict() d['initiator-group-os-type'] = \ info.get_child_content( 'initiator-group-os-type') d['initiator-group-type'] = \ info.get_child_content( 'initiator-group-type') d['initiator-group-name'] = \ info.get_child_content( 'initiator-group-name') igroups.append(d) return igroups def _get_target_details(self): """Gets the target portal details.""" iscsi_if_iter = NaElement('iscsi-portal-list-info') result = self.client.invoke_successfully(iscsi_if_iter, True) tgt_list = [] portal_list_entries = result.get_child_by_name( 'iscsi-portal-list-entries') if portal_list_entries: portal_list = portal_list_entries.get_children() for iscsi_if in portal_list: d = dict() d['address'] = iscsi_if.get_child_content('ip-address') d['port'] = iscsi_if.get_child_content('ip-port') d['tpgroup-tag'] = iscsi_if.get_child_content('tpgroup-tag') tgt_list.append(d) return tgt_list def _get_iscsi_service_details(self): """Returns iscsi iqn.""" iscsi_service_iter = NaElement('iscsi-node-get-name') result = self.client.invoke_successfully(iscsi_service_iter, True) return result.get_child_content('node-name') def _create_lun_handle(self, metadata): """Returns lun handle based on filer type.""" if self.vfiler: owner = '%s:%s' % (self.configuration.netapp_server_hostname, self.vfiler) else: owner = self.configuration.netapp_server_hostname return '%s:%s' % (owner, metadata['Path']) def _get_lun_list(self): """Gets the list of luns on filer.""" lun_list = [] if self.volume_list: for vol in self.volume_list: try: luns = self._get_vol_luns(vol) if luns: lun_list.extend(luns) except NaApiError: LOG.warn(_("Error finding luns for volume %s." " Verify volume exists.") % (vol)) else: luns = self._get_vol_luns(None) lun_list.extend(luns) self._extract_and_populate_luns(lun_list) def _get_vol_luns(self, vol_name): """Gets the luns for a volume.""" api = NaElement('lun-list-info') if vol_name: api.add_new_child('volume-name', vol_name) result = self.client.invoke_successfully(api, True) luns = result.get_child_by_name('luns') return luns.get_children() def _find_mapped_lun_igroup(self, path, initiator, os=None): """Find the igroup for mapped lun with initiator.""" lun_map_list = NaElement.create_node_with_children( 'lun-map-list-info', **{'path': path}) result = self.client.invoke_successfully(lun_map_list, True) igroups = result.get_child_by_name('initiator-groups') if igroups: igroup = None lun_id = None found = False igroup_infs = igroups.get_children() for ig in igroup_infs: initiators = ig.get_child_by_name('initiators') init_infs = initiators.get_children() for info in init_infs: if info.get_child_content('initiator-name') == initiator: found = True igroup = ig.get_child_content('initiator-group-name') lun_id = ig.get_child_content('lun-id') break if found: break return (igroup, lun_id) def _clone_lun(self, name, new_name, space_reserved='true', src_block=0, dest_block=0, block_count=0): """Clone LUN with the given handle to the new name.""" metadata = self._get_lun_attr(name, 'metadata') path = metadata['Path'] (parent, splitter, name) = path.rpartition('/') clone_path = '%s/%s' % (parent, new_name) # zAPI can only handle 2^24 blocks per range bc_limit = 2 ** 24 # 8GB # zAPI can only handle 32 block ranges per call br_limit = 32 z_limit = br_limit * bc_limit # 256 GB z_calls = int(math.ceil(block_count / float(z_limit))) zbc = block_count if z_calls == 0: z_calls = 1 for call in range(0, z_calls): if zbc > z_limit: block_count = z_limit zbc -= z_limit else: block_count = zbc clone_start = NaElement.create_node_with_children( 'clone-start', **{'source-path': path, 'destination-path': clone_path, 'no-snap': 'true'}) if block_count > 0: block_ranges = NaElement("block-ranges") # zAPI can only handle 2^24 block ranges bc_limit = 2 ** 24 # 8GB segments = int(math.ceil(block_count / float(bc_limit))) bc = block_count for segment in range(0, segments): if bc > bc_limit: block_count = bc_limit bc -= bc_limit else: block_count = bc block_range = NaElement.create_node_with_children( 'block-range', **{'source-block-number': str(src_block), 'destination-block-number': str(dest_block), 'block-count': str(block_count)}) block_ranges.add_child_elem(block_range) src_block += int(block_count) dest_block += int(block_count) clone_start.add_child_elem(block_ranges) result = self.client.invoke_successfully(clone_start, True) clone_id_el = result.get_child_by_name('clone-id') cl_id_info = clone_id_el.get_child_by_name('clone-id-info') vol_uuid = cl_id_info.get_child_content('volume-uuid') clone_id = cl_id_info.get_child_content('clone-op-id') if vol_uuid: self._check_clone_status(clone_id, vol_uuid, name, new_name) self.vol_refresh_voluntary = True luns = self._get_lun_by_args(path=clone_path) if luns: cloned_lun = luns[0] self._set_space_reserve(clone_path, space_reserved) clone_meta = self._create_lun_meta(cloned_lun) handle = self._create_lun_handle(clone_meta) self._add_lun_to_table( NetAppLun(handle, new_name, cloned_lun.get_child_content('size'), clone_meta)) else: raise NaApiError('ENOLUNENTRY', 'No Lun entry found on the filer') def _set_space_reserve(self, path, enable): """Sets the space reserve info.""" space_res = NaElement.create_node_with_children( 'lun-set-space-reservation-info', **{'path': path, 'enable': enable}) self.client.invoke_successfully(space_res, True) def _check_clone_status(self, clone_id, vol_uuid, name, new_name): """Checks for the job till completed.""" clone_status = NaElement('clone-list-status') cl_id = NaElement('clone-id') clone_status.add_child_elem(cl_id) cl_id.add_node_with_children( 'clone-id-info', **{'clone-op-id': clone_id, 'volume-uuid': vol_uuid}) running = True clone_ops_info = None while running: result = self.client.invoke_successfully(clone_status, True) status = result.get_child_by_name('status') ops_info = status.get_children() if ops_info: for info in ops_info: if info.get_child_content('clone-state') == 'running': time.sleep(1) break else: running = False clone_ops_info = info break else: if clone_ops_info: fmt = {'name': name, 'new_name': new_name} if clone_ops_info.get_child_content('clone-state')\ == 'completed': LOG.debug(_("Clone operation with src %(name)s" " and dest %(new_name)s completed") % fmt) else: LOG.debug(_("Clone operation with src %(name)s" " and dest %(new_name)s failed") % fmt) raise NaApiError( clone_ops_info.get_child_content('error'), clone_ops_info.get_child_content('reason')) def _get_lun_by_args(self, **args): """Retrieves luns with specified args.""" lun_info = NaElement.create_node_with_children('lun-list-info', **args) result = self.client.invoke_successfully(lun_info, True) luns = result.get_child_by_name('luns') return luns.get_children() def _create_lun_meta(self, lun): """Creates lun metadata dictionary.""" self._is_naelement(lun) meta_dict = {} self._is_naelement(lun) meta_dict['Path'] = lun.get_child_content('path') meta_dict['OsType'] = lun.get_child_content('multiprotocol-type') meta_dict['SpaceReserved'] = lun.get_child_content( 'is-space-reservation-enabled') return meta_dict def _update_volume_stats(self): """Retrieve status info from volume group.""" LOG.debug(_("Updating volume stats")) data = {} netapp_backend = 'NetApp_iSCSI_7mode_direct' backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = ( backend_name or 'NetApp_iSCSI_7mode_direct') data["vendor_name"] = 'NetApp' data["driver_version"] = self.VERSION data["storage_protocol"] = 'iSCSI' data['reserved_percentage'] = 0 data['QoS_support'] = False self._get_capacity_info(data) provide_ems(self, self.client, netapp_backend, self._app_version, server_type='7mode') self._stats = data def _get_lun_block_count(self, path): """Gets block counts for the lun.""" bs = super( NetAppDirect7modeISCSIDriver, self)._get_lun_block_count(path) api_version = self.client.get_api_version() if api_version: major = api_version[0] minor = api_version[1] if major == 1 and minor < 15: bs = bs - 1 return bs def _get_capacity_info(self, data): """Calculates the capacity information for the filer.""" if (self.vol_refresh_time is None or self.vol_refresh_voluntary or timeutils.is_newer_than(self.vol_refresh_time, self.vol_refresh_interval)): try: job_set = set_safe_attr(self, 'vol_refresh_running', True) if not job_set: LOG.warn( _("Volume refresh job already running. Returning...")) return self.vol_refresh_voluntary = False self._refresh_capacity_info() self.vol_refresh_time = timeutils.utcnow() except Exception as e: LOG.warn(_("Error refreshing vol capacity. Message: %s"), e) finally: set_safe_attr(self, 'vol_refresh_running', False) data['total_capacity_gb'] = self.total_gb data['free_capacity_gb'] = self.free_gb def _refresh_capacity_info(self): """Gets the latest capacity information.""" LOG.info(_("Refreshing capacity info for %s."), self.client) total_bytes = 0 free_bytes = 0 vols = self._get_filer_volumes() for vol in vols: volume = vol.get_child_content('name') if self.volume_list and not volume in self.volume_list: continue state = vol.get_child_content('state') inconsistent = vol.get_child_content('is-inconsistent') invalid = vol.get_child_content('is-invalid') if (state == 'online' and inconsistent == 'false' and invalid == 'false'): total_size = vol.get_child_content('size-total') if total_size: total_bytes = total_bytes + int(total_size) avl_size = vol.get_child_content('size-available') if avl_size: free_bytes = free_bytes + int(avl_size) self.total_gb = total_bytes / units.GiB self.free_gb = free_bytes / units.GiB def delete_volume(self, volume): """Driver entry point for destroying existing volumes.""" super(NetAppDirect7modeISCSIDriver, self).delete_volume(volume) self.vol_refresh_voluntary = True cinder-2014.1.5/cinder/volume/drivers/netapp/options.py0000664000567000056700000002275012540642606024150 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """Contains configuration options for NetApp drivers. Common place to hold configuration options for all NetApp drivers. Options need to be grouped into granular units to be able to be reused by different modules and classes. This does not restrict declaring options in individual modules. If options are not re usable then can be declared in individual modules. It is recommended to Keep options at a single place to ensure re usability and better management of configuration options. """ from oslo.config import cfg netapp_proxy_opts = [ cfg.StrOpt('netapp_storage_family', default='ontap_cluster', help=('The storage family type used on the storage system; ' 'valid values are ontap_7mode for using Data ONTAP ' 'operating in 7-Mode, ontap_cluster for using ' 'clustered Data ONTAP, or eseries for using E-Series.')), cfg.StrOpt('netapp_storage_protocol', default=None, help=('The storage protocol to be used on the data path with ' 'the storage system; valid values are iscsi or nfs.')), ] netapp_connection_opts = [ cfg.StrOpt('netapp_server_hostname', default=None, help='The hostname (or IP address) for the storage system or ' 'proxy server.'), cfg.IntOpt('netapp_server_port', default=80, help=('The TCP port to use for communication with the storage ' 'system or proxy server. Traditionally, port 80 is used ' 'for HTTP and port 443 is used for HTTPS; however, this ' 'value should be changed if an alternate port has been ' 'configured on the storage system or proxy server.')), ] netapp_transport_opts = [ cfg.StrOpt('netapp_transport_type', default='http', help=('The transport protocol used when communicating with ' 'the storage system or proxy server. Valid values are ' 'http or https.')), ] netapp_basicauth_opts = [ cfg.StrOpt('netapp_login', default=None, help=('Administrative user account name used to access the ' 'storage system or proxy server.')), cfg.StrOpt('netapp_password', default=None, help=('Password for the administrative user account ' 'specified in the netapp_login option.'), secret=True), ] netapp_provisioning_opts = [ cfg.FloatOpt('netapp_size_multiplier', default=1.2, help=('The quantity to be multiplied by the requested ' 'volume size to ensure enough space is available on ' 'the virtual storage server (Vserver) to fulfill ' 'the volume creation request.')), cfg.StrOpt('netapp_volume_list', default=None, help=('This option is only utilized when the storage protocol ' 'is configured to use iSCSI. This option is used to ' 'restrict provisioning to the specified controller ' 'volumes. Specify the value of this option to be a ' 'comma separated list of NetApp controller volume names ' 'to be used for provisioning.')), ] netapp_cluster_opts = [ cfg.StrOpt('netapp_vserver', default=None, help=('This option specifies the virtual storage server ' '(Vserver) name on the storage cluster on which ' 'provisioning of block storage volumes should occur. If ' 'using the NFS storage protocol, this parameter is ' 'mandatory for storage service catalog support (utilized' ' by Cinder volume type extra_specs support). If this ' 'option is specified, the exports belonging to the ' 'Vserver will only be used for provisioning in the ' 'future. Block storage volumes on exports not belonging ' 'to the Vserver specified by this option will continue ' 'to function normally.')), ] netapp_7mode_opts = [ cfg.StrOpt('netapp_vfiler', default=None, help=('The vFiler unit on which provisioning of block storage ' 'volumes will be done. This option is only used by the ' 'driver when connecting to an instance with a storage ' 'family of Data ONTAP operating in 7-Mode. Only use this ' 'option when utilizing the MultiStore feature on the ' 'NetApp storage system.')), ] netapp_img_cache_opts = [ cfg.IntOpt('thres_avl_size_perc_start', default=20, help=('If the percentage of available space for an NFS share ' 'has dropped below the value specified by this option, ' 'the NFS image cache will be cleaned.')), cfg.IntOpt('thres_avl_size_perc_stop', default=60, help=('When the percentage of available space on an NFS share ' 'has reached the percentage specified by this option, ' 'the driver will stop clearing files from the NFS image ' 'cache that have not been accessed in the last M ' 'minutes, where M is the value of the ' 'expiry_thres_minutes configuration option.')), cfg.IntOpt('expiry_thres_minutes', default=720, help=('This option specifies the threshold for last access ' 'time for images in the NFS image cache. When a cache ' 'cleaning cycle begins, images in the cache that have ' 'not been accessed in the last M minutes, where M is ' 'the value of this parameter, will be deleted from the ' 'cache to create free space on the NFS share.')), ] netapp_eseries_opts = [ cfg.StrOpt('netapp_webservice_path', default='/devmgr/v2', help=('This option is used to specify the path to the E-Series ' 'proxy application on a proxy server. The value is ' 'combined with the value of the netapp_transport_type, ' 'netapp_server_hostname, and netapp_server_port options ' 'to create the URL used by the driver to connect to the ' 'proxy application.')), cfg.StrOpt('netapp_controller_ips', default=None, help=('This option is only utilized when the storage family ' 'is configured to eseries. This option is used to ' 'restrict provisioning to the specified controllers. ' 'Specify the value of this option to be a comma ' 'separated list of controller hostnames or IP addresses ' 'to be used for provisioning.')), cfg.StrOpt('netapp_sa_password', default=None, help=('Password for the NetApp E-Series storage array.'), secret=True), cfg.StrOpt('netapp_storage_pools', default=None, help=('This option is used to restrict provisioning to the ' 'specified storage pools. Only dynamic disk pools are ' 'currently supported. Specify the value of this option to' ' be a comma separated list of disk pool names to be used' ' for provisioning.')), cfg.StrOpt('netapp_eseries_host_type', default='linux_dm_mp', help=('This option is used to define how the controllers in ' 'the E-Series storage array will work with the ' 'particular operating system on the hosts that are ' 'connected to it.')), ] netapp_nfs_extra_opts = [ cfg.StrOpt('netapp_copyoffload_tool_path', default=None, help=('This option specifies the path of the NetApp copy ' 'offload tool binary. Ensure that the binary has execute ' 'permissions set which allow the effective user of the ' 'cinder-volume process to execute the file.')), ] CONF = cfg.CONF CONF.register_opts(netapp_proxy_opts) CONF.register_opts(netapp_connection_opts) CONF.register_opts(netapp_transport_opts) CONF.register_opts(netapp_basicauth_opts) CONF.register_opts(netapp_cluster_opts) CONF.register_opts(netapp_7mode_opts) CONF.register_opts(netapp_provisioning_opts) CONF.register_opts(netapp_img_cache_opts) CONF.register_opts(netapp_eseries_opts) CONF.register_opts(netapp_nfs_extra_opts) cinder-2014.1.5/cinder/volume/drivers/netapp/nfs.py0000664000567000056700000020043512540642606023241 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # All Rights Reserved. # # 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. """ Volume driver for NetApp NFS storage. """ import copy import os import re from threading import Timer import time import uuid import six.moves.urllib.parse as urlparse from cinder import exception from cinder.image import image_utils from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder import utils from cinder.volume.drivers.netapp.api import NaApiError from cinder.volume.drivers.netapp.api import NaElement from cinder.volume.drivers.netapp.api import NaServer from cinder.volume.drivers.netapp.options import netapp_7mode_opts from cinder.volume.drivers.netapp.options import netapp_basicauth_opts from cinder.volume.drivers.netapp.options import netapp_cluster_opts from cinder.volume.drivers.netapp.options import netapp_connection_opts from cinder.volume.drivers.netapp.options import netapp_img_cache_opts from cinder.volume.drivers.netapp.options import netapp_nfs_extra_opts from cinder.volume.drivers.netapp.options import netapp_transport_opts from cinder.volume.drivers.netapp import ssc_utils from cinder.volume.drivers.netapp import utils as na_utils from cinder.volume.drivers.netapp.utils import get_volume_extra_specs from cinder.volume.drivers.netapp.utils import provide_ems from cinder.volume.drivers.netapp.utils import validate_instantiation from cinder.volume.drivers import nfs LOG = logging.getLogger(__name__) class NetAppNFSDriver(nfs.NfsDriver): """Base class for NetApp NFS driver. Executes commands relating to Volumes. """ # do not increment this as it may be used in volume type definitions VERSION = "1.0.0" def __init__(self, *args, **kwargs): # NOTE(vish): db is set by Manager validate_instantiation(**kwargs) self._execute = None self._context = None self._app_version = kwargs.pop("app_version", "unknown") super(NetAppNFSDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(netapp_connection_opts) self.configuration.append_config_values(netapp_basicauth_opts) self.configuration.append_config_values(netapp_transport_opts) self.configuration.append_config_values(netapp_img_cache_opts) def set_execute(self, execute): self._execute = execute def do_setup(self, context): super(NetAppNFSDriver, self).do_setup(context) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" raise NotImplementedError() def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" vol_size = volume.size snap_size = snapshot.volume_size self._clone_volume(snapshot.name, volume.name, snapshot.volume_id) share = self._get_volume_location(snapshot.volume_id) volume['provider_location'] = share path = self.local_path(volume) if self._discover_file_till_timeout(path): self._set_rw_permissions_for_all(path) if vol_size != snap_size: try: self.extend_volume(volume, vol_size) except Exception as e: with excutils.save_and_reraise_exception(): LOG.error( _("Resizing %s failed. Cleaning volume."), volume.name) self._execute('rm', path, run_as_root=True) else: raise exception.CinderException( _("NFS file %s not discovered.") % volume['name']) return {'provider_location': volume['provider_location']} def create_snapshot(self, snapshot): """Creates a snapshot.""" self._clone_volume(snapshot['volume_name'], snapshot['name'], snapshot['volume_id']) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" nfs_mount = self._get_provider_location(snapshot.volume_id) if self._volume_not_present(nfs_mount, snapshot.name): return True self._execute('rm', self._get_volume_path(nfs_mount, snapshot.name), run_as_root=True) def _get_client(self): """Creates client for server.""" raise NotImplementedError() def _get_volume_location(self, volume_id): """Returns NFS mount address as :.""" nfs_server_ip = self._get_host_ip(volume_id) export_path = self._get_export_path(volume_id) return (nfs_server_ip + ':' + export_path) def _clone_volume(self, volume_name, clone_name, volume_id, share=None): """Clones mounted volume using NetApp api.""" raise NotImplementedError() def _get_provider_location(self, volume_id): """Returns provider location for given volume.""" volume = self.db.volume_get(self._context, volume_id) return volume.provider_location def _get_host_ip(self, volume_id): """Returns IP address for the given volume.""" return self._get_provider_location(volume_id).split(':')[0] def _get_export_path(self, volume_id): """Returns NFS export path for the given volume.""" return self._get_provider_location(volume_id).split(':')[1] def _volume_not_present(self, nfs_mount, volume_name): """Check if volume exists.""" try: self._try_execute('ls', self._get_volume_path(nfs_mount, volume_name)) except processutils.ProcessExecutionError: # If the volume isn't present return True return False def _try_execute(self, *command, **kwargs): # NOTE(vish): Volume commands can partially fail due to timing, but # running them a second time on failure will usually # recover nicely. tries = 0 while True: try: self._execute(*command, **kwargs) return True except processutils.ProcessExecutionError: tries = tries + 1 if tries >= self.configuration.num_shell_tries: raise LOG.exception(_("Recovering from a failed execute. " "Try number %s"), tries) time.sleep(tries ** 2) def _get_volume_path(self, nfs_share, volume_name): """Get volume path (local fs path) for given volume name on given nfs share. @param nfs_share string, example 172.18.194.100:/var/nfs @param volume_name string, example volume-91ee65ec-c473-4391-8c09-162b00c68a8c """ return os.path.join(self._get_mount_point_for_share(nfs_share), volume_name) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" vol_size = volume.size src_vol_size = src_vref.size self._clone_volume(src_vref.name, volume.name, src_vref.id) share = self._get_volume_location(src_vref.id) volume['provider_location'] = share path = self.local_path(volume) if self._discover_file_till_timeout(path): self._set_rw_permissions_for_all(path) if vol_size != src_vol_size: try: self.extend_volume(volume, vol_size) except Exception as e: LOG.error( _("Resizing %s failed. Cleaning volume."), volume.name) self._execute('rm', path, run_as_root=True) raise e else: raise exception.CinderException( _("NFS file %s not discovered.") % volume['name']) return {'provider_location': volume['provider_location']} def _update_volume_stats(self): """Retrieve stats info from volume group.""" super(NetAppNFSDriver, self)._update_volume_stats() self._spawn_clean_cache_job() def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" super(NetAppNFSDriver, self).copy_image_to_volume( context, volume, image_service, image_id) LOG.info(_('Copied image to volume %s using regular download.'), volume['name']) self._register_image_in_cache(volume, image_id) def _register_image_in_cache(self, volume, image_id): """Stores image in the cache.""" file_name = 'img-cache-%s' % image_id LOG.info(_("Registering image in cache %s"), file_name) try: self._do_clone_rel_img_cache( volume['name'], file_name, volume['provider_location'], file_name) except Exception as e: LOG.warn( _('Exception while registering image %(image_id)s' ' in cache. Exception: %(exc)s') % {'image_id': image_id, 'exc': e.__str__()}) def _find_image_in_cache(self, image_id): """Finds image in cache and returns list of shares with file name.""" result = [] if getattr(self, '_mounted_shares', None): for share in self._mounted_shares: dir = self._get_mount_point_for_share(share) file_name = 'img-cache-%s' % image_id file_path = '%s/%s' % (dir, file_name) if os.path.exists(file_path): LOG.debug(_('Found cache file for image %(image_id)s' ' on share %(share)s') % {'image_id': image_id, 'share': share}) result.append((share, file_name)) return result def _do_clone_rel_img_cache(self, src, dst, share, cache_file): """Do clone operation w.r.t image cache file.""" @utils.synchronized(cache_file, external=True) def _do_clone(): dir = self._get_mount_point_for_share(share) file_path = '%s/%s' % (dir, dst) if not os.path.exists(file_path): LOG.info(_('Cloning from cache to destination %s'), dst) self._clone_volume(src, dst, volume_id=None, share=share) _do_clone() @utils.synchronized('clean_cache') def _spawn_clean_cache_job(self): """Spawns a clean task if not running.""" if getattr(self, 'cleaning', None): LOG.debug(_('Image cache cleaning in progress. Returning... ')) return else: #set cleaning to True self.cleaning = True t = Timer(0, self._clean_image_cache) t.start() def _clean_image_cache(self): """Clean the image cache files in cache of space crunch.""" try: LOG.debug(_('Image cache cleaning in progress.')) thres_size_perc_start =\ self.configuration.thres_avl_size_perc_start thres_size_perc_stop =\ self.configuration.thres_avl_size_perc_stop for share in getattr(self, '_mounted_shares', []): try: total_size, total_avl, total_alc =\ self._get_capacity_info(share) avl_percent = int((total_avl / total_size) * 100) if avl_percent <= thres_size_perc_start: LOG.info(_('Cleaning cache for share %s.'), share) eligible_files = self._find_old_cache_files(share) threshold_size = int( (thres_size_perc_stop * total_size) / 100) bytes_to_free = int(threshold_size - total_avl) LOG.debug(_('Files to be queued for deletion %s'), eligible_files) self._delete_files_till_bytes_free( eligible_files, share, bytes_to_free) else: continue except Exception as e: LOG.warn(_( 'Exception during cache cleaning' ' %(share)s. Message - %(ex)s') % {'share': share, 'ex': e.__str__()}) continue finally: LOG.debug(_('Image cache cleaning done.')) self.cleaning = False def _shortlist_del_eligible_files(self, share, old_files): """Prepares list of eligible files to be deleted from cache.""" raise NotImplementedError() def _find_old_cache_files(self, share): """Finds the old files in cache.""" mount_fs = self._get_mount_point_for_share(share) threshold_minutes = self.configuration.expiry_thres_minutes cmd = ['find', mount_fs, '-maxdepth', '1', '-name', 'img-cache*', '-amin', '+%s' % (threshold_minutes)] res, __ = self._execute(*cmd, run_as_root=True) if res: old_file_paths = res.strip('\n').split('\n') mount_fs_len = len(mount_fs) old_files = [x[mount_fs_len + 1:] for x in old_file_paths] eligible_files = self._shortlist_del_eligible_files( share, old_files) return eligible_files return [] def _delete_files_till_bytes_free(self, file_list, share, bytes_to_free=0): """Delete files from disk till bytes are freed or list exhausted.""" LOG.debug(_('Bytes to free %s'), bytes_to_free) if file_list and bytes_to_free > 0: sorted_files = sorted(file_list, key=lambda x: x[1], reverse=True) mount_fs = self._get_mount_point_for_share(share) for f in sorted_files: if f: file_path = '%s/%s' % (mount_fs, f[0]) LOG.debug(_('Delete file path %s'), file_path) @utils.synchronized(f[0], external=True) def _do_delete(): if self._delete_file(file_path): return True return False if _do_delete(): bytes_to_free = bytes_to_free - int(f[1]) if bytes_to_free <= 0: return def _delete_file(self, path): """Delete file from disk and return result as boolean.""" try: LOG.debug(_('Deleting file at path %s'), path) cmd = ['rm', '-f', path] self._execute(*cmd, run_as_root=True) return True except Exception as ex: LOG.warning(_('Exception during deleting %s'), ex.__str__()) return False def clone_image(self, volume, image_location, image_id, image_meta): """Create a volume efficiently from an existing image. image_location is a string whose format depends on the image service backend in use. The driver should use it to determine whether cloning is possible. image_id is a string which represents id of the image. It can be used by the driver to introspect internal stores or registry to do an efficient image clone. Returns a dict of volume properties eg. provider_location, boolean indicating whether cloning occurred. """ cloned = False post_clone = False share = None try: cache_result = self._find_image_in_cache(image_id) if cache_result: cloned = self._clone_from_cache(volume, image_id, cache_result) else: cloned = self._direct_nfs_clone(volume, image_location, image_id) if cloned: post_clone = self._post_clone_image(volume) except Exception as e: msg = e.msg if getattr(e, 'msg', None) else e.__str__() LOG.info(_('Image cloning unsuccessful for image' ' %(image_id)s. Message: %(msg)s') % {'image_id': image_id, 'msg': msg}) vol_path = self.local_path(volume) volume['provider_location'] = None if os.path.exists(vol_path): self._delete_file(vol_path) finally: cloned = cloned and post_clone share = volume['provider_location'] if cloned else None bootable = True if cloned else False return {'provider_location': share, 'bootable': bootable}, cloned def _clone_from_cache(self, volume, image_id, cache_result): """Clones a copy from image cache.""" cloned = False LOG.info(_('Cloning image %s from cache'), image_id) for res in cache_result: # Repeat tries in other shares if failed in some (share, file_name) = res LOG.debug(_('Cache share: %s'), share) if (share and self._is_share_vol_compatible(volume, share)): try: self._do_clone_rel_img_cache( file_name, volume['name'], share, file_name) cloned = True volume['provider_location'] = share break except Exception: LOG.warn(_('Unexpected exception during' ' image cloning in share %s'), share) return cloned def _direct_nfs_clone(self, volume, image_location, image_id): """Clone directly in nfs share.""" LOG.info(_('Checking image clone %s from glance share.'), image_id) cloned = False image_location = self._construct_image_nfs_url(image_location) share = self._is_cloneable_share(image_location) if share and self._is_share_vol_compatible(volume, share): LOG.debug(_('Share is cloneable %s'), share) volume['provider_location'] = share (__, ___, img_file) = image_location.rpartition('/') dir_path = self._get_mount_point_for_share(share) img_path = '%s/%s' % (dir_path, img_file) img_info = image_utils.qemu_img_info(img_path) if img_info.file_format == 'raw': LOG.debug(_('Image is raw %s'), image_id) self._clone_volume( img_file, volume['name'], volume_id=None, share=share) cloned = True else: LOG.info( _('Image will locally be converted to raw %s'), image_id) dst = '%s/%s' % (dir_path, volume['name']) image_utils.convert_image(img_path, dst, 'raw') data = image_utils.qemu_img_info(dst) if data.file_format != "raw": raise exception.InvalidResults( _("Converted to raw, but" " format is now %s") % data.file_format) else: cloned = True self._register_image_in_cache( volume, image_id) return cloned def _post_clone_image(self, volume): """Do operations post image cloning.""" LOG.info(_('Performing post clone for %s'), volume['name']) vol_path = self.local_path(volume) if self._discover_file_till_timeout(vol_path): self._set_rw_permissions_for_all(vol_path) self._resize_image_file(vol_path, volume['size']) return True raise exception.InvalidResults( _("NFS file could not be discovered.")) def _resize_image_file(self, path, new_size): """Resize the image file on share to new size.""" LOG.debug(_('Checking file for resize')) if self._is_file_size_equal(path, new_size): return else: LOG.info(_('Resizing file to %sG'), new_size) image_utils.resize_image(path, new_size) if self._is_file_size_equal(path, new_size): return else: raise exception.InvalidResults( _('Resizing image file failed.')) def _is_file_size_equal(self, path, size): """Checks if file size at path is equal to size.""" data = image_utils.qemu_img_info(path) virt_size = data.virtual_size / units.GiB if virt_size == size: return True else: return False def _discover_file_till_timeout(self, path, timeout=45): """Checks if file size at path is equal to size.""" # Sometimes nfs takes time to discover file # Retrying in case any unexpected situation occurs retry_seconds = timeout sleep_interval = 2 while True: if os.path.exists(path): return True else: if retry_seconds <= 0: LOG.warn(_('Discover file retries exhausted.')) return False else: time.sleep(sleep_interval) retry_seconds = retry_seconds - sleep_interval def _is_cloneable_share(self, image_location): """Finds if the image at location is cloneable.""" conn, dr = self._check_get_nfs_path_segs(image_location) return self._check_share_in_use(conn, dr) def _check_get_nfs_path_segs(self, image_location): """Checks if the nfs path format is matched. WebNFS url format with relative-path is supported. Accepting all characters in path-names and checking against the mounted shares which will contain only allowed path segments. Returns connection and dir details. """ conn, dr = None, None if image_location: nfs_loc_pattern =\ ('^nfs://(([\w\-\.]+:{1}[\d]+|[\w\-\.]+)(/[^\/].*)' '*(/[^\/\\\\]+)$)') matched = re.match(nfs_loc_pattern, image_location, flags=0) if not matched: LOG.debug(_('Image location not in the' ' expected format %s'), image_location) else: conn = matched.group(2) dr = matched.group(3) or '/' return (conn, dr) def _share_match_for_ip(self, ip, shares): """Returns the share that is served by ip. Multiple shares can have same dir path but can be served using different ips. It finds the share which is served by ip on same nfs server. """ raise NotImplementedError() def _check_share_in_use(self, conn, dir): """Checks if share is cinder mounted and returns it.""" try: if conn: host = conn.split(':')[0] ip = na_utils.resolve_hostname(host) share_candidates = [] for sh in self._mounted_shares: sh_exp = sh.split(':')[1] if sh_exp == dir: share_candidates.append(sh) if share_candidates: LOG.debug(_('Found possible share matches %s'), share_candidates) return self._share_match_for_ip(ip, share_candidates) except Exception: LOG.warn(_("Unexpected exception while short listing used share.")) return None def _construct_image_nfs_url(self, image_location): """Construct direct url for nfs backend. It creates direct url from image_location which is a tuple with direct_url and locations. Returns url with nfs scheme if nfs store else returns url. It needs to be verified by backend before use. """ direct_url, locations = image_location if not direct_url and not locations: raise exception.NotFound(_('Image location not present.')) # Locations will be always a list of one until # bp multiple-image-locations is introduced if not locations: return direct_url location = locations[0] url = location['url'] if not location['metadata']: return url location_type = location['metadata'].get('type') if not location_type or location_type.lower() != "nfs": return url share_location = location['metadata'].get('share_location') mount_point = location['metadata'].get('mount_point') if not share_location or not mount_point: return url url_parse = urlparse.urlparse(url) abs_path = os.path.join(url_parse.netloc, url_parse.path) rel_path = os.path.relpath(abs_path, mount_point) direct_url = "%s/%s" % (share_location, rel_path) return direct_url def extend_volume(self, volume, new_size): """Extend an existing volume to the new size.""" LOG.info(_('Extending volume %s.'), volume['name']) path = self.local_path(volume) self._resize_image_file(path, new_size) def _is_share_vol_compatible(self, volume, share): """Checks if share is compatible with volume to host it.""" raise NotImplementedError() def _check_share_can_hold_size(self, share, size): """Checks if volume can hold image with size.""" tot_size, tot_available, tot_allocated = self._get_capacity_info(share) if tot_available < size: msg = _("Container size smaller than required file size.") raise exception.VolumeDriverException(msg) def _move_nfs_file(self, source_path, dest_path): """Moves source to destination.""" @utils.synchronized(dest_path, external=True) def _move_file(src, dst): if os.path.exists(dst): LOG.warn(_("Destination %s already exists."), dst) return False self._execute('mv', src, dst, run_as_root=True) return True try: return _move_file(source_path, dest_path) except Exception as e: LOG.warn(_('Exception moving file %(src)s. Message - %(e)s') % {'src': source_path, 'e': e}) return False class NetAppDirectNfsDriver (NetAppNFSDriver): """Executes commands related to volumes on NetApp filer.""" def __init__(self, *args, **kwargs): super(NetAppDirectNfsDriver, self).__init__(*args, **kwargs) def do_setup(self, context): super(NetAppDirectNfsDriver, self).do_setup(context) self._context = context self._client = self._get_client() self._do_custom_setup(self._client) def check_for_setup_error(self): """Returns an error if prerequisites aren't met.""" self._check_flags() def _check_flags(self): """Raises error if any required configuration flag is missing.""" required_flags = ['netapp_login', 'netapp_password', 'netapp_server_hostname', 'netapp_server_port', 'netapp_transport_type'] for flag in required_flags: if not getattr(self.configuration, flag, None): raise exception.CinderException(_('%s is not set') % flag) def _get_client(self): """Creates NetApp api client.""" client = NaServer( host=self.configuration.netapp_server_hostname, server_type=NaServer.SERVER_TYPE_FILER, transport_type=self.configuration.netapp_transport_type, style=NaServer.STYLE_LOGIN_PASSWORD, username=self.configuration.netapp_login, password=self.configuration.netapp_password) return client def _do_custom_setup(self, client): """Do the customized set up on client if any for different types.""" raise NotImplementedError() def _is_naelement(self, elem): """Checks if element is NetApp element.""" if not isinstance(elem, NaElement): raise ValueError('Expects NaElement') def _get_ontapi_version(self): """Gets the supported ontapi version.""" ontapi_version = NaElement('system-get-ontapi-version') res = self._client.invoke_successfully(ontapi_version, False) major = res.get_child_content('major-version') minor = res.get_child_content('minor-version') return (major, minor) def _get_export_ip_path(self, volume_id=None, share=None): """Returns export ip and path. One of volume id or share is used to return the values. """ if volume_id: host_ip = self._get_host_ip(volume_id) export_path = self._get_export_path(volume_id) elif share: host_ip = share.split(':')[0] export_path = share.split(':')[1] else: raise exception.InvalidInput('None of vol id or share specified.') return (host_ip, export_path) def _create_file_usage_req(self, path): """Creates the request element for file_usage_get.""" file_use = NaElement.create_node_with_children( 'file-usage-get', **{'path': path}) return file_use class NetAppDirectCmodeNfsDriver (NetAppDirectNfsDriver): """Executes commands related to volumes on c mode.""" def __init__(self, *args, **kwargs): super(NetAppDirectCmodeNfsDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(netapp_cluster_opts) self.configuration.append_config_values(netapp_nfs_extra_opts) def _do_custom_setup(self, client): """Do the customized set up on client for cluster mode.""" # Default values to run first api client.set_api_version(1, 15) (major, minor) = self._get_ontapi_version() client.set_api_version(major, minor) self.vserver = self.configuration.netapp_vserver self.ssc_vols = None self.stale_vols = set() if self.vserver: self.ssc_enabled = True LOG.info(_("Shares on vserver %s will only" " be used for provisioning.") % (self.vserver)) else: self.ssc_enabled = False LOG.warn(_("No vserver set in config. SSC will be disabled.")) def check_for_setup_error(self): """Check that the driver is working and can communicate.""" super(NetAppDirectCmodeNfsDriver, self).check_for_setup_error() if self.ssc_enabled: ssc_utils.check_ssc_api_permissions(self._client) def _invoke_successfully(self, na_element, vserver=None): """Invoke the api for successful result. If vserver is present then invokes vserver api else Cluster api. :param vserver: vserver name. """ self._is_naelement(na_element) server = copy.copy(self._client) if vserver: server.set_vserver(vserver) else: server.set_vserver(None) result = server.invoke_successfully(na_element, True) return result def create_volume(self, volume): """Creates a volume. :param volume: volume reference """ self._ensure_shares_mounted() extra_specs = get_volume_extra_specs(volume) qos_policy_group = None if extra_specs: qos_policy_group = extra_specs.pop('netapp:qos_policy_group', None) eligible = self._find_shares(volume['size'], extra_specs) if not eligible: raise exception.NfsNoSuitableShareFound( volume_size=volume['size']) for sh in eligible: try: volume['provider_location'] = sh LOG.info(_('casted to %s') % volume['provider_location']) self._do_create_volume(volume) if qos_policy_group: self._set_qos_policy_group_on_volume(volume, sh, qos_policy_group) return {'provider_location': volume['provider_location']} except Exception as ex: LOG.error(_("Exception creating vol %(name)s on " "share %(share)s. Details: %(ex)s") % {'name': volume['name'], 'share': volume['provider_location'], 'ex': ex}) volume['provider_location'] = None finally: if self.ssc_enabled: self._update_stale_vols(self._get_vol_for_share(sh)) msg = _("Volume %s could not be created on shares.") raise exception.VolumeBackendAPIException(data=msg % (volume['name'])) def _set_qos_policy_group_on_volume(self, volume, share, qos_policy_group): target_path = '%s' % (volume['name']) export_path = share.split(':')[1] flex_vol_name = self._get_vol_by_junc_vserver(self.vserver, export_path) file_assign_qos = NaElement.create_node_with_children( 'file-assign-qos', **{'volume': flex_vol_name, 'qos-policy-group-name': qos_policy_group, 'file': target_path, 'vserver': self.vserver}) self._invoke_successfully(file_assign_qos) def _find_shares(self, size, extra_specs): """Finds suitable shares for given params.""" shares = [] containers = [] if self.ssc_enabled: vols = ssc_utils.get_volumes_for_specs(self.ssc_vols, extra_specs) containers = [x.export['path'] for x in vols] else: containers = self._mounted_shares for sh in containers: if self._is_share_eligible(sh, size): total_size, avl, alloc = self._get_capacity_info(sh) shares.append((sh, avl)) shares = [a for a, b in sorted( shares, key=lambda x: x[1], reverse=True)] return shares def _clone_volume(self, volume_name, clone_name, volume_id, share=None): """Clones mounted volume on NetApp Cluster.""" (vserver, exp_volume) = self._get_vserver_and_exp_vol(volume_id, share) self._clone_file(exp_volume, volume_name, clone_name, vserver) share = share if share else self._get_provider_location(volume_id) self._post_prov_deprov_in_ssc(share) def _get_vserver_and_exp_vol(self, volume_id=None, share=None): """Gets the vserver and export volume for share.""" (host_ip, export_path) = self._get_export_ip_path(volume_id, share) ifs = self._get_if_info_by_ip(host_ip) vserver = ifs[0].get_child_content('vserver') exp_volume = self._get_vol_by_junc_vserver(vserver, export_path) return (vserver, exp_volume) def _get_if_info_by_ip(self, ip): """Gets the network interface info by ip.""" net_if_iter = NaElement('net-interface-get-iter') net_if_iter.add_new_child('max-records', '10') query = NaElement('query') net_if_iter.add_child_elem(query) query.add_node_with_children( 'net-interface-info', **{'address': na_utils.resolve_hostname(ip)}) result = self._invoke_successfully(net_if_iter) if result.get_child_content('num-records') and\ int(result.get_child_content('num-records')) >= 1: attr_list = result.get_child_by_name('attributes-list') return attr_list.get_children() raise exception.NotFound( _('No interface found on cluster for ip %s') % (ip)) def _get_vserver_ips(self, vserver): """Get ips for the vserver.""" result = na_utils.invoke_api( self._client, api_name='net-interface-get-iter', is_iter=True, tunnel=vserver) if_list = [] for res in result: records = res.get_child_content('num-records') if records > 0: attr_list = res['attributes-list'] ifs = attr_list.get_children() if_list.extend(ifs) return if_list def _get_vol_by_junc_vserver(self, vserver, junction): """Gets the volume by junction path and vserver.""" vol_iter = NaElement('volume-get-iter') vol_iter.add_new_child('max-records', '10') query = NaElement('query') vol_iter.add_child_elem(query) vol_attrs = NaElement('volume-attributes') query.add_child_elem(vol_attrs) vol_attrs.add_node_with_children( 'volume-id-attributes', **{'junction-path': junction, 'owning-vserver-name': vserver}) des_attrs = NaElement('desired-attributes') des_attrs.add_node_with_children('volume-attributes', **{'volume-id-attributes': None}) vol_iter.add_child_elem(des_attrs) result = self._invoke_successfully(vol_iter, vserver) if result.get_child_content('num-records') and\ int(result.get_child_content('num-records')) >= 1: attr_list = result.get_child_by_name('attributes-list') vols = attr_list.get_children() vol_id = vols[0].get_child_by_name('volume-id-attributes') return vol_id.get_child_content('name') msg_fmt = {'vserver': vserver, 'junction': junction} raise exception.NotFound(_("""No volume on cluster with vserver %(vserver)s and junction path %(junction)s """) % msg_fmt) def _clone_file(self, volume, src_path, dest_path, vserver=None, dest_exists=False): """Clones file on vserver.""" msg = _("""Cloning with params volume %(volume)s, src %(src_path)s, dest %(dest_path)s, vserver %(vserver)s""") msg_fmt = {'volume': volume, 'src_path': src_path, 'dest_path': dest_path, 'vserver': vserver} LOG.debug(msg % msg_fmt) clone_create = NaElement.create_node_with_children( 'clone-create', **{'volume': volume, 'source-path': src_path, 'destination-path': dest_path}) major, minor = self._client.get_api_version() if major == 1 and minor >= 20 and dest_exists: clone_create.add_new_child('destination-exists', 'true') self._invoke_successfully(clone_create, vserver) def _update_volume_stats(self): """Retrieve stats info from volume group.""" super(NetAppDirectCmodeNfsDriver, self)._update_volume_stats() netapp_backend = 'NetApp_NFS_cluster_direct' backend_name = self.configuration.safe_get('volume_backend_name') self._stats["volume_backend_name"] = (backend_name or netapp_backend) self._stats["vendor_name"] = 'NetApp' self._stats["driver_version"] = '1.0' self._update_cluster_vol_stats(self._stats) provide_ems(self, self._client, netapp_backend, self._app_version) def _update_cluster_vol_stats(self, data): """Updates vol stats with cluster config.""" if self.ssc_enabled: sync = True if self.ssc_vols is None else False ssc_utils.refresh_cluster_ssc(self, self._client, self.vserver, synchronous=sync) else: LOG.warn(_("No vserver set in config. SSC will be disabled.")) if self.ssc_vols: data['netapp_mirrored'] = 'true'\ if self.ssc_vols['mirrored'] else 'false' data['netapp_unmirrored'] = 'true'\ if len(self.ssc_vols['all']) >\ len(self.ssc_vols['mirrored']) else 'false' data['netapp_dedup'] = 'true'\ if self.ssc_vols['dedup'] else 'false' data['netapp_nodedup'] = 'true'\ if len(self.ssc_vols['all']) >\ len(self.ssc_vols['dedup']) else 'false' data['netapp_compression'] = 'true'\ if self.ssc_vols['compression'] else 'false' data['netapp_nocompression'] = 'true'\ if len(self.ssc_vols['all']) >\ len(self.ssc_vols['compression']) else 'false' data['netapp_thin_provisioned'] = 'true'\ if self.ssc_vols['thin'] else 'false' data['netapp_thick_provisioned'] = 'true'\ if len(self.ssc_vols['all']) >\ len(self.ssc_vols['thin']) else 'false' if self.ssc_vols['all']: vol_max = max(self.ssc_vols['all']) data['total_capacity_gb'] =\ int(vol_max.space['size_total_bytes']) / units.GiB data['free_capacity_gb'] =\ int(vol_max.space['size_avl_bytes']) / units.GiB else: data['total_capacity_gb'] = 0 data['free_capacity_gb'] = 0 elif self.ssc_enabled: LOG.warn(_("No cluster ssc stats found." " Wait for next volume stats update.")) @utils.synchronized('update_stale') def _update_stale_vols(self, volume=None, reset=False): """Populates stale vols with vol and returns set copy.""" if volume: self.stale_vols.add(volume) set_copy = self.stale_vols.copy() if reset: self.stale_vols.clear() return set_copy @utils.synchronized("refresh_ssc_vols") def refresh_ssc_vols(self, vols): """Refreshes ssc_vols with latest entries.""" if not self._mounted_shares: LOG.warn(_("No shares found hence skipping ssc refresh.")) return mnt_share_vols = set() vs_ifs = self._get_vserver_ips(self.vserver) for vol in vols['all']: for sh in self._mounted_shares: host = sh.split(':')[0] junction = sh.split(':')[1] ip = na_utils.resolve_hostname(host) if (self._ip_in_ifs(ip, vs_ifs) and junction == vol.id['junction_path']): mnt_share_vols.add(vol) vol.export['path'] = sh break for key in vols.keys(): vols[key] = vols[key] & mnt_share_vols self.ssc_vols = vols def _ip_in_ifs(self, ip, api_ifs): """Checks if ip is listed for ifs in api format.""" if api_ifs is None: return False for ifc in api_ifs: ifc_ip = ifc.get_child_content("address") if ifc_ip == ip: return True return False def _shortlist_del_eligible_files(self, share, old_files): """Prepares list of eligible files to be deleted from cache.""" file_list = [] (vserver, exp_volume) = self._get_vserver_and_exp_vol( volume_id=None, share=share) for file in old_files: path = '/vol/%s/%s' % (exp_volume, file) u_bytes = self._get_cluster_file_usage(path, vserver) file_list.append((file, u_bytes)) LOG.debug(_('Shortlisted del elg files %s'), file_list) return file_list def _get_cluster_file_usage(self, path, vserver): """Gets the file unique bytes.""" LOG.debug(_('Getting file usage for %s'), path) file_use = NaElement.create_node_with_children( 'file-usage-get', **{'path': path}) res = self._invoke_successfully(file_use, vserver) bytes = res.get_child_content('unique-bytes') LOG.debug(_('file-usage for path %(path)s is %(bytes)s') % {'path': path, 'bytes': bytes}) return bytes def _share_match_for_ip(self, ip, shares): """Returns the share that is served by ip. Multiple shares can have same dir path but can be served using different ips. It finds the share which is served by ip on same nfs server. """ ip_vserver = self._get_vserver_for_ip(ip) if ip_vserver and shares: for share in shares: ip_sh = share.split(':')[0] sh_vserver = self._get_vserver_for_ip(ip_sh) if sh_vserver == ip_vserver: LOG.debug(_('Share match found for ip %s'), ip) return share LOG.debug(_('No share match found for ip %s'), ip) return None def _get_vserver_for_ip(self, ip): """Get vserver for the mentioned ip.""" try: ifs = self._get_if_info_by_ip(ip) vserver = ifs[0].get_child_content('vserver') return vserver except Exception: return None def _get_vol_for_share(self, nfs_share): """Gets the ssc vol with given share.""" if self.ssc_vols: for vol in self.ssc_vols['all']: if vol.export['path'] == nfs_share: return vol return None def _is_share_vol_compatible(self, volume, share): """Checks if share is compatible with volume to host it.""" compatible = self._is_share_eligible(share, volume['size']) if compatible and self.ssc_enabled: matched = self._is_share_vol_type_match(volume, share) compatible = compatible and matched return compatible def _is_share_vol_type_match(self, volume, share): """Checks if share matches volume type.""" netapp_vol = self._get_vol_for_share(share) LOG.debug(_("Found volume %(vol)s for share %(share)s.") % {'vol': netapp_vol, 'share': share}) extra_specs = get_volume_extra_specs(volume) vols = ssc_utils.get_volumes_for_specs(self.ssc_vols, extra_specs) return netapp_vol in vols def delete_volume(self, volume): """Deletes a logical volume.""" share = volume['provider_location'] super(NetAppDirectCmodeNfsDriver, self).delete_volume(volume) self._post_prov_deprov_in_ssc(share) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" share = self._get_provider_location(snapshot.volume_id) super(NetAppDirectCmodeNfsDriver, self).delete_snapshot(snapshot) self._post_prov_deprov_in_ssc(share) def _post_prov_deprov_in_ssc(self, share): if self.ssc_enabled and share: netapp_vol = self._get_vol_for_share(share) if netapp_vol: self._update_stale_vols(volume=netapp_vol) def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" copy_success = False try: major, minor = self._client.get_api_version() col_path = self.configuration.netapp_copyoffload_tool_path if (major == 1 and minor >= 20 and col_path): self._try_copyoffload(context, volume, image_service, image_id) copy_success = True LOG.info(_('Copied image %(img)s to volume %(vol)s using copy' ' offload workflow.') % {'img': image_id, 'vol': volume['id']}) else: LOG.debug(_("Copy offload either not configured or" " unsupported.")) except Exception as e: LOG.exception(_('Copy offload workflow unsuccessful. %s'), e) finally: if not copy_success: super(NetAppDirectCmodeNfsDriver, self).copy_image_to_volume( context, volume, image_service, image_id) if self.ssc_enabled: sh = self._get_provider_location(volume['id']) self._update_stale_vols(self._get_vol_for_share(sh)) def _try_copyoffload(self, context, volume, image_service, image_id): """Tries server side file copy offload.""" copied = False cache_result = self._find_image_in_cache(image_id) if cache_result: copied = self._copy_from_cache(volume, image_id, cache_result) if not cache_result or not copied: self._copy_from_img_service(context, volume, image_service, image_id) def _get_ip_verify_on_cluster(self, host): """Verifies if host on same cluster and returns ip.""" ip = na_utils.resolve_hostname(host) vserver = self._get_vserver_for_ip(ip) if not vserver: raise exception.NotFound(_("No vserver owning the ip %s.") % ip) return ip def _copy_from_cache(self, volume, image_id, cache_result): """Try copying image file_name from cached file_name.""" LOG.debug(_("Trying copy from cache using copy offload.")) copied = False for res in cache_result: try: (share, file_name) = res LOG.debug(_("Found cache file_name on share %s."), share) if share != self._get_provider_location(volume['id']): col_path = self.configuration.netapp_copyoffload_tool_path src_ip = self._get_ip_verify_on_cluster( share.split(':')[0]) src_path = os.path.join(share.split(':')[1], file_name) dst_ip = self._get_ip_verify_on_cluster(self._get_host_ip( volume['id'])) dst_path = os.path.join( self._get_export_path(volume['id']), volume['name']) self._execute(col_path, src_ip, dst_ip, src_path, dst_path, run_as_root=False, check_exit_code=0) self._register_image_in_cache(volume, image_id) LOG.debug(_("Copied image from cache to volume %s using" " copy offload."), volume['id']) else: self._clone_file_dst_exists(share, file_name, volume['name'], dest_exists=True) LOG.debug(_("Copied image from cache to volume %s using" " cloning."), volume['id']) self._post_clone_image(volume) copied = True break except Exception as e: LOG.exception(_('Error in workflow copy from cache. %s.'), e) return copied def _clone_file_dst_exists(self, share, src_name, dst_name, dest_exists=False): """Clone file even if dest exists.""" (vserver, exp_volume) = self._get_vserver_and_exp_vol(share=share) self._clone_file(exp_volume, src_name, dst_name, vserver, dest_exists=dest_exists) def _copy_from_img_service(self, context, volume, image_service, image_id): """Copies from the image service using copy offload.""" LOG.debug(_("Trying copy from image service using copy offload.")) image_loc = image_service.get_location(context, image_id) image_loc = self._construct_image_nfs_url(image_loc) conn, dr = self._check_get_nfs_path_segs(image_loc) if conn: src_ip = self._get_ip_verify_on_cluster(conn.split(':')[0]) else: raise exception.NotFound(_("Source host details not found.")) (__, ___, img_file) = image_loc.rpartition('/') src_path = os.path.join(dr, img_file) dst_ip = self._get_ip_verify_on_cluster(self._get_host_ip( volume['id'])) # tmp file is required to deal with img formats tmp_img_file = str(uuid.uuid4()) col_path = self.configuration.netapp_copyoffload_tool_path img_info = image_service.show(context, image_id) dst_share = self._get_provider_location(volume['id']) self._check_share_can_hold_size(dst_share, img_info['size']) dst_dir = self._get_mount_point_for_share(dst_share) dst_img_local = os.path.join(dst_dir, tmp_img_file) try: # If src and dst share not equal if (('%s:%s' % (src_ip, dr)) != ('%s:%s' % (dst_ip, self._get_export_path(volume['id'])))): dst_img_serv_path = os.path.join( self._get_export_path(volume['id']), tmp_img_file) self._execute(col_path, src_ip, dst_ip, src_path, dst_img_serv_path, run_as_root=False, check_exit_code=0) else: self._clone_file_dst_exists(dst_share, img_file, tmp_img_file) self._discover_file_till_timeout(dst_img_local, timeout=120) LOG.debug(_('Copied image %(img)s to tmp file %(tmp)s.') % {'img': image_id, 'tmp': tmp_img_file}) dst_img_cache_local = os.path.join(dst_dir, 'img-cache-%s' % (image_id)) if img_info['disk_format'] == 'raw': LOG.debug(_('Image is raw %s.'), image_id) self._clone_file_dst_exists(dst_share, tmp_img_file, volume['name'], dest_exists=True) self._move_nfs_file(dst_img_local, dst_img_cache_local) LOG.debug(_('Copied raw image %(img)s to volume %(vol)s.') % {'img': image_id, 'vol': volume['id']}) else: LOG.debug(_('Image will be converted to raw %s.'), image_id) img_conv = str(uuid.uuid4()) dst_img_conv_local = os.path.join(dst_dir, img_conv) # Checking against image size which is approximate check self._check_share_can_hold_size(dst_share, img_info['size']) try: image_utils.convert_image(dst_img_local, dst_img_conv_local, 'raw') data = image_utils.qemu_img_info(dst_img_conv_local) if data.file_format != "raw": raise exception.InvalidResults( _("Converted to raw, but format is now %s.") % data.file_format) else: self._clone_file_dst_exists(dst_share, img_conv, volume['name'], dest_exists=True) self._move_nfs_file(dst_img_conv_local, dst_img_cache_local) LOG.debug(_('Copied locally converted raw image' ' %(img)s to volume %(vol)s.') % {'img': image_id, 'vol': volume['id']}) finally: if os.path.exists(dst_img_conv_local): self._delete_file(dst_img_conv_local) self._post_clone_image(volume) finally: if os.path.exists(dst_img_local): self._delete_file(dst_img_local) class NetAppDirect7modeNfsDriver (NetAppDirectNfsDriver): """Executes commands related to volumes on 7 mode.""" def __init__(self, *args, **kwargs): super(NetAppDirect7modeNfsDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(netapp_7mode_opts) def _do_custom_setup(self, client): """Do the customized set up on client if any for 7 mode.""" (major, minor) = self._get_ontapi_version() client.set_api_version(major, minor) self.vfiler = self.configuration.netapp_vfiler def check_for_setup_error(self): """Checks if setup occurred properly.""" api_version = self._client.get_api_version() if api_version: major, minor = api_version if major == 1 and minor < 9: msg = _("Unsupported ONTAP version." " ONTAP version 7.3.1 and above is supported.") raise exception.VolumeBackendAPIException(data=msg) else: msg = _("Api version could not be determined.") raise exception.VolumeBackendAPIException(data=msg) super(NetAppDirect7modeNfsDriver, self).check_for_setup_error() def _invoke_successfully(self, na_element, vfiler=None): """Invoke the api for successful result. If vfiler is present then invokes vfiler api else filer api. :param vfiler: vfiler name. """ self._is_naelement(na_element) server = copy.copy(self._client) if vfiler: server.set_vfiler(vfiler) else: server.set_vfiler(None) result = server.invoke_successfully(na_element, True) return result def _clone_volume(self, volume_name, clone_name, volume_id, share=None): """Clones mounted volume with NetApp filer.""" (host_ip, export_path) = self._get_export_ip_path(volume_id, share) storage_path = self._get_actual_path_for_export(export_path) target_path = '%s/%s' % (storage_path, clone_name) (clone_id, vol_uuid) = self._start_clone('%s/%s' % (storage_path, volume_name), target_path) if vol_uuid: try: self._wait_for_clone_finish(clone_id, vol_uuid) except NaApiError as e: if e.code != 'UnknownCloneId': self._clear_clone(clone_id) raise e def _get_actual_path_for_export(self, export_path): """Gets the actual path on the filer for export path.""" storage_path = NaElement.create_node_with_children( 'nfs-exportfs-storage-path', **{'pathname': export_path}) result = self._invoke_successfully(storage_path, self.vfiler) if result.get_child_content('actual-pathname'): return result.get_child_content('actual-pathname') raise exception.NotFound(_('No storage path found for export path %s') % (export_path)) def _start_clone(self, src_path, dest_path): """Starts the clone operation. :returns: clone-id """ msg_fmt = {'src_path': src_path, 'dest_path': dest_path} LOG.debug(_("""Cloning with src %(src_path)s, dest %(dest_path)s""") % msg_fmt) clone_start = NaElement.create_node_with_children( 'clone-start', **{'source-path': src_path, 'destination-path': dest_path, 'no-snap': 'true'}) result = self._invoke_successfully(clone_start, self.vfiler) clone_id_el = result.get_child_by_name('clone-id') cl_id_info = clone_id_el.get_child_by_name('clone-id-info') vol_uuid = cl_id_info.get_child_content('volume-uuid') clone_id = cl_id_info.get_child_content('clone-op-id') return (clone_id, vol_uuid) def _wait_for_clone_finish(self, clone_op_id, vol_uuid): """Waits till a clone operation is complete or errored out.""" clone_ls_st = NaElement('clone-list-status') clone_id = NaElement('clone-id') clone_ls_st.add_child_elem(clone_id) clone_id.add_node_with_children('clone-id-info', **{'clone-op-id': clone_op_id, 'volume-uuid': vol_uuid}) clone_running = True while clone_running: result = self._invoke_successfully(clone_ls_st, self.vfiler) clone_running = self._is_clone_still_running(result, clone_id) def _is_clone_still_running(self, result, clone_id): clone_running = True status = result.get_child_by_name('status') ops_info = status.get_children() if ops_info: state = ops_info[0].get_child_content('clone-state') if state == 'completed': clone_running = False elif state == 'failed': code = ops_info[0].get_child_content('error') reason = ops_info[0].get_child_content('reason') raise NaApiError(code, reason) else: time.sleep(1) else: raise NaApiError( 'UnknownCloneId', 'No clone operation for clone id %s found on the filer' % clone_id) return clone_running def _clear_clone(self, clone_id): """Clear the clone information. Invoke this in case of failed clone. """ clone_clear = NaElement.create_node_with_children( 'clone-clear', **{'clone-id': clone_id}) retry = 3 while retry: try: self._invoke_successfully(clone_clear, self.vfiler) break except Exception as e: # Filer might be rebooting time.sleep(5) retry = retry - 1 def _update_volume_stats(self): """Retrieve stats info from volume group.""" super(NetAppDirect7modeNfsDriver, self)._update_volume_stats() netapp_backend = 'NetApp_NFS_7mode_direct' backend_name = self.configuration.safe_get('volume_backend_name') self._stats["volume_backend_name"] = (backend_name or 'NetApp_NFS_7mode_direct') self._stats["vendor_name"] = 'NetApp' self._stats["driver_version"] = self.VERSION provide_ems(self, self._client, netapp_backend, self._app_version, server_type="7mode") def _shortlist_del_eligible_files(self, share, old_files): """Prepares list of eligible files to be deleted from cache.""" file_list = [] exp_volume = self._get_actual_path_for_export(share) for file in old_files: path = '/vol/%s/%s' % (exp_volume, file) u_bytes = self._get_filer_file_usage(path) file_list.append((file, u_bytes)) LOG.debug(_('Shortlisted del elg files %s'), file_list) return file_list def _get_filer_file_usage(self, path): """Gets the file unique bytes.""" LOG.debug(_('Getting file usage for %s'), path) file_use = NaElement.create_node_with_children( 'file-usage-get', **{'path': path}) res = self._invoke_successfully(file_use) bytes = res.get_child_content('unique-bytes') LOG.debug(_('file-usage for path %(path)s is %(bytes)s') % {'path': path, 'bytes': bytes}) return bytes def _is_filer_ip(self, ip): """Checks whether ip is on the same filer.""" try: ifconfig = NaElement('net-ifconfig-get') res = self._invoke_successfully(ifconfig, None) if_info = res.get_child_by_name('interface-config-info') if if_info: ifs = if_info.get_children() for intf in ifs: v4_addr = intf.get_child_by_name('v4-primary-address') if v4_addr: ip_info = v4_addr.get_child_by_name('ip-address-info') if ip_info: address = ip_info.get_child_content('address') if ip == address: return True else: continue except Exception: return False return False def _share_match_for_ip(self, ip, shares): """Returns the share that is served by ip. Multiple shares can have same dir path but can be served using different ips. It finds the share which is served by ip on same nfs server. """ if self._is_filer_ip(ip) and shares: for share in shares: ip_sh = share.split(':')[0] if self._is_filer_ip(ip_sh): LOG.debug(_('Share match found for ip %s'), ip) return share LOG.debug(_('No share match found for ip %s'), ip) return None def _is_share_vol_compatible(self, volume, share): """Checks if share is compatible with volume to host it.""" return self._is_share_eligible(share, volume['size']) cinder-2014.1.5/cinder/volume/drivers/netapp/__init__.py0000664000567000056700000000000012540642603024171 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/netapp/api.py0000664000567000056700000004431612540642606023230 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ NetApp api for ONTAP and OnCommand DFM. Contains classes required to issue api calls to ONTAP and OnCommand DFM. """ from lxml import etree import urllib2 from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) ESIS_CLONE_NOT_LICENSED = '14956' class NaServer(object): """Encapsulates server connection logic.""" TRANSPORT_TYPE_HTTP = 'http' TRANSPORT_TYPE_HTTPS = 'https' SERVER_TYPE_FILER = 'filer' SERVER_TYPE_DFM = 'dfm' URL_FILER = 'servlets/netapp.servlets.admin.XMLrequest_filer' URL_DFM = 'apis/XMLrequest' NETAPP_NS = 'http://www.netapp.com/filer/admin' STYLE_LOGIN_PASSWORD = 'basic_auth' STYLE_CERTIFICATE = 'certificate_auth' def __init__(self, host, server_type=SERVER_TYPE_FILER, transport_type=TRANSPORT_TYPE_HTTP, style=STYLE_LOGIN_PASSWORD, username=None, password=None): self._host = host self.set_server_type(server_type) self.set_transport_type(transport_type) self.set_style(style) self._username = username self._password = password self._refresh_conn = True def get_transport_type(self): """Get the transport type protocol.""" return self._protocol def set_transport_type(self, transport_type): """Set the transport type protocol for api. Supports http and https transport types. """ if transport_type.lower() not in ( NaServer.TRANSPORT_TYPE_HTTP, NaServer.TRANSPORT_TYPE_HTTPS): raise ValueError('Unsupported transport type') self._protocol = transport_type.lower() if self._protocol == NaServer.TRANSPORT_TYPE_HTTP: if self._server_type == NaServer.SERVER_TYPE_FILER: self.set_port(80) else: self.set_port(8088) else: if self._server_type == NaServer.SERVER_TYPE_FILER: self.set_port(443) else: self.set_port(8488) self._refresh_conn = True def get_style(self): """Get the authorization style for communicating with the server.""" return self._auth_style def set_style(self, style): """Set the authorization style for communicating with the server. Supports basic_auth for now. Certificate_auth mode to be done. """ if style.lower() not in (NaServer.STYLE_LOGIN_PASSWORD, NaServer.STYLE_CERTIFICATE): raise ValueError('Unsupported authentication style') self._auth_style = style.lower() def get_server_type(self): """Get the target server type.""" return self._server_type def set_server_type(self, server_type): """Set the target server type. Supports filer and dfm server types. """ if server_type.lower() not in (NaServer.SERVER_TYPE_FILER, NaServer.SERVER_TYPE_DFM): raise ValueError('Unsupported server type') self._server_type = server_type.lower() if self._server_type == NaServer.SERVER_TYPE_FILER: self._url = NaServer.URL_FILER else: self._url = NaServer.URL_DFM self._ns = NaServer.NETAPP_NS self._refresh_conn = True def set_api_version(self, major, minor): """Set the api version.""" try: self._api_major_version = int(major) self._api_minor_version = int(minor) self._api_version = str(major) + "." + str(minor) except ValueError: raise ValueError('Major and minor versions must be integers') self._refresh_conn = True def get_api_version(self): """Gets the api version tuple.""" if hasattr(self, '_api_version'): return (self._api_major_version, self._api_minor_version) return None def set_port(self, port): """Set the server communication port.""" try: int(port) except ValueError: raise ValueError('Port must be integer') self._port = str(port) self._refresh_conn = True def get_port(self): """Get the server communication port.""" return self._port def set_timeout(self, seconds): """Sets the timeout in seconds.""" try: self._timeout = int(seconds) except ValueError: raise ValueError('timeout in seconds must be integer') def get_timeout(self): """Gets the timeout in seconds if set.""" if hasattr(self, '_timeout'): return self._timeout return None def get_vfiler(self): """Get the vfiler to use in tunneling.""" return self._vfiler def set_vfiler(self, vfiler): """Set the vfiler to use if tunneling gets enabled.""" self._vfiler = vfiler def get_vserver(self): """Get the vserver to use in tunneling.""" return self._vserver def set_vserver(self, vserver): """Set the vserver to use if tunneling gets enabled.""" self._vserver = vserver def set_username(self, username): """Set the user name for authentication.""" self._username = username self._refresh_conn = True def set_password(self, password): """Set the password for authentication.""" self._password = password self._refresh_conn = True def invoke_elem(self, na_element, enable_tunneling=False): """Invoke the api on the server.""" if na_element and not isinstance(na_element, NaElement): ValueError('NaElement must be supplied to invoke api') request = self._create_request(na_element, enable_tunneling) if not hasattr(self, '_opener') or not self._opener \ or self._refresh_conn: self._build_opener() try: if hasattr(self, '_timeout'): response = self._opener.open(request, timeout=self._timeout) else: response = self._opener.open(request) except urllib2.HTTPError as e: raise NaApiError(e.code, e.msg) except Exception as e: raise NaApiError('Unexpected error', e) xml = response.read() return self._get_result(xml) def invoke_successfully(self, na_element, enable_tunneling=False): """Invokes api and checks execution status as success. Need to set enable_tunneling to True explicitly to achieve it. This helps to use same connection instance to enable or disable tunneling. The vserver or vfiler should be set before this call otherwise tunneling remains disabled. """ result = self.invoke_elem(na_element, enable_tunneling) if result.has_attr('status') and result.get_attr('status') == 'passed': return result code = result.get_attr('errno')\ or result.get_child_content('errorno')\ or 'ESTATUSFAILED' if code == ESIS_CLONE_NOT_LICENSED: msg = 'Clone operation failed: FlexClone not licensed.' else: msg = result.get_attr('reason')\ or result.get_child_content('reason')\ or 'Execution status is failed due to unknown reason' raise NaApiError(code, msg) def _create_request(self, na_element, enable_tunneling=False): """Creates request in the desired format.""" netapp_elem = NaElement('netapp') netapp_elem.add_attr('xmlns', self._ns) if hasattr(self, '_api_version'): netapp_elem.add_attr('version', self._api_version) if enable_tunneling: self._enable_tunnel_request(netapp_elem) netapp_elem.add_child_elem(na_element) request_d = netapp_elem.to_string() request = urllib2.Request( self._get_url(), data=request_d, headers={'Content-Type': 'text/xml', 'charset': 'utf-8'}) return request def _enable_tunnel_request(self, netapp_elem): """Enables vserver or vfiler tunneling.""" if hasattr(self, '_vfiler') and self._vfiler: if hasattr(self, '_api_major_version') and \ hasattr(self, '_api_minor_version') and \ self._api_major_version >= 1 and \ self._api_minor_version >= 7: netapp_elem.add_attr('vfiler', self._vfiler) else: raise ValueError('ontapi version has to be atleast 1.7' ' to send request to vfiler') if hasattr(self, '_vserver') and self._vserver: if hasattr(self, '_api_major_version') and \ hasattr(self, '_api_minor_version') and \ self._api_major_version >= 1 and \ self._api_minor_version >= 15: netapp_elem.add_attr('vfiler', self._vserver) else: raise ValueError('ontapi version has to be atleast 1.15' ' to send request to vserver') def _parse_response(self, response): """Get the NaElement for the response.""" if not response: raise NaApiError('No response received') xml = etree.XML(response) return NaElement(xml) def _get_result(self, response): """Gets the call result.""" processed_response = self._parse_response(response) return processed_response.get_child_by_name('results') def _get_url(self): return '%s://%s:%s/%s' % (self._protocol, self._host, self._port, self._url) def _build_opener(self): if self._auth_style == NaServer.STYLE_LOGIN_PASSWORD: auth_handler = self._create_basic_auth_handler() else: auth_handler = self._create_certificate_auth_handler() opener = urllib2.build_opener(auth_handler) self._opener = opener def _create_basic_auth_handler(self): password_man = urllib2.HTTPPasswordMgrWithDefaultRealm() password_man.add_password(None, self._get_url(), self._username, self._password) auth_handler = urllib2.HTTPBasicAuthHandler(password_man) return auth_handler def _create_certificate_auth_handler(self): raise NotImplementedError() def __str__(self): return "server: %s" % (self._host) class NaElement(object): """Class wraps basic building block for NetApp api request.""" def __init__(self, name): """Name of the element or etree.Element.""" if isinstance(name, etree._Element): self._element = name else: self._element = etree.Element(name) def get_name(self): """Returns the tag name of the element.""" return self._element.tag def set_content(self, text): """Set the text string for the element.""" self._element.text = text def get_content(self): """Get the text for the element.""" return self._element.text def add_attr(self, name, value): """Add the attribute to the element.""" self._element.set(name, value) def add_attrs(self, **attrs): """Add multiple attributes to the element.""" for attr in attrs.keys(): self._element.set(attr, attrs.get(attr)) def add_child_elem(self, na_element): """Add the child element to the element.""" if isinstance(na_element, NaElement): self._element.append(na_element._element) return raise def get_child_by_name(self, name): """Get the child element by the tag name.""" for child in self._element.iterchildren(): if child.tag == name or etree.QName(child.tag).localname == name: return NaElement(child) return None def get_child_content(self, name): """Get the content of the child.""" for child in self._element.iterchildren(): if child.tag == name or etree.QName(child.tag).localname == name: return child.text return None def get_children(self): """Get the children for the element.""" return [NaElement(el) for el in self._element.iterchildren()] def has_attr(self, name): """Checks whether element has attribute.""" attributes = self._element.attrib or {} return name in attributes.keys() def get_attr(self, name): """Get the attribute with the given name.""" attributes = self._element.attrib or {} return attributes.get(name) def get_attr_names(self): """Returns the list of attribute names.""" attributes = self._element.attrib or {} return attributes.keys() def add_new_child(self, name, content, convert=False): """Add child with tag name and context. Convert replaces entity refs to chars. """ child = NaElement(name) if convert: content = NaElement._convert_entity_refs(content) child.set_content(content) self.add_child_elem(child) @staticmethod def _convert_entity_refs(text): """Converts entity refs to chars to handle etree auto conversions.""" text = text.replace("<", "<") text = text.replace(">", ">") return text @staticmethod def create_node_with_children(node, **children): """Creates and returns named node with children.""" parent = NaElement(node) for child in children.keys(): parent.add_new_child(child, children.get(child, None)) return parent def add_node_with_children(self, node, **children): """Creates named node with children.""" parent = NaElement.create_node_with_children(node, **children) self.add_child_elem(parent) def to_string(self, pretty=False, method='xml', encoding='UTF-8'): """Prints the element to string.""" return etree.tostring(self._element, method=method, encoding=encoding, pretty_print=pretty) def __getitem__(self, key): """Dict getter method for NaElement. Returns NaElement list if present, text value in case no NaElement node children or attribute value if present. """ child = self.get_child_by_name(key) if child: if child.get_children(): return child else: return child.get_content() elif self.has_attr(key): return self.get_attr(key) raise KeyError(_('No element by given name %s.') % (key)) def __setitem__(self, key, value): """Dict setter method for NaElement. Accepts dict, list, tuple, str, int, float and long as valid value. """ if key: if value: if isinstance(value, NaElement): child = NaElement(key) child.add_child_elem(value) self.add_child_elem(child) elif isinstance(value, (str, int, float, long)): self.add_new_child(key, str(value)) elif isinstance(value, (list, tuple, dict)): child = NaElement(key) child.translate_struct(value) self.add_child_elem(child) else: raise TypeError(_('Not a valid value for NaElement.')) else: self.add_child_elem(NaElement(key)) else: raise KeyError(_('NaElement name cannot be null.')) def translate_struct(self, data_struct): """Convert list, tuple, dict to NaElement and appends. Example usage: 1. vl1 vl2 vl3 The above can be achieved by doing root = NaElement('root') root.translate_struct({'elem1': 'vl1', 'elem2': 'vl2', 'elem3': 'vl3'}) 2. vl1 vl2 vl3 The above can be achieved by doing root = NaElement('root') root.translate_struct([{'elem1': 'vl1', 'elem2': 'vl2'}, {'elem1': 'vl3'}]) """ if isinstance(data_struct, (list, tuple)): for el in data_struct: if isinstance(el, (list, tuple, dict)): self.translate_struct(el) else: self.add_child_elem(NaElement(el)) elif isinstance(data_struct, dict): for k in data_struct.keys(): child = NaElement(k) if isinstance(data_struct[k], (dict, list, tuple)): child.translate_struct(data_struct[k]) else: if data_struct[k]: child.set_content(str(data_struct[k])) self.add_child_elem(child) else: raise ValueError(_('Type cannot be converted into NaElement.')) class NaApiError(Exception): """Base exception class for NetApp api errors.""" def __init__(self, code='unknown', message='unknown'): self.code = code self.message = message def __str__(self, *args, **kwargs): return 'NetApp api failed. Reason - %s:%s' % (self.code, self.message) NaErrors = {'API_NOT_FOUND': NaApiError('13005', 'Unable to find API'), 'INSUFFICIENT_PRIVS': NaApiError('13003', 'Insufficient privileges')} cinder-2014.1.5/cinder/volume/drivers/netapp/common.py0000664000567000056700000001524612540642606023747 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Unified driver for NetApp storage systems. Supports call to multiple storage systems of different families and protocols. """ from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers.netapp.options import netapp_proxy_opts from cinder.volume.drivers.netapp import utils LOG = logging.getLogger(__name__) #NOTE(singn): Holds family:{protocol:driver} registration information. #Plug in new families and protocols to support new drivers. #No other code modification required. netapp_unified_plugin_registry =\ {'ontap_cluster': { 'iscsi': 'cinder.volume.drivers.netapp.iscsi.NetAppDirectCmodeISCSIDriver', 'nfs': 'cinder.volume.drivers.netapp.nfs.NetAppDirectCmodeNfsDriver' }, 'ontap_7mode': { 'iscsi': 'cinder.volume.drivers.netapp.iscsi.NetAppDirect7modeISCSIDriver', 'nfs': 'cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver' }, 'eseries': { 'iscsi': 'cinder.volume.drivers.netapp.eseries.iscsi.Driver' }, } #NOTE(singn): Holds family:protocol information. #Protocol represents the default protocol driver option #in case no protocol is specified by the user in configuration. netapp_family_default =\ { 'ontap_cluster': 'nfs', 'ontap_7mode': 'nfs', 'eseries': 'iscsi' } class NetAppDriver(object): """"NetApp unified block storage driver. Acts as a mediator to NetApp storage drivers. Proxies requests based on the storage family and protocol configured. Override the proxy driver method by adding method in this driver. """ def __init__(self, *args, **kwargs): super(NetAppDriver, self).__init__() app_version = utils.OpenStackInfo().info() LOG.info(_('OpenStack OS Version Info: %(info)s') % { 'info': app_version}) self.configuration = kwargs.get('configuration', None) if self.configuration: self.configuration.append_config_values(netapp_proxy_opts) else: raise exception.InvalidInput( reason=_("Required configuration not found")) kwargs['app_version'] = app_version self.driver = NetAppDriverFactory.create_driver( self.configuration.netapp_storage_family, self.configuration.netapp_storage_protocol, *args, **kwargs) def __setattr__(self, name, value): """Sets the attribute.""" if getattr(self, 'driver', None): self.driver.__setattr__(name, value) return object.__setattr__(self, name, value) def __getattr__(self, name): """"Gets the attribute.""" drv = object.__getattribute__(self, 'driver') return getattr(drv, name) class NetAppDriverFactory(object): """Factory to instantiate appropriate NetApp driver.""" @staticmethod def create_driver( storage_family, storage_protocol, *args, **kwargs): """"Creates an appropriate driver based on family and protocol.""" fmt = {'storage_family': storage_family, 'storage_protocol': storage_protocol} LOG.info(_('Requested unified config: %(storage_family)s and ' '%(storage_protocol)s') % fmt) storage_family = storage_family.lower() family_meta = netapp_unified_plugin_registry.get(storage_family) if family_meta is None: raise exception.InvalidInput( reason=_('Storage family %s is not supported') % storage_family) if storage_protocol is None: storage_protocol = netapp_family_default.get(storage_family) fmt['storage_protocol'] = storage_protocol if storage_protocol is None: raise exception.InvalidInput( reason=_('No default storage protocol found' ' for storage family %(storage_family)s') % fmt) storage_protocol = storage_protocol.lower() driver_loc = family_meta.get(storage_protocol) if driver_loc is None: raise exception.InvalidInput( reason=_('Protocol %(storage_protocol)s is not supported' ' for storage family %(storage_family)s') % fmt) NetAppDriverFactory.check_netapp_driver(driver_loc) kwargs = kwargs or {} kwargs['netapp_mode'] = 'proxy' driver = importutils.import_object(driver_loc, *args, **kwargs) LOG.info(_('NetApp driver of family %(storage_family)s and protocol' ' %(storage_protocol)s loaded') % fmt) return driver @staticmethod def check_netapp_driver(location): """Checks if the driver requested is a netapp driver.""" if location.find(".netapp.") == -1: raise exception.InvalidInput( reason=_("Only loading netapp drivers supported.")) class Deprecated(driver.VolumeDriver): """Deprecated driver for NetApp. This driver is used for mapping deprecated drivers to itself in manager. It prevents cinder from getting errored out in case of upgrade scenarios and also suggests further steps. """ def __init__(self, *args, **kwargs): self._log_deprecated_warn() def _log_deprecated_warn(self): """Logs appropriate warning and suggestion.""" link = "https://communities.netapp.com/groups/openstack" msg = _("The configured NetApp driver is deprecated." " Please refer the link to resolve the issue '%s'.") LOG.warn(msg % link) def check_for_setup_error(self): pass def ensure_export(self, context, volume): pass def get_volume_stats(self, refresh=False): """Return the current state of the volume service. If 'refresh' is True, run the update first. """ self._log_deprecated_warn() return None cinder-2014.1.5/cinder/volume/drivers/netapp/eseries/0000775000567000056700000000000012540643114023527 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/netapp/eseries/iscsi.py0000664000567000056700000010206212540642606025221 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 NetApp, Inc. # All Rights Reserved. # # 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. """ iSCSI driver for NetApp E-series storage systems. """ import socket import time import uuid from oslo.config import cfg from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder import units from cinder import utils as cinder_utils from cinder.volume import driver from cinder.volume.drivers.netapp.eseries import client from cinder.volume.drivers.netapp.options import netapp_basicauth_opts from cinder.volume.drivers.netapp.options import netapp_connection_opts from cinder.volume.drivers.netapp.options import netapp_eseries_opts from cinder.volume.drivers.netapp.options import netapp_transport_opts from cinder.volume.drivers.netapp import utils LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.register_opts(netapp_basicauth_opts) CONF.register_opts(netapp_connection_opts) CONF.register_opts(netapp_eseries_opts) CONF.register_opts(netapp_transport_opts) class Driver(driver.ISCSIDriver): """Executes commands relating to Volumes.""" VERSION = "1.0.0" required_flags = ['netapp_server_hostname', 'netapp_controller_ips', 'netapp_login', 'netapp_password', 'netapp_storage_pools'] SLEEP_SECS = 5 MAX_LUNS_PER_HOST = 255 HOST_TYPES = {'aix': 'AIX MPIO', 'avt': 'AVT_4M', 'factoryDefault': 'FactoryDefault', 'hpux': 'HP-UX TPGS', 'linux_atto': 'LnxTPGSALUA', 'linux_dm_mp': 'LnxALUA', 'linux_mpp_rdac': 'Linux', 'linux_pathmanager': 'LnxTPGSALUA_PM', 'macos': 'MacTPGSALUA', 'ontap': 'ONTAP', 'svc': 'SVC', 'solaris_v11': 'SolTPGSALUA', 'solaris_v10': 'Solaris', 'vmware': 'VmwTPGSALUA', 'windows': 'Windows 2000/Server 2003/Server 2008 Non-Clustered', 'windows_atto': 'WinTPGSALUA', 'windows_clustered': 'Windows 2000/Server 2003/Server 2008 Clustered' } def __init__(self, *args, **kwargs): super(Driver, self).__init__(*args, **kwargs) utils.validate_instantiation(**kwargs) self.configuration.append_config_values(netapp_basicauth_opts) self.configuration.append_config_values(netapp_connection_opts) self.configuration.append_config_values(netapp_transport_opts) self.configuration.append_config_values(netapp_eseries_opts) self._objects = {'disk_pool_refs': [], 'volumes': {'label_ref': {}, 'ref_vol': {}}, 'snapshots': {'label_ref': {}, 'ref_snap': {}}} def do_setup(self, context): """Any initialization the volume driver does while starting.""" self._check_flags() self._client = client.RestClient( scheme=self.configuration.netapp_transport_type, host=self.configuration.netapp_server_hostname, port=self.configuration.netapp_server_port, service_path=self.configuration.netapp_webservice_path, username=self.configuration.netapp_login, password=self.configuration.netapp_password) self._check_mode_get_or_register_storage_system() def _check_flags(self): """Ensure that the flags we care about are set.""" required_flags = self.required_flags for flag in required_flags: if not getattr(self.configuration, flag, None): msg = _('%s is not set.') % flag raise exception.InvalidInput(reason=msg) def check_for_setup_error(self): self.host_type =\ self.HOST_TYPES.get(self.configuration.netapp_eseries_host_type, None) if not self.host_type: raise exception.NetAppDriverException( _('Configured host type is not supported.')) self._check_storage_system() self._populate_system_objects() def _check_mode_get_or_register_storage_system(self): """Does validity checks for storage system registry and health.""" def _resolve_host(host): try: ip = utils.resolve_hostname(host) return ip except socket.gaierror as e: LOG.error(_('Error resolving host %(host)s. Error - %(e)s.') % {'host': host, 'e': e}) raise exception.NoValidHost( _("Controller IP '%(host)s' could not be resolved: %(e)s.") % {'host': host, 'e': e}) ips = self.configuration.netapp_controller_ips ips = [i.strip() for i in ips.split(",")] ips = [x for x in ips if _resolve_host(x)] host = utils.resolve_hostname( self.configuration.netapp_server_hostname) if host in ips: LOG.info(_('Embedded mode detected.')) system = self._client.list_storage_systems()[0] else: LOG.info(_('Proxy mode detected.')) system = self._client.register_storage_system( ips, password=self.configuration.netapp_sa_password) self._client.set_system_id(system.get('id')) def _check_storage_system(self): """Checks whether system is registered and has good status.""" try: system = self._client.list_storage_system() except exception.NetAppDriverException: with excutils.save_and_reraise_exception(): msg = _("System with controller addresses [%s] is not" " registered with web service.") LOG.info(msg % self.configuration.netapp_controller_ips) password_not_in_sync = False if system.get('status', '').lower() == 'passwordoutofsync': password_not_in_sync = True new_pwd = self.configuration.netapp_sa_password self._client.update_stored_system_password(new_pwd) time.sleep(self.SLEEP_SECS) sa_comm_timeout = 60 comm_time = 0 while True: system = self._client.list_storage_system() status = system.get('status', '').lower() # wait if array not contacted or # password was not in sync previously. if ((status == 'nevercontacted') or (password_not_in_sync and status == 'passwordoutofsync')): LOG.info(_('Waiting for web service array communication.')) time.sleep(self.SLEEP_SECS) comm_time = comm_time + self.SLEEP_SECS if comm_time >= sa_comm_timeout: msg = _("Failure in communication between web service and" " array. Waited %s seconds. Verify array" " configuration parameters.") raise exception.NetAppDriverException(msg % sa_comm_timeout) else: break msg_dict = {'id': system.get('id'), 'status': status} if (status == 'passwordoutofsync' or status == 'notsupported' or status == 'offline'): msg = _("System %(id)s found with bad status - %(status)s.") raise exception.NetAppDriverException(msg % msg_dict) LOG.info(_("System %(id)s has %(status)s status.") % msg_dict) return True def _populate_system_objects(self): """Get all system objects into cache.""" self._cache_allowed_disk_pool_refs() for vol in self._client.list_volumes(): self._cache_volume(vol) for sn in self._client.list_snapshot_groups(): self._cache_snap_grp(sn) for image in self._client.list_snapshot_images(): self._cache_snap_img(image) def _cache_allowed_disk_pool_refs(self): """Caches disk pools refs as per pools configured by user.""" d_pools = self.configuration.netapp_storage_pools LOG.info(_('Configured storage pools %s.'), d_pools) pools = [x.strip().lower() if x else None for x in d_pools.split(',')] for pool in self._client.list_storage_pools(): if (pool.get('raidLevel') == 'raidDiskPool' and pool['label'].lower() in pools): self._objects['disk_pool_refs'].append(pool['volumeGroupRef']) def _cache_volume(self, obj): """Caches volumes for further reference.""" if (obj.get('volumeUse') == 'standardVolume' and obj.get('label') and obj.get('volumeRef')): self._objects['volumes']['label_ref'][obj['label']]\ = obj['volumeRef'] self._objects['volumes']['ref_vol'][obj['volumeRef']] = obj def _cache_snap_grp(self, obj): """Caches snapshot groups.""" if (obj.get('label') and obj.get('pitGroupRef') and obj.get('baseVolume') in self._objects['volumes']['ref_vol']): self._objects['snapshots']['label_ref'][obj['label']] =\ obj['pitGroupRef'] self._objects['snapshots']['ref_snap'][obj['pitGroupRef']] = obj def _cache_snap_img(self, image): """Caches snapshot image under corresponding snapshot group.""" group_id = image.get('pitGroupRef') sn_gp = self._objects['snapshots']['ref_snap'] if group_id in sn_gp: sn_gp[group_id]['images'] = sn_gp[group_id].get('images') or [] sn_gp[group_id]['images'].append(image) def _cache_vol_mapping(self, mapping): """Caches volume mapping in volume object.""" vol_id = mapping['volumeRef'] volume = self._objects['volumes']['ref_vol'][vol_id] volume['listOfMappings'] = volume.get('listOfMappings') or [] for mapp in volume['listOfMappings']: if mapp['lunMappingRef'] == mapping['lunMappingRef']: return volume['listOfMappings'].append(mapping) def _del_volume_frm_cache(self, label): """Deletes volume from cache.""" vol_id = self._objects['volumes']['label_ref'].get(label) if vol_id: self._objects['volumes']['ref_vol'].pop(vol_id, True) self._objects['volumes']['label_ref'].pop(label) else: LOG.debug(_("Volume %s not cached."), label) def _del_snapshot_frm_cache(self, obj_name): """Deletes snapshot group from cache.""" snap_id = self._objects['snapshots']['label_ref'].get(obj_name) if snap_id: self._objects['snapshots']['ref_snap'].pop(snap_id, True) self._objects['snapshots']['label_ref'].pop(obj_name) else: LOG.debug(_("Snapshot %s not cached."), obj_name) def _del_vol_mapping_frm_cache(self, mapping): """Deletes volume mapping under cached volume.""" vol_id = mapping['volumeRef'] volume = self._objects['volumes']['ref_vol'].get(vol_id) or {} mappings = volume.get('listOfMappings') or [] try: mappings.remove(mapping) except ValueError: LOG.debug(_("Mapping with id %s already removed."), mapping['lunMappingRef']) def _get_volume(self, uid): label = utils.convert_uuid_to_es_fmt(uid) try: return self._get_cached_volume(label) except KeyError: return self._get_latest_volume(uid) def _get_latest_volume(self, uid): label = utils.convert_uuid_to_es_fmt(uid) for vol in self._client.list_volumes(): if vol.get('label') == label: self._cache_volume(vol) return self._get_cached_volume(label) raise exception.NetAppDriverException(_("Volume %s not found."), uid) def _get_cached_volume(self, label): vol_id = self._objects['volumes']['label_ref'][label] return self._objects['volumes']['ref_vol'][vol_id] def _get_cached_snapshot_grp(self, uid): label = utils.convert_uuid_to_es_fmt(uid) snap_id = self._objects['snapshots']['label_ref'][label] return self._objects['snapshots']['ref_snap'][snap_id] def _get_cached_snap_grp_image(self, uid): group = self._get_cached_snapshot_grp(uid) images = group.get('images') if images: sorted_imgs = sorted(images, key=lambda x: x['pitTimestamp']) return sorted_imgs[0] msg = _("No pit image found in snapshot group %s.") % group['label'] raise exception.NotFound(msg) def _is_volume_containing_snaps(self, label): """Checks if volume contains snapshot groups.""" vol_id = self._objects['volumes']['label_ref'].get(label) snp_grps = self._objects['snapshots']['ref_snap'].values() for snap in snp_grps: if snap['baseVolume'] == vol_id: return True return False def create_volume(self, volume): """Creates a volume.""" label = utils.convert_uuid_to_es_fmt(volume['id']) size_gb = int(volume['size']) vol = self._create_volume(label, size_gb) self._cache_volume(vol) def _create_volume(self, label, size_gb): """Creates volume with given label and size.""" avl_pools = self._get_sorted_avl_storage_pools(size_gb) for pool in avl_pools: try: vol = self._client.create_volume(pool['volumeGroupRef'], label, size_gb) LOG.info(_("Created volume with label %s."), label) return vol except exception.NetAppDriverException as e: LOG.error(_("Error creating volume. Msg - %s."), e) msg = _("Failure creating volume %s.") raise exception.NetAppDriverException(msg % label) def _get_sorted_avl_storage_pools(self, size_gb): """Returns storage pools sorted on available capacity.""" size = size_gb * units.GiB pools = self._client.list_storage_pools() sorted_pools = sorted(pools, key=lambda x: (int(x.get('totalRaidedSpace', 0)) - int(x.get('usedSpace', 0))), reverse=True) avl_pools = [x for x in sorted_pools if (x['volumeGroupRef'] in self._objects['disk_pool_refs']) and (int(x.get('totalRaidedSpace', 0)) - int(x.get('usedSpace', 0) >= size))] if not avl_pools: msg = _("No storage pool found with available capacity %s.") exception.NotFound(msg % size_gb) return avl_pools def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" label = utils.convert_uuid_to_es_fmt(volume['id']) size = volume['size'] dst_vol = self._create_volume(label, size) try: src_vol = None src_vol = self._create_snapshot_volume(snapshot['id']) self._copy_volume_high_prior_readonly(src_vol, dst_vol) self._cache_volume(dst_vol) LOG.info(_("Created volume with label %s."), label) except exception.NetAppDriverException: with excutils.save_and_reraise_exception(): self._client.delete_volume(dst_vol['volumeRef']) finally: if src_vol: try: self._client.delete_snapshot_volume(src_vol['id']) except exception.NetAppDriverException as e: LOG.error(_("Failure deleting snap vol. Error: %s."), e) else: LOG.warn(_("Snapshot volume not found.")) def _create_snapshot_volume(self, snapshot_id): """Creates snapshot volume for given group with snapshot_id.""" group = self._get_cached_snapshot_grp(snapshot_id) LOG.debug(_("Creating snap vol for group %s"), group['label']) image = self._get_cached_snap_grp_image(snapshot_id) label = utils.convert_uuid_to_es_fmt(uuid.uuid4()) capacity = int(image['pitCapacity']) / units.GiB storage_pools = self._get_sorted_avl_storage_pools(capacity) s_id = storage_pools[0]['volumeGroupRef'] return self._client.create_snapshot_volume(image['pitRef'], label, group['baseVolume'], s_id) def _copy_volume_high_prior_readonly(self, src_vol, dst_vol): """Copies src volume to dest volume.""" LOG.info(_("Copying src vol %(src)s to dest vol %(dst)s.") % {'src': src_vol['label'], 'dst': dst_vol['label']}) try: job = None job = self._client.create_volume_copy_job(src_vol['id'], dst_vol['volumeRef']) while True: j_st = self._client.list_vol_copy_job(job['volcopyRef']) if (j_st['status'] == 'inProgress' or j_st['status'] == 'pending' or j_st['status'] == 'unknown'): time.sleep(self.SLEEP_SECS) continue if (j_st['status'] == 'failed' or j_st['status'] == 'halted'): LOG.error(_("Vol copy job status %s."), j_st['status']) msg = _("Vol copy job for dest %s failed.")\ % dst_vol['label'] raise exception.NetAppDriverException(msg) LOG.info(_("Vol copy job completed for dest %s.") % dst_vol['label']) break finally: if job: try: self._client.delete_vol_copy_job(job['volcopyRef']) except exception.NetAppDriverException: LOG.warn(_("Failure deleting job %s."), job['volcopyRef']) else: LOG.warn(_('Volume copy job for src vol %s not found.'), src_vol['id']) LOG.info(_('Copy job to dest vol %s completed.'), dst_vol['label']) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" snapshot = {'id': uuid.uuid4(), 'volume_id': src_vref['id']} self.create_snapshot(snapshot) try: self.create_volume_from_snapshot(volume, snapshot) finally: try: self.delete_snapshot(snapshot) except exception.NetAppDriverException: LOG.warn(_("Failure deleting temp snapshot %s."), snapshot['id']) def delete_volume(self, volume): """Deletes a volume.""" try: vol = self._get_volume(volume['id']) self._delete_volume(vol['label']) except KeyError: LOG.info(_("Volume %s already deleted."), volume['id']) return def _delete_volume(self, label): """Deletes an array volume.""" vol_id = self._objects['volumes']['label_ref'].get(label) if vol_id: self._client.delete_volume(vol_id) self._del_volume_frm_cache(label) def create_snapshot(self, snapshot): """Creates a snapshot.""" snap_grp, snap_image = None, None snapshot_name = utils.convert_uuid_to_es_fmt(snapshot['id']) vol = self._get_volume(snapshot['volume_id']) vol_size_gb = int(vol['totalSizeInBytes']) / units.GiB pools = self._get_sorted_avl_storage_pools(vol_size_gb) try: snap_grp = self._client.create_snapshot_group( snapshot_name, vol['volumeRef'], pools[0]['volumeGroupRef']) self._cache_snap_grp(snap_grp) snap_image = self._client.create_snapshot_image( snap_grp['pitGroupRef']) self._cache_snap_img(snap_image) LOG.info(_("Created snap grp with label %s."), snapshot_name) except exception.NetAppDriverException: with excutils.save_and_reraise_exception(): if snap_image is None and snap_grp: self.delete_snapshot(snapshot) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" try: snap_grp = self._get_cached_snapshot_grp(snapshot['id']) except KeyError: LOG.warn(_("Snapshot %s already deleted.") % snapshot['id']) return self._client.delete_snapshot_group(snap_grp['pitGroupRef']) snapshot_name = snap_grp['label'] self._del_snapshot_frm_cache(snapshot_name) def ensure_export(self, context, volume): """Synchronously recreates an export for a volume.""" pass def create_export(self, context, volume): """Exports the volume.""" pass def remove_export(self, context, volume): """Removes an export for a volume.""" pass def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info.""" initiator_name = connector['initiator'] vol = self._get_latest_volume(volume['id']) iscsi_details = self._get_iscsi_service_details() iscsi_det = self._get_iscsi_portal_for_vol(vol, iscsi_details) mapping = self._map_volume_to_host(vol, initiator_name) lun_id = mapping['lun'] self._cache_vol_mapping(mapping) msg = _("Mapped volume %(id)s to the initiator %(initiator_name)s.") msg_fmt = {'id': volume['id'], 'initiator_name': initiator_name} LOG.debug(msg % msg_fmt) msg = _("Successfully fetched target details for volume %(id)s and " "initiator %(initiator_name)s.") LOG.debug(msg % msg_fmt) properties = {} properties['target_discovered'] = False properties['target_portal'] = '%s:%s' % (iscsi_det['ip'], iscsi_det['tcp_port']) properties['target_iqn'] = iscsi_det['iqn'] properties['target_lun'] = lun_id properties['volume_id'] = volume['id'] auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret return { 'driver_volume_type': 'iscsi', 'data': properties, } def _get_iscsi_service_details(self): """Gets iscsi iqn, ip and port information.""" ports = [] hw_inventory = self._client.list_hardware_inventory() iscsi_ports = hw_inventory.get('iscsiPorts') if iscsi_ports: for port in iscsi_ports: if (port.get('ipv4Enabled') and port.get('iqn') and port.get('ipv4Data') and port['ipv4Data'].get('ipv4AddressData') and port['ipv4Data']['ipv4AddressData'] .get('ipv4Address') and port['ipv4Data'] ['ipv4AddressData'].get('configState') == 'configured'): iscsi_det = {} iscsi_det['ip'] =\ port['ipv4Data']['ipv4AddressData']['ipv4Address'] iscsi_det['iqn'] = port['iqn'] iscsi_det['tcp_port'] = port.get('tcpListenPort') iscsi_det['controller'] = port.get('controllerId') ports.append(iscsi_det) if not ports: msg = _('No good iscsi portals found for %s.') raise exception.NetAppDriverException( msg % self._client.get_system_id()) return ports def _get_iscsi_portal_for_vol(self, volume, portals, anyController=True): """Get the iscsi portal info relevant to volume.""" for portal in portals: if portal.get('controller') == volume.get('currentManager'): return portal if anyController and portals: return portals[0] msg = _('No good iscsi portal found in supplied list for %s.') raise exception.NetAppDriverException( msg % self._client.get_system_id()) @cinder_utils.synchronized('map_es_volume') def _map_volume_to_host(self, vol, initiator): """Maps the e-series volume to host with initiator.""" host = self._get_or_create_host(initiator, self.host_type) vol_maps = self._get_host_mapping_for_vol_frm_array(vol) for vol_map in vol_maps: if vol_map.get('mapRef') == host['hostRef']: return vol_map else: self._client.delete_volume_mapping(vol_map['lunMappingRef']) self._del_vol_mapping_frm_cache(vol_map) mappings = self._get_vol_mapping_for_host_frm_array(host['hostRef']) lun = self._get_free_lun(host, mappings) return self._client.create_volume_mapping(vol['volumeRef'], host['hostRef'], lun) def _get_or_create_host(self, port_id, host_type): """Fetch or create a host by given port.""" try: host = self._get_host_with_port(port_id) ht_def = self._get_host_type_definition(host_type) if host.get('hostTypeIndex') == ht_def.get('index'): return host else: try: return self._client.update_host_type( host['hostRef'], ht_def) except exception.NetAppDriverException as e: msg = _("Unable to update host type for host with" " label %(l)s. %(e)s") LOG.warn(msg % {'l': host['label'], 'e': e.msg}) return host except exception.NotFound as e: LOG.warn(_("Message - %s."), e.msg) return self._create_host(port_id, host_type) def _get_host_with_port(self, port_id): """Gets or creates a host with given port id.""" hosts = self._client.list_hosts() for host in hosts: if host.get('hostSidePorts'): ports = host.get('hostSidePorts') for port in ports: if (port.get('type') == 'iscsi' and port.get('address') == port_id): return host msg = _("Host with port %(port)s not found.") raise exception.NotFound(msg % {'port': port_id}) def _create_host(self, port_id, host_type): """Creates host on system with given initiator as port_id.""" LOG.info(_("Creating host with port %s."), port_id) label = utils.convert_uuid_to_es_fmt(uuid.uuid4()) port_label = utils.convert_uuid_to_es_fmt(uuid.uuid4()) host_type = self._get_host_type_definition(host_type) return self._client.create_host_with_port(label, host_type, port_id, port_label) def _get_host_type_definition(self, host_type): """Gets supported host type if available on storage system.""" host_types = self._client.list_host_types() for ht in host_types: if ht.get('name', 'unknown').lower() == host_type.lower(): return ht raise exception.NotFound(_("Host type %s not supported.") % host_type) def _get_free_lun(self, host, maps=None): """Gets free lun for given host.""" ref = host['hostRef'] luns = maps or self._get_vol_mapping_for_host_frm_array(ref) used_luns = set(map(lambda lun: int(lun['lun']), luns)) for lun in xrange(self.MAX_LUNS_PER_HOST): if lun not in used_luns: return lun msg = _("No free luns. Host might exceeded max luns.") raise exception.NetAppDriverException(msg) def _get_vol_mapping_for_host_frm_array(self, host_ref): """Gets all volume mappings for given host from array.""" mappings = self._client.get_volume_mappings() or [] host_maps = filter(lambda x: x.get('mapRef') == host_ref, mappings) return host_maps def _get_host_mapping_for_vol_frm_array(self, volume): """Gets all host mappings for given volume from array.""" mappings = self._client.get_volume_mappings() or [] host_maps = filter(lambda x: x.get('volumeRef') == volume['volumeRef'], mappings) return host_maps def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" vol = self._get_volume(volume['id']) host = self._get_host_with_port(connector['initiator']) mapping = self._get_cached_vol_mapping_for_host(vol, host) self._client.delete_volume_mapping(mapping['lunMappingRef']) self._del_vol_mapping_frm_cache(mapping) def _get_cached_vol_mapping_for_host(self, volume, host): """Gets cached volume mapping for given host.""" mappings = volume.get('listOfMappings') or [] for mapping in mappings: if mapping.get('mapRef') == host['hostRef']: return mapping msg = _("Mapping not found for %(vol)s to host %(ht)s.") raise exception.NotFound(msg % {'vol': volume['volumeRef'], 'ht': host['hostRef']}) def get_volume_stats(self, refresh=False): """Return the current state of the volume service.""" if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Update volume statistics.""" LOG.debug(_("Updating volume stats.")) self._stats = self._stats or {} netapp_backend = 'NetApp_ESeries' backend_name = self.configuration.safe_get('volume_backend_name') self._stats["volume_backend_name"] = ( backend_name or netapp_backend) self._stats["vendor_name"] = 'NetApp' self._stats["driver_version"] = '1.0' self._stats["storage_protocol"] = 'iSCSI' self._stats["total_capacity_gb"] = 0 self._stats["free_capacity_gb"] = 0 self._stats["reserved_percentage"] = 0 self._stats["QoS_support"] = False self._update_capacity() self._garbage_collect_tmp_vols() def _update_capacity(self): """Get free and total appliance capacity in bytes.""" tot_bytes, used_bytes = 0, 0 pools = self._client.list_storage_pools() for pool in pools: if pool['volumeGroupRef'] in self._objects['disk_pool_refs']: tot_bytes = tot_bytes + int(pool.get('totalRaidedSpace', 0)) used_bytes = used_bytes + int(pool.get('usedSpace', 0)) self._stats['free_capacity_gb'] = (tot_bytes - used_bytes) / units.GiB self._stats['total_capacity_gb'] = tot_bytes / units.GiB def extend_volume(self, volume, new_size): """Extend an existing volume to the new size.""" stage_1, stage_2 = 0, 0 src_vol = self._get_volume(volume['id']) src_label = src_vol['label'] stage_label = 'tmp-%s' % utils.convert_uuid_to_es_fmt(uuid.uuid4()) extend_vol = {'id': uuid.uuid4(), 'size': new_size} self.create_cloned_volume(extend_vol, volume) new_vol = self._get_volume(extend_vol['id']) try: stage_1 = self._client.update_volume(src_vol['id'], stage_label) stage_2 = self._client.update_volume(new_vol['id'], src_label) new_vol = stage_2 self._cache_volume(new_vol) self._cache_volume(stage_1) LOG.info(_('Extended volume with label %s.'), src_label) except exception.NetAppDriverException: if stage_1 == 0: with excutils.save_and_reraise_exception(): self._client.delete_volume(new_vol['id']) if stage_2 == 0: with excutils.save_and_reraise_exception(): self._client.update_volume(src_vol['id'], src_label) self._client.delete_volume(new_vol['id']) def _garbage_collect_tmp_vols(self): """Removes tmp vols with no snapshots.""" try: if not utils.set_safe_attr(self, 'clean_job_running', True): LOG.warn(_('Returning as clean tmp vol job already running.')) return for label in self._objects['volumes']['label_ref'].keys(): if (label.startswith('tmp-') and not self._is_volume_containing_snaps(label)): try: self._delete_volume(label) except exception.NetAppDriverException: LOG.debug(_("Error deleting vol with label %s."), label) finally: utils.set_safe_attr(self, 'clean_job_running', False) cinder-2014.1.5/cinder/volume/drivers/netapp/eseries/__init__.py0000664000567000056700000000000012540642603025630 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/netapp/eseries/client.py0000664000567000056700000003611112540642606025366 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 NetApp, Inc. # All Rights Reserved. # # 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. """ Client classes for web services. """ import copy import json import requests import six.moves.urllib.parse as urlparse from cinder import exception from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class WebserviceClient(object): """Base client for e-series web services.""" def __init__(self, scheme, host, port, service_path, username, password, **kwargs): self._validate_params(scheme, host, port) self._create_endpoint(scheme, host, port, service_path) self._username = username self._password = password self._init_connection() def _validate_params(self, scheme, host, port): """Does some basic validation for web service params.""" if host is None or port is None or scheme is None: msg = _("One of the required inputs from host, port" " or scheme not found.") raise exception.InvalidInput(reason=msg) if scheme not in ('http', 'https'): raise exception.InvalidInput(reason=_("Invalid transport type.")) def _create_endpoint(self, scheme, host, port, service_path): """Creates end point url for the service.""" netloc = '%s:%s' % (host, port) self._endpoint = urlparse.urlunparse((scheme, netloc, service_path, None, None, None)) def _init_connection(self): """Do client specific set up for session and connection pooling.""" self.conn = requests.Session() if self._username and self._password: self.conn.auth = (self._username, self._password) def invoke_service(self, method='GET', url=None, params=None, data=None, headers=None, timeout=None, verify=False): url = url or self._endpoint try: response = self.conn.request(method, url, params, data, headers=headers, timeout=timeout, verify=verify) # Catching error conditions other than the perceived ones. # Helps propagating only known exceptions back to the caller. except Exception as e: LOG.exception(_("Unexpected error while invoking web service." " Error - %s."), e) raise exception.NetAppDriverException( _("Invoking web service failed.")) self._eval_response(response) return response def _eval_response(self, response): """Evaluates response before passing result to invoker.""" pass class RestClient(WebserviceClient): """REST client specific to e-series storage service.""" def __init__(self, scheme, host, port, service_path, username, password, **kwargs): super(RestClient, self).__init__(scheme, host, port, service_path, username, password, **kwargs) kwargs = kwargs or {} self._system_id = kwargs.get('system_id') self._content_type = kwargs.get('content_type') or 'json' def set_system_id(self, system_id): """Set the storage system id.""" self._system_id = system_id def get_system_id(self): """Get the storage system id.""" return getattr(self, '_system_id', None) def _get_resource_url(self, path, use_system=True, **kwargs): """Creates end point url for rest service.""" kwargs = kwargs or {} if use_system: if not self._system_id: raise exception.NotFound(_('Storage system id not set.')) kwargs['system-id'] = self._system_id path = path.format(**kwargs) if not self._endpoint.endswith('/'): self._endpoint = '%s/' % self._endpoint return urlparse.urljoin(self._endpoint, path.lstrip('/')) def _invoke(self, method, path, data=None, use_system=True, timeout=None, verify=False, **kwargs): """Invokes end point for resource on path.""" scrubbed_data = copy.deepcopy(data) if scrubbed_data: if 'password' in scrubbed_data: scrubbed_data['password'] = "****" if 'storedPassword' in scrubbed_data: scrubbed_data['storedPassword'] = "****" params = {'m': method, 'p': path, 'd': scrubbed_data, 'sys': use_system, 't': timeout, 'v': verify, 'k': kwargs} LOG.debug(_("Invoking rest with method: %(m)s, path: %(p)s," " data: %(d)s, use_system: %(sys)s, timeout: %(t)s," " verify: %(v)s, kwargs: %(k)s.") % (params)) url = self._get_resource_url(path, use_system, **kwargs) if self._content_type == 'json': headers = {'Accept': 'application/json', 'Content-Type': 'application/json'} data = json.dumps(data) if data else None res = self.invoke_service(method, url, data=data, headers=headers, timeout=timeout, verify=verify) return res.json() if res.text else None else: raise exception.NetAppDriverException( _("Content type not supported.")) def _eval_response(self, response): """Evaluates response before passing result to invoker.""" super(RestClient, self)._eval_response(response) status_code = int(response.status_code) # codes >= 300 are not ok and to be treated as errors if status_code >= 300: # Response code 422 returns error code and message if status_code == 422: msg = _("Response error - %s.") % response.text else: msg = _("Response error code - %s.") % status_code raise exception.NetAppDriverException(msg) def create_volume(self, pool, label, size, unit='gb', seg_size=0): """Creates volume on array.""" path = "/storage-systems/{system-id}/volumes" data = {'poolId': pool, 'name': label, 'sizeUnit': unit, 'size': int(size), 'segSize': seg_size} return self._invoke('POST', path, data) def delete_volume(self, object_id): """Deletes given volume from array.""" path = "/storage-systems/{system-id}/volumes/{object-id}" return self._invoke('DELETE', path, **{'object-id': object_id}) def list_volumes(self): """Lists all volumes in storage array.""" path = "/storage-systems/{system-id}/volumes" return self._invoke('GET', path) def list_volume(self, object_id): """List given volume from array.""" path = "/storage-systems/{system-id}/volumes/{object-id}" return self._invoke('GET', path, **{'object-id': object_id}) def update_volume(self, object_id, label): """Renames given volume in array.""" path = "/storage-systems/{system-id}/volumes/{object-id}" data = {'name': label} return self._invoke('POST', path, data, **{'object-id': object_id}) def get_volume_mappings(self): """Creates volume mapping on array.""" path = "/storage-systems/{system-id}/volume-mappings" return self._invoke('GET', path) def create_volume_mapping(self, object_id, target_id, lun): """Creates volume mapping on array.""" path = "/storage-systems/{system-id}/volume-mappings" data = {'mappableObjectId': object_id, 'targetId': target_id, 'lun': lun} return self._invoke('POST', path, data) def delete_volume_mapping(self, map_object_id): """Deletes given volume mapping from array.""" path = "/storage-systems/{system-id}/volume-mappings/{object-id}" return self._invoke('DELETE', path, **{'object-id': map_object_id}) def list_hardware_inventory(self): """Lists objects in the hardware inventory.""" path = "/storage-systems/{system-id}/hardware-inventory" return self._invoke('GET', path) def list_hosts(self): """Lists host objects in the system.""" path = "/storage-systems/{system-id}/hosts" return self._invoke('GET', path) def create_host(self, label, host_type, ports=None, group_id=None): """Creates host on array.""" path = "/storage-systems/{system-id}/hosts" data = {'name': label, 'hostType': host_type} data.setdefault('groupId', group_id) if group_id else None data.setdefault('ports', ports) if ports else None return self._invoke('POST', path, data) def create_host_with_port(self, label, host_type, port_id, port_label, port_type='iscsi', group_id=None): """Creates host on array with given port information.""" port = {'type': port_type, 'port': port_id, 'label': port_label} return self.create_host(label, host_type, [port], group_id) def update_host_type(self, host_ref, host_type): """Updates host type for a given host.""" path = "/storage-systems/{system-id}/hosts/{object-id}" data = {'hostType': host_type} return self._invoke('POST', path, data, **{'object-id': host_ref}) def list_host_types(self): """Lists host types in storage system.""" path = "/storage-systems/{system-id}/host-types" return self._invoke('GET', path) def list_snapshot_groups(self): """Lists snapshot groups.""" path = "/storage-systems/{system-id}/snapshot-groups" return self._invoke('GET', path) def create_snapshot_group(self, label, object_id, storage_pool_id, repo_percent=99, warn_thres=99, auto_del_limit=0, full_policy='failbasewrites'): """Creates snapshot group on array.""" path = "/storage-systems/{system-id}/snapshot-groups" data = {'baseMappableObjectId': object_id, 'name': label, 'storagePoolId': storage_pool_id, 'repositoryPercentage': repo_percent, 'warningThreshold': warn_thres, 'autoDeleteLimit': auto_del_limit, 'fullPolicy': full_policy} return self._invoke('POST', path, data) def delete_snapshot_group(self, object_id): """Deletes given snapshot group from array.""" path = "/storage-systems/{system-id}/snapshot-groups/{object-id}" return self._invoke('DELETE', path, **{'object-id': object_id}) def create_snapshot_image(self, group_id): """Creates snapshot image in snapshot group.""" path = "/storage-systems/{system-id}/snapshot-images" data = {'groupId': group_id} return self._invoke('POST', path, data) def delete_snapshot_image(self, object_id): """Deletes given snapshot image in snapshot group.""" path = "/storage-systems/{system-id}/snapshot-images/{object-id}" return self._invoke('DELETE', path, **{'object-id': object_id}) def list_snapshot_images(self): """Lists snapshot images.""" path = "/storage-systems/{system-id}/snapshot-images" return self._invoke('GET', path) def create_snapshot_volume(self, image_id, label, base_object_id, storage_pool_id, repo_percent=99, full_thres=99, view_mode='readOnly'): """Creates snapshot volume.""" path = "/storage-systems/{system-id}/snapshot-volumes" data = {'snapshotImageId': image_id, 'fullThreshold': full_thres, 'storagePoolId': storage_pool_id, 'name': label, 'viewMode': view_mode, 'repositoryPercentage': repo_percent, 'baseMappableObjectId': base_object_id, 'repositoryPoolId': storage_pool_id} return self._invoke('POST', path, data) def delete_snapshot_volume(self, object_id): """Deletes given snapshot volume.""" path = "/storage-systems/{system-id}/snapshot-volumes/{object-id}" return self._invoke('DELETE', path, **{'object-id': object_id}) def list_storage_pools(self): """Lists storage pools in the array.""" path = "/storage-systems/{system-id}/storage-pools" return self._invoke('GET', path) def list_storage_systems(self): """Lists managed storage systems registered with web service.""" path = "/storage-systems" return self._invoke('GET', path, use_system=False) def list_storage_system(self): """List current storage system registered with web service.""" path = "/storage-systems/{system-id}" return self._invoke('GET', path) def register_storage_system(self, controller_addresses, password=None, wwn=None): """Registers storage system with web service.""" path = "/storage-systems" data = {'controllerAddresses': controller_addresses} data.setdefault('wwn', wwn) if wwn else None data.setdefault('password', password) if password else None return self._invoke('POST', path, data, use_system=False) def update_stored_system_password(self, password): """Update array password stored on web service.""" path = "/storage-systems/{system-id}" data = {'storedPassword': password} return self._invoke('POST', path, data) def create_volume_copy_job(self, src_id, tgt_id, priority='priority4', tgt_wrt_protected='true'): """Creates a volume copy job.""" path = "/storage-systems/{system-id}/volume-copy-jobs" data = {'sourceId': src_id, 'targetId': tgt_id, 'copyPriority': priority, 'targetWriteProtected': tgt_wrt_protected} return self._invoke('POST', path, data) def control_volume_copy_job(self, obj_id, control='start'): """Controls a volume copy job.""" path = ("/storage-systems/{system-id}/volume-copy-jobs-control" "/{object-id}?control={String}") return self._invoke('PUT', path, **{'object-id': obj_id, 'String': control}) def list_vol_copy_job(self, object_id): """List volume copy job.""" path = "/storage-systems/{system-id}/volume-copy-jobs/{object-id}" return self._invoke('GET', path, **{'object-id': object_id}) def delete_vol_copy_job(self, object_id): """Delete volume copy job.""" path = "/storage-systems/{system-id}/volume-copy-jobs/{object-id}" return self._invoke('DELETE', path, **{'object-id': object_id}) cinder-2014.1.5/cinder/volume/drivers/netapp/utils.py0000664000567000056700000004254112540642606023615 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 NetApp, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Utilities for NetApp drivers. This module contains common utilities to be used by one or more NetApp drivers to achieve the desired functionality. """ import base64 import binascii import copy import platform import socket import uuid from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils from cinder.openstack.common import timeutils from cinder import utils from cinder import version from cinder.volume.drivers.netapp.api import NaApiError from cinder.volume.drivers.netapp.api import NaElement from cinder.volume.drivers.netapp.api import NaErrors from cinder.volume.drivers.netapp.api import NaServer from cinder.volume import volume_types LOG = logging.getLogger(__name__) def provide_ems(requester, server, netapp_backend, app_version, server_type="cluster"): """Provide ems with volume stats for the requester. :param server_type: cluster or 7mode. """ def _create_ems(netapp_backend, app_version, server_type): """Create ems api request.""" ems_log = NaElement('ems-autosupport-log') host = socket.getfqdn() or 'Cinder_node' if server_type == "cluster": dest = "cluster node" else: dest = "7 mode controller" ems_log.add_new_child('computer-name', host) ems_log.add_new_child('event-id', '0') ems_log.add_new_child('event-source', 'Cinder driver %s' % netapp_backend) ems_log.add_new_child('app-version', app_version) ems_log.add_new_child('category', 'provisioning') ems_log.add_new_child('event-description', 'OpenStack Cinder connected to %s' % dest) ems_log.add_new_child('log-level', '6') ems_log.add_new_child('auto-support', 'false') return ems_log def _create_vs_get(): """Create vs_get api request.""" vs_get = NaElement('vserver-get-iter') vs_get.add_new_child('max-records', '1') query = NaElement('query') query.add_node_with_children('vserver-info', **{'vserver-type': 'node'}) vs_get.add_child_elem(query) desired = NaElement('desired-attributes') desired.add_node_with_children( 'vserver-info', **{'vserver-name': '', 'vserver-type': ''}) vs_get.add_child_elem(desired) return vs_get def _get_cluster_node(na_server): """Get the cluster node for ems.""" na_server.set_vserver(None) vs_get = _create_vs_get() res = na_server.invoke_successfully(vs_get) if (res.get_child_content('num-records') and int(res.get_child_content('num-records')) > 0): attr_list = res.get_child_by_name('attributes-list') vs_info = attr_list.get_child_by_name('vserver-info') vs_name = vs_info.get_child_content('vserver-name') return vs_name return None do_ems = True if hasattr(requester, 'last_ems'): sec_limit = 3559 if not (timeutils.is_older_than(requester.last_ems, sec_limit)): do_ems = False if do_ems: na_server = copy.copy(server) na_server.set_timeout(25) ems = _create_ems(netapp_backend, app_version, server_type) try: if server_type == "cluster": api_version = na_server.get_api_version() if api_version: major, minor = api_version else: raise NaApiError(code='Not found', message='No api version found') if major == 1 and minor > 15: node = getattr(requester, 'vserver', None) else: node = _get_cluster_node(na_server) if node is None: raise NaApiError(code='Not found', message='No vserver found') na_server.set_vserver(node) else: na_server.set_vfiler(None) na_server.invoke_successfully(ems, True) LOG.debug(_("ems executed successfully.")) except NaApiError as e: LOG.warn(_("Failed to invoke ems. Message : %s") % e) finally: requester.last_ems = timeutils.utcnow() def validate_instantiation(**kwargs): """Checks if a driver is instantiated other than by the unified driver. Helps check direct instantiation of netapp drivers. Call this function in every netapp block driver constructor. """ if kwargs and kwargs.get('netapp_mode') == 'proxy': return LOG.warn(_("It is not the recommended way to use drivers by NetApp. " "Please use NetAppDriver to achieve the functionality.")) def invoke_api(na_server, api_name, api_family='cm', query=None, des_result=None, additional_elems=None, is_iter=False, records=0, tag=None, timeout=0, tunnel=None): """Invokes any given api call to a NetApp server. :param na_server: na_server instance :param api_name: api name string :param api_family: cm or 7m :param query: api query as dict :param des_result: desired result as dict :param additional_elems: dict other than query and des_result :param is_iter: is iterator api :param records: limit for records, 0 for infinite :param timeout: timeout seconds :param tunnel: tunnel entity, vserver or vfiler name """ record_step = 50 if not (na_server or isinstance(na_server, NaServer)): msg = _("Requires an NaServer instance.") raise exception.InvalidInput(reason=msg) server = copy.copy(na_server) if api_family == 'cm': server.set_vserver(tunnel) else: server.set_vfiler(tunnel) if timeout > 0: server.set_timeout(timeout) iter_records = 0 cond = True while cond: na_element = create_api_request( api_name, query, des_result, additional_elems, is_iter, record_step, tag) result = server.invoke_successfully(na_element, True) if is_iter: if records > 0: iter_records = iter_records + record_step if iter_records >= records: cond = False tag_el = result.get_child_by_name('next-tag') tag = tag_el.get_content() if tag_el else None if not tag: cond = False else: cond = False yield result def create_api_request(api_name, query=None, des_result=None, additional_elems=None, is_iter=False, record_step=50, tag=None): """Creates a NetApp api request. :param api_name: api name string :param query: api query as dict :param des_result: desired result as dict :param additional_elems: dict other than query and des_result :param is_iter: is iterator api :param record_step: records at a time for iter api :param tag: next tag for iter api """ api_el = NaElement(api_name) if query: query_el = NaElement('query') query_el.translate_struct(query) api_el.add_child_elem(query_el) if des_result: res_el = NaElement('desired-attributes') res_el.translate_struct(des_result) api_el.add_child_elem(res_el) if additional_elems: api_el.translate_struct(additional_elems) if is_iter: api_el.add_new_child('max-records', str(record_step)) if tag: api_el.add_new_child('tag', tag, True) return api_el def to_bool(val): """Converts true, yes, y, 1 to True, False otherwise.""" if val: strg = str(val).lower() if (strg == 'true' or strg == 'y' or strg == 'yes' or strg == 'enabled' or strg == '1'): return True else: return False else: return False @utils.synchronized("safe_set_attr") def set_safe_attr(instance, attr, val): """Sets the attribute in a thread safe manner. Returns if new val was set on attribute. If attr already had the value then False. """ if not instance or not attr: return False old_val = getattr(instance, attr, None) if val is None and old_val is None: return False elif val == old_val: return False else: setattr(instance, attr, val) return True def get_volume_extra_specs(volume): """Provides extra specs associated with volume.""" ctxt = context.get_admin_context() type_id = volume.get('volume_type_id') specs = None if type_id is not None: volume_type = volume_types.get_volume_type(ctxt, type_id) specs = volume_type.get('extra_specs') return specs def check_apis_on_cluster(na_server, api_list=[]): """Checks api availability and permissions on cluster. Checks api availability and permissions for executing user. Returns a list of failed apis. """ failed_apis = [] if api_list: api_version = na_server.get_api_version() if api_version: major, minor = api_version if major == 1 and minor < 20: for api_name in api_list: na_el = NaElement(api_name) try: na_server.invoke_successfully(na_el) except Exception as e: if isinstance(e, NaApiError): if (e.code == NaErrors['API_NOT_FOUND'].code or e.code == NaErrors['INSUFFICIENT_PRIVS'].code): failed_apis.append(api_name) elif major == 1 and minor >= 20: failed_apis = copy.copy(api_list) result = invoke_api( na_server, api_name='system-user-capability-get-iter', api_family='cm', additional_elems=None, is_iter=True) for res in result: attr_list = res.get_child_by_name('attributes-list') if attr_list: capabilities = attr_list.get_children() for capability in capabilities: op_list = capability.get_child_by_name( 'operation-list') if op_list: ops = op_list.get_children() for op in ops: apis = op.get_child_content('api-name') if apis: api_list = apis.split(',') for api_name in api_list: if (api_name and api_name.strip() in failed_apis): failed_apis.remove(api_name) else: continue else: msg = _("Unsupported Clustered Data ONTAP version.") raise exception.VolumeBackendAPIException(data=msg) else: msg = _("Api version could not be determined.") raise exception.VolumeBackendAPIException(data=msg) return failed_apis def resolve_hostname(hostname): """Resolves host name to IP address.""" res = socket.getaddrinfo(hostname, None)[0] family, socktype, proto, canonname, sockaddr = res return sockaddr[0] def encode_hex_to_base32(hex_string): """Encodes hex to base32 bit as per RFC4648.""" bin_form = binascii.unhexlify(hex_string) return base64.b32encode(bin_form) def decode_base32_to_hex(base32_string): """Decodes base32 string to hex string.""" bin_form = base64.b32decode(base32_string) return binascii.hexlify(bin_form) def convert_uuid_to_es_fmt(uuid_str): """Converts uuid to e-series compatible name format.""" uuid_base32 = encode_hex_to_base32(uuid.UUID(str(uuid_str)).hex) return uuid_base32.strip('=') def convert_es_fmt_to_uuid(es_label): """Converts e-series name format to uuid.""" es_label_b32 = es_label.ljust(32, '=') return uuid.UUID(binascii.hexlify(base64.b32decode(es_label_b32))) class OpenStackInfo(object): """OS/distribution, release, and version. NetApp uses these fields as content for EMS log entry. """ PACKAGE_NAME = 'python-cinder' def __init__(self): self._version = 'unknown version' self._release = 'unknown release' self._vendor = 'unknown vendor' self._platform = 'unknown platform' def _update_version_from_version_string(self): try: self._version = version.version_info.version_string() except Exception: pass def _update_release_from_release_string(self): try: self._release = version.version_info.release_string() except Exception: pass def _update_platform(self): try: self._platform = platform.platform() except Exception: pass @staticmethod def _get_version_info_version(): return version.version_info.version @staticmethod def _get_version_info_release(): return version.version_info.release def _update_info_from_version_info(self): try: ver = self._get_version_info_version() if ver: self._version = ver except Exception: pass try: rel = self._get_version_info_release() if rel: self._release = rel except Exception: pass # RDO, RHEL-OSP, Mirantis on Redhat, SUSE def _update_info_from_rpm(self): LOG.debug('Trying rpm command.') try: out, err = putils.execute("rpm", "-qa", "--queryformat", "'%{version}\t%{release}\t%{vendor}'", self.PACKAGE_NAME) if not out: LOG.info(_('No rpm info found for %(pkg)s package.') % { 'pkg': self.PACKAGE_NAME}) return False parts = out.split() self._version = parts[0] self._release = parts[1] self._vendor = ' '.join(parts[2::]) return True except Exception as e: LOG.info(_('Could not run rpm command: %(msg)s.') % { 'msg': e}) return False # ubuntu, mirantis on ubuntu def _update_info_from_dpkg(self): LOG.debug('Trying dpkg-query command.') try: _vendor = None out, err = putils.execute("dpkg-query", "-W", "-f='${Version}'", self.PACKAGE_NAME) if not out: LOG.info(_('No dpkg-query info found for %(pkg)s package.') % { 'pkg': self.PACKAGE_NAME}) return False # debian format: [epoch:]upstream_version[-debian_revision] deb_version = out # in case epoch or revision is missing, copy entire string _release = deb_version if ':' in deb_version: deb_epoch, upstream_version = deb_version.split(':') _release = upstream_version if '-' in deb_version: deb_revision = deb_version.split('-')[1] _vendor = deb_revision self._release = _release if _vendor: self._vendor = _vendor return True except Exception as e: LOG.info(_('Could not run dpkg-query command: %(msg)s.') % { 'msg': e}) return False def _update_openstack_info(self): self._update_version_from_version_string() self._update_release_from_release_string() self._update_platform() # some distributions override with more meaningful information self._update_info_from_version_info() # see if we have still more targeted info from rpm or apt found_package = self._update_info_from_rpm() if not found_package: self._update_info_from_dpkg() def info(self): self._update_openstack_info() return '%(version)s|%(release)s|%(vendor)s|%(platform)s' % { 'version': self._version, 'release': self._release, 'vendor': self._vendor, 'platform': self._platform} cinder-2014.1.5/cinder/volume/drivers/zadara.py0000664000567000056700000006271412540642606022434 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Zadara Storage, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Volume driver for Zadara Virtual Private Storage Array (VPSA). This driver requires VPSA with API ver.13.07 or higher. """ import httplib from lxml import etree from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder.volume import driver LOG = logging.getLogger(__name__) zadara_opts = [ cfg.StrOpt('zadara_vpsa_ip', default=None, help='Management IP of Zadara VPSA'), cfg.StrOpt('zadara_vpsa_port', default=None, help='Zadara VPSA port number'), cfg.BoolOpt('zadara_vpsa_use_ssl', default=False, help='Use SSL connection'), cfg.StrOpt('zadara_user', default=None, help='User name for the VPSA'), cfg.StrOpt('zadara_password', default=None, help='Password for the VPSA', secret=True), cfg.StrOpt('zadara_vpsa_poolname', default=None, help='Name of VPSA storage pool for volumes'), cfg.BoolOpt('zadara_vol_thin', default=True, help='Default thin provisioning policy for volumes'), cfg.BoolOpt('zadara_vol_encrypt', default=False, help='Default encryption policy for volumes'), cfg.StrOpt('zadara_vol_name_template', default='OS_%s', help='Default template for VPSA volume names'), cfg.BoolOpt('zadara_vpsa_auto_detach_on_delete', default=True, help="Automatically detach from servers on volume delete"), cfg.BoolOpt('zadara_vpsa_allow_nonexistent_delete', default=True, help="Don't halt on deletion of non-existing volumes"), ] CONF = cfg.CONF CONF.register_opts(zadara_opts) class ZadaraVPSAConnection(object): """Executes volume driver commands on VPSA.""" def __init__(self, conf): self.conf = conf self.access_key = None self.ensure_connection() def _generate_vpsa_cmd(self, cmd, **kwargs): """Generate command to be sent to VPSA.""" def _joined_params(params): param_str = [] for k, v in params.items(): param_str.append("%s=%s" % (k, v)) return '&'.join(param_str) # Dictionary of applicable VPSA commands in the following format: # 'command': (method, API_URL, {optional parameters}) vpsa_commands = { 'login': ('POST', '/api/users/login.xml', {'user': self.conf.zadara_user, 'password': self.conf.zadara_password}), # Volume operations 'create_volume': ('POST', '/api/volumes.xml', {'name': kwargs.get('name'), 'capacity': kwargs.get('size'), 'pool': self.conf.zadara_vpsa_poolname, 'thin': 'YES' if self.conf.zadara_vol_thin else 'NO', 'crypt': 'YES' if self.conf.zadara_vol_encrypt else 'NO'}), 'delete_volume': ('DELETE', '/api/volumes/%s.xml' % kwargs.get('vpsa_vol'), {}), 'expand_volume': ('POST', '/api/volumes/%s/expand.xml' % kwargs.get('vpsa_vol'), {'capacity': kwargs.get('size')}), # Snapshot operations 'create_snapshot': ('POST', '/api/consistency_groups/%s/snapshots.xml' % kwargs.get('cg_name'), {'display_name': kwargs.get('snap_name')}), 'delete_snapshot': ('DELETE', '/api/snapshots/%s.xml' % kwargs.get('snap_id'), {}), 'create_clone_from_snap': ('POST', '/api/consistency_groups/%s/clone.xml' % kwargs.get('cg_name'), {'name': kwargs.get('name'), 'snapshot': kwargs.get('snap_id')}), 'create_clone': ('POST', '/api/consistency_groups/%s/clone.xml' % kwargs.get('cg_name'), {'name': kwargs.get('name')}), # Server operations 'create_server': ('POST', '/api/servers.xml', {'display_name': kwargs.get('initiator'), 'iqn': kwargs.get('initiator')}), # Attach/Detach operations 'attach_volume': ('POST', '/api/servers/%s/volumes.xml' % kwargs.get('vpsa_srv'), {'volume_name[]': kwargs.get('vpsa_vol'), 'force': 'NO'}), 'detach_volume': ('POST', '/api/volumes/%s/detach.xml' % kwargs.get('vpsa_vol'), {'server_name[]': kwargs.get('vpsa_srv'), 'force': 'NO'}), # Get operations 'list_volumes': ('GET', '/api/volumes.xml', {}), 'list_pools': ('GET', '/api/pools.xml', {}), 'list_controllers': ('GET', '/api/vcontrollers.xml', {}), 'list_servers': ('GET', '/api/servers.xml', {}), 'list_vol_attachments': ('GET', '/api/volumes/%s/servers.xml' % kwargs.get('vpsa_vol'), {}), 'list_vol_snapshots': ('GET', '/api/consistency_groups/%s/snapshots.xml' % kwargs.get('cg_name'), {})} if cmd not in vpsa_commands.keys(): raise exception.UnknownCmd(cmd=cmd) else: (method, url, params) = vpsa_commands[cmd] if method == 'GET': # For GET commands add parameters to the URL params.update(dict(access_key=self.access_key, page=1, start=0, limit=0)) url += '?' + _joined_params(params) body = '' elif method == 'DELETE': # For DELETE commands add parameters to the URL params.update(dict(access_key=self.access_key)) url += '?' + _joined_params(params) body = '' elif method == 'POST': if self.access_key: params.update(dict(access_key=self.access_key)) body = _joined_params(params) else: raise exception.UnknownCmd(cmd=method) return (method, url, body) def ensure_connection(self, cmd=None): """Retrieve access key for VPSA connection.""" if self.access_key or cmd == 'login': return cmd = 'login' xml_tree = self.send_cmd(cmd) user = xml_tree.find('user') if user is None: raise exception.MalformedResponse(cmd=cmd, reason='no "user" field') access_key = user.findtext('access-key') if access_key is None: raise exception.MalformedResponse(cmd=cmd, reason='no "access-key" field') self.access_key = access_key def send_cmd(self, cmd, **kwargs): """Send command to VPSA Controller.""" self.ensure_connection(cmd) (method, url, body) = self._generate_vpsa_cmd(cmd, **kwargs) LOG.debug(_('Sending %(method)s to %(url)s. Body "%(body)s"'), {'method': method, 'url': url, 'body': body}) if self.conf.zadara_vpsa_use_ssl: connection = httplib.HTTPSConnection(self.conf.zadara_vpsa_ip, self.conf.zadara_vpsa_port) else: connection = httplib.HTTPConnection(self.conf.zadara_vpsa_ip, self.conf.zadara_vpsa_port) connection.request(method, url, body) response = connection.getresponse() if response.status != 200: connection.close() raise exception.BadHTTPResponseStatus(status=response.status) data = response.read() connection.close() xml_tree = etree.fromstring(data) status = xml_tree.findtext('status') if status != '0': raise exception.FailedCmdWithDump(status=status, data=data) if method in ['POST', 'DELETE']: LOG.debug(_('Operation completed. %(data)s'), {'data': data}) return xml_tree class ZadaraVPSAISCSIDriver(driver.ISCSIDriver): """Zadara VPSA iSCSI volume driver.""" VERSION = '13.07' def __init__(self, *args, **kwargs): super(ZadaraVPSAISCSIDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(zadara_opts) def do_setup(self, context): """Any initialization the volume driver does while starting. Establishes initial connection with VPSA and retrieves access_key. """ self.vpsa = ZadaraVPSAConnection(self.configuration) def check_for_setup_error(self): """Returns an error (exception) if prerequisites aren't met.""" self.vpsa.ensure_connection() def local_path(self, volume): """Return local path to existing local volume.""" raise NotImplementedError() def _xml_parse_helper(self, xml_tree, first_level, search_tuple, first=True): """Helper for parsing VPSA's XML output. Returns single item if first==True or list for multiple selection. If second argument in search_tuple is None - returns all items with appropriate key. """ objects = xml_tree.find(first_level) if objects is None: return None result_list = [] (key, value) = search_tuple for object in objects.getchildren(): found_value = object.findtext(key) if found_value and (found_value == value or value is None): if first: return object else: result_list.append(object) return result_list if result_list else None def _get_vpsa_volume_name_and_size(self, name): """Return VPSA's name & size for the volume.""" xml_tree = self.vpsa.send_cmd('list_volumes') volume = self._xml_parse_helper(xml_tree, 'volumes', ('display-name', name)) if volume is not None: return (volume.findtext('name'), int(volume.findtext('virtual-capacity'))) return (None, None) def _get_vpsa_volume_name(self, name): """Return VPSA's name for the volume.""" (vol_name, size) = self._get_vpsa_volume_name_and_size(name) return vol_name def _get_volume_cg_name(self, name): """Return name of the consistency group for the volume.""" xml_tree = self.vpsa.send_cmd('list_volumes') volume = self._xml_parse_helper(xml_tree, 'volumes', ('display-name', name)) if volume is not None: return volume.findtext('cg-name') return None def _get_snap_id(self, cg_name, snap_name): """Return snapshot ID for particular volume.""" xml_tree = self.vpsa.send_cmd('list_vol_snapshots', cg_name=cg_name) snap = self._xml_parse_helper(xml_tree, 'snapshots', ('display-name', snap_name)) if snap is not None: return snap.findtext('name') return None def _get_pool_capacity(self, pool_name): """Return pool's total and available capacities.""" xml_tree = self.vpsa.send_cmd('list_pools') pool = self._xml_parse_helper(xml_tree, 'pools', ('name', pool_name)) if pool is not None: total = int(pool.findtext('capacity')) free = int(float(pool.findtext('available-capacity'))) LOG.debug(_('Pool %(name)s: %(total)sGB total, %(free)sGB free'), {'name': pool_name, 'total': total, 'free': free}) return (total, free) return ('infinite', 'infinite') def _get_active_controller_details(self): """Return details of VPSA's active controller.""" xml_tree = self.vpsa.send_cmd('list_controllers') ctrl = self._xml_parse_helper(xml_tree, 'vcontrollers', ('state', 'active')) if ctrl is not None: return dict(target=ctrl.findtext('target'), ip=ctrl.findtext('iscsi-ip'), chap_user=ctrl.findtext('chap-username'), chap_passwd=ctrl.findtext('chap-target-secret')) return None def _get_server_name(self, initiator): """Return VPSA's name for server object with given IQN.""" xml_tree = self.vpsa.send_cmd('list_servers') server = self._xml_parse_helper(xml_tree, 'servers', ('iqn', initiator)) if server is not None: return server.findtext('name') return None def _create_vpsa_server(self, initiator): """Create server object within VPSA (if doesn't exist).""" vpsa_srv = self._get_server_name(initiator) if not vpsa_srv: xml_tree = self.vpsa.send_cmd('create_server', initiator=initiator) vpsa_srv = xml_tree.findtext('server-name') return vpsa_srv def create_volume(self, volume): """Create volume.""" self.vpsa.send_cmd( 'create_volume', name=self.configuration.zadara_vol_name_template % volume['name'], size=volume['size']) def delete_volume(self, volume): """Delete volume. Return ok if doesn't exist. Auto detach from all servers. """ # Get volume name name = self.configuration.zadara_vol_name_template % volume['name'] vpsa_vol = self._get_vpsa_volume_name(name) if not vpsa_vol: msg = _('Volume %(name)s could not be found. ' 'It might be already deleted') % {'name': name} LOG.warning(msg) if self.configuration.zadara_vpsa_allow_nonexistent_delete: return else: raise exception.VolumeNotFound(volume_id=name) # Check attachment info and detach from all xml_tree = self.vpsa.send_cmd('list_vol_attachments', vpsa_vol=vpsa_vol) servers = self._xml_parse_helper(xml_tree, 'servers', ('iqn', None), first=False) if servers: if not self.configuration.zadara_vpsa_auto_detach_on_delete: raise exception.VolumeAttached(volume_id=name) for server in servers: vpsa_srv = server.findtext('name') if vpsa_srv: self.vpsa.send_cmd('detach_volume', vpsa_srv=vpsa_srv, vpsa_vol=vpsa_vol) # Delete volume self.vpsa.send_cmd('delete_volume', vpsa_vol=vpsa_vol) def create_snapshot(self, snapshot): """Creates a snapshot.""" LOG.debug(_('Create snapshot: %s'), snapshot['name']) # Retrieve the CG name for the base volume volume_name = self.configuration.zadara_vol_name_template\ % snapshot['volume_name'] cg_name = self._get_volume_cg_name(volume_name) if not cg_name: msg = _('Volume %(name)s not found') % {'name': volume_name} LOG.error(msg) raise exception.VolumeNotFound(volume_id=volume_name) self.vpsa.send_cmd('create_snapshot', cg_name=cg_name, snap_name=snapshot['name']) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" LOG.debug(_('Delete snapshot: %s'), snapshot['name']) # Retrieve the CG name for the base volume volume_name = self.configuration.zadara_vol_name_template\ % snapshot['volume_name'] cg_name = self._get_volume_cg_name(volume_name) if not cg_name: # If the volume isn't present, then don't attempt to delete LOG.warning(_("snapshot: original volume %s not found, " "skipping delete operation") % snapshot['volume_name']) return True snap_id = self._get_snap_id(cg_name, snapshot['name']) if not snap_id: # If the snapshot isn't present, then don't attempt to delete LOG.warning(_("snapshot: snapshot %s not found, " "skipping delete operation") % snapshot['name']) return True self.vpsa.send_cmd('delete_snapshot', snap_id=snap_id) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" LOG.debug(_('Creating volume from snapshot: %s') % snapshot['name']) # Retrieve the CG name for the base volume volume_name = self.configuration.zadara_vol_name_template\ % snapshot['volume_name'] cg_name = self._get_volume_cg_name(volume_name) if not cg_name: msg = _('Volume %(name)s not found') % {'name': volume_name} LOG.error(msg) raise exception.VolumeNotFound(volume_id=volume_name) snap_id = self._get_snap_id(cg_name, snapshot['name']) if not snap_id: msg = _('Snapshot %(name)s not found') % {'name': snapshot['name']} LOG.error(msg) raise exception.VolumeNotFound(volume_id=snapshot['name']) self.vpsa.send_cmd('create_clone_from_snap', cg_name=cg_name, name=self.configuration.zadara_vol_name_template % volume['name'], snap_id=snap_id) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" LOG.debug(_('Creating clone of volume: %s') % src_vref['name']) # Retrieve the CG name for the base volume volume_name = self.configuration.zadara_vol_name_template\ % src_vref['name'] cg_name = self._get_volume_cg_name(volume_name) if not cg_name: msg = _('Volume %(name)s not found') % {'name': volume_name} LOG.error(msg) raise exception.VolumeNotFound(volume_id=volume_name) self.vpsa.send_cmd('create_clone', cg_name=cg_name, name=self.configuration.zadara_vol_name_template % volume['name']) def extend_volume(self, volume, new_size): """Extend an existing volume.""" # Get volume name name = self.configuration.zadara_vol_name_template % volume['name'] (vpsa_vol, size) = self._get_vpsa_volume_name_and_size(name) if not vpsa_vol: msg = _('Volume %(name)s could not be found. ' 'It might be already deleted') % {'name': name} LOG.error(msg) raise exception.VolumeNotFound(volume_id=name) if new_size < size: raise exception.InvalidInput( reason='%s < current size %s' % (new_size, size)) expand_size = new_size - size self.vpsa.send_cmd('expand_volume', vpsa_vol=vpsa_vol, size=expand_size) def create_export(self, context, volume): """Irrelevant for VPSA volumes. Export created during attachment.""" pass def ensure_export(self, context, volume): """Irrelevant for VPSA volumes. Export created during attachment.""" pass def remove_export(self, context, volume): """Irrelevant for VPSA volumes. Export removed during detach.""" pass def initialize_connection(self, volume, connector): """Attach volume to initiator/host. During this call VPSA exposes volume to particular Initiator. It also creates a 'server' entity for Initiator (if it was not created before) All necessary connection information is returned, including auth data. Connection data (target, LUN) is not stored in the DB. """ # Get/Create server name for IQN initiator_name = connector['initiator'] vpsa_srv = self._create_vpsa_server(initiator_name) if not vpsa_srv: raise exception.ZadaraServerCreateFailure(name=initiator_name) # Get volume name name = self.configuration.zadara_vol_name_template % volume['name'] vpsa_vol = self._get_vpsa_volume_name(name) if not vpsa_vol: raise exception.VolumeNotFound(volume_id=name) # Get Active controller details ctrl = self._get_active_controller_details() if not ctrl: raise exception.ZadaraVPSANoActiveController() # Attach volume to server self.vpsa.send_cmd('attach_volume', vpsa_srv=vpsa_srv, vpsa_vol=vpsa_vol) # Get connection info xml_tree = self.vpsa.send_cmd('list_vol_attachments', vpsa_vol=vpsa_vol) server = self._xml_parse_helper(xml_tree, 'servers', ('iqn', initiator_name)) if server is None: raise exception.ZadaraAttachmentsNotFound(name=name) target = server.findtext('target') lun = server.findtext('lun') if target is None or lun is None: raise exception.ZadaraInvalidAttachmentInfo( name=name, reason='target=%s, lun=%s' % (target, lun)) properties = {} properties['target_discovered'] = False properties['target_portal'] = '%s:%s' % (ctrl['ip'], '3260') properties['target_iqn'] = target properties['target_lun'] = lun properties['volume_id'] = volume['id'] properties['auth_method'] = 'CHAP' properties['auth_username'] = ctrl['chap_user'] properties['auth_password'] = ctrl['chap_passwd'] LOG.debug(_('Attach properties: %(properties)s'), {'properties': properties}) return {'driver_volume_type': 'iscsi', 'data': properties} def terminate_connection(self, volume, connector, **kwargs): """Detach volume from the initiator.""" # Get server name for IQN initiator_name = connector['initiator'] vpsa_srv = self._get_server_name(initiator_name) if not vpsa_srv: raise exception.ZadaraServerNotFound(name=initiator_name) # Get volume name name = self.configuration.zadara_vol_name_template % volume['name'] vpsa_vol = self._get_vpsa_volume_name(name) if not vpsa_vol: raise exception.VolumeNotFound(volume_id=name) # Detach volume from server self.vpsa.send_cmd('detach_volume', vpsa_srv=vpsa_srv, vpsa_vol=vpsa_vol) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = {} backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or self.__class__.__name__ data["vendor_name"] = 'Zadara Storage' data["driver_version"] = self.VERSION data["storage_protocol"] = 'iSCSI' data['reserved_percentage'] = self.configuration.reserved_percentage data['QoS_support'] = False (total, free) = self._get_pool_capacity(self.configuration. zadara_vpsa_poolname) data['total_capacity_gb'] = total data['free_capacity_gb'] = free self._stats = data cinder-2014.1.5/cinder/volume/drivers/nexenta/0000775000567000056700000000000012540643114022243 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/nexenta/iscsi.py0000664000567000056700000006021412540642606023737 0ustar jenkinsjenkins00000000000000# Copyright 2011 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ :mod:`nexenta.iscsi` -- Driver to store volumes on Nexenta Appliance ===================================================================== .. automodule:: nexenta.volume .. moduleauthor:: Victor Rodionov .. moduleauthor:: Mikhail Khodos .. moduleauthor:: Yuriy Taraday """ from cinder import exception from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers import nexenta from cinder.volume.drivers.nexenta import jsonrpc from cinder.volume.drivers.nexenta import options from cinder.volume.drivers.nexenta import utils VERSION = '1.2.1' LOG = logging.getLogger(__name__) class NexentaISCSIDriver(driver.ISCSIDriver): # pylint: disable=R0921 """Executes volume driver commands on Nexenta Appliance. Version history: 1.0.0 - Initial driver version. 1.0.1 - Fixed bug #1236626: catch "does not exist" exception of lu_exists. 1.1.0 - Changed class name to NexentaISCSIDriver. 1.1.1 - Ignore "does not exist" exception of nms.snapshot.destroy. 1.1.2 - Optimized create_cloned_volume, replaced zfs send recv with zfs clone. 1.1.3 - Extended volume stats provided by _update_volume_stats method. 1.2.0 - Added volume migration with storage assist method. 1.2.1 - Fixed bug #1263258: now migrate_volume update provider_location of migrated volume; after migrating volume migrate_volume destroy snapshot on migration destination. """ VERSION = VERSION def __init__(self, *args, **kwargs): super(NexentaISCSIDriver, self).__init__(*args, **kwargs) self.nms = None if self.configuration: self.configuration.append_config_values( options.NEXENTA_CONNECTION_OPTIONS) self.configuration.append_config_values( options.NEXENTA_ISCSI_OPTIONS) self.configuration.append_config_values( options.NEXENTA_VOLUME_OPTIONS) self.configuration.append_config_values( options.NEXENTA_RRMGR_OPTIONS) self.nms_protocol = self.configuration.nexenta_rest_protocol self.nms_host = self.configuration.nexenta_host self.nms_port = self.configuration.nexenta_rest_port self.nms_user = self.configuration.nexenta_user self.nms_password = self.configuration.nexenta_password self.volume = self.configuration.nexenta_volume self.rrmgr_compression = self.configuration.nexenta_rrmgr_compression self.rrmgr_tcp_buf_size = self.configuration.nexenta_rrmgr_tcp_buf_size self.rrmgr_connections = self.configuration.nexenta_rrmgr_connections self.iscsi_target_portal_port = \ self.configuration.nexenta_iscsi_target_portal_port @property def backend_name(self): backend_name = None if self.configuration: backend_name = self.configuration.safe_get('volume_backend_name') if not backend_name: backend_name = self.__class__.__name__ return backend_name def do_setup(self, context): if self.nms_protocol == 'auto': protocol, auto = 'http', True else: protocol, auto = self.nms_protocol, False self.nms = jsonrpc.NexentaJSONProxy( protocol, self.nms_host, self.nms_port, '/rest/nms', self.nms_user, self.nms_password, auto=auto) def check_for_setup_error(self): """Verify that the volume for our zvols exists. :raise: :py:exc:`LookupError` """ if not self.nms.volume.object_exists(self.volume): raise LookupError(_("Volume %s does not exist in Nexenta SA"), self.volume) def _get_zvol_name(self, volume_name): """Return zvol name that corresponds given volume name.""" return '%s/%s' % (self.volume, volume_name) def _get_target_name(self, volume_name): """Return iSCSI target name to access volume.""" return '%s%s' % (self.configuration.nexenta_target_prefix, volume_name) def _get_target_group_name(self, volume_name): """Return Nexenta iSCSI target group name for volume.""" return '%s%s' % (self.configuration.nexenta_target_group_prefix, volume_name) @staticmethod def _get_clone_snapshot_name(volume): """Return name for snapshot that will be used to clone the volume.""" return 'cinder-clone-snapshot-%(id)s' % volume @staticmethod def _is_clone_snapshot_name(snapshot): """Check if snapshot is created for cloning.""" name = snapshot.split('@')[-1] return name.startswith('cinder-clone-snapshot-') def create_volume(self, volume): """Create a zvol on appliance. :param volume: volume reference :return: model update dict for volume reference """ self.nms.zvol.create( self._get_zvol_name(volume['name']), '%sG' % (volume['size'],), self.configuration.nexenta_blocksize, self.configuration.nexenta_sparse) return self.create_export(None, volume) def extend_volume(self, volume, new_size): """Extend an existing volume. :param volume: volume reference :param new_size: volume new size in GB """ LOG.info(_('Extending volume: %(id)s New size: %(size)s GB'), {'id': volume['id'], 'size': new_size}) self.nms.zvol.set_child_prop(self._get_zvol_name(volume['name']), 'volsize', '%sG' % new_size) def delete_volume(self, volume): """Destroy a zvol on appliance. :param volume: volume reference """ volume_name = self._get_zvol_name(volume['name']) props = self.nms.zvol.get_child_props(volume_name, 'origin') or {} try: self.nms.zvol.destroy(volume_name, '') except nexenta.NexentaException as exc: if 'does not exist' in exc.args[0]: LOG.info(_('Volume %s does not exist, it seems it was already ' 'deleted.'), volume_name) return if 'zvol has children' in exc.args[0]: raise exception.VolumeIsBusy(volume_name=volume_name) raise origin = props.get('origin') if origin and self._is_clone_snapshot_name(origin): volume, snapshot = origin.split('@') volume = volume.lstrip('%s/' % self.configuration.nexenta_volume) try: self.delete_snapshot({'volume_name': volume, 'name': snapshot}) except nexenta.NexentaException as exc: LOG.warning(_('Cannot delete snapshot %(origin)s: %(exc)s'), {'origin': origin, 'exc': exc}) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume. :param volume: new volume reference :param src_vref: source volume reference """ snapshot = {'volume_name': src_vref['name'], 'name': self._get_clone_snapshot_name(volume)} LOG.debug(_('Creating temp snapshot of the original volume: ' '%(volume_name)s@%(name)s'), snapshot) # We don't delete this snapshot, because this snapshot will be origin # of new volume. This snapshot will be automatically promoted by NMS # when user will delete origin volume. But when cloned volume deleted # we check its origin property and delete source snapshot if needed. self.create_snapshot(snapshot) try: self.create_volume_from_snapshot(volume, snapshot) except nexenta.NexentaException: LOG.error(_('Volume creation failed, deleting created snapshot ' '%(volume_name)s@%(name)s'), snapshot) try: self.delete_snapshot(snapshot) except (nexenta.NexentaException, exception.SnapshotIsBusy): LOG.warning(_('Failed to delete zfs snapshot ' '%(volume_name)s@%(name)s'), snapshot) raise def _get_zfs_send_recv_cmd(self, src, dst): """Returns rrmgr command for source and destination.""" return utils.get_rrmgr_cmd(src, dst, compression=self.rrmgr_compression, tcp_buf_size=self.rrmgr_tcp_buf_size, connections=self.rrmgr_connections) @staticmethod def get_nms_for_url(url): """Returns initialized nms object for url.""" auto, scheme, user, password, host, port, path =\ utils.parse_nms_url(url) return jsonrpc.NexentaJSONProxy(scheme, host, port, path, user, password, auto=auto) def migrate_volume(self, ctxt, volume, host): """Migrate if volume and host are managed by Nexenta appliance. :param ctxt: context :param volume: a dictionary describing the volume to migrate :param host: a dictionary describing the host to migrate to """ LOG.debug(_('Enter: migrate_volume: id=%(id)s, host=%(host)s') % {'id': volume['id'], 'host': host}) false_ret = (False, None) if volume['status'] != 'available': return false_ret if 'capabilities' not in host: return false_ret capabilities = host['capabilities'] if 'location_info' not in capabilities or \ 'iscsi_target_portal_port' not in capabilities or \ 'nms_url' not in capabilities: return false_ret iscsi_target_portal_port = capabilities['iscsi_target_portal_port'] nms_url = capabilities['nms_url'] dst_parts = capabilities['location_info'].split(':') if capabilities.get('vendor_name') != 'Nexenta' or \ dst_parts[0] != self.__class__.__name__ or \ capabilities['free_capacity_gb'] < volume['size']: return false_ret dst_host, dst_volume = dst_parts[1:] ssh_bound = False ssh_bindings = self.nms.appliance.ssh_list_bindings() for bind in ssh_bindings: if bind.index(dst_host) != -1: ssh_bound = True break if not ssh_bound: LOG.warning(_("Remote NexentaStor appliance at %s should be " "SSH-bound."), dst_host) # Create temporary snapshot of volume on NexentaStor Appliance. snapshot = { 'volume_name': volume['name'], 'name': utils.get_migrate_snapshot_name(volume) } self.create_snapshot(snapshot) src = '%(volume)s/%(zvol)s@%(snapshot)s' % { 'volume': self.volume, 'zvol': volume['name'], 'snapshot': snapshot['name'] } dst = ':'.join([dst_host, dst_volume]) try: self.nms.appliance.execute(self._get_zfs_send_recv_cmd(src, dst)) except nexenta.NexentaException as exc: LOG.warning(_("Cannot send source snapshot %(src)s to " "destination %(dst)s. Reason: %(exc)s"), {'src': src, 'dst': dst, 'exc': exc}) return false_ret finally: try: self.delete_snapshot(snapshot) except nexenta.NexentaException as exc: LOG.warning(_("Cannot delete temporary source snapshot " "%(src)s on NexentaStor Appliance: %(exc)s"), {'src': src, 'exc': exc}) try: self.delete_volume(volume) except nexenta.NexentaException as exc: LOG.warning(_("Cannot delete source volume %(volume)s on " "NexentaStor Appliance: %(exc)s"), {'volume': volume['name'], 'exc': exc}) dst_nms = self.get_nms_for_url(nms_url) dst_snapshot = '%s/%s@%s' % (dst_volume, volume['name'], snapshot['name']) try: dst_nms.snapshot.destroy(dst_snapshot, '') except nexenta.NexentaException as exc: LOG.warning(_("Cannot delete temporary destination snapshot " "%(dst)s on NexentaStor Appliance: %(exc)s"), {'dst': dst_snapshot, 'exc': exc}) provider_location = '%(host)s:%(port)s,1 %(name)s 0' % { 'host': dst_host, 'port': iscsi_target_portal_port, 'name': self._get_target_name(volume['name']) } return True, {'provider_location': provider_location} def create_snapshot(self, snapshot): """Create snapshot of existing zvol on appliance. :param snapshot: snapshot reference """ self.nms.zvol.create_snapshot( self._get_zvol_name(snapshot['volume_name']), snapshot['name'], '') def create_volume_from_snapshot(self, volume, snapshot): """Create new volume from other's snapshot on appliance. :param volume: reference of volume to be created :param snapshot: reference of source snapshot """ self.nms.zvol.clone( '%s@%s' % (self._get_zvol_name(snapshot['volume_name']), snapshot['name']), self._get_zvol_name(volume['name'])) def delete_snapshot(self, snapshot): """Delete volume's snapshot on appliance. :param snapshot: snapshot reference """ volume_name = self._get_zvol_name(snapshot['volume_name']) snapshot_name = '%s@%s' % (volume_name, snapshot['name']) try: self.nms.snapshot.destroy(snapshot_name, '') except nexenta.NexentaException as exc: if "does not exist" in exc.args[0]: LOG.info(_('Snapshot %s does not exist, it seems it was ' 'already deleted.'), snapshot_name) return if "snapshot has dependent clones" in exc.args[0]: raise exception.SnapshotIsBusy(snapshot_name=snapshot['name']) raise def local_path(self, volume): """Return local path to existing local volume. We never have local volumes, so it raises NotImplementedError. :raise: :py:exc:`NotImplementedError` """ raise NotImplementedError def _target_exists(self, target): """Check if iSCSI target exist. :param target: target name :return: True if target exist, else False """ targets = self.nms.stmf.list_targets() if not targets: return False return target in self.nms.stmf.list_targets() def _target_group_exists(self, target_group): """Check if target group exist. :param target_group: target group :return: True if target group exist, else False """ groups = self.nms.stmf.list_targetgroups() if not groups: return False return target_group in groups def _target_member_in_target_group(self, target_group, target_member): """Check if target member in target group. :param target_group: target group :param target_member: target member :return: True if target member in target group, else False :raises: NexentaException if target group doesn't exist """ members = self.nms.stmf.list_targetgroup_members(target_group) if not members: return False return target_member in members def _lu_exists(self, zvol_name): """Check if LU exists on appliance. :param zvol_name: Zvol name :raises: NexentaException if zvol not exists :return: True if LU exists, else False """ try: return bool(self.nms.scsidisk.lu_exists(zvol_name)) except nexenta.NexentaException as exc: if 'does not exist' not in exc.args[0]: raise return False def _is_lu_shared(self, zvol_name): """Check if LU exists on appliance and shared. :param zvol_name: Zvol name :raises: NexentaException if Zvol not exist :return: True if LU exists and shared, else False """ try: shared = self.nms.scsidisk.lu_shared(zvol_name) > 0 except nexenta.NexentaException as exc: if 'does not exist for zvol' not in exc.args[0]: raise # Zvol does not exists shared = False # LU does not exist return shared def _is_volume_exported(self, volume): """Check if volume exported. :param volume: volume object :return: True if volume exported, else False """ zvol_name = self._get_zvol_name(volume['name']) target_name = self._get_target_name(volume['name']) target_group_name = self._get_target_group_name(volume['name']) return (self._target_exists(target_name) and self._target_group_exists(target_group_name) and self._target_member_in_target_group(target_group_name, target_name) and self._lu_exists(zvol_name) and self._is_lu_shared(zvol_name)) def _get_provider_location(self, volume): """Returns volume iscsiadm-formatted provider location string.""" return '%(host)s:%(port)s,1 %(name)s 0' % { 'host': self.nms_host, 'port': self.configuration.nexenta_iscsi_target_portal_port, 'name': self._get_target_name(volume['name']) } def _do_export(self, _ctx, volume, ensure=False): """Do all steps to get zvol exported as LUN 0 at separate target. :param volume: reference of volume to be exported :param ensure: if True, ignore errors caused by already existing resources """ zvol_name = self._get_zvol_name(volume['name']) target_name = self._get_target_name(volume['name']) target_group_name = self._get_target_group_name(volume['name']) if not self._target_exists(target_name): try: self.nms.iscsitarget.create_target({ 'target_name': target_name}) except nexenta.NexentaException as exc: if ensure and 'already configured' in exc.args[0]: LOG.info(_('Ignored target creation error "%s" while ' 'ensuring export'), exc) else: raise if not self._target_group_exists(target_group_name): try: self.nms.stmf.create_targetgroup(target_group_name) except nexenta.NexentaException as exc: if ((ensure and 'already exists' in exc.args[0]) or 'target must be offline' in exc.args[0]): LOG.info(_('Ignored target group creation error "%s" ' 'while ensuring export'), exc) else: raise if not self._target_member_in_target_group(target_group_name, target_name): try: self.nms.stmf.add_targetgroup_member(target_group_name, target_name) except nexenta.NexentaException as exc: if ((ensure and 'already exists' in exc.args[0]) or 'target must be offline' in exc.args[0]): LOG.info(_('Ignored target group member addition error ' '"%s" while ensuring export'), exc) else: raise if not self._lu_exists(zvol_name): try: self.nms.scsidisk.create_lu(zvol_name, {}) except nexenta.NexentaException as exc: if not ensure or 'in use' not in exc.args[0]: raise LOG.info(_('Ignored LU creation error "%s" while ensuring ' 'export'), exc) if not self._is_lu_shared(zvol_name): try: self.nms.scsidisk.add_lun_mapping_entry(zvol_name, { 'target_group': target_group_name, 'lun': '0'}) except nexenta.NexentaException as exc: if not ensure or 'view entry exists' not in exc.args[0]: raise LOG.info(_('Ignored LUN mapping entry addition error "%s" ' 'while ensuring export'), exc) def create_export(self, _ctx, volume): """Create new export for zvol. :param volume: reference of volume to be exported :return: iscsiadm-formatted provider location string """ self._do_export(_ctx, volume, ensure=False) return {'provider_location': self._get_provider_location(volume)} def ensure_export(self, _ctx, volume): """Recreate parts of export if necessary. :param volume: reference of volume to be exported """ self._do_export(_ctx, volume, ensure=True) def remove_export(self, _ctx, volume): """Destroy all resources created to export zvol. :param volume: reference of volume to be unexported """ zvol_name = self._get_zvol_name(volume['name']) target_name = self._get_target_name(volume['name']) target_group_name = self._get_target_group_name(volume['name']) self.nms.scsidisk.delete_lu(zvol_name) try: self.nms.stmf.destroy_targetgroup(target_group_name) except nexenta.NexentaException as exc: # We assume that target group is already gone LOG.warn(_('Got error trying to destroy target group' ' %(target_group)s, assuming it is ' 'already gone: %(exc)s'), {'target_group': target_group_name, 'exc': exc}) try: self.nms.iscsitarget.delete_target(target_name) except nexenta.NexentaException as exc: # We assume that target is gone as well LOG.warn(_('Got error trying to delete target %(target)s,' ' assuming it is already gone: %(exc)s'), {'target': target_name, 'exc': exc}) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info for NexentaStor appliance.""" LOG.debug(_('Updating volume stats')) stats = self.nms.volume.get_child_props( self.configuration.nexenta_volume, 'health|size|used|available') total_amount = utils.str2gib_size(stats['size']) free_amount = utils.str2gib_size(stats['available']) location_info = '%(driver)s:%(host)s:%(volume)s' % { 'driver': self.__class__.__name__, 'host': self.nms_host, 'volume': self.volume } self._stats = { 'vendor_name': 'Nexenta', 'driver_version': self.VERSION, 'storage_protocol': 'iSCSI', 'total_capacity_gb': total_amount, 'free_capacity_gb': free_amount, 'reserved_percentage': 0, 'QoS_support': False, 'volume_backend_name': self.backend_name, 'location_info': location_info, 'iscsi_target_portal_port': self.iscsi_target_portal_port, 'nms_url': self.nms.url } cinder-2014.1.5/cinder/volume/drivers/nexenta/options.py0000664000567000056700000001021412540642606024313 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ :mod:`nexenta.options` -- Contains configuration options for Nexenta drivers. ============================================================================= .. automodule:: nexenta.options .. moduleauthor:: Victor Rodionov .. moduleauthor:: Yuriy Taraday """ from oslo.config import cfg NEXENTA_CONNECTION_OPTIONS = [ cfg.StrOpt('nexenta_host', default='', help='IP address of Nexenta SA'), cfg.IntOpt('nexenta_rest_port', default=2000, help='HTTP port to connect to Nexenta REST API server'), cfg.StrOpt('nexenta_rest_protocol', default='auto', help='Use http or https for REST connection (default auto)'), cfg.StrOpt('nexenta_user', default='admin', help='User name to connect to Nexenta SA'), cfg.StrOpt('nexenta_password', default='nexenta', help='Password to connect to Nexenta SA', secret=True), ] NEXENTA_ISCSI_OPTIONS = [ cfg.IntOpt('nexenta_iscsi_target_portal_port', default=3260, help='Nexenta target portal port'), cfg.StrOpt('nexenta_volume', default='cinder', help='pool on SA that will hold all volumes'), cfg.StrOpt('nexenta_target_prefix', default='iqn.1986-03.com.sun:02:cinder-', help='IQN prefix for iSCSI targets'), cfg.StrOpt('nexenta_target_group_prefix', default='cinder/', help='prefix for iSCSI target groups on SA'), ] NEXENTA_NFS_OPTIONS = [ cfg.StrOpt('nexenta_shares_config', default='/etc/cinder/nfs_shares', help='File with the list of available nfs shares'), cfg.StrOpt('nexenta_mount_point_base', default='$state_path/mnt', help='Base dir containing mount points for nfs shares'), cfg.BoolOpt('nexenta_sparsed_volumes', default=True, help=('Create volumes as sparsed files which take no space.' 'If set to False volume is created as regular file.' 'In such case volume creation takes a lot of time.')), cfg.StrOpt('nexenta_volume_compression', default='on', help='Default compression value for new ZFS folders.'), cfg.BoolOpt('nexenta_nms_cache_volroot', default=True, help=('If set True cache NexentaStor appliance volroot option ' 'value.')) ] NEXENTA_VOLUME_OPTIONS = [ cfg.StrOpt('nexenta_blocksize', default='', help='block size for volumes (blank=default,8KB)'), cfg.BoolOpt('nexenta_sparse', default=False, help='flag to create sparse volumes'), ] NEXENTA_RRMGR_OPTIONS = [ cfg.IntOpt('nexenta_rrmgr_compression', default=0, help=('Enable stream compression, level 1..9. 1 - gives best ' 'speed; 9 - gives best compression.')), cfg.IntOpt('nexenta_rrmgr_tcp_buf_size', default=4096, help='TCP Buffer size in KiloBytes.'), cfg.IntOpt('nexenta_rrmgr_connections', default=2, help='Number of TCP connections.'), ] CONF = cfg.CONF CONF.register_opts(NEXENTA_CONNECTION_OPTIONS) CONF.register_opts(NEXENTA_ISCSI_OPTIONS) CONF.register_opts(NEXENTA_VOLUME_OPTIONS) CONF.register_opts(NEXENTA_NFS_OPTIONS) CONF.register_opts(NEXENTA_RRMGR_OPTIONS) cinder-2014.1.5/cinder/volume/drivers/nexenta/nfs.py0000664000567000056700000004167312540642606023423 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ :mod:`nexenta.nfs` -- Driver to store volumes on NexentaStor Appliance. ======================================================================= .. automodule:: nexenta.nfs .. moduleauthor:: Mikhail Khodos .. moduleauthor:: Victor Rodionov """ import hashlib import os from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import units from cinder.volume.drivers import nexenta from cinder.volume.drivers.nexenta import jsonrpc from cinder.volume.drivers.nexenta import options from cinder.volume.drivers.nexenta import utils from cinder.volume.drivers import nfs VERSION = '1.1.3' LOG = logging.getLogger(__name__) class NexentaNfsDriver(nfs.NfsDriver): # pylint: disable=R0921 """Executes volume driver commands on Nexenta Appliance. Version history: 1.0.0 - Initial driver version. 1.1.0 - Auto sharing for enclosing folder. 1.1.1 - Added caching for NexentaStor appliance 'volroot' value. 1.1.2 - Ignore "folder does not exist" error in delete_volume and delete_snapshot method. 1.1.3 - Redefined volume_backend_name attribute inherited from RemoteFsDriver. """ driver_prefix = 'nexenta' volume_backend_name = 'NexentaNfsDriver' VERSION = VERSION def __init__(self, *args, **kwargs): super(NexentaNfsDriver, self).__init__(*args, **kwargs) if self.configuration: self.configuration.append_config_values( options.NEXENTA_NFS_OPTIONS) conf = self.configuration self.nms_cache_volroot = conf.nexenta_nms_cache_volroot self._nms2volroot = {} self.share2nms = {} def do_setup(self, context): super(NexentaNfsDriver, self).do_setup(context) self._load_shares_config(getattr(self.configuration, self.driver_prefix + '_shares_config')) def check_for_setup_error(self): """Verify that the volume for our folder exists. :raise: :py:exc:`LookupError` """ if self.share2nms: for nfs_share in self.share2nms: nms = self.share2nms[nfs_share] volume_name, dataset = self._get_share_datasets(nfs_share) if not nms.volume.object_exists(volume_name): raise LookupError(_("Volume %s does not exist in Nexenta " "Store appliance"), volume_name) folder = '%s/%s' % (volume_name, dataset) if not nms.folder.object_exists(folder): raise LookupError(_("Folder %s does not exist in Nexenta " "Store appliance"), folder) self._share_folder(nms, volume_name, dataset) def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info. :param volume: volume reference :param connector: connector reference """ export = '%s/%s' % (volume['provider_location'], volume['name']) data = {'export': export, 'name': 'volume'} if volume['provider_location'] in self.shares: data['options'] = self.shares[volume['provider_location']] return { 'driver_volume_type': self.driver_volume_type, 'data': data } def _do_create_volume(self, volume): nfs_share = volume['provider_location'] nms = self.share2nms[nfs_share] vol, dataset = self._get_share_datasets(nfs_share) folder = '%s/%s' % (dataset, volume['name']) LOG.debug(_('Creating folder on Nexenta Store %s'), folder) nms.folder.create_with_props( vol, folder, {'compression': self.configuration.nexenta_volume_compression} ) volume_path = self.remote_path(volume) volume_size = volume['size'] try: self._share_folder(nms, vol, folder) if getattr(self.configuration, self.driver_prefix + '_sparsed_volumes'): self._create_sparsed_file(nms, volume_path, volume_size) else: compression = nms.folder.get('compression') if compression != 'off': # Disable compression, because otherwise will not use space # on disk. nms.folder.set('compression', 'off') try: self._create_regular_file(nms, volume_path, volume_size) finally: if compression != 'off': # Backup default compression value if it was changed. nms.folder.set('compression', compression) self._set_rw_permissions_for_all(nms, volume_path) except nexenta.NexentaException as exc: try: nms.folder.destroy('%s/%s' % (vol, folder)) except nexenta.NexentaException: LOG.warning(_("Cannot destroy created folder: " "%(vol)s/%(folder)s"), {'vol': vol, 'folder': folder}) raise exc def create_volume_from_snapshot(self, volume, snapshot): """Create new volume from other's snapshot on appliance. :param volume: reference of volume to be created :param snapshot: reference of source snapshot """ self._ensure_shares_mounted() snapshot_vol = self._get_snapshot_volume(snapshot) nfs_share = snapshot_vol['provider_location'] volume['provider_location'] = nfs_share nms = self.share2nms[nfs_share] vol, dataset = self._get_share_datasets(nfs_share) snapshot_name = '%s/%s/%s@%s' % (vol, dataset, snapshot['volume_name'], snapshot['name']) folder = '%s/%s' % (dataset, volume['name']) nms.folder.clone(snapshot_name, '%s/%s' % (vol, folder)) try: self._share_folder(nms, vol, folder) except nexenta.NexentaException: try: nms.folder.destroy('%s/%s' % (vol, folder), '') except nexenta.NexentaException: LOG.warning(_("Cannot destroy cloned folder: " "%(vol)s/%(folder)s"), {'vol': vol, 'folder': folder}) raise return {'provider_location': volume['provider_location']} def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume. :param volume: new volume reference :param src_vref: source volume reference """ LOG.info(_('Creating clone of volume: %s'), src_vref['id']) snapshot = {'volume_name': src_vref['name'], 'volume_id': src_vref['id'], 'name': self._get_clone_snapshot_name(volume)} # We don't delete this snapshot, because this snapshot will be origin # of new volume. This snapshot will be automatically promoted by NMS # when user will delete its origin. self.create_snapshot(snapshot) try: return self.create_volume_from_snapshot(volume, snapshot) except nexenta.NexentaException: LOG.error(_('Volume creation failed, deleting created snapshot ' '%(volume_name)s@%(name)s'), snapshot) try: self.delete_snapshot(snapshot) except (nexenta.NexentaException, exception.SnapshotIsBusy): LOG.warning(_('Failed to delete zfs snapshot ' '%(volume_name)s@%(name)s'), snapshot) raise def delete_volume(self, volume): """Deletes a logical volume. :param volume: volume reference """ super(NexentaNfsDriver, self).delete_volume(volume) nfs_share = volume.get('provider_location') if nfs_share: nms = self.share2nms[nfs_share] vol, parent_folder = self._get_share_datasets(nfs_share) folder = '%s/%s/%s' % (vol, parent_folder, volume['name']) props = nms.folder.get_child_props(folder, 'origin') or {} try: nms.folder.destroy(folder, '-r') except nexenta.NexentaException as exc: if 'does not exist' in exc.args[0]: LOG.info(_('Folder %s does not exist, it was ' 'already deleted.'), folder) return raise origin = props.get('origin') if origin and self._is_clone_snapshot_name(origin): try: nms.snapshot.destroy(origin, '') except nexenta.NexentaException as exc: if 'does not exist' in exc.args[0]: LOG.info(_('Snapshot %s does not exist, it was ' 'already deleted.'), origin) return raise def create_snapshot(self, snapshot): """Creates a snapshot. :param snapshot: snapshot reference """ volume = self._get_snapshot_volume(snapshot) nfs_share = volume['provider_location'] nms = self.share2nms[nfs_share] vol, dataset = self._get_share_datasets(nfs_share) folder = '%s/%s/%s' % (vol, dataset, volume['name']) nms.folder.create_snapshot(folder, snapshot['name'], '-r') def delete_snapshot(self, snapshot): """Deletes a snapshot. :param snapshot: snapshot reference """ volume = self._get_snapshot_volume(snapshot) nfs_share = volume['provider_location'] nms = self.share2nms[nfs_share] vol, dataset = self._get_share_datasets(nfs_share) folder = '%s/%s/%s' % (vol, dataset, volume['name']) try: nms.snapshot.destroy('%s@%s' % (folder, snapshot['name']), '') except nexenta.NexentaException as exc: if 'does not exist' in exc.args[0]: LOG.info(_('Snapshot %s does not exist, it was ' 'already deleted.'), '%s@%s' % (folder, snapshot)) return raise def _create_sparsed_file(self, nms, path, size): """Creates file with 0 disk usage. :param nms: nms object :param path: path to new file :param size: size of file """ block_size_mb = 1 block_count = size * units.GiB / (block_size_mb * units.MiB) nms.appliance.execute( 'dd if=/dev/zero of=%(path)s bs=%(bs)dM count=0 seek=%(count)d' % { 'path': path, 'bs': block_size_mb, 'count': block_count } ) def _create_regular_file(self, nms, path, size): """Creates regular file of given size. Takes a lot of time for large files. :param nms: nms object :param path: path to new file :param size: size of file """ block_size_mb = 1 block_count = size * units.GiB / (block_size_mb * units.MiB) LOG.info(_('Creating regular file: %s.' 'This may take some time.') % path) nms.appliance.execute( 'dd if=/dev/zero of=%(path)s bs=%(bs)dM count=%(count)d' % { 'path': path, 'bs': block_size_mb, 'count': block_count } ) LOG.info(_('Regular file: %s created.') % path) def _set_rw_permissions_for_all(self, nms, path): """Sets 666 permissions for the path. :param nms: nms object :param path: path to file """ nms.appliance.execute('chmod ugo+rw %s' % path) def local_path(self, volume): """Get volume path (mounted locally fs path) for given volume. :param volume: volume reference """ nfs_share = volume['provider_location'] return os.path.join(self._get_mount_point_for_share(nfs_share), volume['name'], 'volume') def _get_mount_point_for_share(self, nfs_share): """Returns path to mount point NFS share. :param nfs_share: example 172.18.194.100:/var/nfs """ return os.path.join(self.configuration.nexenta_mount_point_base, hashlib.md5(nfs_share).hexdigest()) def remote_path(self, volume): """Get volume path (mounted remotely fs path) for given volume. :param volume: volume reference """ nfs_share = volume['provider_location'] share = nfs_share.split(':')[1].rstrip('/') return '%s/%s/volume' % (share, volume['name']) def _share_folder(self, nms, volume, folder): """Share NFS folder on NexentaStor Appliance. :param nms: nms object :param volume: volume name :param folder: folder name """ path = '%s/%s' % (volume, folder.lstrip('/')) share_opts = { 'read_write': '*', 'read_only': '', 'root': 'nobody', 'extra_options': 'anon=0', 'recursive': 'true', 'anonymous_rw': 'true', } LOG.debug(_('Sharing folder %s on Nexenta Store'), folder) nms.netstorsvc.share_folder('svc:/network/nfs/server:default', path, share_opts) def _load_shares_config(self, share_file): self.shares = {} self.share2nms = {} for share in self._read_config_file(share_file): # A configuration line may be either: # host:/share_name http://user:pass@host:[port]/ # or # host:/share_name http://user:pass@host:[port]/ # -o options=123,rw --other if not share.strip(): continue if share.startswith('#'): continue share_info = share.split(' ', 2) share_address = share_info[0].strip().decode('unicode_escape') nms_url = share_info[1].strip() share_opts = share_info[2].strip() if len(share_info) > 2 else None self.shares[share_address] = share_opts self.share2nms[share_address] = self._get_nms_for_url(nms_url) LOG.debug(_('Shares loaded: %s') % self.shares) def _get_capacity_info(self, nfs_share): """Calculate available space on the NFS share. :param nfs_share: example 172.18.194.100:/var/nfs """ nms = self.share2nms[nfs_share] ns_volume, ns_folder = self._get_share_datasets(nfs_share) folder_props = nms.folder.get_child_props('%s/%s' % (ns_volume, ns_folder), '') free = utils.str2size(folder_props['available']) allocated = utils.str2size(folder_props['used']) return free + allocated, free, allocated def _get_nms_for_url(self, url): """Returns initialized nms object for url.""" auto, scheme, user, password, host, port, path =\ utils.parse_nms_url(url) return jsonrpc.NexentaJSONProxy(scheme, host, port, path, user, password, auto=auto) def _get_snapshot_volume(self, snapshot): ctxt = context.get_admin_context() return db.volume_get(ctxt, snapshot['volume_id']) def _get_volroot(self, nms): """Returns volroot property value from NexentaStor appliance.""" if not self.nms_cache_volroot: return nms.server.get_prop('volroot') if nms not in self._nms2volroot: self._nms2volroot[nms] = nms.server.get_prop('volroot') return self._nms2volroot[nms] def _get_share_datasets(self, nfs_share): nms = self.share2nms[nfs_share] volroot = self._get_volroot(nms) path = nfs_share.split(':')[1][len(volroot):].strip('/') volume_name = path.split('/')[0] folder_name = '/'.join(path.split('/')[1:]) return volume_name, folder_name def _get_clone_snapshot_name(self, volume): """Return name for snapshot that will be used to clone the volume.""" return 'cinder-clone-snapshot-%(id)s' % volume def _is_clone_snapshot_name(self, snapshot): """Check if snapshot is created for cloning.""" name = snapshot.split('@')[-1] return name.startswith('cinder-clone-snapshot-') cinder-2014.1.5/cinder/volume/drivers/nexenta/jsonrpc.py0000664000567000056700000000677212540642606024314 0ustar jenkinsjenkins00000000000000# Copyright 2011 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ :mod:`nexenta.jsonrpc` -- Nexenta-specific JSON RPC client ===================================================================== .. automodule:: nexenta.jsonrpc .. moduleauthor:: Yuriy Taraday .. moduleauthor:: Victor Rodionov """ import urllib2 from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder.volume.drivers import nexenta LOG = logging.getLogger(__name__) class NexentaJSONException(nexenta.NexentaException): pass class NexentaJSONProxy(object): def __init__(self, scheme, host, port, path, user, password, auto=False, obj=None, method=None): self.scheme = scheme.lower() self.host = host self.port = port self.path = path self.user = user self.password = password self.auto = auto self.obj = obj self.method = method def __getattr__(self, name): if not self.obj: obj, method = name, None elif not self.method: obj, method = self.obj, name else: obj, method = '%s.%s' % (self.obj, self.method), name return NexentaJSONProxy(self.scheme, self.host, self.port, self.path, self.user, self.password, self.auto, obj, method) @property def url(self): return '%s://%s:%s%s' % (self.scheme, self.host, self.port, self.path) def __hash__(self): return self.url.__hash__() def __repr__(self): return 'NMS proxy: %s' % self.url def __call__(self, *args): data = jsonutils.dumps({ 'object': self.obj, 'method': self.method, 'params': args }) auth = ('%s:%s' % (self.user, self.password)).encode('base64')[:-1] headers = { 'Content-Type': 'application/json', 'Authorization': 'Basic %s' % auth } LOG.debug(_('Sending JSON data: %s'), data) request = urllib2.Request(self.url, data, headers) response_obj = urllib2.urlopen(request) if response_obj.info().status == 'EOF in headers': if not self.auto or self.scheme != 'http': LOG.error(_('No headers in server response')) raise NexentaJSONException(_('Bad response from server')) LOG.info(_('Auto switching to HTTPS connection to %s'), self.url) self.scheme = 'https' request = urllib2.Request(self.url, data, headers) response_obj = urllib2.urlopen(request) response_data = response_obj.read() LOG.debug(_('Got response: %s'), response_data) response = jsonutils.loads(response_data) if response.get('error') is not None: raise NexentaJSONException(response['error'].get('message', '')) return response.get('result') cinder-2014.1.5/cinder/volume/drivers/nexenta/__init__.py0000664000567000056700000000170112540642606024360 0ustar jenkinsjenkins00000000000000# Copyright 2011 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ :mod:`nexenta` -- Package contains Nexenta-specific modules ===================================================================== .. automodule:: nexenta .. moduleauthor:: Yuriy Taraday .. moduleauthor:: Mikhail Khodos """ class NexentaException(Exception): pass cinder-2014.1.5/cinder/volume/drivers/nexenta/utils.py0000664000567000056700000000741412540642606023770 0ustar jenkinsjenkins00000000000000# Copyright 2013 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ :mod:`nexenta.utils` -- Nexenta-specific utils functions. ========================================================= .. automodule:: nexenta.utils .. moduleauthor:: Victor Rodionov .. moduleauthor:: Mikhail Khodos """ import re import six.moves.urllib.parse as urlparse from cinder import units def str2size(s, scale=1024): """Convert size-string. String format: [:space:] to bytes. :param s: size-string :param scale: base size """ if not s: return 0 if isinstance(s, (int, long)): return s match = re.match(r'^([\.\d]+)\s*([BbKkMmGgTtPpEeZzYy]?)', s) if match is None: raise ValueError(_('Invalid value: "%s"') % s) groups = match.groups() value = float(groups[0]) suffix = len(groups) > 1 and groups[1].upper() or 'B' types = ('B', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') for i, t in enumerate(types): if suffix == t: return int(value * pow(scale, i)) def str2gib_size(s): """Covert size-string to size in gigabytes.""" size_in_bytes = str2size(s) return size_in_bytes / units.GiB def get_rrmgr_cmd(src, dst, compression=None, tcp_buf_size=None, connections=None): """Returns rrmgr command for source and destination.""" cmd = ['rrmgr', '-s', 'zfs'] if compression: cmd.extend(['-c', '%s' % str(compression)]) cmd.append('-q') cmd.append('-e') if tcp_buf_size: cmd.extend(['-w', str(tcp_buf_size)]) if connections: cmd.extend(['-n', str(connections)]) cmd.extend([src, dst]) return ' '.join(cmd) def parse_nms_url(url): """Parse NMS url into normalized parts like scheme, user, host and others. Example NMS URL: auto://admin:nexenta@192.168.1.1:2000/ NMS URL parts: auto True if url starts with auto://, protocol will be automatically switched to https if http not supported; scheme (auto) connection protocol (http or https); user (admin) NMS user; password (nexenta) NMS password; host (192.168.1.1) NMS host; port (2000) NMS port. :param url: url string :return: tuple (auto, scheme, user, password, host, port, path) """ pr = urlparse.urlparse(url) scheme = pr.scheme auto = scheme == 'auto' if auto: scheme = 'http' user = 'admin' password = 'nexenta' if '@' not in pr.netloc: host_and_port = pr.netloc else: user_and_password, host_and_port = pr.netloc.split('@', 1) if ':' in user_and_password: user, password = user_and_password.split(':') else: user = user_and_password if ':' in host_and_port: host, port = host_and_port.split(':', 1) else: host, port = host_and_port, '2000' return auto, scheme, user, password, host, port, '/rest/nms/' def get_migrate_snapshot_name(volume): """Return name for snapshot that will be used to migrate the volume.""" return 'cinder-migrate-snapshot-%(id)s' % volume cinder-2014.1.5/cinder/volume/drivers/emc/0000775000567000056700000000000012540643114021345 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/emc/emc_smis_iscsi.py0000664000567000056700000002376012540642606024725 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 - 2014 EMC Corporation. # All Rights Reserved. # # 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. """ ISCSI Drivers for EMC VNX and VMAX arrays based on SMI-S. """ from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers.emc import emc_smis_common LOG = logging.getLogger(__name__) class EMCSMISISCSIDriver(driver.ISCSIDriver): """EMC ISCSI Drivers for VMAX and VNX using SMI-S. Version history: 1.0.0 - Initial driver 1.1.0 - Multiple pools and thick/thin provisioning, performance enhancement. """ VERSION = "1.1.0" def __init__(self, *args, **kwargs): super(EMCSMISISCSIDriver, self).__init__(*args, **kwargs) self.common =\ emc_smis_common.EMCSMISCommon('iSCSI', configuration=self.configuration) def check_for_setup_error(self): pass def create_volume(self, volume): """Creates a EMC(VMAX/VNX) volume.""" volpath = self.common.create_volume(volume) ctxt = context.get_admin_context() model_update = {} volume['provider_location'] = str(volpath) model_update['provider_location'] = volume['provider_location'] return model_update def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" volpath = self.common.create_volume_from_snapshot(volume, snapshot) ctxt = context.get_admin_context() model_update = {} volume['provider_location'] = str(volpath) model_update['provider_location'] = volume['provider_location'] return model_update def create_cloned_volume(self, volume, src_vref): """Creates a cloned volume.""" volpath = self.common.create_cloned_volume(volume, src_vref) ctxt = context.get_admin_context() model_update = {} volume['provider_location'] = str(volpath) model_update['provider_location'] = volume['provider_location'] return model_update def delete_volume(self, volume): """Deletes an EMC volume.""" self.common.delete_volume(volume) def create_snapshot(self, snapshot): """Creates a snapshot.""" ctxt = context.get_admin_context() volumename = snapshot['volume_name'] index = volumename.index('-') volumeid = volumename[index + 1:] volume = self.db.volume_get(ctxt, volumeid) volpath = self.common.create_snapshot(snapshot, volume) model_update = {} snapshot['provider_location'] = str(volpath) model_update['provider_location'] = snapshot['provider_location'] return model_update def delete_snapshot(self, snapshot): """Deletes a snapshot.""" ctxt = context.get_admin_context() volumename = snapshot['volume_name'] index = volumename.index('-') volumeid = volumename[index + 1:] volume = self.db.volume_get(ctxt, volumeid) self.common.delete_snapshot(snapshot, volume) def ensure_export(self, context, volume): """Driver entry point to get the export info for an existing volume.""" pass def create_export(self, context, volume): """Driver entry point to get the export info for a new volume.""" pass def remove_export(self, context, volume): """Driver entry point to remove an export for a volume.""" pass def check_for_export(self, context, volume_id): """Make sure volume is exported.""" pass def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info. The iscsi driver returns a driver_volume_type of 'iscsi'. the format of the driver data is defined in smis_get_iscsi_properties. Example return value:: { 'driver_volume_type': 'iscsi' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:volume-00000001', 'target_portal': '127.0.0.0.1:3260', 'volume_id': '12345678-1234-4321-1234-123456789012', } } """ self.common.initialize_connection(volume, connector) iscsi_properties = self.smis_get_iscsi_properties(volume, connector) return { 'driver_volume_type': 'iscsi', 'data': iscsi_properties } def _do_iscsi_discovery(self, volume): LOG.warn(_("ISCSI provider_location not stored, using discovery")) (out, _err) = self._execute('iscsiadm', '-m', 'discovery', '-t', 'sendtargets', '-p', self.configuration.iscsi_ip_address, run_as_root=True) targets = [] for target in out.splitlines(): targets.append(target) return targets def smis_get_iscsi_properties(self, volume, connector): """Gets iscsi configuration. We ideally get saved information in the volume entity, but fall back to discovery if need be. Discovery may be completely removed in future The properties are: :target_discovered: boolean indicating whether discovery was used :target_iqn: the IQN of the iSCSI target :target_portal: the portal of the iSCSI target :target_lun: the lun of the iSCSI target :volume_id: the UUID of the volume :auth_method:, :auth_username:, :auth_password: the authentication details. Right now, either auth_method is not present meaning no authentication, or auth_method == `CHAP` meaning use CHAP with the specified credentials. """ properties = {} location = self._do_iscsi_discovery(volume) if not location: raise exception.InvalidVolume(_("Could not find iSCSI export " " for volume %s") % (volume['name'])) LOG.debug(_("ISCSI Discovery: Found %s") % (location)) properties['target_discovered'] = True device_info = self.common.find_device_number(volume, connector) if device_info is None or device_info['hostlunid'] is None: exception_message = (_("Cannot find device number for volume %s") % volume['name']) raise exception.VolumeBackendAPIException(data=exception_message) device_number = device_info['hostlunid'] storage_system = device_info['storagesystem'] # sp is "SP_A" or "SP_B" sp = device_info['owningsp'] endpoints = [] if sp: # endpoints example: # [iqn.1992-04.com.emc:cx.apm00123907237.a8, # iqn.1992-04.com.emc:cx.apm00123907237.a9] endpoints = self.common._find_iscsi_protocol_endpoints( sp, storage_system) foundEndpoint = False for loc in location: results = loc.split(" ") properties['target_portal'] = results[0].split(",")[0] properties['target_iqn'] = results[1] # owning sp is None for VMAX # for VNX, find the target_iqn that matches the endpoint # target_iqn example: iqn.1992-04.com.emc:cx.apm00123907237.a8 # or iqn.1992-04.com.emc:cx.apm00123907237.b8 if not sp: break for endpoint in endpoints: if properties['target_iqn'] == endpoint: LOG.debug(_("Found iSCSI endpoint: %s") % endpoint) foundEndpoint = True break if foundEndpoint: break if sp and not foundEndpoint: LOG.warn(_("ISCSI endpoint not found for SP %(sp)s on " "storage system %(storage)s.") % {'sp': sp, 'storage': storage_system}) properties['target_lun'] = device_number properties['volume_id'] = volume['id'] LOG.debug(_("ISCSI properties: %s") % (properties)) auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret return properties def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" self.common.terminate_connection(volume, connector) def extend_volume(self, volume, new_size): """Extend an existing volume.""" self.common.extend_volume(volume, new_size) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self.update_volume_stats() return self._stats def update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = self.common.update_volume_stats() backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or 'EMCSMISISCSIDriver' data['storage_protocol'] = 'iSCSI' data['driver_version'] = self.VERSION self._stats = data cinder-2014.1.5/cinder/volume/drivers/emc/emc_smis_fc.py0000664000567000056700000001724512540642606024204 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 EMC Corporation. # All Rights Reserved. # # 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. """ FC Drivers for EMC VNX and VMAX arrays based on SMI-S. """ from cinder import context from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume.drivers.emc import emc_smis_common LOG = logging.getLogger(__name__) class EMCSMISFCDriver(driver.FibreChannelDriver): """EMC FC Drivers for VMAX and VNX using SMI-S. Version history: 1.0.0 - Initial driver 1.1.0 - Multiple pools and thick/thin provisioning, performance enhancement. """ VERSION = "1.1.0" def __init__(self, *args, **kwargs): super(EMCSMISFCDriver, self).__init__(*args, **kwargs) self.common = emc_smis_common.EMCSMISCommon( 'FC', configuration=self.configuration) def check_for_setup_error(self): pass def create_volume(self, volume): """Creates a EMC(VMAX/VNX) volume.""" volpath = self.common.create_volume(volume) ctxt = context.get_admin_context() model_update = {} volume['provider_location'] = str(volpath) model_update['provider_location'] = volume['provider_location'] return model_update def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" volpath = self.common.create_volume_from_snapshot(volume, snapshot) ctxt = context.get_admin_context() model_update = {} volume['provider_location'] = str(volpath) model_update['provider_location'] = volume['provider_location'] return model_update def create_cloned_volume(self, volume, src_vref): """Creates a cloned volume.""" volpath = self.common.create_cloned_volume(volume, src_vref) ctxt = context.get_admin_context() model_update = {} volume['provider_location'] = str(volpath) model_update['provider_location'] = volume['provider_location'] return model_update def delete_volume(self, volume): """Deletes an EMC volume.""" self.common.delete_volume(volume) def create_snapshot(self, snapshot): """Creates a snapshot.""" ctxt = context.get_admin_context() volumename = snapshot['volume_name'] index = volumename.index('-') volumeid = volumename[index + 1:] volume = self.db.volume_get(ctxt, volumeid) volpath = self.common.create_snapshot(snapshot, volume) model_update = {} snapshot['provider_location'] = str(volpath) model_update['provider_location'] = snapshot['provider_location'] return model_update def delete_snapshot(self, snapshot): """Deletes a snapshot.""" ctxt = context.get_admin_context() volumename = snapshot['volume_name'] index = volumename.index('-') volumeid = volumename[index + 1:] volume = self.db.volume_get(ctxt, volumeid) self.common.delete_snapshot(snapshot, volume) def ensure_export(self, context, volume): """Driver entry point to get the export info for an existing volume.""" pass def create_export(self, context, volume): """Driver entry point to get the export info for a new volume.""" pass def remove_export(self, context, volume): """Driver entry point to remove an export for a volume.""" pass def check_for_export(self, context, volume_id): """Make sure volume is exported.""" pass def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info. Assign any created volume to a compute node/host so that it can be used from that host. The driver returns a driver_volume_type of 'fibre_channel'. The target_wwn can be a single entry or a list of wwns that correspond to the list of remote wwn(s) that will export the volume. Example return values: { 'driver_volume_type': 'fibre_channel' 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': '1234567890123', } } or { 'driver_volume_type': 'fibre_channel' 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': ['1234567890123', '0987654321321'], } } """ device_info = self.common.initialize_connection(volume, connector) device_number = device_info['hostlunid'] storage_system = device_info['storagesystem'] target_wwns, init_targ_map = self._build_initiator_target_map( storage_system, connector) data = {'driver_volume_type': 'fibre_channel', 'data': {'target_lun': device_number, 'target_discovered': True, 'target_wwn': target_wwns, 'initiator_target_map': init_targ_map}} LOG.debug(_('Return FC data: %(data)s.') % {'data': data}) return data def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" self.common.terminate_connection(volume, connector) loc = volume['provider_location'] name = eval(loc) storage_system = name['keybindings']['SystemName'] target_wwns, init_targ_map = self._build_initiator_target_map( storage_system, connector) data = {'driver_volume_type': 'fibre_channel', 'data': {'target_wwn': target_wwns, 'initiator_target_map': init_targ_map}} LOG.debug(_('Return FC data: %(data)s.') % {'data': data}) return data def _build_initiator_target_map(self, storage_system, connector): """Build the target_wwns and the initiator target map.""" target_wwns = self.common.get_target_wwns(storage_system, connector) initiator_wwns = connector['wwpns'] init_targ_map = {} for initiator in initiator_wwns: init_targ_map[initiator] = target_wwns return target_wwns, init_targ_map def extend_volume(self, volume, new_size): """Extend an existing volume.""" self.common.extend_volume(volume, new_size) def get_volume_stats(self, refresh=False): """Get volume stats. If 'refresh' is True, run update the stats first. """ if refresh: self.update_volume_stats() return self._stats def update_volume_stats(self): """Retrieve stats info from volume group.""" LOG.debug(_("Updating volume stats")) data = self.common.update_volume_stats() backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or 'EMCSMISFCDriver' data['storage_protocol'] = 'FC' data['driver_version'] = self.VERSION self._stats = data cinder-2014.1.5/cinder/volume/drivers/emc/emc_cli_iscsi.py0000664000567000056700000002215212540642606024513 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 - 2014 EMC Corporation, Inc. # All Rights Reserved. # # 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. """ iSCSI Drivers for EMC VNX array based on CLI. """ from cinder import exception from cinder.openstack.common import log as logging from cinder import utils from cinder.volume import driver from cinder.volume.drivers.emc import emc_vnx_cli LOG = logging.getLogger(__name__) class EMCCLIISCSIDriver(driver.ISCSIDriver): """EMC ISCSI Drivers for VNX using CLI.""" def __init__(self, *args, **kwargs): super(EMCCLIISCSIDriver, self).__init__(*args, **kwargs) self.cli = emc_vnx_cli.EMCVnxCli( 'iSCSI', configuration=self.configuration) def check_for_setup_error(self): pass def create_volume(self, volume): """Creates a EMC(VMAX/VNX) volume.""" self.cli.create_volume(volume) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" self.cli.create_volume_from_snapshot(volume, snapshot) def create_cloned_volume(self, volume, src_vref): """Creates a cloned volume.""" self.cli.create_cloned_volume(volume, src_vref) def delete_volume(self, volume): """Deletes an EMC volume.""" self.cli.delete_volume(volume) def create_snapshot(self, snapshot): """Creates a snapshot.""" self.cli.create_snapshot(snapshot) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" self.cli.delete_snapshot(snapshot) def ensure_export(self, context, volume): """Driver entry point to get the export info for an existing volume.""" pass def create_export(self, context, volume): """Driver entry point to get the export info for a new volume.""" self.cli.create_export(context, volume) def remove_export(self, context, volume): """Driver entry point to remove an export for a volume.""" pass def check_for_export(self, context, volume_id): """Make sure volume is exported.""" pass def extend_volume(self, volume, new_size): self.cli.extend_volume(volume, new_size) def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info. The iscsi driver returns a driver_volume_type of 'iscsi'. the format of the driver data is defined in vnx_get_iscsi_properties. :param volume: volume to be attached. :param connector: connector information. :returns: dictionary containing iscsi_properties. Example return value: { 'driver_volume_type': 'iscsi' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:volume-00000001', 'target_portal': '127.0.0.0.1:3260', 'volume_id': '12345678-1234-4321-1234-123456789012', } } """ @utils.synchronized('emc-connection-' + connector['host'], external=True) def do_initialize_connection(): self.cli.initialize_connection(volume, connector) do_initialize_connection() iscsi_properties = self.vnx_get_iscsi_properties(volume, connector) return { 'driver_volume_type': 'iscsi', 'data': { 'target_discovered': True, 'target_iqn': iscsi_properties['target_iqn'], 'target_lun': iscsi_properties['target_lun'], 'target_portal': iscsi_properties['target_portal'], 'volume_id': iscsi_properties['volume_id'] } } def _do_iscsi_discovery(self, volume): LOG.warn(_("iSCSI provider_location not stored for volume %s, " "using discovery.") % (volume['name'])) (out, _err) = self._execute('iscsiadm', '-m', 'discovery', '-t', 'sendtargets', '-p', self.configuration.iscsi_ip_address, run_as_root=True) targets = [] for target in out.splitlines(): targets.append(target) return targets def vnx_get_iscsi_properties(self, volume, connector): """Gets iscsi configuration. We ideally get saved information in the volume entity, but fall back to discovery if need be. Discovery may be completely removed in future The properties are: :target_discovered: boolean indicating whether discovery was used :target_iqn: the IQN of the iSCSI target :target_portal: the portal of the iSCSI target :target_lun: the lun of the iSCSI target :volume_id: the UUID of the volume :auth_method:, :auth_username:, :auth_password: the authentication details. Right now, either auth_method is not present meaning no authentication, or auth_method == `CHAP` meaning use CHAP with the specified credentials. """ properties = {} location = self._do_iscsi_discovery(volume) if not location: raise exception.InvalidVolume(_("Could not find iSCSI export " " for volume %s") % (volume['name'])) LOG.debug(_("ISCSI Discovery: Found %s") % (location)) properties['target_discovered'] = True hostname = connector['host'] storage_group = hostname device_info = self.cli.find_device_details(volume, storage_group) if device_info is None or device_info['hostlunid'] is None: exception_message = (_("Cannot find device number for volume %s") % volume['name']) raise exception.VolumeBackendAPIException(data=exception_message) device_number = device_info['hostlunid'] device_sp = device_info['ownersp'] endpoints = [] if device_sp: # endpoints example: # [iqn.1992-04.com.emc:cx.apm00123907237.a8, # iqn.1992-04.com.emc:cx.apm00123907237.a9] endpoints = self.cli._find_iscsi_protocol_endpoints(device_sp) foundEndpoint = False for loc in location: results = loc.split(" ") properties['target_portal'] = results[0].split(",")[0] properties['target_iqn'] = results[1] # for VNX, find the target_iqn that matches the endpoint # target_iqn example: iqn.1992-04.com.emc:cx.apm00123907237.a8 # or iqn.1992-04.com.emc:cx.apm00123907237.b8 if not device_sp: break for endpoint in endpoints: if properties['target_iqn'] == endpoint: LOG.debug(_("Found iSCSI endpoint: %s") % endpoint) foundEndpoint = True break if foundEndpoint: break if device_sp and not foundEndpoint: LOG.warn(_("ISCSI endpoint not found for SP %(sp)s ") % {'sp': device_sp}) properties['target_lun'] = device_number properties['volume_id'] = volume['id'] auth = volume['provider_auth'] if auth: (auth_method, auth_username, auth_secret) = auth.split() properties['auth_method'] = auth_method properties['auth_username'] = auth_username properties['auth_password'] = auth_secret return properties def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" @utils.synchronized('emc-connection-' + connector['host'], external=True) def do_terminate_connection(): self.cli.terminate_connection(volume, connector) do_terminate_connection() def get_volume_stats(self, refresh=False): """Get volume status. If 'refresh' is True, run update the stats first. """ if refresh: self.update_volume_stats() LOG.info(_("update_volume_status:%s"), self._stats) return self._stats def update_volume_stats(self): """Retrieve status info from volume group.""" LOG.debug(_("Updating volume status")) # retrieving the volume update from the VNX data = self.cli.update_volume_status() backend_name = self.configuration.safe_get('volume_backend_name') data['volume_backend_name'] = backend_name or 'EMCCLIISCSIDriver' data['storage_protocol'] = 'iSCSI' self._stats = data cinder-2014.1.5/cinder/volume/drivers/emc/__init__.py0000664000567000056700000000000012540642603023446 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/volume/drivers/emc/emc_vnx_cli.py0000664000567000056700000007013712540642606024222 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 - 2014 EMC Corporation, Inc. # All Rights Reserved. # # 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. """ VNX CLI on iSCSI. """ import os import time from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder.openstack.common import processutils from cinder import utils from cinder.volume.drivers.san import san from cinder.volume import volume_types LOG = logging.getLogger(__name__) CONF = cfg.CONF VERSION = '02.00.00' loc_opts = [ cfg.StrOpt('naviseccli_path', default='', help='Naviseccli Path'), cfg.StrOpt('storage_vnx_pool_name', default=None, help='ISCSI pool name'), cfg.IntOpt('default_timeout', default=20, help='Default Time Out For CLI operations in minutes'), cfg.IntOpt('max_luns_per_storage_group', default=256, help='Default max number of LUNs in a storage group'), ] CONF.register_opts(loc_opts) class EMCVnxCli(object): """This class defines the functions to use the native CLI functionality.""" stats = {'driver_version': VERSION, 'free_capacity_gb': 'unknown', 'reserved_percentage': 0, 'storage_protocol': None, 'total_capacity_gb': 'unknown', 'vendor_name': 'EMC', 'volume_backend_name': None} def __init__(self, prtcl, configuration=None): self.protocol = prtcl self.configuration = configuration self.configuration.append_config_values(loc_opts) self.configuration.append_config_values(san.san_opts) self.storage_ip = self.configuration.san_ip self.storage_username = self.configuration.san_login self.storage_password = self.configuration.san_password self.pool_name = self.configuration.storage_vnx_pool_name if not self.pool_name: msg = (_('Pool name is not specified.')) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) self.timeout = self.configuration.default_timeout self.max_luns = self.configuration.max_luns_per_storage_group self.hlu_set = set(xrange(1, self.max_luns + 1)) self.navisecclipath = self.configuration.naviseccli_path self.cli_prefix = (self.navisecclipath, '-address', self.storage_ip) self.cli_credentials = () self.wait_interval = 3 # if there is a username/password provided, use those in the cmd line if self.storage_username is not None and \ self.storage_password is not None: self.cli_credentials += ('-user', self.storage_username, '-password', self.storage_password, '-scope', '0') # Checking for existence of naviseccli tool if not os.path.exists(self.navisecclipath): msg = (_('Could not find NAVISECCLI tool.')) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) # Testing the naviseccli setup query_list = ("storagepool", "-list", "-name", self.pool_name, "-state") out, rc = self._cli_execute(*query_list) if rc != 0: LOG.error(_("Failed to find pool %s"), self.pool_name) raise exception.VolumeBackendAPIException(data=out) def _cli_execute(self, *cmd, **kwargv): if "check_exit_code" not in kwargv: kwargv["check_exit_code"] = True rc = 0 try: out, _err = utils.execute(*(self.cli_prefix + self.cli_credentials + cmd), **kwargv) except processutils.ProcessExecutionError as pe: rc = pe.exit_code out = pe.stdout + pe.stderr return out, rc def create_volume(self, volume): """Creates a EMC volume.""" LOG.debug(_('Entering create_volume.')) volumesize = volume['size'] volumename = volume['name'] LOG.info(_('Create Volume: %(volume)s Size: %(size)s') % {'volume': volumename, 'size': volumesize}) # defining CLI command thinness = self._get_provisioning_by_volume(volume) # executing CLI command to create volume LOG.debug(_('Create Volume: %(volumename)s') % {'volumename': volumename}) lun_create = ('lun', '-create', '-type', thinness, '-capacity', volumesize, '-sq', 'gb', '-poolName', self.pool_name, '-name', volumename) out, rc = self._cli_execute(*lun_create) LOG.debug(_('Create Volume: %(volumename)s Return code: %(rc)s') % {'volumename': volumename, 'rc': rc}) if rc == 4: LOG.warn(_('Volume %s already exists'), volumename) elif rc != 0: msg = (_('Failed to create %(volumename)s: %(out)s') % {'volumename': volumename, 'out': out}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) # wait for up to a minute to verify that the LUN has progressed # to Ready state def _wait_for_lun_ready(volumename, start_time): # executing cli command to check volume command_to_verify = ('lun', '-list', '-name', volumename) out, rc = self._cli_execute(*command_to_verify) if rc == 0 and out.find("Ready") > -1: raise loopingcall.LoopingCallDone() if int(time.time()) - start_time > self.timeout * 60: msg = (_('LUN %s failed to become Ready'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) timer = loopingcall.FixedIntervalLoopingCall( _wait_for_lun_ready, volumename, int(time.time())) timer.start(interval=self.wait_interval).wait() def delete_volume(self, volume): """Deletes an EMC volume.""" LOG.debug(_('Entering delete_volume.')) volumename = volume['name'] # defining CLI command lun_destroy = ('lun', '-destroy', '-name', volumename, '-forceDetach', '-o') # executing CLI command to delete volume out, rc = self._cli_execute(*lun_destroy) LOG.debug(_('Delete Volume: %(volumename)s Output: %(out)s') % {'volumename': volumename, 'out': out}) if rc not in (0, 9): msg = (_('Failed to destroy %s'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def extend_volume(self, volume, new_size): """Extends an EMC volume.""" LOG.debug(_('Entering extend_volume.')) volumename = volume['name'] # defining CLI command lun_expand = ('lun', '-expand', '-name', volumename, '-capacity', new_size, '-sq', 'gb', '-o', '-ignoreThresholds') # executing CLI command to extend volume out, rc = self._cli_execute(*lun_expand) LOG.debug(_('Extend Volume: %(volumename)s Output: %(out)s') % {'volumename': volumename, 'out': out}) if rc == 97: msg = (_('The LUN cannot be expanded or shrunk because ' 'it has snapshots. Command to extend the specified ' 'volume failed.')) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) if rc != 0: msg = (_('Failed to expand %s'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def update_volume_status(self): """Retrieve status info.""" LOG.debug(_("Updating volume status")) poolname = self.pool_name pool_list = ('storagepool', '-list', '-name', poolname, '-userCap', '-availableCap') out, rc = self._cli_execute(*pool_list) if rc == 0: pool_details = out.split('\n') self.stats['total_capacity_gb'] = float( pool_details[3].split(':')[1].strip()) self.stats['free_capacity_gb'] = float( pool_details[5].split(':')[1].strip()) else: msg = (_('Failed to list %s'), poolname) LOG.error(msg) return self.stats def create_export(self, context, volume): """Driver entry point to get the export info for a new volume.""" volumename = volume['name'] device_id = self._find_lun_id(volumename) LOG.debug(_('create_export: Volume: %(volume)s Device ID: ' '%(device_id)s') % {'volume': volumename, 'device_id': device_id}) return {'provider_location': device_id} def _find_lun_id(self, volumename): """Returns the LUN of a volume.""" lun_list = ('lun', '-list', '-name', volumename) out, rc = self._cli_execute(*lun_list) if rc == 0: vol_details = out.split('\n') lun = vol_details[0].split(' ')[3] else: msg = (_('Failed to list %s'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) return lun def create_snapshot(self, snapshot): """Creates a snapshot.""" LOG.debug(_('Entering create_snapshot.')) snapshotname = snapshot['name'] volumename = snapshot['volume_name'] LOG.info(_('Create snapshot: %(snapshot)s: volume: %(volume)s') % {'snapshot': snapshotname, 'volume': volumename}) volume_lun = self._find_lun_id(volumename) # defining CLI command snap_create = ('snap', '-create', '-res', volume_lun, '-name', snapshotname, '-allowReadWrite', 'yes') # executing CLI command to create snapshot out, rc = self._cli_execute(*snap_create) LOG.debug(_('Create Snapshot: %(snapshotname)s Unity: %(out)s') % {'snapshotname': snapshotname, 'out': out}) if rc != 0: msg = (_('Failed to create snap %s'), snapshotname) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def delete_snapshot(self, snapshot): """Deletes a snapshot.""" LOG.debug(_('Entering delete_snapshot.')) snapshotname = snapshot['name'] volumename = snapshot['volume_name'] LOG.info(_('Delete Snapshot: %(snapshot)s: volume: %(volume)s') % {'snapshot': snapshotname, 'volume': volumename}) def _wait_for_snap_delete(snapshot, start_time): # defining CLI command snapshotname = snapshot['name'] volumename = snapshot['volume_name'] snap_destroy = ('snap', '-destroy', '-id', snapshotname, '-o') # executing CLI command out, rc = self._cli_execute(*snap_destroy) LOG.debug(_('Delete Snapshot: Volume: %(volumename)s Snapshot: ' '%(snapshotname)s Output: %(out)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'out': out}) if rc not in [0, 9, 5]: if rc == 13: if int(time.time()) - start_time < \ self.timeout * 60: LOG.info(_('Snapshot %s is in use'), snapshotname) else: msg = (_('Failed to destroy %s ' ' because snapshot is in use.'), snapshotname) LOG.error(msg) raise exception.SnapshotIsBusy(data=msg) else: msg = (_('Failed to destroy %s'), snapshotname) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) else: raise loopingcall.LoopingCallDone() timer = loopingcall.FixedIntervalLoopingCall( _wait_for_snap_delete, snapshot, int(time.time())) timer.start(interval=self.wait_interval).wait() def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" LOG.debug(_('Entering create_volume_from_snapshot.')) snapshotname = snapshot['name'] source_volume_name = snapshot['volume_name'] volumename = volume['name'] volumesize = snapshot['volume_size'] destvolumename = volumename + 'dest' # Create a mount point, migrate data from source (snapshot) to # destination volume. The destination volume is the only new volume # to be created here. LOG.info(_('Creating Destination Volume : %s ') % (destvolumename)) poolname = self.pool_name thinness = self._get_provisioning_by_volume(volume) # defining CLI command lun_create = ('lun', '-create', '-type', thinness, '-capacity', volumesize, '-sq', 'gb', '-poolName', poolname, '-name', destvolumename) # executing CLI command out, rc = self._cli_execute(*lun_create) LOG.debug(_('Create temporary Volume: %(volumename)s ' 'Output : %(out)s') % {'volumename': destvolumename, 'out': out}) if rc != 0: msg = (_('Command to create the destination volume failed')) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) # defining CLI command smp_create = ('lun', '-create', '-type', 'Snap', '-primaryLunName', source_volume_name, '-name', volumename) # executing CLI command out, rc = self._cli_execute(*smp_create) LOG.debug(_('Create mount point : Volume: %(volumename)s ' 'Source Volume: %(sourcevolumename)s Output: %(out)s') % {'volumename': volumename, 'sourcevolumename': source_volume_name, 'out': out}) if rc != 0: msg = (_('Failed to create SMP %s'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) # defining CLI command lun_attach = ('lun', '-attach', '-name', volumename, '-snapName', snapshotname) # executing CLI command out, rc = self._cli_execute(*lun_attach) LOG.debug(_('Attaching mount point Volume: %(volumename)s ' 'with Snapshot: %(snapshotname)s Output: %(out)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'out': out}) if rc != 0: msg = (_('Failed to attach snapshotname %s'), snapshotname) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) source_vol_lun = self._find_lun_id(volumename) dest_vol_lun = self._find_lun_id(destvolumename) LOG.info(_('Migrating Mount Point Volume: %s ') % (volumename)) # defining CLI command migrate_start = ('migrate', '-start', '-source', source_vol_lun, '-dest', dest_vol_lun, '-rate', 'ASAP', '-o') # executing CLI command out, rc = self._cli_execute(*migrate_start) LOG.debug(_('Migrate Mount Point Volume: %(volumename)s ' 'Output : %(out)s') % {'volumename': volumename, 'out': out}) if rc != 0: msg = (_('Failed to start migrating SMP %s'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def _wait_for_sync_status(volumename, start_time): lun_list = ('lun', '-list', '-name', volumename, '-attachedSnapshot') out, rc = self._cli_execute(*lun_list) if rc == 0: vol_details = out.split('\n') snapshotname = vol_details[2].split(':')[1].strip() if (snapshotname == 'N/A'): raise loopingcall.LoopingCallDone() else: LOG.info(_('Waiting for the update on Sync status of %s'), volumename) if int(time.time()) - start_time >= self.timeout * 60: msg = (_('Failed to really migrate %s'), volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) timer = loopingcall.FixedIntervalLoopingCall( _wait_for_sync_status, volumename, int(time.time())) timer.start(interval=self.wait_interval).wait() def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" source_volume_name = src_vref['name'] volumesize = src_vref['size'] snapshotname = source_volume_name + '-temp-snapshot' snapshot = { 'name': snapshotname, 'volume_name': source_volume_name, 'volume_size': volumesize, } # Create temp Snapshot self.create_snapshot(snapshot) try: # Create volume self.create_volume_from_snapshot(volume, snapshot) except Exception: msg = (_('Failed to create cloned volume %s'), volume['name']) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) finally: # Delete temp Snapshot self.delete_snapshot(snapshot) def get_storage_group(self, hostname): """Returns the storage group for the host node.""" storage_groupname = hostname sg_list = ('storagegroup', '-list', '-gname', storage_groupname) out, rc = self._cli_execute(*sg_list) if rc != 0: LOG.debug(_('creating new storage group %s'), storage_groupname) sg_create = ('storagegroup', '-create', '-gname', storage_groupname) out, rc = self._cli_execute(*sg_create) LOG.debug(_('Create new storage group : %(storage_groupname)s, ' 'Output: %(out)s') % {'storage_groupname': storage_groupname, 'out': out}) if rc != 0: msg = (_('Failed to create SG %s'), storage_groupname) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) # connecting the new storagegroup to the host connect_host = ('storagegroup', '-connecthost', '-host', hostname, '-gname', storage_groupname, '-o') out, rc = self._cli_execute(*connect_host) LOG.debug(_('Connect storage group : %(storage_groupname)s ,' 'To Host : %(hostname)s, Output : %(out)s') % {'storage_groupname': storage_groupname, 'hostname': hostname, 'out': out}) if rc != 0: msg = (_('Failed to connect %s'), hostname) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) return hostname def find_device_details(self, volume, storage_group): """Returns the Host Device number for the volume.""" allocated_lun_id = self._find_lun_id(volume["name"]) host_lun_id = -1 owner_sp = "" lun_map = {} sg_list = ('storagegroup', '-list', '-gname', storage_group) out, rc = self._cli_execute(*sg_list) if out.find('HLU/ALU Pairs') == -1: LOG.info(_('NO LUNs in the storagegroup : %s ') % (storage_group)) else: sg_details = out.split('HLU/ALU Pairs:')[1] sg_lun_details = sg_details.split('Shareable')[0] lun_details = sg_lun_details.split('\n') for data in lun_details: if data not in ['', ' HLU Number ALU Number', ' ---------- ----------']: data = data.strip() items = data.split(' ') lun_map[int(items[len(items) - 1])] = int(items[0]) for lun in lun_map.iterkeys(): if lun == int(allocated_lun_id): host_lun_id = lun_map[lun] LOG.debug(_('Host Lun Id : %s') % (host_lun_id)) break # finding the owner SP for the LUN lun_list = ('lun', '-list', '-l', allocated_lun_id, '-owner') out, rc = self._cli_execute(*lun_list) if rc == 0: output = out.split('\n') owner_sp = output[2].split('Current Owner: SP ')[1] LOG.debug(_('Owner SP : %s') % (owner_sp)) device = { 'hostlunid': host_lun_id, 'ownersp': owner_sp, 'lunmap': lun_map, } return device def _get_host_lun_id(self, host_lun_id_list): # Returns the host lun id for the LUN to be added # in the storage group. used_hlu_set = set(host_lun_id_list) for hlu in self.hlu_set - used_hlu_set: return hlu return None def _add_lun_to_storagegroup(self, volume, storage_group): storage_groupname = storage_group volumename = volume['name'] allocated_lun_id = self._find_lun_id(volumename) count = 0 while(count < 5): device_info = self.find_device_details(volume, storage_group) device_number = device_info['hostlunid'] if device_number < 0: lun_map = device_info['lunmap'] if lun_map: host_lun_id_list = lun_map.values() if len(host_lun_id_list) >= self.max_luns: msg = (_('The storage group has reached the ' 'maximum capacity of LUNs. ' 'Command to add LUN for volume - %s ' 'in storagegroup failed') % (volumename)) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) host_lun_id = self._get_host_lun_id(host_lun_id_list) if host_lun_id is None: msg = (_('Unable to get new host lun id. Please ' 'check if the storage group can accommodate ' 'new LUN. ' 'Command to add LUN for volume - %s ' 'in storagegroup failed') % (volumename)) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) else: host_lun_id = 1 addhlu = ('storagegroup', '-addhlu', '-o', '-gname', storage_groupname, '-hlu', host_lun_id, '-alu', allocated_lun_id) out, rc = self._cli_execute(*addhlu) LOG.debug(_('Add ALU %(alu)s to SG %(sg)s as %(hlu)s. ' 'Output: %(out)s') % {'alu': allocated_lun_id, 'sg': storage_groupname, 'hlu': host_lun_id, 'out': out}) if rc == 0: return host_lun_id if rc == 66: LOG.warn(_('Requested Host LUN Number already in use')) count += 1 else: LOG.warn(_('LUN was already added in the storage group')) return device_number if count == 5: msg = (_('Failed to add %s into SG') % (volumename)) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def _remove_lun_from_storagegroup(self, device_number, storage_group): storage_groupname = storage_group removehlu = ('storagegroup', '-removehlu', '-gname', storage_groupname, '-hlu', device_number, '-o') out, rc = self._cli_execute(*removehlu) LOG.debug(_('Remove %(hlu)s from SG %(sg)s. Output: %(out)s') % {'hlu': device_number, 'sg': storage_groupname, 'out': out}) if rc != 0: msg = (_('Failed to remove %(hlu)s from %(sg)s') % {'hlu': device_number, 'sg': storage_groupname}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info.""" hostname = connector['host'] storage_group = self.get_storage_group(hostname) device_number = self._add_lun_to_storagegroup(volume, storage_group) return device_number def terminate_connection(self, volume, connector): """Disallow connection from connector.""" hostname = connector['host'] storage_group = self.get_storage_group(hostname) device_info = self.find_device_details(volume, storage_group) device_number = device_info['hostlunid'] if device_number < 0: LOG.error(_('Could not locate the attached volume.')) else: self._remove_lun_from_storagegroup(device_number, storage_group) def _find_iscsi_protocol_endpoints(self, device_sp): """Returns the iSCSI initiators for a SP.""" initiator_address = [] connection_getport = ('connection', '-getport', '-sp', device_sp) out, _rc = self._cli_execute(*connection_getport) output = out.split('SP: ') for port in output: port_info = port.split('\n') if port_info[0] == device_sp: port_wwn = port_info[2].split('Port WWN:')[1].strip() initiator_address.append(port_wwn) LOG.debug(_('WWNs found for SP %(devicesp)s ' 'are: %(initiator_address)s') % {'devicesp': device_sp, 'initiator_address': initiator_address}) return initiator_address def _get_volumetype_extraspecs(self, volume): specs = {} type_id = volume['volume_type_id'] if type_id is not None: specs = volume_types.get_volume_type_extra_specs(type_id) return specs def _get_provisioning_by_volume(self, volume): # By default, the user can not create thin LUN without thin # provisioning enabler. thinness = 'NonThin' spec_id = 'storagetype:provisioning' specs = self._get_volumetype_extraspecs(volume) if specs and spec_id in specs: provisioning = specs[spec_id].lower() if 'thin' == provisioning: thinness = 'Thin' elif 'thick' != provisioning: LOG.warning(_('Invalid value of extra spec ' '\'storagetype:provisioning\': %(provisioning)s') % {'provisioning': specs[spec_id]}) else: LOG.info(_('No extra spec \'storagetype:provisioning\' exist')) return thinness cinder-2014.1.5/cinder/volume/drivers/emc/emc_smis_common.py0000664000567000056700000022236612540642606025106 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 - 2014 EMC Corporation. # All Rights Reserved. # # 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. """ Common class for SMI-S based EMC volume drivers. This common class is for EMC volume drivers based on SMI-S. It supports VNX and VMAX arrays. """ import time from oslo.config import cfg from xml.dom.minidom import parseString from cinder import exception from cinder.openstack.common import log as logging from cinder import units from cinder.volume import volume_types LOG = logging.getLogger(__name__) CONF = cfg.CONF try: import pywbem except ImportError: LOG.info(_('Module PyWBEM not installed. ' 'Install PyWBEM using the python-pywbem package.')) CINDER_EMC_CONFIG_FILE = '/etc/cinder/cinder_emc_config.xml' EMC_ROOT = 'root/emc' PROVISIONING = 'storagetype:provisioning' POOL = 'storagetype:pool' emc_opts = [ cfg.StrOpt('cinder_emc_config_file', default=CINDER_EMC_CONFIG_FILE, help='use this file for cinder emc plugin ' 'config data'), ] CONF.register_opts(emc_opts) class EMCSMISCommon(): """Common code that can be used by ISCSI and FC drivers.""" stats = {'driver_version': '1.0', 'free_capacity_gb': 0, 'reserved_percentage': 0, 'storage_protocol': None, 'total_capacity_gb': 0, 'vendor_name': 'EMC', 'volume_backend_name': None} def __init__(self, prtcl, configuration=None): self.protocol = prtcl self.configuration = configuration self.configuration.append_config_values(emc_opts) ip, port = self._get_ecom_server() self.user, self.passwd = self._get_ecom_cred() self.url = 'http://' + ip + ':' + port self.conn = self._get_ecom_connection() def create_volume(self, volume): """Creates a EMC(VMAX/VNX) volume.""" LOG.debug(_('Entering create_volume.')) volumesize = int(volume['size']) * units.GiB volumename = volume['name'] LOG.info(_('Create Volume: %(volume)s Size: %(size)lu') % {'volume': volumename, 'size': volumesize}) self.conn = self._get_ecom_connection() storage_type = self._get_storage_type(volume) LOG.debug(_('Create Volume: %(volume)s ' 'Storage type: %(storage_type)s') % {'volume': volumename, 'storage_type': storage_type}) pool, storage_system = self._find_pool(storage_type[POOL]) LOG.debug(_('Create Volume: %(volume)s Pool: %(pool)s ' 'Storage System: %(storage_system)s') % {'volume': volumename, 'pool': pool, 'storage_system': storage_system}) configservice = self._find_storage_configuration_service( storage_system) if configservice is None: exception_message = (_("Error Create Volume: %(volumename)s. " "Storage Configuration Service not found for " "pool %(storage_type)s.") % {'volumename': volumename, 'storage_type': storage_type}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) provisioning = self._get_provisioning(storage_type) LOG.debug(_('Create Volume: %(name)s Method: ' 'CreateOrModifyElementFromStoragePool ConfigServicie: ' '%(service)s ElementName: %(name)s InPool: %(pool)s ' 'ElementType: %(provisioning)s Size: %(size)lu') % {'service': configservice, 'name': volumename, 'pool': pool, 'provisioning': provisioning, 'size': volumesize}) rc, job = self.conn.InvokeMethod( 'CreateOrModifyElementFromStoragePool', configservice, ElementName=volumename, InPool=pool, ElementType=self._getnum(provisioning, '16'), Size=self._getnum(volumesize, '64')) LOG.debug(_('Create Volume: %(volumename)s Return code: %(rc)lu') % {'volumename': volumename, 'rc': rc}) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: LOG.error(_('Error Create Volume: %(volumename)s. ' 'Return code: %(rc)lu. Error: %(error)s') % {'volumename': volumename, 'rc': rc, 'error': errordesc}) raise exception.VolumeBackendAPIException(data=errordesc) # Find the newly created volume associators = self.conn.Associators( job['Job'], resultClass='EMC_StorageVolume') volpath = associators[0].path name = {} name['classname'] = volpath.classname keys = {} keys['CreationClassName'] = volpath['CreationClassName'] keys['SystemName'] = volpath['SystemName'] keys['DeviceID'] = volpath['DeviceID'] keys['SystemCreationClassName'] = volpath['SystemCreationClassName'] name['keybindings'] = keys LOG.debug(_('Leaving create_volume: %(volumename)s ' 'Return code: %(rc)lu ' 'volume instance: %(name)s') % {'volumename': volumename, 'rc': rc, 'name': name}) return name def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot.""" LOG.debug(_('Entering create_volume_from_snapshot.')) snapshotname = snapshot['name'] volumename = volume['name'] LOG.info(_('Create Volume from Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s') % {'volumename': volumename, 'snapshotname': snapshotname}) self.conn = self._get_ecom_connection() snapshot_instance = self._find_lun(snapshot) storage_system = snapshot_instance['SystemName'] LOG.debug(_('Create Volume from Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s Snapshot Instance: ' '%(snapshotinstance)s Storage System: %(storage_system)s.') % {'volumename': volumename, 'snapshotname': snapshotname, 'snapshotinstance': snapshot_instance.path, 'storage_system': storage_system}) isVMAX = storage_system.find('SYMMETRIX') if isVMAX > -1: exception_message = (_('Error Create Volume from Snapshot: ' 'Volume: %(volumename)s Snapshot: ' '%(snapshotname)s. Create Volume ' 'from Snapshot is NOT supported on VMAX.') % {'volumename': volumename, 'snapshotname': snapshotname}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) repservice = self._find_replication_service(storage_system) if repservice is None: exception_message = (_('Error Create Volume from Snapshot: ' 'Volume: %(volumename)s Snapshot: ' '%(snapshotname)s. Cannot find Replication ' 'Service to create volume from snapshot.') % {'volumename': volumename, 'snapshotname': snapshotname}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) LOG.debug(_('Create Volume from Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s Method: CreateElementReplica ' 'ReplicationService: %(service)s ElementName: ' '%(elementname)s SyncType: 8 SourceElement: ' '%(sourceelement)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'service': repservice, 'elementname': volumename, 'sourceelement': snapshot_instance.path}) # Create a Clone from snapshot rc, job = self.conn.InvokeMethod( 'CreateElementReplica', repservice, ElementName=volumename, SyncType=self._getnum(8, '16'), SourceElement=snapshot_instance.path) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Create Volume from Snapshot: ' 'Volume: %(volumename)s Snapshot:' '%(snapshotname)s. Return code: %(rc)lu.' 'Error: %(error)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc, 'error': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) # Find the newly created volume associators = self.conn.Associators( job['Job'], resultClass='EMC_StorageVolume') volpath = associators[0].path name = {} name['classname'] = volpath.classname keys = {} keys['CreationClassName'] = volpath['CreationClassName'] keys['SystemName'] = volpath['SystemName'] keys['DeviceID'] = volpath['DeviceID'] keys['SystemCreationClassName'] = volpath['SystemCreationClassName'] name['keybindings'] = keys LOG.debug(_('Create Volume from Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s. Successfully clone volume ' 'from snapshot. Finding the clone relationship.') % {'volumename': volumename, 'snapshotname': snapshotname}) volume['provider_location'] = str(name) sync_name, storage_system = self._find_storage_sync_sv_sv( volume, snapshot) # Remove the Clone relationshop so it can be used as a regular lun # 8 - Detach operation LOG.debug(_('Create Volume from Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s. Remove the clone ' 'relationship. Method: ModifyReplicaSynchronization ' 'ReplicationService: %(service)s Operation: 8 ' 'Synchronization: %(sync_name)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'service': repservice, 'sync_name': sync_name}) rc, job = self.conn.InvokeMethod( 'ModifyReplicaSynchronization', repservice, Operation=self._getnum(8, '16'), Synchronization=sync_name) LOG.debug(_('Create Volume from Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s Return code: %(rc)lu') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc}) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Create Volume from Snapshot: ' 'Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s. ' 'Return code: %(rc)lu. Error: %(error)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc, 'error': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) LOG.debug(_('Leaving create_volume_from_snapshot: Volume: ' '%(volumename)s Snapshot: %(snapshotname)s ' 'Return code: %(rc)lu.') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc}) return name def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" LOG.debug(_('Entering create_cloned_volume.')) srcname = src_vref['name'] volumename = volume['name'] LOG.info(_('Create a Clone from Volume: Volume: %(volumename)s ' 'Source Volume: %(srcname)s') % {'volumename': volumename, 'srcname': srcname}) self.conn = self._get_ecom_connection() src_instance = self._find_lun(src_vref) storage_system = src_instance['SystemName'] LOG.debug(_('Create Cloned Volume: Volume: %(volumename)s ' 'Source Volume: %(srcname)s Source Instance: ' '%(src_instance)s Storage System: %(storage_system)s.') % {'volumename': volumename, 'srcname': srcname, 'src_instance': src_instance.path, 'storage_system': storage_system}) repservice = self._find_replication_service(storage_system) if repservice is None: exception_message = (_('Error Create Cloned Volume: ' 'Volume: %(volumename)s Source Volume: ' '%(srcname)s. Cannot find Replication ' 'Service to create cloned volume.') % {'volumename': volumename, 'srcname': srcname}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) LOG.debug(_('Create Cloned Volume: Volume: %(volumename)s ' 'Source Volume: %(srcname)s Method: CreateElementReplica ' 'ReplicationService: %(service)s ElementName: ' '%(elementname)s SyncType: 8 SourceElement: ' '%(sourceelement)s') % {'volumename': volumename, 'srcname': srcname, 'service': repservice, 'elementname': volumename, 'sourceelement': src_instance.path}) # Create a Clone from source volume rc, job = self.conn.InvokeMethod( 'CreateElementReplica', repservice, ElementName=volumename, SyncType=self._getnum(8, '16'), SourceElement=src_instance.path) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Create Cloned Volume: ' 'Volume: %(volumename)s Source Volume:' '%(srcname)s. Return code: %(rc)lu.' 'Error: %(error)s') % {'volumename': volumename, 'srcname': srcname, 'rc': rc, 'error': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) # Find the newly created volume associators = self.conn.Associators( job['Job'], resultClass='EMC_StorageVolume') volpath = associators[0].path name = {} name['classname'] = volpath.classname keys = {} keys['CreationClassName'] = volpath['CreationClassName'] keys['SystemName'] = volpath['SystemName'] keys['DeviceID'] = volpath['DeviceID'] keys['SystemCreationClassName'] = volpath['SystemCreationClassName'] name['keybindings'] = keys LOG.debug(_('Create Cloned Volume: Volume: %(volumename)s ' 'Source Volume: %(srcname)s. Successfully cloned volume ' 'from source volume. Finding the clone relationship.') % {'volumename': volumename, 'srcname': srcname}) volume['provider_location'] = str(name) sync_name, storage_system = self._find_storage_sync_sv_sv( volume, src_vref) # Remove the Clone relationshop so it can be used as a regular lun # 8 - Detach operation LOG.debug(_('Create Cloned Volume: Volume: %(volumename)s ' 'Source Volume: %(srcname)s. Remove the clone ' 'relationship. Method: ModifyReplicaSynchronization ' 'ReplicationService: %(service)s Operation: 8 ' 'Synchronization: %(sync_name)s') % {'volumename': volumename, 'srcname': srcname, 'service': repservice, 'sync_name': sync_name}) rc, job = self.conn.InvokeMethod( 'ModifyReplicaSynchronization', repservice, Operation=self._getnum(8, '16'), Synchronization=sync_name) LOG.debug(_('Create Cloned Volume: Volume: %(volumename)s ' 'Source Volume: %(srcname)s Return code: %(rc)lu') % {'volumename': volumename, 'srcname': srcname, 'rc': rc}) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Create Cloned Volume: ' 'Volume: %(volumename)s ' 'Source Volume: %(srcname)s. ' 'Return code: %(rc)lu. Error: %(error)s') % {'volumename': volumename, 'srcname': srcname, 'rc': rc, 'error': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) LOG.debug(_('Leaving create_cloned_volume: Volume: ' '%(volumename)s Source Volume: %(srcname)s ' 'Return code: %(rc)lu.') % {'volumename': volumename, 'srcname': srcname, 'rc': rc}) return name def delete_volume(self, volume): """Deletes an EMC volume.""" LOG.debug(_('Entering delete_volume.')) volumename = volume['name'] LOG.info(_('Delete Volume: %(volume)s') % {'volume': volumename}) self.conn = self._get_ecom_connection() vol_instance = self._find_lun(volume) if vol_instance is None: LOG.error(_('Volume %(name)s not found on the array. ' 'No volume to delete.') % {'name': volumename}) return storage_system = vol_instance['SystemName'] configservice =\ self._find_storage_configuration_service(storage_system) if configservice is None: exception_message = (_("Error Delete Volume: %(volumename)s. " "Storage Configuration Service not found.") % {'volumename': volumename}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) device_id = vol_instance['DeviceID'] LOG.debug(_('Delete Volume: %(name)s DeviceID: %(deviceid)s') % {'name': volumename, 'deviceid': device_id}) LOG.debug(_('Delete Volume: %(name)s Method: EMCReturnToStoragePool ' 'ConfigServic: %(service)s TheElement: %(vol_instance)s') % {'service': configservice, 'name': volumename, 'vol_instance': vol_instance.path}) rc, job =\ self.conn.InvokeMethod('EMCReturnToStoragePool', configservice, TheElements=[vol_instance.path]) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Delete Volume: %(volumename)s. ' 'Return code: %(rc)lu. Error: %(error)s') % {'volumename': volumename, 'rc': rc, 'error': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) LOG.debug(_('Leaving delete_volume: %(volumename)s Return code: ' '%(rc)lu') % {'volumename': volumename, 'rc': rc}) def create_snapshot(self, snapshot, volume): """Creates a snapshot.""" LOG.debug(_('Entering create_snapshot.')) snapshotname = snapshot['name'] volumename = snapshot['volume_name'] LOG.info(_('Create snapshot: %(snapshot)s: volume: %(volume)s') % {'snapshot': snapshotname, 'volume': volumename}) self.conn = self._get_ecom_connection() vol_instance = self._find_lun(volume) device_id = vol_instance['DeviceID'] storage_system = vol_instance['SystemName'] LOG.debug(_('Device ID: %(deviceid)s: Storage System: ' '%(storagesystem)s') % {'deviceid': device_id, 'storagesystem': storage_system}) repservice = self._find_replication_service(storage_system) if repservice is None: LOG.error(_("Cannot find Replication Service to create snapshot " "for volume %s.") % volumename) exception_message = (_("Cannot find Replication Service to " "create snapshot for volume %s.") % volumename) raise exception.VolumeBackendAPIException(data=exception_message) LOG.debug(_("Create Snapshot: Method: CreateElementReplica: " "Target: %(snapshot)s Source: %(volume)s Replication " "Service: %(service)s ElementName: %(elementname)s Sync " "Type: 7 SourceElement: %(sourceelement)s.") % {'snapshot': snapshotname, 'volume': volumename, 'service': repservice, 'elementname': snapshotname, 'sourceelement': vol_instance.path}) rc, job =\ self.conn.InvokeMethod('CreateElementReplica', repservice, ElementName=snapshotname, SyncType=self._getnum(7, '16'), SourceElement=vol_instance.path) LOG.debug(_('Create Snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s Return code: %(rc)lu') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc}) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Create Snapshot: %(snapshot)s ' 'Volume: %(volume)s Error: %(errordesc)s') % {'snapshot': snapshotname, 'volume': volumename, 'errordesc': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) # Find the newly created volume associators = self.conn.Associators( job['Job'], resultClass='EMC_StorageVolume') volpath = associators[0].path name = {} name['classname'] = volpath.classname keys = {} keys['CreationClassName'] = volpath['CreationClassName'] keys['SystemName'] = volpath['SystemName'] keys['DeviceID'] = volpath['DeviceID'] keys['SystemCreationClassName'] = volpath['SystemCreationClassName'] name['keybindings'] = keys LOG.debug(_('Leaving create_snapshot: Snapshot: %(snapshot)s ' 'Volume: %(volume)s Return code: %(rc)lu.') % {'snapshot': snapshotname, 'volume': volumename, 'rc': rc}) return name def delete_snapshot(self, snapshot, volume): """Deletes a snapshot.""" LOG.debug(_('Entering delete_snapshot.')) snapshotname = snapshot['name'] volumename = snapshot['volume_name'] LOG.info(_('Delete Snapshot: %(snapshot)s: volume: %(volume)s') % {'snapshot': snapshotname, 'volume': volumename}) self.conn = self._get_ecom_connection() LOG.debug(_('Delete Snapshot: %(snapshot)s: volume: %(volume)s. ' 'Finding StorageSychronization_SV_SV.') % {'snapshot': snapshotname, 'volume': volumename}) sync_name, storage_system =\ self._find_storage_sync_sv_sv(snapshot, volume, False) if sync_name is None: LOG.error(_('Snapshot: %(snapshot)s: volume: %(volume)s ' 'not found on the array. No snapshot to delete.') % {'snapshot': snapshotname, 'volume': volumename}) return repservice = self._find_replication_service(storage_system) if repservice is None: exception_message = (_("Cannot find Replication Service to " "create snapshot for volume %s.") % volumename) raise exception.VolumeBackendAPIException(data=exception_message) # Delete snapshot - deletes both the target element # and the snap session LOG.debug(_("Delete Snapshot: Target: %(snapshot)s " "Source: %(volume)s. Method: " "ModifyReplicaSynchronization: " "Replication Service: %(service)s Operation: 19 " "Synchronization: %(sync_name)s.") % {'snapshot': snapshotname, 'volume': volumename, 'service': repservice, 'sync_name': sync_name}) rc, job =\ self.conn.InvokeMethod('ModifyReplicaSynchronization', repservice, Operation=self._getnum(19, '16'), Synchronization=sync_name) LOG.debug(_('Delete Snapshot: Volume: %(volumename)s Snapshot: ' '%(snapshotname)s Return code: %(rc)lu') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc}) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: exception_message = (_('Error Delete Snapshot: Volume: ' '%(volumename)s Snapshot: ' '%(snapshotname)s. Return code: %(rc)lu.' ' Error: %(error)s') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc, 'error': errordesc}) LOG.error(exception_message) raise exception.VolumeBackendAPIException( data=exception_message) # It takes a while for the relationship between the snapshot # and the source volume gets cleaned up. Needs to wait until # it is cleaned up. Otherwise, the source volume can't be # deleted immediately after the snapshot deletion because it # still has snapshot. wait_timeout = int(self._get_timeout()) wait_interval = 10 start = int(time.time()) while True: try: sync_name, storage_system =\ self._find_storage_sync_sv_sv(snapshot, volume, False) if sync_name is None: LOG.info(_('Snapshot: %(snapshot)s: volume: %(volume)s. ' 'Snapshot is deleted.') % {'snapshot': snapshotname, 'volume': volumename}) break time.sleep(wait_interval) if int(time.time()) - start >= wait_timeout: LOG.warn(_('Snapshot: %(snapshot)s: volume: %(volume)s. ' 'Snapshot deleted but cleanup timed out.') % {'snapshot': snapshotname, 'volume': volumename}) break except Exception as ex: if ex.args[0] == 6: # 6 means object not found, so snapshot is deleted cleanly LOG.info(_('Snapshot: %(snapshot)s: volume: %(volume)s. ' 'Snapshot is deleted.') % {'snapshot': snapshotname, 'volume': volumename}) else: LOG.warn(_('Snapshot: %(snapshot)s: volume: %(volume)s. ' 'Snapshot deleted but error during cleanup. ' 'Error: %(error)s') % {'snapshot': snapshotname, 'volume': volumename, 'error': str(ex.args)}) break LOG.debug(_('Leaving delete_snapshot: Volume: %(volumename)s ' 'Snapshot: %(snapshotname)s Return code: %(rc)lu.') % {'volumename': volumename, 'snapshotname': snapshotname, 'rc': rc}) # Mapping method for VNX def _expose_paths(self, configservice, vol_instance, connector): """This method maps a volume to a host. It adds a volume and initiator to a Storage Group and therefore maps the volume to the host. """ volumename = vol_instance['ElementName'] lun_name = vol_instance['DeviceID'] initiators = self._find_initiator_names(connector) storage_system = vol_instance['SystemName'] lunmask_ctrl = self._find_lunmasking_scsi_protocol_controller( storage_system, connector) LOG.debug(_('ExposePaths: %(vol)s ConfigServicie: %(service)s ' 'LUNames: %(lun_name)s InitiatorPortIDs: %(initiator)s ' 'DeviceAccesses: 2') % {'vol': vol_instance.path, 'service': configservice, 'lun_name': lun_name, 'initiator': initiators}) if lunmask_ctrl is None: rc, controller =\ self.conn.InvokeMethod('ExposePaths', configservice, LUNames=[lun_name], InitiatorPortIDs=initiators, DeviceAccesses=[self._getnum(2, '16')]) else: LOG.debug(_('ExposePaths parameter ' 'LunMaskingSCSIProtocolController: ' '%(lunmasking)s') % {'lunmasking': lunmask_ctrl}) rc, controller =\ self.conn.InvokeMethod('ExposePaths', configservice, LUNames=[lun_name], DeviceAccesses=[self._getnum(2, '16')], ProtocolControllers=[lunmask_ctrl]) if rc != 0L: msg = (_('Error mapping volume %s.') % volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_('ExposePaths for volume %s completed successfully.') % volumename) # Unmapping method for VNX def _hide_paths(self, configservice, vol_instance, connector): """This method unmaps a volume from the host. Removes a volume from the Storage Group and therefore unmaps the volume from the host. """ volumename = vol_instance['ElementName'] device_id = vol_instance['DeviceID'] lunmask_ctrl = self._find_lunmasking_scsi_protocol_controller_for_vol( vol_instance, connector) LOG.debug(_('HidePaths: %(vol)s ConfigServicie: %(service)s ' 'LUNames: %(device_id)s LunMaskingSCSIProtocolController: ' '%(lunmasking)s') % {'vol': vol_instance.path, 'service': configservice, 'device_id': device_id, 'lunmasking': lunmask_ctrl}) rc, controller = self.conn.InvokeMethod( 'HidePaths', configservice, LUNames=[device_id], ProtocolControllers=[lunmask_ctrl]) if rc != 0L: msg = (_('Error unmapping volume %s.') % volumename) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_('HidePaths for volume %s completed successfully.') % volumename) # Mapping method for VMAX def _add_members(self, configservice, vol_instance): """This method maps a volume to a host. Add volume to the Device Masking Group that belongs to a Masking View. """ volumename = vol_instance['ElementName'] masking_group = self._find_device_masking_group() LOG.debug(_('AddMembers: ConfigServicie: %(service)s MaskingGroup: ' '%(masking_group)s Members: %(vol)s') % {'service': configservice, 'masking_group': masking_group, 'vol': vol_instance.path}) rc, job =\ self.conn.InvokeMethod('AddMembers', configservice, MaskingGroup=masking_group, Members=[vol_instance.path]) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: msg = (_('Error mapping volume %(vol)s. %(error)s') % {'vol': volumename, 'error': errordesc}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_('AddMembers for volume %s completed successfully.') % volumename) # Unmapping method for VMAX def _remove_members(self, configservice, vol_instance): """This method unmaps a volume from a host. Removes volume from the Device Masking Group that belongs to a Masking View. """ volumename = vol_instance['ElementName'] masking_group = self._find_device_masking_group() LOG.debug(_('RemoveMembers: ConfigServicie: %(service)s ' 'MaskingGroup: %(masking_group)s Members: %(vol)s') % {'service': configservice, 'masking_group': masking_group, 'vol': vol_instance.path}) rc, job = self.conn.InvokeMethod('RemoveMembers', configservice, MaskingGroup=masking_group, Members=[vol_instance.path]) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: msg = (_('Error unmapping volume %(vol)s. %(error)s') % {'vol': volumename, 'error': errordesc}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_('RemoveMembers for volume %s completed successfully.') % volumename) def _map_lun(self, volume, connector): """Maps a volume to the host.""" volumename = volume['name'] LOG.info(_('Map volume: %(volume)s') % {'volume': volumename}) vol_instance = self._find_lun(volume) storage_system = vol_instance['SystemName'] configservice = self._find_controller_configuration_service( storage_system) if configservice is None: exception_message = (_("Cannot find Controller Configuration " "Service for storage system %s") % storage_system) raise exception.VolumeBackendAPIException(data=exception_message) isVMAX = storage_system.find('SYMMETRIX') if isVMAX > -1: self._add_members(configservice, vol_instance) else: self._expose_paths(configservice, vol_instance, connector) def _unmap_lun(self, volume, connector): """Unmaps a volume from the host.""" volumename = volume['name'] LOG.info(_('Unmap volume: %(volume)s') % {'volume': volumename}) device_info = self.find_device_number(volume, connector) device_number = device_info['hostlunid'] if device_number is None: LOG.info(_("Volume %s is not mapped. No volume to unmap.") % (volumename)) return vol_instance = self._find_lun(volume) storage_system = vol_instance['SystemName'] configservice = self._find_controller_configuration_service( storage_system) if configservice is None: exception_message = (_("Cannot find Controller Configuration " "Service for storage system %s") % storage_system) raise exception.VolumeBackendAPIException(data=exception_message) isVMAX = storage_system.find('SYMMETRIX') if isVMAX > -1: self._remove_members(configservice, vol_instance) else: self._hide_paths(configservice, vol_instance, connector) def initialize_connection(self, volume, connector): """Initializes the connection and returns connection info.""" volumename = volume['name'] LOG.info(_('Initialize connection: %(volume)s') % {'volume': volumename}) self.conn = self._get_ecom_connection() device_info = self.find_device_number(volume, connector) device_number = device_info['hostlunid'] if device_number is not None: LOG.info(_("Volume %s is already mapped.") % (volumename)) else: self._map_lun(volume, connector) # Find host lun id again after the volume is exported to the host device_info = self.find_device_number(volume, connector) return device_info def terminate_connection(self, volume, connector): """Disallow connection from connector.""" volumename = volume['name'] LOG.info(_('Terminate connection: %(volume)s') % {'volume': volumename}) self.conn = self._get_ecom_connection() self._unmap_lun(volume, connector) def extend_volume(self, volume, new_size): """Extends an existing volume.""" LOG.debug(_('Entering extend_volume.')) volumesize = int(new_size) * units.GiB volumename = volume['name'] LOG.info(_('Extend Volume: %(volume)s New size: %(size)lu') % {'volume': volumename, 'size': volumesize}) self.conn = self._get_ecom_connection() storage_type = self._get_storage_type(volume) vol_instance = self._find_lun(volume) device_id = vol_instance['DeviceID'] storage_system = vol_instance['SystemName'] LOG.debug(_('Device ID: %(deviceid)s: Storage System: ' '%(storagesystem)s') % {'deviceid': device_id, 'storagesystem': storage_system}) configservice = self._find_storage_configuration_service( storage_system) if configservice is None: exception_message = (_("Error Extend Volume: %(volumename)s. " "Storage Configuration Service not found.") % {'volumename': volumename}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) provisioning = self._get_provisioning(storage_type) LOG.debug(_('Extend Volume: %(name)s Method: ' 'CreateOrModifyElementFromStoragePool ConfigServicie: ' '%(service)s ElementType: %(provisioning)s Size: %(size)lu' 'Volume path: %(volumepath)s') % {'service': configservice, 'name': volumename, 'provisioning': provisioning, 'size': volumesize, 'volumepath': vol_instance.path}) rc, job = self.conn.InvokeMethod( 'CreateOrModifyElementFromStoragePool', configservice, ElementType=self._getnum(provisioning, '16'), Size=self._getnum(volumesize, '64'), TheElement=vol_instance.path) LOG.debug(_('Extend Volume: %(volumename)s Return code: %(rc)lu') % {'volumename': volumename, 'rc': rc}) if rc != 0L: rc, errordesc = self._wait_for_job_complete(job) if rc != 0L: LOG.error(_('Error Extend Volume: %(volumename)s. ' 'Return code: %(rc)lu. Error: %(error)s') % {'volumename': volumename, 'rc': rc, 'error': errordesc}) raise exception.VolumeBackendAPIException(data=errordesc) LOG.debug(_('Leaving extend_volume: %(volumename)s ' 'Return code: %(rc)lu ') % {'volumename': volumename, 'rc': rc}) def update_volume_stats(self): """Retrieve stats info.""" LOG.debug(_("Updating volume stats")) self.stats['total_capacity_gb'] = 'unknown' self.stats['free_capacity_gb'] = 'unknown' return self.stats def _get_storage_type(self, volume, filename=None): """Get storage type. Look for user input volume type first. If not available, fall back to finding it in conf file. """ specs = self._get_volumetype_extraspecs(volume) if not specs: specs = self._get_storage_type_conffile() LOG.debug(_("Storage Type: %s") % (specs)) return specs def _get_storage_type_conffile(self, filename=None): """Get the storage type from the config file.""" if filename == None: filename = self.configuration.cinder_emc_config_file file = open(filename, 'r') data = file.read() file.close() dom = parseString(data) storageTypes = dom.getElementsByTagName('StorageType') if storageTypes is not None and len(storageTypes) > 0: storageType = storageTypes[0].toxml() storageType = storageType.replace('', '') storageType = storageType.replace('', '') LOG.debug(_("Found Storage Type in config file: %s") % (storageType)) specs = {} specs[POOL] = storageType return specs else: exception_message = (_("Storage type not found.")) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) def _get_masking_view(self, filename=None): if filename is None: filename = self.configuration.cinder_emc_config_file file = open(filename, 'r') data = file.read() file.close() dom = parseString(data) views = dom.getElementsByTagName('MaskingView') if views is not None and len(views) > 0: view = views[0].toxml().replace('', '') view = view.replace('', '') LOG.debug(_("Found Masking View: %s") % (view)) return view else: LOG.debug(_("Masking View not found.")) return None def _get_timeout(self, filename=None): if filename is None: filename = self.configuration.cinder_emc_config_file file = open(filename, 'r') data = file.read() file.close() dom = parseString(data) timeouts = dom.getElementsByTagName('Timeout') if timeouts is not None and len(timeouts) > 0: timeout = timeouts[0].toxml().replace('', '') timeout = timeout.replace('', '') LOG.debug(_("Found Timeout: %s") % (timeout)) return timeout else: LOG.debug(_("Timeout not specified.")) return 10 def _get_ecom_cred(self, filename=None): if filename is None: filename = self.configuration.cinder_emc_config_file file = open(filename, 'r') data = file.read() file.close() dom = parseString(data) ecomUsers = dom.getElementsByTagName('EcomUserName') if ecomUsers is not None and len(ecomUsers) > 0: ecomUser = ecomUsers[0].toxml().replace('', '') ecomUser = ecomUser.replace('', '') ecomPasswds = dom.getElementsByTagName('EcomPassword') if ecomPasswds is not None and len(ecomPasswds) > 0: ecomPasswd = ecomPasswds[0].toxml().replace('', '') ecomPasswd = ecomPasswd.replace('', '') if ecomUser is not None and ecomPasswd is not None: return ecomUser, ecomPasswd else: LOG.debug(_("Ecom user not found.")) return None def _get_ecom_server(self, filename=None): if filename is None: filename = self.configuration.cinder_emc_config_file file = open(filename, 'r') data = file.read() file.close() dom = parseString(data) ecomIps = dom.getElementsByTagName('EcomServerIp') if ecomIps is not None and len(ecomIps) > 0: ecomIp = ecomIps[0].toxml().replace('', '') ecomIp = ecomIp.replace('', '') ecomPorts = dom.getElementsByTagName('EcomServerPort') if ecomPorts is not None and len(ecomPorts) > 0: ecomPort = ecomPorts[0].toxml().replace('', '') ecomPort = ecomPort.replace('', '') if ecomIp is not None and ecomPort is not None: LOG.debug(_("Ecom IP: %(ecomIp)s Port: %(ecomPort)s"), {'ecomIp': ecomIp, 'ecomPort': ecomPort}) return ecomIp, ecomPort else: LOG.debug(_("Ecom server not found.")) return None def _get_ecom_connection(self, filename=None): conn = pywbem.WBEMConnection(self.url, (self.user, self.passwd), default_namespace='root/emc') if conn is None: exception_message = (_("Cannot connect to ECOM server")) raise exception.VolumeBackendAPIException(data=exception_message) return conn def _find_replication_service(self, storage_system): foundRepService = None repservices = self.conn.EnumerateInstanceNames( 'EMC_ReplicationService') for repservice in repservices: if storage_system == repservice['SystemName']: foundRepService = repservice LOG.debug(_("Found Replication Service: %s") % (repservice)) break return foundRepService def _find_storage_configuration_service(self, storage_system): foundConfigService = None configservices = self.conn.EnumerateInstanceNames( 'EMC_StorageConfigurationService') for configservice in configservices: if storage_system == configservice['SystemName']: foundConfigService = configservice LOG.debug(_("Found Storage Configuration Service: %s") % (configservice)) break return foundConfigService def _find_controller_configuration_service(self, storage_system): foundConfigService = None configservices = self.conn.EnumerateInstanceNames( 'EMC_ControllerConfigurationService') for configservice in configservices: if storage_system == configservice['SystemName']: foundConfigService = configservice LOG.debug(_("Found Controller Configuration Service: %s") % (configservice)) break return foundConfigService def _find_storage_hardwareid_service(self, storage_system): foundConfigService = None configservices = self.conn.EnumerateInstanceNames( 'EMC_StorageHardwareIDManagementService') for configservice in configservices: if storage_system == configservice['SystemName']: foundConfigService = configservice LOG.debug(_("Found Storage Hardware ID Management Service: %s") % (configservice)) break return foundConfigService # Find pool based on storage_type def _find_pool(self, storage_type, details=False): foundPool = None systemname = None # Only get instance names if details flag is False; # Otherwise get the whole instances if details is False: vpools = self.conn.EnumerateInstanceNames( 'EMC_VirtualProvisioningPool') upools = self.conn.EnumerateInstanceNames( 'EMC_UnifiedStoragePool') else: vpools = self.conn.EnumerateInstances( 'EMC_VirtualProvisioningPool') upools = self.conn.EnumerateInstances( 'EMC_UnifiedStoragePool') for upool in upools: poolinstance = upool['InstanceID'] # Example: CLARiiON+APM00115204878+U+Pool 0 poolname, systemname = self._parse_pool_instance_id(poolinstance) if poolname is not None and systemname is not None: if str(storage_type) == str(poolname): foundPool = upool break if foundPool is None: for vpool in vpools: poolinstance = vpool['InstanceID'] # Example: SYMMETRIX+000195900551+TP+Sol_Innov poolname, systemname = self._parse_pool_instance_id( poolinstance) if poolname is not None and systemname is not None: if str(storage_type) == str(poolname): foundPool = vpool break if foundPool is None: exception_message = (_("Pool %(storage_type)s is not found.") % {'storage_type': storage_type}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) if systemname is None: exception_message = (_("Storage system not found for pool " "%(storage_type)s.") % {'storage_type': storage_type}) LOG.error(exception_message) raise exception.VolumeBackendAPIException(data=exception_message) LOG.debug(_("Pool: %(pool)s SystemName: %(systemname)s.") % {'pool': foundPool, 'systemname': systemname}) return foundPool, systemname def _parse_pool_instance_id(self, instanceid): # Example of pool InstanceId: CLARiiON+APM00115204878+U+Pool 0 poolname = None systemname = None endp = instanceid.rfind('+') if endp > -1: poolname = instanceid[endp + 1:] idarray = instanceid.split('+') if len(idarray) > 2: systemname = idarray[0] + '+' + idarray[1] LOG.debug(_("Pool name: %(poolname)s System name: %(systemname)s.") % {'poolname': poolname, 'systemname': systemname}) return poolname, systemname def _find_lun(self, volume): foundinstance = None volumename = volume['name'] loc = volume['provider_location'] name = eval(loc) instancename = self._getinstancename(name['classname'], name['keybindings']) foundinstance = self.conn.GetInstance(instancename) if foundinstance is None: LOG.debug(_("Volume %(volumename)s not found on the array.") % {'volumename': volumename}) else: LOG.debug(_("Volume name: %(volumename)s Volume instance: " "%(vol_instance)s.") % {'volumename': volumename, 'vol_instance': foundinstance.path}) return foundinstance def _find_storage_sync_sv_sv(self, snapshot, volume, waitforsync=True): foundsyncname = None storage_system = None percent_synced = 0 snapshotname = snapshot['name'] volumename = volume['name'] LOG.debug(_("Source: %(volumename)s Target: %(snapshotname)s.") % {'volumename': volumename, 'snapshotname': snapshotname}) snapshot_instance = self._find_lun(snapshot) volume_instance = self._find_lun(volume) storage_system = volume_instance['SystemName'] classname = 'SE_StorageSynchronized_SV_SV' bindings = {'SyncedElement': snapshot_instance.path, 'SystemElement': volume_instance.path} foundsyncname = self._getinstancename(classname, bindings) if foundsyncname is None: LOG.debug(_("Source: %(volumename)s Target: %(snapshotname)s. " "Storage Synchronized not found. ") % {'volumename': volumename, 'snapshotname': snapshotname}) else: LOG.debug(_("Storage system: %(storage_system)s " "Storage Synchronized instance: %(sync)s.") % {'storage_system': storage_system, 'sync': foundsyncname}) # Wait for SE_StorageSynchronized_SV_SV to be fully synced while waitforsync and percent_synced < 100: time.sleep(10) sync_instance = self.conn.GetInstance(foundsyncname, LocalOnly=False) percent_synced = sync_instance['PercentSynced'] return foundsyncname, storage_system def _find_initiator_names(self, connector): foundinitiatornames = [] iscsi = 'iscsi' fc = 'fc' name = 'initiator name' if self.protocol.lower() == iscsi and connector['initiator']: foundinitiatornames.append(connector['initiator']) elif self.protocol.lower() == fc and connector['wwpns']: for wwn in connector['wwpns']: foundinitiatornames.append(wwn) name = 'world wide port names' if foundinitiatornames is None or len(foundinitiatornames) == 0: msg = (_('Error finding %s.') % name) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_("Found %(name)s: %(initiator)s.") % {'name': name, 'initiator': foundinitiatornames}) return foundinitiatornames def _wait_for_job_complete(self, job): jobinstancename = job['Job'] while True: jobinstance = self.conn.GetInstance(jobinstancename, LocalOnly=False) jobstate = jobinstance['JobState'] # From ValueMap of JobState in CIM_ConcreteJob # 2L=New, 3L=Starting, 4L=Running, 32767L=Queue Pending # ValueMap("2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13..32767, # 32768..65535"), # Values("New, Starting, Running, Suspended, Shutting Down, # Completed, Terminated, Killed, Exception, Service, # Query Pending, DMTF Reserved, Vendor Reserved")] if jobstate in [2L, 3L, 4L, 32767L]: time.sleep(10) else: break rc = jobinstance['ErrorCode'] errordesc = jobinstance['ErrorDescription'] return rc, errordesc # Find LunMaskingSCSIProtocolController for the local host on the # specified storage system def _find_lunmasking_scsi_protocol_controller(self, storage_system, connector): foundCtrl = None initiators = self._find_initiator_names(connector) controllers = self.conn.EnumerateInstanceNames( 'EMC_LunMaskingSCSIProtocolController') for ctrl in controllers: if storage_system != ctrl['SystemName']: continue associators =\ self.conn.Associators(ctrl, resultClass='EMC_StorageHardwareID') for assoc in associators: # if EMC_StorageHardwareID matches the initiator, # we found the existing EMC_LunMaskingSCSIProtocolController # (Storage Group for VNX) # we can use for masking a new LUN hardwareid = assoc['StorageID'] for initiator in initiators: if hardwareid.lower() == initiator.lower(): foundCtrl = ctrl break if foundCtrl is not None: break if foundCtrl is not None: break LOG.debug(_("LunMaskingSCSIProtocolController for storage system " "%(storage_system)s and initiator %(initiator)s is " "%(ctrl)s.") % {'storage_system': storage_system, 'initiator': initiators, 'ctrl': foundCtrl}) return foundCtrl # Find LunMaskingSCSIProtocolController for the local host and the # specified storage volume def _find_lunmasking_scsi_protocol_controller_for_vol(self, vol_instance, connector): foundCtrl = None initiators = self._find_initiator_names(connector) controllers =\ self.conn.AssociatorNames( vol_instance.path, resultClass='EMC_LunMaskingSCSIProtocolController') for ctrl in controllers: associators =\ self.conn.Associators( ctrl, resultClass='EMC_StorageHardwareID') for assoc in associators: # if EMC_StorageHardwareID matches the initiator, # we found the existing EMC_LunMaskingSCSIProtocolController # (Storage Group for VNX) # we can use for masking a new LUN hardwareid = assoc['StorageID'] for initiator in initiators: if hardwareid.lower() == initiator.lower(): foundCtrl = ctrl break if foundCtrl is not None: break if foundCtrl is not None: break LOG.debug(_("LunMaskingSCSIProtocolController for storage volume " "%(vol)s and initiator %(initiator)s is %(ctrl)s.") % {'vol': vol_instance.path, 'initiator': initiators, 'ctrl': foundCtrl}) return foundCtrl # Find out how many volumes are mapped to a host # assoociated to the LunMaskingSCSIProtocolController def get_num_volumes_mapped(self, volume, connector): numVolumesMapped = 0 volumename = volume['name'] vol_instance = self._find_lun(volume) if vol_instance is None: msg = (_('Volume %(name)s not found on the array. ' 'Cannot determine if there are volumes mapped.') % {'name': volumename}) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) storage_system = vol_instance['SystemName'] ctrl = self._find_lunmasking_scsi_protocol_controller( storage_system, connector) LOG.debug(_("LunMaskingSCSIProtocolController for storage system " "%(storage)s and %(connector)s is %(ctrl)s.") % {'storage': storage_system, 'connector': connector, 'ctrl': ctrl}) associators = self.conn.Associators( ctrl, resultClass='EMC_StorageVolume') numVolumesMapped = len(associators) LOG.debug(_("Found %(numVolumesMapped)d volumes on storage system " "%(storage)s mapped to %(initiator)s.") % {'numVolumesMapped': numVolumesMapped, 'storage': storage_system, 'connector': connector}) return numVolumesMapped # Find an available device number that a host can see def _find_avail_device_number(self, storage_system): out_device_number = '000000' out_num_device_number = 0 numlist = [] myunitnames = [] unitnames = self.conn.EnumerateInstanceNames( 'CIM_ProtocolControllerForUnit') for unitname in unitnames: controller = unitname['Antecedent'] if storage_system != controller['SystemName']: continue classname = controller['CreationClassName'] index = classname.find('LunMaskingSCSIProtocolController') if index > -1: unitinstance = self.conn.GetInstance(unitname, LocalOnly=False) numDeviceNumber = int(unitinstance['DeviceNumber']) numlist.append(numDeviceNumber) myunitnames.append(unitname) maxnum = max(numlist) out_num_device_number = maxnum + 1 out_device_number = '%06d' % out_num_device_number LOG.debug(_("Available device number on %(storage)s: %(device)s.") % {'storage': storage_system, 'device': out_device_number}) return out_device_number # Find a device number that a host can see for a volume def find_device_number(self, volume, connector): out_num_device_number = None volumename = volume['name'] vol_instance = self._find_lun(volume) storage_system = vol_instance['SystemName'] sp = None try: sp = vol_instance['EMCCurrentOwningStorageProcessor'] except KeyError: # VMAX LUN doesn't have this property pass indexVMAX = storage_system.find('SYMMETRIX') if indexVMAX == -1: # find out whether the volume is already attached to the host ctrl = self._find_lunmasking_scsi_protocol_controller_for_vol( vol_instance, connector) LOG.debug(_("LunMaskingSCSIProtocolController for " "volume %(vol)s and connector %(connector)s " "is %(ctrl)s.") % {'vol': vol_instance.path, 'connector': connector, 'ctrl': ctrl}) if indexVMAX > -1 or ctrl: unitnames = self.conn.ReferenceNames( vol_instance.path, ResultClass='CIM_ProtocolControllerForUnit') for unitname in unitnames: controller = unitname['Antecedent'] classname = controller['CreationClassName'] index = classname.find('LunMaskingSCSIProtocolController') if index > -1: # VNX if ctrl['DeviceID'] != controller['DeviceID']: continue # Get an instance of CIM_ProtocolControllerForUnit unitinstance = self.conn.GetInstance(unitname, LocalOnly=False) numDeviceNumber = int(unitinstance['DeviceNumber'], 16) out_num_device_number = numDeviceNumber break else: index = classname.find('Symm_LunMaskingView') if index > -1: # VMAX unitinstance = self.conn.GetInstance(unitname, LocalOnly=False) numDeviceNumber = int(unitinstance['DeviceNumber'], 16) out_num_device_number = numDeviceNumber break if out_num_device_number is None: LOG.info(_("Device number not found for volume " "%(volumename)s %(vol_instance)s.") % {'volumename': volumename, 'vol_instance': vol_instance.path}) else: LOG.debug(_("Found device number %(device)d for volume " "%(volumename)s %(vol_instance)s.") % {'device': out_num_device_number, 'volumename': volumename, 'vol_instance': vol_instance.path}) data = {'hostlunid': out_num_device_number, 'storagesystem': storage_system, 'owningsp': sp} LOG.debug(_("Device info: %(data)s.") % {'data': data}) return data def _find_device_masking_group(self): """Finds the Device Masking Group in a masking view.""" foundMaskingGroup = None maskingview_name = self._get_masking_view() maskingviews = self.conn.EnumerateInstanceNames( 'EMC_LunMaskingSCSIProtocolController') for view in maskingviews: instance = self.conn.GetInstance(view, LocalOnly=False) if maskingview_name == instance['ElementName']: foundView = view break groups = self.conn.AssociatorNames( foundView, ResultClass='SE_DeviceMaskingGroup') foundMaskingGroup = groups[0] LOG.debug(_("Masking view: %(view)s DeviceMaskingGroup: %(masking)s.") % {'view': maskingview_name, 'masking': foundMaskingGroup}) return foundMaskingGroup # Find a StorageProcessorSystem given sp and storage system def _find_storage_processor_system(self, owningsp, storage_system): foundSystem = None systems = self.conn.EnumerateInstanceNames( 'EMC_StorageProcessorSystem') for system in systems: # Clar_StorageProcessorSystem.CreationClassName= # "Clar_StorageProcessorSystem",Name="CLARiiON+APM00123907237+SP_A" idarray = system['Name'].split('+') if len(idarray) > 2: storsystemname = idarray[0] + '+' + idarray[1] sp = idarray[2] if (storage_system == storsystemname and owningsp == sp): foundSystem = system LOG.debug(_("Found Storage Processor System: %s") % (system)) break return foundSystem # Find EMC_iSCSIProtocolEndpoint for the specified sp def _find_iscsi_protocol_endpoints(self, owningsp, storage_system): foundEndpoints = [] processor = self._find_storage_processor_system( owningsp, storage_system) associators = self.conn.Associators( processor, resultClass='EMC_iSCSIProtocolEndpoint') for assoc in associators: # Name = iqn.1992-04.com.emc:cx.apm00123907237.a8,t,0x0001 # SystemName = CLARiiON+APM00123907237+SP_A+8 arr = assoc['SystemName'].split('+') if len(arr) > 2: processor_name = arr[0] + '+' + arr[1] + '+' + arr[2] if processor_name == processor['Name']: arr2 = assoc['Name'].split(',') if len(arr2) > 1: foundEndpoints.append(arr2[0]) LOG.debug(_("iSCSIProtocolEndpoint for storage system " "%(storage_system)s and SP %(sp)s is " "%(endpoint)s.") % {'storage_system': storage_system, 'sp': owningsp, 'endpoint': foundEndpoints}) return foundEndpoints def _getnum(self, num, datatype): try: result = { '8': pywbem.Uint8(num), '16': pywbem.Uint16(num), '32': pywbem.Uint32(num), '64': pywbem.Uint64(num) } result = result.get(datatype, num) except NameError: result = num return result def _getinstancename(self, classname, bindings): instancename = None try: instancename = pywbem.CIMInstanceName( classname, namespace=EMC_ROOT, keybindings=bindings) except NameError: instancename = None return instancename # Find target WWNs def get_target_wwns(self, storage_system, connector): target_wwns = [] configservice = self._find_storage_hardwareid_service( storage_system) if configservice is None: exception_msg = (_("Error finding Storage Hardware ID Service.")) LOG.error(exception_msg) raise exception.VolumeBackendAPIException(data=exception_msg) hardwareids = self._find_storage_hardwareids(connector) LOG.debug(_('EMCGetTargetEndpoints: Service: %(service)s ' 'Storage HardwareIDs: %(hardwareids)s.') % {'service': configservice, 'hardwareids': hardwareids}) for hardwareid in hardwareids: rc, targetendpoints = self.conn.InvokeMethod( 'EMCGetTargetEndpoints', configservice, HardwareId=hardwareid) if rc != 0L: msg = (_('Error finding Target WWNs.')) LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) endpoints = targetendpoints['TargetEndpoints'] for targetendpoint in endpoints: wwn = targetendpoint['Name'] # Add target wwn to the list if it is not already there if not any(d == wwn for d in target_wwns): target_wwns.append(wwn) LOG.debug(_('Add target WWN: %s.') % wwn) LOG.debug(_('Target WWNs: %s.') % target_wwns) return target_wwns # Find Storage Hardware IDs def _find_storage_hardwareids(self, connector): foundInstances = [] wwpns = self._find_initiator_names(connector) hardwareids = self.conn.EnumerateInstances( 'SE_StorageHardwareID') for hardwareid in hardwareids: storid = hardwareid['StorageID'] for wwpn in wwpns: if wwpn.lower() == storid.lower(): foundInstances.append(hardwareid.path) LOG.debug(_("Storage Hardware IDs for %(wwpns)s is " "%(foundInstances)s.") % {'wwpns': wwpns, 'foundInstances': foundInstances}) return foundInstances def _get_volumetype_extraspecs(self, volume): specs = {} type_id = volume['volume_type_id'] if type_id is not None: specs = volume_types.get_volume_type_extra_specs(type_id) # If specs['storagetype:pool'] not defined, # set specs to {} so we can ready from config file later if POOL not in specs: specs = {} return specs def _get_provisioning(self, storage_type): # provisioning is thin (5) by default provisioning = 5 thick_str = 'thick' try: type_prov = storage_type[PROVISIONING] if type_prov.lower() == thick_str.lower(): provisioning = 2 except KeyError: # Default to thin if not defined pass return provisioning cinder-2014.1.5/cinder/volume/drivers/sheepdog.py0000664000567000056700000001700612540642606022762 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # Copyright (c) 2013 Zelin.io # All Rights Reserved. # # 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. """ SheepDog Volume Driver. """ import os import re import tempfile from oslo.config import cfg from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder.volume import driver LOG = logging.getLogger(__name__) CONF = cfg.CONF CONF.import_opt("image_conversion_dir", "cinder.image.image_utils") class SheepdogDriver(driver.VolumeDriver): """Executes commands relating to Sheepdog Volumes.""" VERSION = "1.0.0" def __init__(self, *args, **kwargs): super(SheepdogDriver, self).__init__(*args, **kwargs) self.stats_pattern = re.compile(r'[\w\s%]*Total\s(\d+)\s(\d+)*') self._stats = {} def check_for_setup_error(self): """Return error if prerequisites aren't met.""" try: #NOTE(francois-charlier) Since 0.24 'collie cluster info -r' # gives short output, but for compatibility reason we won't # use it and just check if 'running' is in the output. (out, err) = self._execute('collie', 'cluster', 'info') if 'status: running' not in out: exception_message = (_("Sheepdog is not working: %s") % out) raise exception.VolumeBackendAPIException( data=exception_message) except processutils.ProcessExecutionError: exception_message = _("Sheepdog is not working") raise exception.VolumeBackendAPIException(data=exception_message) def create_cloned_volume(self, volume, src_vref): raise NotImplementedError() def create_volume(self, volume): """Create a sheepdog volume.""" self._try_execute('qemu-img', 'create', "sheepdog:%s" % volume['name'], '%sG' % volume['size']) def create_volume_from_snapshot(self, volume, snapshot): """Create a sheepdog volume from a snapshot.""" self._try_execute('qemu-img', 'create', '-b', "sheepdog:%s:%s" % (snapshot['volume_name'], snapshot['name']), "sheepdog:%s" % volume['name']) def delete_volume(self, volume): """Delete a logical volume.""" self._delete(volume) def _ensure_dir_exists(self, tmp_dir): if tmp_dir and not os.path.exists(tmp_dir): os.makedirs(tmp_dir) def _resize(self, volume, size=None): if not size: size = int(volume['size']) * units.GiB self._try_execute('collie', 'vdi', 'resize', volume['name'], size) def _delete(self, volume): self._try_execute('collie', 'vdi', 'delete', volume['name']) def copy_image_to_volume(self, context, volume, image_service, image_id): # use the image_conversion_dir as a temporary place to save the image conversion_dir = CONF.image_conversion_dir self._ensure_dir_exists(conversion_dir) with tempfile.NamedTemporaryFile(dir=conversion_dir) as tmp: # (wenhao): we don't need to convert to raw for sheepdog. image_utils.fetch_verify_image(context, image_service, image_id, tmp.name) # remove the image created by import before this function. # see volume/drivers/manager.py:_create_volume self._delete(volume) # convert and store into sheepdog image_utils.convert_image(tmp.name, 'sheepdog:%s' % volume['name'], 'raw') self._resize(volume) def create_snapshot(self, snapshot): """Create a sheepdog snapshot.""" self._try_execute('qemu-img', 'snapshot', '-c', snapshot['name'], "sheepdog:%s" % snapshot['volume_name']) def delete_snapshot(self, snapshot): """Delete a sheepdog snapshot.""" self._try_execute('collie', 'vdi', 'delete', snapshot['volume_name'], '-s', snapshot['name']) def local_path(self, volume): return "sheepdog:%s" % volume['name'] def ensure_export(self, context, volume): """Safely and synchronously recreate an export for a logical volume.""" pass def create_export(self, context, volume): """Export a volume.""" pass def remove_export(self, context, volume): """Remove an export for a logical volume.""" pass def initialize_connection(self, volume, connector): return { 'driver_volume_type': 'sheepdog', 'data': { 'name': volume['name'] } } def terminate_connection(self, volume, connector, **kwargs): pass def _update_volume_stats(self): stats = {} backend_name = "sheepdog" if self.configuration: backend_name = self.configuration.safe_get('volume_backend_name') stats["volume_backend_name"] = backend_name or 'sheepdog' stats['vendor_name'] = 'Open Source' stats['dirver_version'] = self.VERSION stats['storage_protocol'] = 'sheepdog' stats['total_capacity_gb'] = 'unknown' stats['free_capacity_gb'] = 'unknown' stats['reserved_percentage'] = 0 stats['QoS_support'] = False try: stdout, _err = self._execute('collie', 'node', 'info', '-r') m = self.stats_pattern.match(stdout) total = float(m.group(1)) used = float(m.group(2)) stats['total_capacity_gb'] = total / units.GiB stats['free_capacity_gb'] = (total - used) / units.GiB except processutils.ProcessExecutionError: LOG.exception(_('error refreshing volume stats')) self._stats = stats def get_volume_stats(self, refresh=False): if refresh: self._update_volume_stats() return self._stats def extend_volume(self, volume, new_size): """Extend an Existing Volume.""" old_size = volume['size'] try: size = int(new_size) * units.GiB self._resize(volume, size=size) except Exception: msg = _('Failed to Extend Volume ' '%(volname)s') % {'volname': volume['name']} LOG.error(msg) raise exception.VolumeBackendAPIException(data=msg) LOG.debug(_("Extend volume from %(old_size)s GB to %(new_size)s GB."), {'old_size': old_size, 'new_size': new_size}) def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume.""" raise NotImplementedError() def restore_backup(self, context, backup, volume, backup_service): """Restore an existing backup to a new or existing volume.""" raise NotImplementedError() cinder-2014.1.5/cinder/volume/drivers/solidfire.py0000664000567000056700000007464412540642606023157 0ustar jenkinsjenkins00000000000000# Copyright 2013 SolidFire Inc # All Rights Reserved. # # 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. import base64 import httplib import json import random import socket import string import time import uuid from oslo.config import cfg from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import units from cinder.volume.drivers.san.san import SanISCSIDriver from cinder.volume import qos_specs from cinder.volume import volume_types LOG = logging.getLogger(__name__) sf_opts = [ cfg.BoolOpt('sf_emulate_512', default=True, help='Set 512 byte emulation on volume creation; '), cfg.BoolOpt('sf_allow_tenant_qos', default=False, help='Allow tenants to specify QOS on create'), cfg.StrOpt('sf_account_prefix', default=None, help='Create SolidFire accounts with this prefix. Any string ' 'can be used here, but the string \"hostname\" is special ' 'and will create a prefix using the cinder node hostsname ' '(previous default behavior). The default is NO prefix.'), cfg.IntOpt('sf_api_port', default=443, help='SolidFire API port. Useful if the device api is behind ' 'a proxy on a different port.'), ] CONF = cfg.CONF CONF.register_opts(sf_opts) class SolidFireDriver(SanISCSIDriver): """OpenStack driver to enable SolidFire cluster. Version history: 1.0 - Initial driver 1.1 - Refactor, clone support, qos by type and minor bug fixes """ VERSION = '1.2.0' sf_qos_dict = {'slow': {'minIOPS': 100, 'maxIOPS': 200, 'burstIOPS': 200}, 'medium': {'minIOPS': 200, 'maxIOPS': 400, 'burstIOPS': 400}, 'fast': {'minIOPS': 500, 'maxIOPS': 1000, 'burstIOPS': 1000}, 'performant': {'minIOPS': 2000, 'maxIOPS': 4000, 'burstIOPS': 4000}, 'off': None} sf_qos_keys = ['minIOPS', 'maxIOPS', 'burstIOPS'] cluster_stats = {} def __init__(self, *args, **kwargs): super(SolidFireDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(sf_opts) try: self._update_cluster_status() except exception.SolidFireAPIException: pass def _issue_api_request(self, method_name, params, version='1.0'): """All API requests to SolidFire device go through this method. Simple json-rpc web based API calls. each call takes a set of parameters (dict) and returns results in a dict as well. """ max_simultaneous_clones = ['xMaxSnapshotsPerVolumeExceeded', 'xMaxClonesPerVolumeExceeded', 'xMaxSnapshotsPerNodeExceeded', 'xMaxClonesPerNodeExceeded'] host = self.configuration.san_ip port = self.configuration.sf_api_port cluster_admin = self.configuration.san_login cluster_password = self.configuration.san_password # NOTE(jdg): We're wrapping a retry loop for a know XDB issue # Shows up in very high request rates (ie create 1000 volumes) # we have to wrap the whole sequence because the request_id # can't be re-used retry_count = 5 while retry_count > 0: request_id = hash(uuid.uuid4()) # just generate a random number command = {'method': method_name, 'id': request_id} if params is not None: command['params'] = params payload = json.dumps(command, ensure_ascii=False) payload.encode('utf-8') header = {'Content-Type': 'application/json-rpc; charset=utf-8'} if cluster_password is not None: # base64.encodestring includes a newline character # in the result, make sure we strip it off auth_key = base64.encodestring('%s:%s' % (cluster_admin, cluster_password))[:-1] header['Authorization'] = 'Basic %s' % auth_key LOG.debug(_("Payload for SolidFire API call: %s"), payload) api_endpoint = '/json-rpc/%s' % version connection = httplib.HTTPSConnection(host, port) try: connection.request('POST', api_endpoint, payload, header) except Exception as ex: LOG.error(_('Failed to make httplib connection ' 'SolidFire Cluster: %s (verify san_ip ' 'settings)') % ex.message) msg = _("Failed to make httplib connection: %s") % ex.message raise exception.SolidFireAPIException(msg) response = connection.getresponse() data = {} if response.status != 200: connection.close() LOG.error(_('Request to SolidFire cluster returned ' 'bad status: %(status)s / %(reason)s (check ' 'san_login/san_password settings)') % {'status': response.status, 'reason': response.reason}) msg = (_("HTTP request failed, with status: %(status)s " "and reason: %(reason)s") % {'status': response.status, 'reason': response.reason}) raise exception.SolidFireAPIException(msg) else: data = response.read() try: data = json.loads(data) except (TypeError, ValueError) as exc: connection.close() msg = _("Call to json.loads() raised " "an exception: %s") % exc raise exception.SfJsonEncodeFailure(msg) connection.close() LOG.debug(_("Results of SolidFire API call: %s"), data) if 'error' in data: if data['error']['name'] in max_simultaneous_clones: LOG.warning(_('Clone operation ' 'encountered: %s') % data['error']['name']) LOG.warning(_( 'Waiting for outstanding operation ' 'before retrying snapshot: %s') % params['name']) time.sleep(5) # Don't decrement the retry count for this one elif 'xDBVersionMismatch' in data['error']['name']: LOG.warning(_('Detected xDBVersionMismatch, ' 'retry %s of 5') % (5 - retry_count)) time.sleep(1) retry_count -= 1 elif 'xUnknownAccount' in data['error']['name']: retry_count = 0 else: msg = _("API response: %s") % data raise exception.SolidFireAPIException(msg) else: retry_count = 0 return data def _get_volumes_by_sfaccount(self, account_id): """Get all volumes on cluster for specified account.""" params = {'accountID': account_id} data = self._issue_api_request('ListVolumesForAccount', params) if 'result' in data: return data['result']['volumes'] def _get_sfaccount_by_name(self, sf_account_name): """Get SolidFire account object by name.""" sfaccount = None params = {'username': sf_account_name} data = self._issue_api_request('GetAccountByName', params) if 'result' in data and 'account' in data['result']: LOG.debug(_('Found solidfire account: %s'), sf_account_name) sfaccount = data['result']['account'] return sfaccount def _get_sf_account_name(self, project_id): """Build the SolidFire account name to use.""" prefix = self.configuration.sf_account_prefix or '' if prefix == 'hostname': prefix = socket.gethostname() return '%s%s%s' % (prefix, '-' if prefix else '', project_id) def _get_sfaccount(self, project_id): sf_account_name = self._get_sf_account_name(project_id) sfaccount = self._get_sfaccount_by_name(sf_account_name) if sfaccount is None: raise exception.SolidFireAccountNotFound( account_name=sf_account_name) return sfaccount def _create_sfaccount(self, project_id): """Create account on SolidFire device if it doesn't already exist. We're first going to check if the account already exits, if it does just return it. If not, then create it. """ sf_account_name = self._get_sf_account_name(project_id) sfaccount = self._get_sfaccount_by_name(sf_account_name) if sfaccount is None: LOG.debug(_('solidfire account: %s does not exist, create it...'), sf_account_name) chap_secret = self._generate_random_string(12) params = {'username': sf_account_name, 'initiatorSecret': chap_secret, 'targetSecret': chap_secret, 'attributes': {}} data = self._issue_api_request('AddAccount', params) if 'result' in data: sfaccount = self._get_sfaccount_by_name(sf_account_name) return sfaccount def _get_cluster_info(self): """Query the SolidFire cluster for some property info.""" params = {} data = self._issue_api_request('GetClusterInfo', params) if 'result' not in data: msg = _("API response: %s") % data raise exception.SolidFireAPIException(msg) return data['result'] def _do_export(self, volume): """Gets the associated account, retrieves CHAP info and updates.""" sfaccount = self._get_sfaccount(volume['project_id']) model_update = {} model_update['provider_auth'] = ('CHAP %s %s' % (sfaccount['username'], sfaccount['targetSecret'])) return model_update def _generate_random_string(self, length): """Generates random_string to use for CHAP password.""" char_set = string.ascii_uppercase + string.digits return ''.join(random.sample(char_set, length)) def _get_model_info(self, sfaccount, sf_volume_id): """Gets the connection info for specified account and volume.""" cluster_info = self._get_cluster_info() iscsi_portal = cluster_info['clusterInfo']['svip'] + ':3260' chap_secret = sfaccount['targetSecret'] found_volume = False iteration_count = 0 while not found_volume and iteration_count < 600: volume_list = self._get_volumes_by_sfaccount( sfaccount['accountID']) iqn = None for v in volume_list: if v['volumeID'] == sf_volume_id: iqn = v['iqn'] found_volume = True break if not found_volume: time.sleep(2) iteration_count += 1 if not found_volume: LOG.error(_('Failed to retrieve volume SolidFire-' 'ID: %s in get_by_account!') % sf_volume_id) raise exception.VolumeNotFound(volume_id=sf_volume_id) model_update = {} # NOTE(john-griffith): SF volumes are always at lun 0 model_update['provider_location'] = ('%s %s %s' % (iscsi_portal, iqn, 0)) model_update['provider_auth'] = ('CHAP %s %s' % (sfaccount['username'], chap_secret)) if not self.configuration.sf_emulate_512: model_update['provider_geometry'] = ('%s %s' % (4096, 4096)) return model_update def _do_clone_volume(self, src_uuid, src_project_id, v_ref): """Create a clone of an existing volume. Currently snapshots are the same as clones on the SF cluster. Due to the way the SF cluster works there's no loss in efficiency or space usage between the two. The only thing different right now is the restore snapshot functionality which has not been implemented in the pre-release version of the SolidFire Cluster. """ attributes = {} qos = {} sfaccount = self._get_sfaccount(src_project_id) params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(src_uuid, params) if sf_vol is None: raise exception.VolumeNotFound(volume_id=src_uuid) if src_project_id != v_ref['project_id']: sfaccount = self._create_sfaccount(v_ref['project_id']) if v_ref.get('size', None): new_size = v_ref['size'] else: new_size = v_ref['volume_size'] params = {'volumeID': int(sf_vol['volumeID']), 'name': 'UUID-%s' % v_ref['id'], 'newSize': int(new_size * units.GiB), 'newAccountID': sfaccount['accountID']} data = self._issue_api_request('CloneVolume', params) if (('result' not in data) or ('volumeID' not in data['result'])): msg = _("API response: %s") % data raise exception.SolidFireAPIException(msg) sf_volume_id = data['result']['volumeID'] if (self.configuration.sf_allow_tenant_qos and v_ref.get('volume_metadata')is not None): qos = self._set_qos_presets(v_ref) ctxt = context.get_admin_context() type_id = v_ref.get('volume_type_id', None) if type_id is not None: qos = self._set_qos_by_volume_type(ctxt, type_id) # NOTE(jdg): all attributes are copied via clone, need to do an update # to set any that were provided params = {'volumeID': sf_volume_id} create_time = timeutils.strtime(v_ref['created_at']) attributes = {'uuid': v_ref['id'], 'is_clone': 'True', 'src_uuid': src_uuid, 'created_at': create_time} if qos: params['qos'] = qos for k, v in qos.items(): attributes[k] = str(v) params['attributes'] = attributes data = self._issue_api_request('ModifyVolume', params) model_update = self._get_model_info(sfaccount, sf_volume_id) if model_update is None: mesg = _('Failed to get model update from clone') raise exception.SolidFireAPIException(mesg) return (data, sfaccount, model_update) def _do_volume_create(self, project_id, params): sfaccount = self._create_sfaccount(project_id) params['accountID'] = sfaccount['accountID'] data = self._issue_api_request('CreateVolume', params) if (('result' not in data) or ('volumeID' not in data['result'])): msg = _("Failed volume create: %s") % data raise exception.SolidFireAPIException(msg) sf_volume_id = data['result']['volumeID'] return self._get_model_info(sfaccount, sf_volume_id) def _set_qos_presets(self, volume): qos = {} valid_presets = self.sf_qos_dict.keys() # First look to see if they included a preset presets = [i.value for i in volume.get('volume_metadata') if i.key == 'sf-qos' and i.value in valid_presets] if len(presets) > 0: if len(presets) > 1: LOG.warning(_('More than one valid preset was ' 'detected, using %s') % presets[0]) qos = self.sf_qos_dict[presets[0]] else: # look for explicit settings for i in volume.get('volume_metadata'): if i.key in self.sf_qos_keys: qos[i.key] = int(i.value) return qos def _set_qos_by_volume_type(self, ctxt, type_id): qos = {} volume_type = volume_types.get_volume_type(ctxt, type_id) qos_specs_id = volume_type.get('qos_specs_id') specs = volume_type.get('extra_specs') # NOTE(jdg): We prefer the qos_specs association # and over-ride any existing # extra-specs settings if present if qos_specs_id is not None: kvs = qos_specs.get_qos_specs(ctxt, qos_specs_id)['specs'] else: kvs = specs for key, value in kvs.iteritems(): if ':' in key: fields = key.split(':') key = fields[1] if key in self.sf_qos_keys: qos[key] = int(value) return qos def _get_sf_volume(self, uuid, params): data = self._issue_api_request('ListVolumesForAccount', params) if 'result' not in data: msg = _("Failed to get SolidFire Volume: %s") % data raise exception.SolidFireAPIException(msg) found_count = 0 sf_volref = None for v in data['result']['volumes']: if uuid in v['name']: found_count += 1 sf_volref = v LOG.debug(_("Mapped SolidFire volumeID %(sfid)s " "to cinder ID %(uuid)s.") % {'sfid': v['volumeID'], 'uuid': uuid}) if found_count == 0: # NOTE(jdg): Previously we would raise here, but there are cases # where this might be a cleanup for a failed delete. # Until we get better states we'll just log an error LOG.error(_("Volume %s, not found on SF Cluster."), uuid) if found_count > 1: LOG.error(_("Found %(count)s volumes mapped to id: %(uuid)s.") % {'count': found_count, 'uuid': uuid}) raise exception.DuplicateSfVolumeNames(vol_name=uuid) return sf_volref def create_volume(self, volume): """Create volume on SolidFire device. The account is where CHAP settings are derived from, volume is created and exported. Note that the new volume is immediately ready for use. One caveat here is that an existing user account must be specified in the API call to create a new volume. We use a set algorithm to determine account info based on passed in cinder volume object. First we check to see if the account already exists (and use it), or if it does not already exist, we'll go ahead and create it. """ slice_count = 1 attributes = {} qos = {} if (self.configuration.sf_allow_tenant_qos and volume.get('volume_metadata')is not None): qos = self._set_qos_presets(volume) ctxt = context.get_admin_context() type_id = volume['volume_type_id'] if type_id is not None: qos = self._set_qos_by_volume_type(ctxt, type_id) create_time = timeutils.strtime(volume['created_at']) attributes = {'uuid': volume['id'], 'is_clone': 'False', 'created_at': create_time} if qos: for k, v in qos.items(): attributes[k] = str(v) params = {'name': 'UUID-%s' % volume['id'], 'accountID': None, 'sliceCount': slice_count, 'totalSize': int(volume['size'] * units.GiB), 'enable512e': self.configuration.sf_emulate_512, 'attributes': attributes, 'qos': qos} return self._do_volume_create(volume['project_id'], params) def create_cloned_volume(self, volume, src_vref): """Create a clone of an existing volume.""" (data, sfaccount, model) = self._do_clone_volume( src_vref['id'], src_vref['project_id'], volume) return model def delete_volume(self, volume): """Delete SolidFire Volume from device. SolidFire allows multiple volumes with same name, volumeID is what's guaranteed unique. """ LOG.debug(_("Enter SolidFire delete_volume...")) sfaccount = self._get_sfaccount(volume['project_id']) if sfaccount is None: LOG.error(_("Account for Volume ID %s was not found on " "the SolidFire Cluster!") % volume['id']) LOG.error(_("This usually means the volume was never " "successfully created.")) return params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(volume['id'], params) if sf_vol is not None: params = {'volumeID': sf_vol['volumeID']} data = self._issue_api_request('DeleteVolume', params) if 'result' not in data: msg = _("Failed to delete SolidFire Volume: %s") % data raise exception.SolidFireAPIException(msg) else: LOG.error(_("Volume ID %s was not found on " "the SolidFire Cluster!"), volume['id']) LOG.debug(_("Leaving SolidFire delete_volume")) def ensure_export(self, context, volume): """Verify the iscsi export info.""" LOG.debug(_("Executing SolidFire ensure_export...")) try: return self._do_export(volume) except exception.SolidFireAPIException: return None def create_export(self, context, volume): """Setup the iscsi export info.""" LOG.debug(_("Executing SolidFire create_export...")) return self._do_export(volume) def delete_snapshot(self, snapshot): """Delete the specified snapshot from the SolidFire cluster.""" self.delete_volume(snapshot) def create_snapshot(self, snapshot): """Create a snapshot of a volume on the SolidFire cluster. Note that for SolidFire Clusters currently there is no snapshot implementation. Due to the way SF does cloning there's no performance hit or extra space used. The only thing that's lacking from this is the abilit to restore snaps. After GA a true snapshot implementation will be available with restore at which time we'll rework this appropriately. """ (data, sfaccount, model) = self._do_clone_volume( snapshot['volume_id'], snapshot['project_id'], snapshot) def create_volume_from_snapshot(self, volume, snapshot): """Create a volume from the specified snapshot.""" (data, sfaccount, model) = self._do_clone_volume( snapshot['id'], snapshot['project_id'], volume) return model def get_volume_stats(self, refresh=False): """Get volume status. If 'refresh' is True, run update first. The name is a bit misleading as the majority of the data here is cluster data """ if refresh: try: self._update_cluster_status() except exception.SolidFireAPIException: pass return self.cluster_stats def extend_volume(self, volume, new_size): """Extend an existing volume.""" LOG.debug(_("Entering SolidFire extend_volume...")) sfaccount = self._get_sfaccount(volume['project_id']) params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(volume['id'], params) if sf_vol is None: LOG.error(_("Volume ID %s was not found on " "the SolidFire Cluster!"), volume['id']) raise exception.VolumeNotFound(volume_id=volume['id']) params = { 'volumeID': sf_vol['volumeID'], 'totalSize': int(new_size * units.GiB) } data = self._issue_api_request('ModifyVolume', params, version='5.0') if 'result' not in data: raise exception.SolidFireAPIDataException(data=data) LOG.debug(_("Leaving SolidFire extend_volume")) def _update_cluster_status(self): """Retrieve status info for the Cluster.""" LOG.debug(_("Updating cluster status info")) params = {} # NOTE(jdg): The SF api provides an UNBELIEVABLE amount # of stats data, this is just one of the calls results = self._issue_api_request('GetClusterCapacity', params) if 'result' not in results: LOG.error(_('Failed to get updated stats')) results = results['result']['clusterCapacity'] free_capacity =\ results['maxProvisionedSpace'] - results['usedSpace'] data = {} backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or self.__class__.__name__ data["vendor_name"] = 'SolidFire Inc' data["driver_version"] = self.VERSION data["storage_protocol"] = 'iSCSI' data['total_capacity_gb'] = results['maxProvisionedSpace'] data['free_capacity_gb'] = float(free_capacity / units.GiB) data['reserved_percentage'] = 0 data['QoS_support'] = True data['compression_percent'] =\ results['compressionPercent'] data['deduplicaton_percent'] =\ results['deDuplicationPercent'] data['thin_provision_percent'] =\ results['thinProvisioningPercent'] self.cluster_stats = data def attach_volume(self, context, volume, instance_uuid, host_name, mountpoint): LOG.debug(_("Entering SolidFire attach_volume...")) sfaccount = self._get_sfaccount(volume['project_id']) params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(volume['id'], params) if sf_vol is None: LOG.error(_("Volume ID %s was not found on " "the SolidFire Cluster!"), volume['id']) raise exception.VolumeNotFound(volume_id=volume['id']) attributes = sf_vol['attributes'] attributes['attach_time'] = volume.get('attach_time', None) attributes['attached_to'] = instance_uuid params = { 'volumeID': sf_vol['volumeID'], 'attributes': attributes } data = self._issue_api_request('ModifyVolume', params) if 'result' not in data: raise exception.SolidFireAPIDataException(data=data) def detach_volume(self, context, volume): LOG.debug(_("Entering SolidFire attach_volume...")) sfaccount = self._get_sfaccount(volume['project_id']) params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(volume['id'], params) if sf_vol is None: LOG.error(_("Volume ID %s was not found on " "the SolidFire Cluster!"), volume['id']) raise exception.VolumeNotFound(volume_id=volume['id']) attributes = sf_vol['attributes'] attributes['attach_time'] = None attributes['attached_to'] = None params = { 'volumeID': sf_vol['volumeID'], 'attributes': attributes } data = self._issue_api_request('ModifyVolume', params) if 'result' not in data: raise exception.SolidFireAPIDataException(data=data) def accept_transfer(self, context, volume, new_user, new_project): sfaccount = self._get_sfaccount(volume['project_id']) params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(volume['id'], params) if new_project != volume['project_id']: # do a create_sfaccount here as this tenant # may not exist on the cluster yet sfaccount = self._create_sfaccount(new_project) params = { 'volumeID': sf_vol['volumeID'], 'accountID': sfaccount['accountID'] } data = self._issue_api_request('ModifyVolume', params, version='5.0') if 'result' not in data: raise exception.SolidFireAPIDataException(data=data) volume['project_id'] = new_project volume['user_id'] = new_user model_update = self._do_export(volume) LOG.debug("Leaving SolidFire transfer volume") return model_update def retype(self, ctxt, volume, new_type, diff, host): """Convert the volume to be of the new type. Returns a boolean indicating whether the retype occurred. :param ctxt: Context :param volume: A dictionary describing the volume to migrate :param new_type: A dictionary describing the volume type to convert to :param diff: A dictionary with the difference between the two types :param host: A dictionary describing the host to migrate to, where host['host'] is its name, and host['capabilities'] is a dictionary of its reported capabilities (Not Used). """ qos = {} attributes = {} sfaccount = self._get_sfaccount(volume['project_id']) params = {'accountID': sfaccount['accountID']} sf_vol = self._get_sf_volume(volume['id'], params) if sf_vol is None: raise exception.VolumeNotFound(volume_id=volume['id']) attributes = sf_vol['attributes'] attributes['retyped_at'] = timeutils.strtime() params = {'volumeID': sf_vol['volumeID']} qos = self._set_qos_by_volume_type(ctxt, new_type['id']) if qos: params['qos'] = qos for k, v in qos.items(): attributes[k] = str(v) params['attributes'] = attributes self._issue_api_request('ModifyVolume', params) return True cinder-2014.1.5/cinder/volume/drivers/eqlx.py0000664000567000056700000004431012540642606022133 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Dell Inc. # Copyright 2013 OpenStack LLC # # 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. """Volume driver for Dell EqualLogic Storage.""" import functools import random import eventlet from eventlet import greenthread import greenlet from oslo.config import cfg from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import utils from cinder.volume.drivers.san import SanISCSIDriver LOG = logging.getLogger(__name__) eqlx_opts = [ cfg.StrOpt('eqlx_group_name', default='group-0', help='Group name to use for creating volumes'), cfg.IntOpt('eqlx_cli_timeout', default=30, help='Timeout for the Group Manager cli command execution'), cfg.IntOpt('eqlx_cli_max_retries', default=5, help='Maximum retry count for reconnection'), cfg.BoolOpt('eqlx_use_chap', default=False, help='Use CHAP authentication for targets?'), cfg.StrOpt('eqlx_chap_login', default='admin', help='Existing CHAP account name'), cfg.StrOpt('eqlx_chap_password', default='password', help='Password for specified CHAP account name', secret=True), cfg.StrOpt('eqlx_pool', default='default', help='Pool in which volumes will be created') ] CONF = cfg.CONF CONF.register_opts(eqlx_opts) def with_timeout(f): @functools.wraps(f) def __inner(self, *args, **kwargs): timeout = kwargs.pop('timeout', None) gt = eventlet.spawn(f, self, *args, **kwargs) if timeout is None: return gt.wait() else: kill_thread = eventlet.spawn_after(timeout, gt.kill) try: res = gt.wait() except greenlet.GreenletExit: raise exception.VolumeBackendAPIException( data="Command timed out") else: kill_thread.cancel() return res return __inner class DellEQLSanISCSIDriver(SanISCSIDriver): """Implements commands for Dell EqualLogic SAN ISCSI management. To enable the driver add the following line to the cinder configuration: volume_driver=cinder.volume.drivers.eqlx.DellEQLSanISCSIDriver Driver's prerequisites are: - a separate volume group set up and running on the SAN - SSH access to the SAN - a special user must be created which must be able to - create/delete volumes and snapshots; - clone snapshots into volumes; - modify volume access records; The access credentials to the SAN are provided by means of the following flags san_ip= san_login= san_password= san_private_key= Thin provision of volumes is enabled by default, to disable it use: san_thin_provision=false In order to use target CHAP authentication (which is disabled by default) SAN administrator must create a local CHAP user and specify the following flags for the driver: eqlx_use_chap=true eqlx_chap_login= eqlx_chap_password= eqlx_group_name parameter actually represents the CLI prompt message without '>' ending. E.g. if prompt looks like 'group-0>', then the parameter must be set to 'group-0' Also, the default CLI command execution timeout is 30 secs. Adjustable by eqlx_cli_timeout= """ VERSION = "1.0.0" def __init__(self, *args, **kwargs): super(DellEQLSanISCSIDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(eqlx_opts) self._group_ip = None self.sshpool = None def _get_output(self, chan): out = '' ending = '%s> ' % self.configuration.eqlx_group_name while not out.endswith(ending): out += chan.recv(102400) LOG.debug(_("CLI output\n%s"), out) return out.splitlines() def _get_prefixed_value(self, lines, prefix): for line in lines: if line.startswith(prefix): return line[len(prefix):] return @with_timeout def _ssh_execute(self, ssh, command, *arg, **kwargs): transport = ssh.get_transport() chan = transport.open_session() chan.invoke_shell() LOG.debug(_("Reading CLI MOTD")) self._get_output(chan) cmd = 'stty columns 255' LOG.debug(_("Setting CLI terminal width: '%s'"), cmd) chan.send(cmd + '\r') out = self._get_output(chan) LOG.debug(_("Sending CLI command: '%s'"), command) chan.send(command + '\r') out = self._get_output(chan) chan.close() if any(line.startswith(('% Error', 'Error:')) for line in out): desc = _("Error executing EQL command") cmdout = '\n'.join(out) LOG.error(cmdout) raise processutils.ProcessExecutionError( stdout=cmdout, cmd=command, description=desc) return out def _run_ssh(self, cmd_list, attempts=1): utils.check_ssh_injection(cmd_list) command = ' '. join(cmd_list) if not self.sshpool: password = self.configuration.san_password privatekey = self.configuration.san_private_key min_size = self.configuration.ssh_min_pool_conn max_size = self.configuration.ssh_max_pool_conn self.sshpool = utils.SSHPool(self.configuration.san_ip, self.configuration.san_ssh_port, self.configuration.ssh_conn_timeout, self.configuration.san_login, password=password, privatekey=privatekey, min_size=min_size, max_size=max_size) try: total_attempts = attempts with self.sshpool.item() as ssh: while attempts > 0: attempts -= 1 try: LOG.info(_('EQL-driver: executing "%s"') % command) return self._ssh_execute( ssh, command, timeout=self.configuration.eqlx_cli_timeout) except processutils.ProcessExecutionError: raise except Exception as e: LOG.exception(e) greenthread.sleep(random.randint(20, 500) / 100.0) msg = (_("SSH Command failed after '%(total_attempts)r' " "attempts : '%(command)s'") % {'total_attempts': total_attempts, 'command': command}) raise exception.VolumeBackendAPIException(data=msg) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_("Error running SSH command: %s") % command) def _eql_execute(self, *args, **kwargs): return self._run_ssh( args, attempts=self.configuration.eqlx_cli_max_retries) def _get_volume_data(self, lines): prefix = 'iSCSI target name is ' target_name = self._get_prefixed_value(lines, prefix)[:-1] lun_id = "%s:%s,1 %s 0" % (self._group_ip, '3260', target_name) model_update = {} model_update['provider_location'] = lun_id if self.configuration.eqlx_use_chap: model_update['provider_auth'] = 'CHAP %s %s' % \ (self.configuration.eqlx_chap_login, self.configuration.eqlx_chap_password) return model_update def _get_space_in_gb(self, val): scale = 1.0 part = 'GB' if val.endswith('MB'): scale = 1.0 / 1024 part = 'MB' elif val.endswith('TB'): scale = 1.0 * 1024 part = 'TB' return scale * float(val.partition(part)[0]) def _update_volume_stats(self): """Retrieve stats info from eqlx group.""" LOG.debug(_("Updating volume stats")) data = {} backend_name = "eqlx" if self.configuration: backend_name = self.configuration.safe_get('volume_backend_name') data["volume_backend_name"] = backend_name or 'eqlx' data["vendor_name"] = 'Dell' data["driver_version"] = self.VERSION data["storage_protocol"] = 'iSCSI' data['reserved_percentage'] = 0 data['QoS_support'] = False data['total_capacity_gb'] = 'infinite' data['free_capacity_gb'] = 'infinite' for line in self._eql_execute('pool', 'select', self.configuration.eqlx_pool, 'show'): if line.startswith('TotalCapacity:'): out_tup = line.rstrip().partition(' ') data['total_capacity_gb'] = self._get_space_in_gb(out_tup[-1]) if line.startswith('FreeSpace:'): out_tup = line.rstrip().partition(' ') data['free_capacity_gb'] = self._get_space_in_gb(out_tup[-1]) self._stats = data def _check_volume(self, volume): """Check if the volume exists on the Array.""" command = ['volume', 'select', volume['name'], 'show'] try: self._eql_execute(*command) except processutils.ProcessExecutionError as err: with excutils.save_and_reraise_exception(): if err.stdout.find('does not exist.\n') > -1: LOG.debug(_('Volume %s does not exist, ' 'it may have already been deleted'), volume['name']) raise exception.VolumeNotFound(volume_id=volume['id']) def do_setup(self, context): """Disable cli confirmation and tune output format.""" try: disabled_cli_features = ('confirmation', 'paging', 'events', 'formatoutput') for feature in disabled_cli_features: self._eql_execute('cli-settings', feature, 'off') for line in self._eql_execute('grpparams', 'show'): if line.startswith('Group-Ipaddress:'): out_tup = line.rstrip().partition(' ') self._group_ip = out_tup[-1] LOG.info(_("EQL-driver: Setup is complete, group IP is %s"), self._group_ip) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to setup the Dell EqualLogic driver')) def create_volume(self, volume): """Create a volume.""" try: cmd = ['volume', 'create', volume['name'], "%sG" % (volume['size'])] if self.configuration.eqlx_pool != 'default': cmd.append('pool') cmd.append(self.configuration.eqlx_pool) if self.configuration.san_thin_provision: cmd.append('thin-provision') out = self._eql_execute(*cmd) return self._get_volume_data(out) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to create volume %s'), volume['name']) def delete_volume(self, volume): """Delete a volume.""" try: self._check_volume(volume) self._eql_execute('volume', 'select', volume['name'], 'offline') self._eql_execute('volume', 'delete', volume['name']) except exception.VolumeNotFound: LOG.warn(_('Volume %s was not found while trying to delete it'), volume['name']) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to delete volume %s'), volume['name']) def create_snapshot(self, snapshot): """"Create snapshot of existing volume on appliance.""" try: out = self._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'create-now') prefix = 'Snapshot name is ' snap_name = self._get_prefixed_value(out, prefix) self._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'rename', snap_name, snapshot['name']) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to create snapshot of volume %s'), snapshot['volume_name']) def create_volume_from_snapshot(self, volume, snapshot): """Create new volume from other volume's snapshot on appliance.""" try: out = self._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'select', snapshot['name'], 'clone', volume['name']) return self._get_volume_data(out) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to create volume from snapshot %s'), snapshot['name']) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" try: src_volume_name = self.configuration.\ volume_name_template % src_vref['id'] out = self._eql_execute('volume', 'select', src_volume_name, 'clone', volume['name']) return self._get_volume_data(out) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to create clone of volume %s'), volume['name']) def delete_snapshot(self, snapshot): """Delete volume's snapshot.""" try: self._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'delete', snapshot['name']) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to delete snapshot %(snap)s of ' 'volume %(vol)s'), {'snap': snapshot['name'], 'vol': snapshot['volume_name']}) def initialize_connection(self, volume, connector): """Restrict access to a volume.""" try: cmd = ['volume', 'select', volume['name'], 'access', 'create', 'initiator', connector['initiator']] if self.configuration.eqlx_use_chap: cmd.extend(['authmethod', 'chap', 'username', self.configuration.eqlx_chap_login]) self._eql_execute(*cmd) iscsi_properties = self._get_iscsi_properties(volume) return { 'driver_volume_type': 'iscsi', 'data': iscsi_properties } except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to initialize connection to volume %s'), volume['name']) def terminate_connection(self, volume, connector, force=False, **kwargs): """Remove access restrictions from a volume.""" try: self._eql_execute('volume', 'select', volume['name'], 'access', 'delete', '1') except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to terminate connection to volume %s'), volume['name']) def create_export(self, context, volume): """Create an export of a volume. Driver has nothing to do here for the volume has been exported already by the SAN, right after it's creation. """ pass def ensure_export(self, context, volume): """Ensure an export of a volume. Driver has nothing to do here for the volume has been exported already by the SAN, right after it's creation. We will just make sure that the volume exists on the array and issue a warning. """ try: self._check_volume(volume) except exception.VolumeNotFound: LOG.warn(_('Volume %s is not found!, it may have been deleted'), volume['name']) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to ensure export of volume %s'), volume['name']) def remove_export(self, context, volume): """Remove an export of a volume. Driver has nothing to do here for the volume has been exported already by the SAN, right after it's creation. Nothing to remove since there's nothing exported. """ pass def extend_volume(self, volume, new_size): """Extend the size of the volume.""" try: self._eql_execute('volume', 'select', volume['name'], 'size', "%sG" % new_size) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_('Failed to extend_volume %(name)s from ' '%(current_size)sGB to %(new_size)sGB'), {'name': volume['name'], 'current_size': volume['size'], 'new_size': new_size}) def local_path(self, volume): raise NotImplementedError() cinder-2014.1.5/cinder/volume/drivers/glusterfs.py0000664000567000056700000013347112540642606023207 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Red Hat, Inc. # All Rights Reserved. # # 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. import errno import hashlib import json import os import re import stat import tempfile import time from oslo.config import cfg from cinder.brick.remotefs import remotefs from cinder import compute from cinder import db from cinder import exception from cinder.image import image_utils from cinder.openstack.common import fileutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import units from cinder import utils from cinder.volume.drivers import nfs LOG = logging.getLogger(__name__) volume_opts = [ cfg.StrOpt('glusterfs_shares_config', default='/etc/cinder/glusterfs_shares', help='File with the list of available gluster shares'), cfg.BoolOpt('glusterfs_sparsed_volumes', default=True, help=('Create volumes as sparsed files which take no space.' 'If set to False volume is created as regular file.' 'In such case volume creation takes a lot of time.')), cfg.BoolOpt('glusterfs_qcow2_volumes', default=False, help=('Create volumes as QCOW2 files rather than raw files.')), cfg.StrOpt('glusterfs_mount_point_base', default='$state_path/mnt', help='Base dir containing mount points for gluster shares.'), ] CONF = cfg.CONF CONF.register_opts(volume_opts) CONF.import_opt('volume_name_template', 'cinder.db') class GlusterfsDriver(nfs.RemoteFsDriver): """Gluster based cinder driver. Creates file on Gluster share for using it as block device on hypervisor. Operations such as create/delete/extend volume/snapshot use locking on a per-process basis to prevent multiple threads from modifying qcow2 chains or the snapshot .info file simultaneously. """ driver_volume_type = 'glusterfs' driver_prefix = 'glusterfs' volume_backend_name = 'GlusterFS' VERSION = '1.1.1' def __init__(self, execute=processutils.execute, *args, **kwargs): self._remotefsclient = None super(GlusterfsDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(volume_opts) self._nova = None self.base = getattr(self.configuration, 'glusterfs_mount_point_base', CONF.glusterfs_mount_point_base) self._remotefsclient = remotefs.RemoteFsClient( 'glusterfs', execute, glusterfs_mount_point_base=self.base) def set_execute(self, execute): super(GlusterfsDriver, self).set_execute(execute) if self._remotefsclient: self._remotefsclient.set_execute(execute) def do_setup(self, context): """Any initialization the volume driver does while starting.""" super(GlusterfsDriver, self).do_setup(context) self._nova = compute.API() config = self.configuration.glusterfs_shares_config if not config: msg = (_("There's no Gluster config file configured (%s)") % 'glusterfs_shares_config') LOG.warn(msg) raise exception.GlusterfsException(msg) if not os.path.exists(config): msg = (_("Gluster config file at %(config)s doesn't exist") % {'config': config}) LOG.warn(msg) raise exception.GlusterfsException(msg) self.shares = {} try: self._execute('mount.glusterfs', check_exit_code=False) except OSError as exc: if exc.errno == errno.ENOENT: raise exception.GlusterfsException( _('mount.glusterfs is not installed')) else: raise self._ensure_shares_mounted() def check_for_setup_error(self): """Just to override parent behavior.""" pass def _local_volume_dir(self, volume): hashed = self._get_hash_str(volume['provider_location']) path = '%s/%s' % (self.configuration.glusterfs_mount_point_base, hashed) return path def _local_path_volume(self, volume): path_to_disk = '%s/%s' % ( self._local_volume_dir(volume), volume['name']) return path_to_disk def _local_path_volume_info(self, volume): return '%s%s' % (self._local_path_volume(volume), '.info') def _qemu_img_info_base(self, path, volume_name, basedir): """Sanitize image_utils' qemu_img_info. This code expects to deal only with relative filenames. """ info = image_utils.qemu_img_info(path) if info.image: info.image = os.path.basename(info.image) if info.backing_file: backing_file_template = \ "(%(basedir)s/[0-9a-f]+/)?%" \ "(volname)s(.(tmp-snap-)?[0-9a-f-]+)?$" % { 'basedir': basedir, 'volname': volume_name } if not re.match(backing_file_template, info.backing_file): msg = _("File %(path)s has invalid backing file " "%(bfile)s, aborting.") % {'path': path, 'bfile': info.backing_file} raise exception.GlusterfsException(msg) info.backing_file = os.path.basename(info.backing_file) return info def _qemu_img_info(self, path, volume_name): return self._qemu_img_info_base( path, volume_name, self.configuration.glusterfs_mount_point_base) def get_active_image_from_info(self, volume): """Returns filename of the active image from the info file.""" info_file = self._local_path_volume_info(volume) snap_info = self._read_info_file(info_file, empty_if_missing=True) if snap_info == {}: # No info file = no snapshots exist vol_path = os.path.basename(self._local_path_volume(volume)) return vol_path return snap_info['active'] @utils.synchronized('glusterfs', external=False) def create_cloned_volume(self, volume, src_vref): """Creates a clone of the specified volume.""" LOG.info(_('Cloning volume %(src)s to volume %(dst)s') % {'src': src_vref['id'], 'dst': volume['id']}) if src_vref['status'] != 'available': msg = _("Volume status must be 'available'.") raise exception.InvalidVolume(msg) volume_name = CONF.volume_name_template % volume['id'] volume_info = {'provider_location': src_vref['provider_location'], 'size': src_vref['size'], 'id': volume['id'], 'name': volume_name, 'status': src_vref['status']} temp_snapshot = {'volume_name': volume_name, 'size': src_vref['size'], 'volume_size': src_vref['size'], 'name': 'clone-snap-%s' % src_vref['id'], 'volume_id': src_vref['id'], 'id': 'tmp-snap-%s' % src_vref['id'], 'volume': src_vref} self._create_snapshot(temp_snapshot) try: self._copy_volume_from_snapshot(temp_snapshot, volume_info, src_vref['size']) finally: self._delete_snapshot(temp_snapshot) return {'provider_location': src_vref['provider_location']} @utils.synchronized('glusterfs', external=False) def create_volume(self, volume): """Creates a volume.""" self._ensure_shares_mounted() volume['provider_location'] = self._find_share(volume['size']) LOG.info(_('casted to %s') % volume['provider_location']) self._do_create_volume(volume) return {'provider_location': volume['provider_location']} @utils.synchronized('glusterfs', external=False) def create_volume_from_snapshot(self, volume, snapshot): """Creates a volume from a snapshot. Snapshot must not be the active snapshot. (offline) """ if snapshot['status'] != 'available': msg = _('Snapshot status must be "available" to clone.') raise exception.InvalidSnapshot(msg) self._ensure_shares_mounted() volume['provider_location'] = self._find_share(volume['size']) self._do_create_volume(volume) self._copy_volume_from_snapshot(snapshot, volume, snapshot['volume_size']) return {'provider_location': volume['provider_location']} def _copy_volume_from_snapshot(self, snapshot, volume, volume_size): """Copy data from snapshot to destination volume. This is done with a qemu-img convert to raw/qcow2 from the snapshot qcow2. """ LOG.debug(_("snapshot: %(snap)s, volume: %(vol)s, " "volume_size: %(size)s") % {'snap': snapshot['id'], 'vol': volume['id'], 'size': volume_size}) info_path = self._local_path_volume_info(snapshot['volume']) snap_info = self._read_info_file(info_path) vol_path = self._local_volume_dir(snapshot['volume']) forward_file = snap_info[snapshot['id']] forward_path = os.path.join(vol_path, forward_file) # Find the file which backs this file, which represents the point # when this snapshot was created. img_info = self._qemu_img_info(forward_path, snapshot['volume']['name']) path_to_snap_img = os.path.join(vol_path, img_info.backing_file) path_to_new_vol = self._local_path_volume(volume) LOG.debug(_("will copy from snapshot at %s") % path_to_snap_img) if self.configuration.glusterfs_qcow2_volumes: out_format = 'qcow2' else: out_format = 'raw' image_utils.convert_image(path_to_snap_img, path_to_new_vol, out_format) self._set_rw_permissions_for_all(path_to_new_vol) @utils.synchronized('glusterfs', external=False) def delete_volume(self, volume): """Deletes a logical volume.""" if not volume['provider_location']: LOG.warn(_('Volume %s does not have provider_location specified, ' 'skipping'), volume['name']) return self._ensure_share_mounted(volume['provider_location']) volume_dir = self._local_volume_dir(volume) mounted_path = os.path.join(volume_dir, self.get_active_image_from_info(volume)) self._execute('rm', '-f', mounted_path, run_as_root=True) info_path = self._local_path_volume_info(volume) fileutils.delete_if_exists(info_path) @utils.synchronized('glusterfs', external=False) def create_snapshot(self, snapshot): """Apply locking to the create snapshot operation.""" return self._create_snapshot(snapshot) def _create_snapshot(self, snapshot): """Create a snapshot. If volume is attached, call to Nova to create snapshot, providing a qcow2 file. Otherwise, create locally with qemu-img. A file named volume-.info is stored with the volume data and is a JSON table which contains a mapping between Cinder snapshot UUIDs and filenames, as these associations will change as snapshots are deleted. Basic snapshot operation: 1. Initial volume file: volume-1234 2. Snapshot created: volume-1234 <- volume-1234.aaaa volume-1234.aaaa becomes the new "active" disk image. If the volume is not attached, this filename will be used to attach the volume to a VM at volume-attach time. If the volume is attached, the VM will switch to this file as part of the snapshot process. Note that volume-1234.aaaa represents changes after snapshot 'aaaa' was created. So the data for snapshot 'aaaa' is actually in the backing file(s) of volume-1234.aaaa. This file has a qcow2 header recording the fact that volume-1234 is its backing file. Delta changes since the snapshot was created are stored in this file, and the backing file (volume-1234) does not change. info file: { 'active': 'volume-1234.aaaa', 'aaaa': 'volume-1234.aaaa' } 3. Second snapshot created: volume-1234 <- volume-1234.aaaa <- volume-1234.bbbb volume-1234.bbbb now becomes the "active" disk image, recording changes made to the volume. info file: { 'active': 'volume-1234.bbbb', 'aaaa': 'volume-1234.aaaa', 'bbbb': 'volume-1234.bbbb' } 4. First snapshot deleted: volume-1234 <- volume-1234.aaaa(* now with bbbb's data) volume-1234.aaaa is removed (logically) from the snapshot chain. The data from volume-1234.bbbb is merged into it. (*) Since bbbb's data was committed into the aaaa file, we have "removed" aaaa's snapshot point but the .aaaa file now represents snapshot with id "bbbb". info file: { 'active': 'volume-1234.bbbb', 'bbbb': 'volume-1234.aaaa' (* changed!) } 5. Second snapshot deleted: volume-1234 volume-1234.bbbb is removed from the snapshot chain, as above. The base image, volume-1234, becomes the active image for this volume again. If in-use, the VM begins using the volume-1234.bbbb file immediately as part of the snapshot delete process. info file: { 'active': 'volume-1234' } For the above operations, Cinder handles manipulation of qcow2 files when the volume is detached. When attached, Cinder creates and deletes qcow2 files, but Nova is responsible for transitioning the VM between them and handling live transfers of data between files as required. """ status = snapshot['volume']['status'] if status not in ['available', 'in-use']: msg = _('Volume status must be "available" or "in-use"' ' for snapshot. (is %s)') % status raise exception.InvalidVolume(msg) if status == 'in-use': # Perform online snapshot via Nova context = snapshot['context'] backing_filename = self.get_active_image_from_info( snapshot['volume']) path_to_disk = self._local_path_volume(snapshot['volume']) new_snap_path = '%s.%s' % ( self._local_path_volume(snapshot['volume']), snapshot['id']) self._create_qcow2_snap_file(snapshot, backing_filename, new_snap_path) connection_info = { 'type': 'qcow2', 'new_file': os.path.basename(new_snap_path), 'snapshot_id': snapshot['id'] } try: result = self._nova.create_volume_snapshot( context, snapshot['volume_id'], connection_info) LOG.debug(_('nova call result: %s') % result) except Exception as e: LOG.error(_('Call to Nova to create snapshot failed')) LOG.exception(e) raise e # Loop and wait for result # Nova will call Cinderclient to update the status in the database # An update of progress = '90%' means that Nova is done seconds_elapsed = 0 increment = 1 timeout = 600 while True: s = db.snapshot_get(context, snapshot['id']) if s['status'] == 'creating': if s['progress'] == '90%': # Nova tasks completed successfully break time.sleep(increment) seconds_elapsed += increment elif s['status'] == 'error': msg = _('Nova returned "error" status ' 'while creating snapshot.') raise exception.GlusterfsException(msg) LOG.debug(_('Status of snapshot %(id)s is now %(status)s') % { 'id': snapshot['id'], 'status': s['status'] }) if 10 < seconds_elapsed <= 20: increment = 2 elif 20 < seconds_elapsed <= 60: increment = 5 elif 60 < seconds_elapsed: increment = 10 if seconds_elapsed > timeout: msg = _('Timed out while waiting for Nova update ' 'for creation of snapshot %s.') % snapshot['id'] raise exception.GlusterfsException(msg) info_path = self._local_path_volume(snapshot['volume']) + '.info' snap_info = self._read_info_file(info_path, empty_if_missing=True) snap_info['active'] = os.path.basename(new_snap_path) snap_info[snapshot['id']] = os.path.basename(new_snap_path) self._write_info_file(info_path, snap_info) return LOG.debug(_('create snapshot: %s') % snapshot) LOG.debug(_('volume id: %s') % snapshot['volume_id']) path_to_disk = self._local_path_volume(snapshot['volume']) self._create_snapshot_offline(snapshot, path_to_disk) def _create_qcow2_snap_file(self, snapshot, backing_filename, new_snap_path): """Create a QCOW2 file backed by another file. :param snapshot: snapshot reference :param backing_filename: filename of file that will back the new qcow2 file :param new_snap_path: filename of new qcow2 file """ backing_path_full_path = '%s/%s' % ( self._local_volume_dir(snapshot['volume']), backing_filename) command = ['qemu-img', 'create', '-f', 'qcow2', '-o', 'backing_file=%s' % backing_path_full_path, new_snap_path] self._execute(*command, run_as_root=True) info = self._qemu_img_info(backing_path_full_path, snapshot['volume']['name']) backing_fmt = info.file_format command = ['qemu-img', 'rebase', '-u', '-b', backing_filename, '-F', backing_fmt, new_snap_path] self._execute(*command, run_as_root=True) self._set_rw_permissions_for_all(new_snap_path) def _create_snapshot_offline(self, snapshot, path_to_disk): """Create snapshot (offline case).""" # Requires volume status = 'available' new_snap_path = '%s.%s' % (path_to_disk, snapshot['id']) backing_filename = self.get_active_image_from_info(snapshot['volume']) self._create_qcow2_snap_file(snapshot, backing_filename, new_snap_path) # Update info file info_path = self._local_path_volume_info(snapshot['volume']) snap_info = self._read_info_file(info_path, empty_if_missing=True) snap_info['active'] = os.path.basename(new_snap_path) snap_info[snapshot['id']] = os.path.basename(new_snap_path) self._write_info_file(info_path, snap_info) def _read_file(self, filename): """This method is to make it easier to stub out code for testing. Returns a string representing the contents of the file. """ with open(filename, 'r') as f: return f.read() def _read_info_file(self, info_path, empty_if_missing=False): """Return dict of snapshot information.""" if not os.path.exists(info_path): if empty_if_missing is True: return {} return json.loads(self._read_file(info_path)) def _write_info_file(self, info_path, snap_info): if 'active' not in snap_info.keys(): msg = _("'active' must be present when writing snap_info.") raise exception.GlusterfsException(msg) with open(info_path, 'w') as f: json.dump(snap_info, f, indent=1, sort_keys=True) def _get_matching_backing_file(self, backing_chain, snapshot_file): return next(f for f in backing_chain if f.get('backing-filename', '') == snapshot_file) @utils.synchronized('glusterfs', external=False) def delete_snapshot(self, snapshot): """Apply locking to the delete snapshot operation.""" self._delete_snapshot(snapshot) def _delete_snapshot(self, snapshot): """Delete a snapshot. If volume status is 'available', delete snapshot here in Cinder using qemu-img. If volume status is 'in-use', calculate what qcow2 files need to merge, and call to Nova to perform this operation. :raises: InvalidVolume if status not acceptable :raises: GlusterfsException(msg) if operation fails :returns: None """ LOG.debug(_('deleting snapshot %s') % snapshot['id']) volume_status = snapshot['volume']['status'] if volume_status not in ['available', 'in-use']: msg = _('Volume status must be "available" or "in-use".') raise exception.InvalidVolume(msg) self._ensure_share_writable( self._local_volume_dir(snapshot['volume'])) # Determine the true snapshot file for this snapshot # based on the .info file info_path = self._local_path_volume(snapshot['volume']) + '.info' snap_info = self._read_info_file(info_path, empty_if_missing=True) if snapshot['id'] not in snap_info: # If snapshot info file is present, but snapshot record does not # exist, do not attempt to delete. # (This happens, for example, if snapshot_create failed due to lack # of permission to write to the share.) LOG.info(_('Snapshot record for %s is not present, allowing ' 'snapshot_delete to proceed.') % snapshot['id']) return snapshot_file = snap_info[snapshot['id']] LOG.debug(_('snapshot_file for this snap is %s') % snapshot_file) snapshot_path = '%s/%s' % (self._local_volume_dir(snapshot['volume']), snapshot_file) snapshot_path_img_info = self._qemu_img_info( snapshot_path, snapshot['volume']['name']) vol_path = self._local_volume_dir(snapshot['volume']) # Find what file has this as its backing file active_file = self.get_active_image_from_info(snapshot['volume']) active_file_path = '%s/%s' % (vol_path, active_file) if volume_status == 'in-use': # Online delete context = snapshot['context'] base_file = snapshot_path_img_info.backing_file if base_file is None: # There should always be at least the original volume # file as base. msg = _('No base file found for %s.') % snapshot_path raise exception.GlusterfsException(msg) base_path = os.path.join( self._local_volume_dir(snapshot['volume']), base_file) base_file_img_info = self._qemu_img_info( base_path, snapshot['volume']['name']) new_base_file = base_file_img_info.backing_file base_id = None info_path = self._local_path_volume(snapshot['volume']) + '.info' snap_info = self._read_info_file(info_path) for key, value in snap_info.iteritems(): if value == base_file and key != 'active': base_id = key break if base_id is None: # This means we are deleting the oldest snapshot msg = _('No %(base_id)s found for %(file)s') % { 'base_id': 'base_id', 'file': snapshot_file} LOG.debug(msg) online_delete_info = { 'active_file': active_file, 'snapshot_file': snapshot_file, 'base_file': base_file, 'base_id': base_id, 'new_base_file': new_base_file } return self._delete_snapshot_online(context, snapshot, online_delete_info) if snapshot_file == active_file: # Need to merge snapshot_file into its backing file # There is no top file # T0 | T1 | # base | snapshot_file | None # (guaranteed to| (being deleted) | # exist) | | base_file = snapshot_path_img_info.backing_file self._qemu_img_commit(snapshot_path) self._execute('rm', '-f', snapshot_path, run_as_root=True) # Remove snapshot_file from info info_path = self._local_path_volume(snapshot['volume']) + '.info' snap_info = self._read_info_file(info_path) del(snap_info[snapshot['id']]) # Active file has changed snap_info['active'] = base_file self._write_info_file(info_path, snap_info) else: # T0 | T1 | T2 | T3 # base | snapshot_file | higher_file | highest_file #(guaranteed to | (being deleted)|(guaranteed to | (may exist, # exist, not | | exist, being |needs ptr update # used here) | | committed down)| if so) backing_chain = self._get_backing_chain_for_path( snapshot['volume'], active_file_path) # This file is guaranteed to exist since we aren't operating on # the active file. higher_file = next((os.path.basename(f['filename']) for f in backing_chain if f.get('backing-filename', '') == snapshot_file), None) if higher_file is None: msg = _('No file found with %s as backing file.') %\ snapshot_file raise exception.GlusterfsException(msg) snap_info = self._read_info_file(info_path) higher_id = next((i for i in snap_info if snap_info[i] == higher_file and i != 'active'), None) if higher_id is None: msg = _('No snap found with %s as backing file.') %\ higher_file raise exception.GlusterfsException(msg) # Is there a file depending on higher_file? highest_file = next((os.path.basename(f['filename']) for f in backing_chain if f.get('backing-filename', '') == higher_file), None) if highest_file is None: msg = _('No file depends on %s.') % higher_file LOG.debug(msg) # Committing higher_file into snapshot_file # And update pointer in highest_file higher_file_path = '%s/%s' % (vol_path, higher_file) self._qemu_img_commit(higher_file_path) if highest_file is not None: highest_file_path = '%s/%s' % (vol_path, highest_file) info = self._qemu_img_info(snapshot_path, snapshot['volume']['name']) snapshot_file_fmt = info.file_format backing_fmt = ('-F', snapshot_file_fmt) self._execute('qemu-img', 'rebase', '-u', '-b', snapshot_file, highest_file_path, *backing_fmt, run_as_root=True) self._execute('rm', '-f', higher_file_path, run_as_root=True) # Remove snapshot_file from info info_path = self._local_path_volume(snapshot['volume']) + '.info' snap_info = self._read_info_file(info_path) del(snap_info[snapshot['id']]) snap_info[higher_id] = snapshot_file if higher_file == active_file: if highest_file is not None: msg = _('Check condition failed: ' '%s expected to be None.') % 'highest_file' raise exception.GlusterfsException(msg) # Active file has changed snap_info['active'] = snapshot_file self._write_info_file(info_path, snap_info) def _delete_snapshot_online(self, context, snapshot, info): # Update info over the course of this method # active file never changes info_path = self._local_path_volume(snapshot['volume']) + '.info' snap_info = self._read_info_file(info_path) if info['active_file'] == info['snapshot_file']: # blockRebase/Pull base into active # info['base'] => snapshot_file file_to_delete = info['base_file'] if info['base_id'] is None: # Passing base=none to blockRebase ensures that # libvirt blanks out the qcow2 backing file pointer new_base = None else: new_base = info['new_base_file'] snap_info[info['base_id']] = info['snapshot_file'] delete_info = {'file_to_merge': new_base, 'merge_target_file': None, # current 'type': 'qcow2', 'volume_id': snapshot['volume']['id']} del(snap_info[snapshot['id']]) else: # blockCommit snapshot into base # info['base'] <= snapshot_file # delete record of snapshot file_to_delete = info['snapshot_file'] delete_info = {'file_to_merge': info['snapshot_file'], 'merge_target_file': info['base_file'], 'type': 'qcow2', 'volume_id': snapshot['volume']['id']} del(snap_info[snapshot['id']]) try: self._nova.delete_volume_snapshot( context, snapshot['id'], delete_info) except Exception as e: LOG.error(_('Call to Nova delete snapshot failed')) LOG.exception(e) raise e # Loop and wait for result # Nova will call Cinderclient to update the status in the database # An update of progress = '90%' means that Nova is done seconds_elapsed = 0 increment = 1 timeout = 7200 while True: s = db.snapshot_get(context, snapshot['id']) if s['status'] == 'deleting': if s['progress'] == '90%': # Nova tasks completed successfully break else: msg = _('status of snapshot %s is ' 'still "deleting"... waiting') % snapshot['id'] LOG.debug(msg) time.sleep(increment) seconds_elapsed += increment else: msg = _('Unable to delete snapshot %(id)s, ' 'status: %(status)s.') % {'id': snapshot['id'], 'status': s['status']} raise exception.GlusterfsException(msg) if 10 < seconds_elapsed <= 20: increment = 2 elif 20 < seconds_elapsed <= 60: increment = 5 elif 60 < seconds_elapsed: increment = 10 if seconds_elapsed > timeout: msg = _('Timed out while waiting for Nova update ' 'for deletion of snapshot %(id)s.') %\ {'id': snapshot['id']} raise exception.GlusterfsException(msg) # Write info file updated above self._write_info_file(info_path, snap_info) # Delete stale file path_to_delete = os.path.join( self._local_volume_dir(snapshot['volume']), file_to_delete) self._execute('rm', '-f', path_to_delete, run_as_root=True) def _get_backing_chain_for_path(self, volume, path): """Returns list of dicts containing backing-chain information. Includes 'filename', and 'backing-filename' for each applicable entry. Consider converting this to use --backing-chain and --output=json when environment supports qemu-img 1.5.0. :param volume: volume reference :param path: path to image file at top of chain """ output = [] info = self._qemu_img_info(path, volume['name']) new_info = {} new_info['filename'] = os.path.basename(path) new_info['backing-filename'] = info.backing_file output.append(new_info) while new_info['backing-filename']: filename = new_info['backing-filename'] path = os.path.join(self._local_volume_dir(volume), filename) info = self._qemu_img_info(path, volume['name']) backing_filename = info.backing_file new_info = {} new_info['filename'] = filename new_info['backing-filename'] = backing_filename output.append(new_info) return output def _qemu_img_commit(self, path): return self._execute('qemu-img', 'commit', path, run_as_root=True) def ensure_export(self, ctx, volume): """Synchronously recreates an export for a logical volume.""" self._ensure_share_mounted(volume['provider_location']) def create_export(self, ctx, volume): """Exports the volume.""" pass def remove_export(self, ctx, volume): """Removes an export for a logical volume.""" pass def validate_connector(self, connector): pass @utils.synchronized('glusterfs', external=False) def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info.""" # Find active qcow2 file active_file = self.get_active_image_from_info(volume) path = '%s/%s/%s' % (self.configuration.glusterfs_mount_point_base, self._get_hash_str(volume['provider_location']), active_file) data = {'export': volume['provider_location'], 'name': active_file} if volume['provider_location'] in self.shares: data['options'] = self.shares[volume['provider_location']] # Test file for raw vs. qcow2 format info = self._qemu_img_info(path, volume['name']) data['format'] = info.file_format if data['format'] not in ['raw', 'qcow2']: msg = _('%s must be a valid raw or qcow2 image.') % path raise exception.InvalidVolume(msg) return { 'driver_volume_type': 'glusterfs', 'data': data, 'mount_point_base': self._get_mount_point_base() } def terminate_connection(self, volume, connector, **kwargs): """Disallow connection from connector.""" pass @utils.synchronized('glusterfs', external=False) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" # If snapshots exist, flatten to a temporary image, and upload it active_file = self.get_active_image_from_info(volume) active_file_path = '%s/%s' % (self._local_volume_dir(volume), active_file) info = self._qemu_img_info(active_file_path, volume['name']) backing_file = info.backing_file if backing_file: snapshots_exist = True else: snapshots_exist = False root_file_fmt = info.file_format temp_path = None try: if snapshots_exist or (root_file_fmt != 'raw'): # Convert due to snapshots # or volume data not being stored in raw format # (upload_volume assumes raw format input) temp_path = '%s/%s.temp_image.%s' % ( self._local_volume_dir(volume), volume['id'], image_meta['id']) image_utils.convert_image(active_file_path, temp_path, 'raw') upload_path = temp_path else: upload_path = active_file_path image_utils.upload_volume(context, image_service, image_meta, upload_path) finally: if temp_path is not None: self._execute('rm', '-f', temp_path) @utils.synchronized('glusterfs', external=False) def extend_volume(self, volume, size_gb): volume_path = self.local_path(volume) volume_filename = os.path.basename(volume_path) # Ensure no snapshots exist for the volume active_image = self.get_active_image_from_info(volume) if volume_filename != active_image: msg = _('Extend volume is only supported for this' ' driver when no snapshots exist.') raise exception.InvalidVolume(msg) info = self._qemu_img_info(volume_path, volume['name']) backing_fmt = info.file_format if backing_fmt not in ['raw', 'qcow2']: msg = _('Unrecognized backing format: %s') raise exception.InvalidVolume(msg % backing_fmt) # qemu-img can resize both raw and qcow2 files image_utils.resize_image(volume_path, size_gb) def _do_create_volume(self, volume): """Create a volume on given glusterfs_share. :param volume: volume reference """ volume_path = self.local_path(volume) volume_size = volume['size'] LOG.debug(_("creating new volume at %s") % volume_path) if os.path.exists(volume_path): msg = _('file already exists at %s') % volume_path LOG.error(msg) raise exception.InvalidVolume(reason=msg) if self.configuration.glusterfs_qcow2_volumes: self._create_qcow2_file(volume_path, volume_size) else: if self.configuration.glusterfs_sparsed_volumes: self._create_sparsed_file(volume_path, volume_size) else: self._create_regular_file(volume_path, volume_size) self._set_rw_permissions_for_all(volume_path) def _ensure_shares_mounted(self): """Mount all configured GlusterFS shares.""" self._mounted_shares = [] self._load_shares_config(self.configuration.glusterfs_shares_config) for share in self.shares.keys(): try: self._ensure_share_mounted(share) self._mounted_shares.append(share) except Exception as exc: LOG.warning(_('Exception during mounting %s') % (exc,)) LOG.debug(_('Available shares: %s') % self._mounted_shares) def _ensure_share_writable(self, path): """Ensure that the Cinder user can write to the share. If not, raise an exception. :param path: path to test :raises: GlusterfsException :returns: None """ prefix = '.cinder-write-test-' + str(os.getpid()) + '-' try: tempfile.NamedTemporaryFile(prefix=prefix, dir=path) except OSError: msg = _('GlusterFS share at %(dir)s is not writable by the ' 'Cinder volume service. Snapshot operations will not be ' 'supported.') % {'dir': path} raise exception.GlusterfsException(msg) def _ensure_share_mounted(self, glusterfs_share): """Mount GlusterFS share. :param glusterfs_share: string """ mount_path = self._get_mount_point_for_share(glusterfs_share) self._mount_glusterfs(glusterfs_share, mount_path, ensure=True) # Ensure we can write to this share group_id = os.getegid() current_group_id = utils.get_file_gid(mount_path) current_mode = utils.get_file_mode(mount_path) if group_id != current_group_id: cmd = ['chgrp', group_id, mount_path] self._execute(*cmd, run_as_root=True) if not (current_mode & stat.S_IWGRP): cmd = ['chmod', 'g+w', mount_path] self._execute(*cmd, run_as_root=True) self._ensure_share_writable(mount_path) def _find_share(self, volume_size_for): """Choose GlusterFS share among available ones for given volume size. Current implementation looks for greatest capacity. :param volume_size_for: int size in GB """ if not self._mounted_shares: raise exception.GlusterfsNoSharesMounted() greatest_size = 0 greatest_share = None for glusterfs_share in self._mounted_shares: capacity = self._get_available_capacity(glusterfs_share)[0] if capacity > greatest_size: greatest_share = glusterfs_share greatest_size = capacity if volume_size_for * units.GiB > greatest_size: raise exception.GlusterfsNoSuitableShareFound( volume_size=volume_size_for) return greatest_share def _get_hash_str(self, base_str): """Return a string that represents hash of base_str (in a hex format). """ return hashlib.md5(base_str).hexdigest() def _get_mount_point_for_share(self, glusterfs_share): """Return mount point for share. :param glusterfs_share: example 172.18.194.100:/var/glusterfs """ return self._remotefsclient.get_mount_point(glusterfs_share) def _get_available_capacity(self, glusterfs_share): """Calculate available space on the GlusterFS share. :param glusterfs_share: example 172.18.194.100:/var/glusterfs """ mount_point = self._get_mount_point_for_share(glusterfs_share) out, _ = self._execute('df', '--portability', '--block-size', '1', mount_point, run_as_root=True) out = out.splitlines()[1] size = int(out.split()[1]) available = int(out.split()[3]) return available, size def _get_capacity_info(self, glusterfs_share): available, size = self._get_available_capacity(glusterfs_share) return size, available, size - available def _mount_glusterfs(self, glusterfs_share, mount_path, ensure=False): """Mount GlusterFS share to mount path.""" self._execute('mkdir', '-p', mount_path) command = ['mount', '-t', 'glusterfs', glusterfs_share, mount_path] if self.shares.get(glusterfs_share) is not None: command.extend(self.shares[glusterfs_share].split()) self._do_mount(command, ensure, glusterfs_share) def _get_mount_point_base(self): return self.base def backup_volume(self, context, backup, backup_service): """Create a new backup from an existing volume. Allow a backup to occur only if no snapshots exist. Check both Cinder and the file on-disk. The latter is only a safety mechanism to prevent further damage if the snapshot information is already inconsistent. """ snapshots = self.db.snapshot_get_all_for_volume(context, backup['volume_id']) snap_error_msg = _('Backup is not supported for GlusterFS ' 'volumes with snapshots.') if len(snapshots) > 0: raise exception.InvalidVolume(snap_error_msg) volume = self.db.volume_get(context, backup['volume_id']) volume_dir = self._local_volume_dir(volume) active_file_path = os.path.join( volume_dir, self.get_active_image_from_info(volume)) info = self._qemu_img_info(active_file_path, volume['name']) if info.backing_file is not None: msg = _('No snapshots found in database, but ' '%(path)s has backing file ' '%(backing_file)s!') % {'path': active_file_path, 'backing_file': info.backing_file} LOG.error(msg) raise exception.InvalidVolume(snap_error_msg) if info.file_format != 'raw': msg = _('Backup is only supported for raw-formatted ' 'GlusterFS volumes.') raise exception.InvalidVolume(msg) return super(GlusterfsDriver, self).backup_volume( context, backup, backup_service) cinder-2014.1.5/cinder/volume/drivers/block_device.py0000664000567000056700000002014412540642606023572 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Mirantis, Inc. # All Rights Reserved. # # 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. import os from oslo.config import cfg from cinder import context from cinder.db.sqlalchemy import api from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.volume import driver from cinder.volume import utils as volutils LOG = logging.getLogger(__name__) volume_opts = [ cfg.ListOpt('available_devices', default=[], help='List of all available devices'), ] CONF = cfg.CONF CONF.register_opts(volume_opts) class BlockDeviceDriver(driver.ISCSIDriver): VERSION = '1.0.0' def __init__(self, *args, **kwargs): self.target_helper = self.get_target_helper(kwargs.get('db')) super(BlockDeviceDriver, self).__init__(*args, **kwargs) self.configuration.append_config_values(volume_opts) def set_execute(self, execute): super(BlockDeviceDriver, self).set_execute(execute) if self.target_helper is not None: self.target_helper.set_execute(execute) def check_for_setup_error(self): pass def create_volume(self, volume): device = self.find_appropriate_size_device(volume['size']) LOG.info("Create %s on %s" % (volume['name'], device)) return { 'provider_location': device, } def initialize_connection(self, volume, connector): if connector['host'] != volume['host']: return super(BlockDeviceDriver, self). \ initialize_connection(volume, connector) else: return { 'driver_volume_type': 'local', 'data': {'device_path': self.local_path(volume)}, } def terminate_connection(self, volume, connector, **kwargs): pass def create_export(self, context, volume): """Creates an export for a logical volume.""" volume_path = self.local_path(volume) data = self.target_helper.create_export(context, volume, volume_path) return { 'provider_location': data['location'] + ' ' + volume_path, 'provider_auth': data['auth'], } def remove_export(self, context, volume): self.target_helper.remove_export(context, volume) def ensure_export(self, context, volume): volume_name = volume['name'] iscsi_name = "%s%s" % (self.configuration.iscsi_target_prefix, volume_name) volume_path = self.local_path(volume) # NOTE(jdg): For TgtAdm case iscsi_name is the ONLY param we need # should clean this all up at some point in the future self.target_helper.ensure_export(context, volume, iscsi_name, volume_path) def delete_volume(self, volume): """Deletes a logical volume.""" dev_path = self.local_path(volume) if not dev_path or dev_path not in \ self.configuration.available_devices: return if os.path.exists(dev_path) and \ self.configuration.volume_clear != 'none': volutils.clear_volume( self._get_device_size(dev_path), dev_path, volume_clear=self.configuration.volume_clear, volume_clear_size=self.configuration.volume_clear_size) def local_path(self, volume): if volume['provider_location']: path = volume['provider_location'].rsplit(" ", 1) return path[-1] else: return None def copy_image_to_volume(self, context, volume, image_service, image_id): """Fetch the image from image_service and write it to the volume.""" image_utils.fetch_to_raw(context, image_service, image_id, self.local_path(volume), self.configuration.volume_dd_blocksize, size=volume['size']) def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image.""" image_utils.upload_volume(context, image_service, image_meta, self.local_path(volume)) def create_cloned_volume(self, volume, src_vref): LOG.info(_('Creating clone of volume: %s') % src_vref['id']) device = self.find_appropriate_size_device(src_vref['size']) volutils.copy_volume( self.local_path(src_vref), device, self._get_device_size(device) * 2048, self.configuration.volume_dd_blocksize, execute=self._execute) return { 'provider_location': device, } def get_volume_stats(self, refresh=False): if refresh: self._update_volume_stats() return self._stats def _update_volume_stats(self): """Retrieve stats info from volume group.""" dict_of_devices_sizes = self._devices_sizes() used_devices = self._get_used_devices() total_size = 0 free_size = 0 for device, size in dict_of_devices_sizes.iteritems(): if device not in used_devices: free_size += size total_size += size LOG.debug("Updating volume stats") backend_name = self.configuration.safe_get('volume_backend_name') data = {'total_capacity_gb': total_size / 1024, 'free_capacity_gb': free_size / 1024, 'reserved_percentage': self.configuration.reserved_percentage, 'QoS_support': False, 'volume_backend_name': backend_name or self.__class__.__name__, 'vendor_name': "Open Source", 'driver_version': self.VERSION, 'storage_protocol': 'unknown'} self._stats = data def _get_used_devices(self): lst = api.volume_get_all_by_host(context.get_admin_context(), self.host) used_devices = set() for volume in lst: local_path = self.local_path(volume) if local_path: used_devices.add(local_path) return used_devices def _get_device_size(self, dev_path): out, err = self._execute('blockdev', '--getsz', dev_path, run_as_root=True) size_in_m = int(out) return size_in_m / 2048 def _devices_sizes(self): available_devices = self.configuration.available_devices dict_of_devices_sizes = {} for device in available_devices: dict_of_devices_sizes[device] = self._get_device_size(device) return dict_of_devices_sizes def find_appropriate_size_device(self, size): dict_of_devices_sizes = self._devices_sizes() free_devices = (set(self.configuration.available_devices) - self._get_used_devices()) if not free_devices: raise exception.CinderException(_("No free disk")) possible_device = None possible_device_size = None for device in free_devices: dev_size = dict_of_devices_sizes[device] if size * 1024 <= dev_size and (possible_device is None or dev_size < possible_device_size): possible_device = device possible_device_size = dev_size if possible_device: return possible_device else: raise exception.CinderException(_("No big enough free disk")) cinder-2014.1.5/cinder/volume/utils.py0000664000567000056700000001606712540642606020654 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # 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. """Volume-related Utilities and helpers.""" import math from oslo.config import cfg from cinder.brick.local_dev import lvm as brick_lvm from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder.openstack.common import strutils from cinder import rpc from cinder import units from cinder import utils CONF = cfg.CONF LOG = logging.getLogger(__name__) def null_safe_str(s): return str(s) if s else '' def _usage_from_volume(context, volume_ref, **kw): usage_info = dict(tenant_id=volume_ref['project_id'], user_id=volume_ref['user_id'], availability_zone=volume_ref['availability_zone'], volume_id=volume_ref['id'], volume_type=volume_ref['volume_type_id'], display_name=volume_ref['display_name'], launched_at=null_safe_str(volume_ref['launched_at']), created_at=null_safe_str(volume_ref['created_at']), status=volume_ref['status'], snapshot_id=volume_ref['snapshot_id'], size=volume_ref['size']) usage_info.update(kw) return usage_info def notify_about_volume_usage(context, volume, event_suffix, extra_usage_info=None, host=None): if not host: host = CONF.host if not extra_usage_info: extra_usage_info = {} usage_info = _usage_from_volume(context, volume, **extra_usage_info) rpc.get_notifier("volume", host).info(context, 'volume.%s' % event_suffix, usage_info) def _usage_from_snapshot(context, snapshot_ref, **extra_usage_info): usage_info = { 'tenant_id': snapshot_ref['project_id'], 'user_id': snapshot_ref['user_id'], 'availability_zone': snapshot_ref.volume['availability_zone'], 'volume_id': snapshot_ref['volume_id'], 'volume_size': snapshot_ref['volume_size'], 'snapshot_id': snapshot_ref['id'], 'display_name': snapshot_ref['display_name'], 'created_at': str(snapshot_ref['created_at']), 'status': snapshot_ref['status'], 'deleted': null_safe_str(snapshot_ref['deleted']) } usage_info.update(extra_usage_info) return usage_info def notify_about_snapshot_usage(context, snapshot, event_suffix, extra_usage_info=None, host=None): if not host: host = CONF.host if not extra_usage_info: extra_usage_info = {} usage_info = _usage_from_snapshot(context, snapshot, **extra_usage_info) rpc.get_notifier('snapshot', host).info(context, 'snapshot.%s' % event_suffix, usage_info) def _calculate_count(size_in_m, blocksize): # Check if volume_dd_blocksize is valid try: # Rule out zero-sized/negative/float dd blocksize which # cannot be caught by strutils if blocksize.startswith(('-', '0')) or '.' in blocksize: raise ValueError bs = strutils.string_to_bytes('%sB' % blocksize) except ValueError: msg = (_("Incorrect value error: %(blocksize)s, " "it may indicate that \'volume_dd_blocksize\' " "was configured incorrectly. Fall back to default.") % {'blocksize': blocksize}) LOG.warn(msg) # Fall back to default blocksize CONF.clear_override('volume_dd_blocksize') blocksize = CONF.volume_dd_blocksize bs = strutils.string_to_bytes('%sB' % blocksize) count = math.ceil(size_in_m * units.MiB / bs) return blocksize, int(count) def copy_volume(srcstr, deststr, size_in_m, blocksize, sync=False, execute=utils.execute, ionice=None): # Use O_DIRECT to avoid thrashing the system buffer cache extra_flags = ['iflag=direct', 'oflag=direct'] # Check whether O_DIRECT is supported try: execute('dd', 'count=0', 'if=%s' % srcstr, 'of=%s' % deststr, *extra_flags, run_as_root=True) except processutils.ProcessExecutionError: extra_flags = [] # If the volume is being unprovisioned then # request the data is persisted before returning, # so that it's not discarded from the cache. if sync and not extra_flags: extra_flags.append('conv=fdatasync') blocksize, count = _calculate_count(size_in_m, blocksize) cmd = ['dd', 'if=%s' % srcstr, 'of=%s' % deststr, 'count=%d' % count, 'bs=%s' % blocksize] cmd.extend(extra_flags) if ionice is not None: cmd = ['ionice', ionice] + cmd # Perform the copy execute(*cmd, run_as_root=True) def clear_volume(volume_size, volume_path, volume_clear=None, volume_clear_size=None, volume_clear_ionice=None): """Unprovision old volumes to prevent data leaking between users.""" if volume_clear is None: volume_clear = CONF.volume_clear if volume_clear_size is None: volume_clear_size = CONF.volume_clear_size if volume_clear_size == 0: volume_clear_size = volume_size if volume_clear_ionice is None: volume_clear_ionice = CONF.volume_clear_ionice LOG.info(_("Performing secure delete on volume: %s") % volume_path) if volume_clear == 'zero': return copy_volume('/dev/zero', volume_path, volume_clear_size, CONF.volume_dd_blocksize, sync=True, execute=utils.execute, ionice=volume_clear_ionice) elif volume_clear == 'shred': clear_cmd = ['shred', '-n3'] if volume_clear_size: clear_cmd.append('-s%dMiB' % volume_clear_size) else: raise exception.InvalidConfigurationValue( option='volume_clear', value=volume_clear) clear_cmd.append(volume_path) utils.execute(*clear_cmd, run_as_root=True) def supports_thin_provisioning(): return brick_lvm.LVM.supports_thin_provisioning( utils.get_root_helper()) def get_all_volumes(vg_name=None): return brick_lvm.LVM.get_all_volumes( utils.get_root_helper(), vg_name) def get_all_physical_volumes(vg_name=None): return brick_lvm.LVM.get_all_physical_volumes( utils.get_root_helper(), vg_name) def get_all_volume_groups(vg_name=None): return brick_lvm.LVM.get_all_volume_groups( utils.get_root_helper(), vg_name) cinder-2014.1.5/cinder/service.py0000775000567000056700000003525012540642606017643 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """Generic Node base class for all workers that run on hosts.""" import inspect import os import random from oslo.config import cfg from oslo import messaging from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder.openstack.common import service from cinder import rpc from cinder import version from cinder import wsgi LOG = logging.getLogger(__name__) service_opts = [ cfg.IntOpt('report_interval', default=10, help='seconds between nodes reporting state to datastore'), cfg.IntOpt('periodic_interval', default=60, help='seconds between running periodic tasks'), cfg.IntOpt('periodic_fuzzy_delay', default=60, help='range of seconds to randomly delay when starting the' ' periodic task scheduler to reduce stampeding.' ' (Disable by setting to 0)'), cfg.StrOpt('osapi_volume_listen', default="0.0.0.0", help='IP address for OpenStack Volume API to listen'), cfg.IntOpt('osapi_volume_listen_port', default=8776, help='port for os volume api to listen'), cfg.IntOpt('osapi_volume_workers', help='Number of workers for OpenStack Volume API service'), ] CONF = cfg.CONF CONF.register_opts(service_opts) class Service(service.Service): """Service object for binaries running on hosts. A service takes a manager and enables rpc by listening to queues based on topic. It also periodically runs tasks on the manager and reports it state to the database services table. """ def __init__(self, host, binary, topic, manager, report_interval=None, periodic_interval=None, periodic_fuzzy_delay=None, service_name=None, *args, **kwargs): super(Service, self).__init__() if not rpc.initialized(): rpc.init(CONF) self.host = host self.binary = binary self.topic = topic self.manager_class_name = manager manager_class = importutils.import_class(self.manager_class_name) self.manager = manager_class(host=self.host, service_name=service_name, *args, **kwargs) self.report_interval = report_interval self.periodic_interval = periodic_interval self.periodic_fuzzy_delay = periodic_fuzzy_delay self.basic_config_check() self.saved_args, self.saved_kwargs = args, kwargs self.timers = [] def start(self): version_string = version.version_string() LOG.audit(_('Starting %(topic)s node (version %(version_string)s)'), {'topic': self.topic, 'version_string': version_string}) self.model_disconnected = False self.manager.init_host() ctxt = context.get_admin_context() try: service_ref = db.service_get_by_args(ctxt, self.host, self.binary) self.service_id = service_ref['id'] except exception.NotFound: self._create_service_ref(ctxt) LOG.debug(_("Creating RPC server for service %s") % self.topic) target = messaging.Target(topic=self.topic, server=self.host) endpoints = [self.manager] endpoints.extend(self.manager.additional_endpoints) self.rpcserver = rpc.get_server(target, endpoints) self.rpcserver.start() if self.report_interval: pulse = loopingcall.LoopingCall(self.report_state) pulse.start(interval=self.report_interval, initial_delay=self.report_interval) self.timers.append(pulse) if self.periodic_interval: if self.periodic_fuzzy_delay: initial_delay = random.randint(0, self.periodic_fuzzy_delay) else: initial_delay = None periodic = loopingcall.LoopingCall(self.periodic_tasks) periodic.start(interval=self.periodic_interval, initial_delay=initial_delay) self.timers.append(periodic) def basic_config_check(self): """Perform basic config checks before starting service.""" # Make sure report interval is less than service down time if self.report_interval: if CONF.service_down_time <= self.report_interval: new_down_time = int(self.report_interval * 2.5) LOG.warn(_("Report interval must be less than service down " "time. Current config service_down_time: " "%(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global " "service_down_time to: %(new_down_time)s") % {'service_down_time': CONF.service_down_time, 'report_interval': self.report_interval, 'new_down_time': new_down_time}) CONF.set_override('service_down_time', new_down_time) def _create_service_ref(self, context): zone = CONF.storage_availability_zone service_ref = db.service_create(context, {'host': self.host, 'binary': self.binary, 'topic': self.topic, 'report_count': 0, 'availability_zone': zone}) self.service_id = service_ref['id'] def __getattr__(self, key): manager = self.__dict__.get('manager', None) return getattr(manager, key) @classmethod def create(cls, host=None, binary=None, topic=None, manager=None, report_interval=None, periodic_interval=None, periodic_fuzzy_delay=None, service_name=None): """Instantiates class and passes back application object. :param host: defaults to CONF.host :param binary: defaults to basename of executable :param topic: defaults to bin_name - 'cinder-' part :param manager: defaults to CONF._manager :param report_interval: defaults to CONF.report_interval :param periodic_interval: defaults to CONF.periodic_interval :param periodic_fuzzy_delay: defaults to CONF.periodic_fuzzy_delay """ if not host: host = CONF.host if not binary: binary = os.path.basename(inspect.stack()[-1][1]) if not topic: topic = binary if not manager: subtopic = topic.rpartition('cinder-')[2] manager = CONF.get('%s_manager' % subtopic, None) if report_interval is None: report_interval = CONF.report_interval if periodic_interval is None: periodic_interval = CONF.periodic_interval if periodic_fuzzy_delay is None: periodic_fuzzy_delay = CONF.periodic_fuzzy_delay service_obj = cls(host, binary, topic, manager, report_interval=report_interval, periodic_interval=periodic_interval, periodic_fuzzy_delay=periodic_fuzzy_delay, service_name=service_name) return service_obj def kill(self): """Destroy the service object in the datastore.""" self.stop() try: db.service_destroy(context.get_admin_context(), self.service_id) except exception.NotFound: LOG.warn(_('Service killed that has no database entry')) def stop(self): # Try to shut the connection down, but if we get any sort of # errors, go ahead and ignore them.. as we're shutting down anyway try: self.rpcserver.stop() except Exception: pass for x in self.timers: try: x.stop() except Exception: pass self.timers = [] super(Service, self).stop() def wait(self): for x in self.timers: try: x.wait() except Exception: pass def periodic_tasks(self, raise_on_error=False): """Tasks to be run at a periodic interval.""" ctxt = context.get_admin_context() self.manager.periodic_tasks(ctxt, raise_on_error=raise_on_error) def report_state(self): """Update the state of this service in the datastore.""" ctxt = context.get_admin_context() zone = CONF.storage_availability_zone state_catalog = {} try: try: service_ref = db.service_get(ctxt, self.service_id) except exception.NotFound: LOG.debug(_('The service database object disappeared, ' 'Recreating it.')) self._create_service_ref(ctxt) service_ref = db.service_get(ctxt, self.service_id) state_catalog['report_count'] = service_ref['report_count'] + 1 if zone != service_ref['availability_zone']: state_catalog['availability_zone'] = zone db.service_update(ctxt, self.service_id, state_catalog) # TODO(termie): make this pattern be more elegant. if getattr(self, 'model_disconnected', False): self.model_disconnected = False LOG.error(_('Recovered model server connection!')) # TODO(vish): this should probably only catch connection errors except Exception: # pylint: disable=W0702 if not getattr(self, 'model_disconnected', False): self.model_disconnected = True LOG.exception(_('model server went away')) class WSGIService(object): """Provides ability to launch API from a 'paste' configuration.""" def __init__(self, name, loader=None): """Initialize, but do not start the WSGI server. :param name: The name of the WSGI server given to the loader. :param loader: Loads the WSGI application using the given name. :returns: None """ self.name = name self.manager = self._get_manager() self.loader = loader or wsgi.Loader() self.app = self.loader.load_app(name) self.host = getattr(CONF, '%s_listen' % name, "0.0.0.0") self.port = getattr(CONF, '%s_listen_port' % name, 0) self.workers = getattr(CONF, '%s_workers' % name, None) if self.workers < 1: LOG.warn(_("Value of config option %(name)s_workers must be " "integer greater than 1. Input value ignored.") % {'name': name}) # Reset workers to default self.workers = None self.server = wsgi.Server(name, self.app, host=self.host, port=self.port) def _get_manager(self): """Initialize a Manager object appropriate for this service. Use the service name to look up a Manager subclass from the configuration and initialize an instance. If no class name is configured, just return None. :returns: a Manager instance, or None. """ fl = '%s_manager' % self.name if fl not in CONF: return None manager_class_name = CONF.get(fl, None) if not manager_class_name: return None manager_class = importutils.import_class(manager_class_name) return manager_class() def start(self): """Start serving this service using loaded configuration. Also, retrieve updated port number in case '0' was passed in, which indicates a random port should be used. :returns: None """ if self.manager: self.manager.init_host() self.server.start() self.port = self.server.port def stop(self): """Stop serving this API. :returns: None """ self.server.stop() def wait(self): """Wait for the service to stop serving this API. :returns: None """ self.server.wait() def process_launcher(): return service.ProcessLauncher() # NOTE(vish): the global launcher is to maintain the existing # functionality of calling service.serve + # service.wait _launcher = None def serve(server, workers=None): global _launcher if _launcher: raise RuntimeError(_('serve() can only be called once')) _launcher = service.launch(server, workers=workers) def wait(): LOG.debug(_('Full set of CONF:')) for flag in CONF: flag_get = CONF.get(flag, None) # hide flag contents from log if contains a password # should use secret flag when switch over to openstack-common if ("_password" in flag or "_key" in flag or (flag == "sql_connection" and ("mysql:" in flag_get or "postgresql:" in flag_get))): LOG.debug(_('%s : FLAG SET ') % flag) else: LOG.debug('%(flag)s : %(flag_get)s' % {'flag': flag, 'flag_get': flag_get}) try: _launcher.wait() except KeyboardInterrupt: _launcher.stop() rpc.cleanup() class Launcher(object): def __init__(self): self.launch_service = serve self.wait = wait def get_launcher(): # Note(lpetrut): ProcessLauncher uses green pipes which fail on Windows # due to missing support of non-blocking I/O pipes. For this reason, the # service must be spawned differently on Windows, using the ServiceLauncher # class instead. if os.name == 'nt': return Launcher() else: return process_launcher() cinder-2014.1.5/cinder/keymgr/0000775000567000056700000000000012540643114017112 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/keymgr/conf_key_mgr.py0000664000567000056700000001131112540642606022130 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ An implementation of a key manager that reads its key from the project's configuration options. This key manager implementation provides limited security, assuming that the key remains secret. Using the volume encryption feature as an example, encryption provides protection against a lost or stolen disk, assuming that the configuration file that contains the key is not stored on the disk. Encryption also protects the confidentiality of data as it is transmitted via iSCSI from the compute host to the storage host (again assuming that an attacker who intercepts the data does not know the secret key). Because this implementation uses a single, fixed key, it proffers no protection once that key is compromised. In particular, different volumes encrypted with a key provided by this key manager actually share the same encryption key so *any* volume can be decrypted once the fixed key is known. """ import array from oslo.config import cfg from cinder import exception from cinder.keymgr import key from cinder.keymgr import key_mgr from cinder.openstack.common.gettextutils import _ from cinder.openstack.common import log as logging key_mgr_opts = [ cfg.StrOpt('fixed_key', help='Fixed key returned by key manager, specified in hex'), ] CONF = cfg.CONF CONF.register_opts(key_mgr_opts, group='keymgr') LOG = logging.getLogger(__name__) class ConfKeyManager(key_mgr.KeyManager): """Key Manager that supports one key defined by the fixed_key conf option. This key manager implementation supports all the methods specified by the key manager interface. This implementation creates a single key in response to all invocations of create_key. Side effects (e.g., raising exceptions) for each method are handled as specified by the key manager interface. """ def __init__(self): super(ConfKeyManager, self).__init__() self.key_id = '00000000-0000-0000-0000-000000000000' def _generate_key(self, **kwargs): _hex = self._generate_hex_key(**kwargs) return key.SymmetricKey('AES', array.array('B', _hex.decode('hex')).tolist()) def _generate_hex_key(self, **kwargs): if CONF.keymgr.fixed_key is None: LOG.warn(_('config option keymgr.fixed_key has not been defined: ' 'some operations may fail unexpectedly')) raise ValueError(_('keymgr.fixed_key not defined')) return CONF.keymgr.fixed_key def create_key(self, ctxt, **kwargs): """Creates a key. This implementation returns a UUID for the created key. A NotAuthorized exception is raised if the specified context is None. """ if ctxt is None: raise exception.NotAuthorized() return self.key_id def store_key(self, ctxt, key, **kwargs): """Stores (i.e., registers) a key with the key manager.""" if ctxt is None: raise exception.NotAuthorized() if key != self._generate_key(): raise exception.KeyManagerError( reason="cannot store arbitrary keys") return self.key_id def copy_key(self, ctxt, key_id, **kwargs): if ctxt is None: raise exception.NotAuthorized() return self.key_id def get_key(self, ctxt, key_id, **kwargs): """Retrieves the key identified by the specified id. This implementation returns the key that is associated with the specified UUID. A NotAuthorized exception is raised if the specified context is None; a KeyError is raised if the UUID is invalid. """ if ctxt is None: raise exception.NotAuthorized() if key_id != self.key_id: raise KeyError(key_id) return self._generate_key() def delete_key(self, ctxt, key_id, **kwargs): if ctxt is None: raise exception.NotAuthorized() if key_id != self.key_id: raise exception.KeyManagerError( reason="cannot delete non-existent key") LOG.warn(_("Not deleting key %s"), key_id) cinder-2014.1.5/cinder/keymgr/key_mgr.py0000664000567000056700000000737212540642606021137 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Key manager API """ import abc import six @six.add_metaclass(abc.ABCMeta) class KeyManager(object): """Base Key Manager Interface A Key Manager is responsible for managing encryption keys for volumes. A Key Manager is responsible for creating, reading, and deleting keys. """ @abc.abstractmethod def create_key(self, ctxt, algorithm='AES', length=256, expiration=None, **kwargs): """Creates a key. This method creates a key and returns the key's UUID. If the specified context does not permit the creation of keys, then a NotAuthorized exception should be raised. """ pass @abc.abstractmethod def store_key(self, ctxt, key, expiration=None, **kwargs): """Stores (i.e., registers) a key with the key manager. This method stores the specified key and returns its UUID that identifies it within the key manager. If the specified context does not permit the creation of keys, then a NotAuthorized exception should be raised. """ pass @abc.abstractmethod def copy_key(self, ctxt, key_id, **kwargs): """Copies (i.e., clones) a key stored by the key manager. This method copies the specified key and returns the copy's UUID. If the specified context does not permit copying keys, then a NotAuthorized error should be raised. Implementation note: This method should behave identically to store_key(context, get_key(context, )) although it is preferable to perform this operation within the key manager to avoid unnecessary handling of the key material. """ pass @abc.abstractmethod def get_key(self, ctxt, key_id, **kwargs): """Retrieves the specified key. Implementations should verify that the caller has permissions to retrieve the key by checking the context object passed in as ctxt. If the user lacks permission then a NotAuthorized exception is raised. If the specified key does not exist, then a KeyError should be raised. Implementations should preclude users from discerning the UUIDs of keys that belong to other users by repeatedly calling this method. That is, keys that belong to other users should be considered "non- existent" and completely invisible. """ pass @abc.abstractmethod def delete_key(self, ctxt, key_id, **kwargs): """Deletes the specified key. Implementations should verify that the caller has permission to delete the key by checking the context object (ctxt). A NotAuthorized exception should be raised if the caller lacks permission. If the specified key does not exist, then a KeyError should be raised. Implementations should preclude users from discerning the UUIDs of keys that belong to other users by repeatedly calling this method. That is, keys that belong to other users should be considered "non- existent" and completely invisible. """ pass cinder-2014.1.5/cinder/keymgr/__init__.py0000664000567000056700000000210512540642606021226 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. from oslo.config import cfg from cinder.openstack.common import importutils keymgr_opts = [ cfg.StrOpt('api_class', default='cinder.keymgr.conf_key_mgr.ConfKeyManager', help='The full class name of the key manager API class'), ] CONF = cfg.CONF CONF.register_opts(keymgr_opts, group='keymgr') def API(): cls = importutils.import_class(CONF.keymgr.api_class) return cls() cinder-2014.1.5/cinder/keymgr/not_implemented_key_mgr.py0000664000567000056700000000261312540642603024370 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Key manager implementation that raises NotImplementedError """ from cinder.keymgr import key_mgr class NotImplementedKeyManager(key_mgr.KeyManager): """Key Manager Interface that raises NotImplementedError for all operations """ def create_key(self, ctxt, algorithm='AES', length=256, expiration=None, **kwargs): raise NotImplementedError() def store_key(self, ctxt, key, expiration=None, **kwargs): raise NotImplementedError() def copy_key(self, ctxt, key_id, **kwargs): raise NotImplementedError() def get_key(self, ctxt, key_id, **kwargs): raise NotImplementedError() def delete_key(self, ctxt, key_id, **kwargs): raise NotImplementedError() cinder-2014.1.5/cinder/keymgr/key.py0000664000567000056700000000503312540642603020257 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Base Key and SymmetricKey Classes This module defines the Key and SymmetricKey classes. The Key class is the base class to represent all encryption keys. The basis for this class was copied from Java. """ import abc import six @six.add_metaclass(abc.ABCMeta) class Key(object): """Base class to represent all keys.""" @abc.abstractmethod def get_algorithm(self): """Returns the key's algorithm. Returns the key's algorithm. For example, "DSA" indicates that this key is a DSA key and "AES" indicates that this key is an AES key. """ pass @abc.abstractmethod def get_format(self): """Returns the encoding format. Returns the key's encoding format or None if this key is not encoded. """ pass @abc.abstractmethod def get_encoded(self): """Returns the key in the format specified by its encoding.""" pass class SymmetricKey(Key): """This class represents symmetric keys.""" def __init__(self, alg, key): """Create a new SymmetricKey object. The arguments specify the algorithm for the symmetric encryption and the bytes for the key. """ self.alg = alg self.key = key def get_algorithm(self): """Returns the algorithm for symmetric encryption.""" return self.alg def get_format(self): """This method returns 'RAW'.""" return "RAW" def get_encoded(self): """Returns the key in its encoded format.""" return self.key def __eq__(self, other): if isinstance(other, SymmetricKey): return (self.alg == other.alg and self.key == other.key) return NotImplemented def __ne__(self, other): result = self.__eq__(other) if result is NotImplemented: return result return not result cinder-2014.1.5/cinder/tests/0000775000567000056700000000000012540643114016756 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/backup/0000775000567000056700000000000012540643114020223 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/backup/fake_swift_client.py0000664000567000056700000001035412540642606024265 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. import httplib import json import os import socket import zlib from cinder.openstack.common import log as logging from swiftclient import client as swift LOG = logging.getLogger(__name__) class FakeSwiftClient(object): """Logs calls instead of executing.""" def __init__(self, *args, **kwargs): pass @classmethod def Connection(self, *args, **kargs): LOG.debug("fake FakeSwiftClient Connection") return FakeSwiftConnection() class FakeSwiftConnection(object): """Logging calls instead of executing.""" def __init__(self, *args, **kwargs): pass def head_container(self, container): LOG.debug("fake head_container(%s)" % container) if container == 'missing_container': raise swift.ClientException('fake exception', http_status=httplib.NOT_FOUND) elif container == 'unauthorized_container': raise swift.ClientException('fake exception', http_status=httplib.UNAUTHORIZED) elif container == 'socket_error_on_head': raise socket.error(111, 'ECONNREFUSED') pass def put_container(self, container): LOG.debug("fake put_container(%s)" % container) pass def get_container(self, container, **kwargs): LOG.debug("fake get_container(%s)" % container) fake_header = None fake_body = [{'name': 'backup_001'}, {'name': 'backup_002'}, {'name': 'backup_003'}] return fake_header, fake_body def head_object(self, container, name): LOG.debug("fake put_container(%s, %s)" % (container, name)) return {'etag': 'fake-md5-sum'} def get_object(self, container, name): LOG.debug("fake get_object(%s, %s)" % (container, name)) if container == 'socket_error_on_get': raise socket.error(111, 'ECONNREFUSED') if 'metadata' in name: fake_object_header = None metadata = {} if container == 'unsupported_version': metadata['version'] = '9.9.9' else: metadata['version'] = '1.0.0' metadata['backup_id'] = 123 metadata['volume_id'] = 123 metadata['backup_name'] = 'fake backup' metadata['backup_description'] = 'fake backup description' metadata['created_at'] = '2013-02-19 11:20:54,805' metadata['objects'] = [{ 'backup_001': {'compression': 'zlib', 'length': 10}, 'backup_002': {'compression': 'zlib', 'length': 10}, 'backup_003': {'compression': 'zlib', 'length': 10} }] metadata_json = json.dumps(metadata, sort_keys=True, indent=2) fake_object_body = metadata_json return (fake_object_header, fake_object_body) fake_header = None fake_object_body = os.urandom(1024 * 1024) return (fake_header, zlib.compress(fake_object_body)) def put_object(self, container, name, reader, content_length=None, etag=None, chunk_size=None, content_type=None, headers=None, query_string=None): LOG.debug("fake put_object(%s, %s)" % (container, name)) if container == 'socket_error_on_put': raise socket.error(111, 'ECONNREFUSED') return 'fake-md5-sum' def delete_object(self, container, name): LOG.debug("fake delete_object(%s, %s)" % (container, name)) if container == 'socket_error_on_delete': raise socket.error(111, 'ECONNREFUSED') pass cinder-2014.1.5/cinder/tests/backup/__init__.py0000664000567000056700000000000012540642606022327 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/backup/fake_service.py0000664000567000056700000000260512540642606023233 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. from cinder.backup.driver import BackupDriver from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class FakeBackupService(BackupDriver): def __init__(self, context, db_driver=None): super(FakeBackupService, self).__init__(db_driver) def backup(self, backup, volume_file): pass def restore(self, backup, volume_id, volume_file): pass def delete(self, backup): # if backup has magic name of 'fail_on_delete' # we raise an error - useful for some tests - # otherwise we return without error if backup['display_name'] == 'fail_on_delete': raise IOError('fake') def get_backup_driver(context): return FakeBackupService(context) cinder-2014.1.5/cinder/tests/var/0000775000567000056700000000000012540643114017546 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/var/privatekey.key0000664000567000056700000000625312540642606022456 0ustar jenkinsjenkins00000000000000-----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEA16VJEDeqbmr6PoM96NSuJK1XT5dZuzYzSQ8g//mR9BBjXBDe 4moNajxOybI6hjzWbECtXTKF20s/jkovarzXiZwXH8FMeakwLcMgG/QMRpMLjGny FPpVm7HJaPnTxrI2tNcsG10wmWxd9oqp6TjGIX8VlHaEGIgZIccYVvXjDyi0vypD /P28flWmtlyYgHm6pHfZ65LAAAXhnPZpWn2ARJogoT3SRD8PtXjwOEFavWj3qQ7K gCrRjfCS6ZqAtwXcUEE228C90PH01yuLQjVGlZOAGw8vzHBaustKHEKATyY4oTmN +Zlhvzi7XCPfcjzqVhp6bP+Whv+uAwydg+uxZ2o+oCh1fuk1xTvCmcZZ8bYLYmQy QWZJ3kwbfQK0jr/pejQbLpkc9IhCeKOB9Utk0jJ6awL1+1pxrXOl4vYF2oWHAxxH pcMGM6gIkwb+ocUqeDGdnTV2viszorQu2W1dqrINGrtMI3xP6EkNzb7L1K/Jzpn7 rSU7x0QMGwtb+Bv7bgLDuztMNtLtgd7vqRtOpufq5xKqfqwfYZrpEWE34BBUUbFS L6RZf3MLz1ykXF9N1CDMfpS6/Rbfnqe2KKAYWN8GNpMAsQ+JUWDZm8LAiFcsGbeN H/+GnffE5Ln0fTYbH8nMRnqm65kzBZWfE05Zj/NoqIXpCgjr6MhLkyFi9vsCAwEA AQKCAgAA96baQcWr9SLmQOR4NOwLEhQAMWefpWCZhU3amB4FgEVR1mmJjnw868RW t0v36jH0Dl44us9K6o2Ab+jCi9JTtbWM2Osk6JNkwSlVtsSPVH2KxbbmTTExH50N sYE3tPj12rlB7isXpRrOzlRwzWZmJBHOtrFlAsdKFYCQc03vdXlKGkBv1BuSXYP/ 8W5ltSYXMspxehkOZvhaIejbFREMPbzDvGlDER1a7Q320qQ7kUr7ISvbY1XJUzj1 f1HwgEA6w/AhED5Jv6wfgvx+8Yo9hYnflTPbsO1XRS4x7kJxGHTMlFuEsSF1ICYH Bcos0wUiGcBO2N6uAFuhe98BBn+nOwAPZYWwGkmVuK2psm2mXAHx94GT/XqgK/1r VWGSoOV7Fhjauc2Nv8/vJU18DXT3OY5hc4iXVeEBkuZwRb/NVUtnFoHxVO/Mp5Fh /W5KZaLWVrLghzvSQ/KUIM0k4lfKDZpY9ZpOdNgWDyZY8tNrXumUZZimzWdXZ9vR dBssmd8qEKs1AHGFnMDt56IjLGou6j0qnWsLdR1e/WEFsYzGXLVHCv6vXRNkbjqh WFw5nA+2Dw1YAsy+YkTfgx2pOe+exM/wxsVPa7tG9oZ374dywUi1k6VoHw5dkmJw 1hbXqSLZtx2N51G+SpGmNAV4vLUF0y3dy2wnrzFkFT4uxh1w8QKCAQEA+h6LwHTK hgcJx6CQQ6zYRqXo4wdvMooY1FcqJOq7LvJUA2CX5OOLs8qN1TyFrOCuAUTurOrM ABlQ0FpsIaP8TOGz72dHe2eLB+dD6Bqjn10sEFMn54zWd/w9ympQrO9jb5X3ViTh sCcdYyXVS9Hz8nzbbIF+DaKlxF2Hh71uRDxXpMPxRcGbOIuKZXUj6RkTIulzqT6o uawlegWxch05QSgzq/1ASxtjTzo4iuDCAii3N45xqxnB+fV9NXEt4R2oOGquBRPJ LxKcOnaQKBD0YNX4muTq+zPlv/kOb8/ys2WGWDUrNkpyJXqhTve4KONjqM7+iL/U 4WdJuiCjonzk/QKCAQEA3Lc+kNq35FNLxMcnCVcUgkmiCWZ4dyGZZPdqjOPww1+n bbudGPzY1nxOvE60dZM4or/tm6qlXYfb2UU3+OOJrK9s297EQybZ8DTZu2GHyitc NSFV3Gl4cgvKdbieGKkk9X2dV9xSNesNvX9lJEnQxuwHDTeo8ubLHtV88Ml1xokn 7W+IFiyEuUIL4e5/fadbrI3EwMrbCF4+9VcfABx4PTNMzdc8LsncCMXE+jFX8AWp TsT2JezTe5o2WpvBoKMAYhJQNQiaWATn00pDVY/70H1vK3ljomAa1IUdOr/AhAF7 3jL0MYMgXSHzXZOKAtc7yf+QfFWF1Ls8+sen1clJVwKCAQEAp59rB0r+Iz56RmgL 5t7ifs5XujbURemY5E2aN+18DuVmenD0uvfoO1DnJt4NtCNLWhxpXEdq+jH9H/VJ fG4a+ydT4IC1vjVRTrWlo9qeh4H4suQX3S1c2kKY4pvHf25blH/Lp9bFzbkZD8Ze IRcOxxb4MsrBwL+dGnGYD9dbG63ZCtoqSxaKQSX7VS1hKKmeUopj8ivFBdIht5oz JogBQ/J+Vqg9u1gagRFCrYgdXTcOOtRix0lW336vL+6u0ax/fXe5MjvlW3+8Zc3p pIBgVrlvh9ccx8crFTIDg9m4DJRgqaLQV+0ifI2np3WK3RQvSQWYPetZ7sm69ltD bvUGvQKCAQAz5CEhjUqOs8asjOXwnDiGKSmfbCgGWi/mPQUf+rcwN9z1P5a/uTKB utgIDbj/q401Nkp2vrgCNV7KxitSqKxFnTjKuKUL5KZ4gvRtyZBTR751/1BgcauP pJYE91K0GZBG5zGG5pWtd4XTd5Af5/rdycAeq2ddNEWtCiRFuBeohbaNbBtimzTZ GV4R0DDJKf+zoeEQMqEsZnwG0mTHceoS+WylOGU92teQeG7HI7K5C5uymTwFzpgq ByegRd5QFgKRDB0vWsZuyzh1xI/wHdnmOpdYcUGre0zTijhFB7ALWQ32P6SJv3ps av78kSNxZ4j3BM7DbJf6W8sKasZazOghAoIBAHekpBcLq9gRv2+NfLYxWN2sTZVB 1ldwioG7rWvk5YQR2akukecI3NRjtC5gG2vverawG852Y4+oLfgRMHxgp0qNStwX juTykzPkCwZn8AyR+avC3mkrtJyM3IigcYOu4/UoaRDFa0xvCC1EfumpnKXIpHag miSQZf2sVbgqb3/LWvHIg/ceOP9oGJve87/HVfQtBoLaIe5RXCWkqB7mcI/exvTS 8ShaW6v2Fe5Bzdvawj7sbsVYRWe93Aq2tmIgSX320D2RVepb6mjD4nr0IUaM3Yed TFT7e2ikWXyDLLgVkDTU4Qe8fr3ZKGfanCIDzvgNw6H1gRi+2WQgOmjilMQ= -----END RSA PRIVATE KEY----- cinder-2014.1.5/cinder/tests/var/ca.crt0000664000567000056700000000415712540642606020657 0ustar jenkinsjenkins00000000000000-----BEGIN CERTIFICATE----- MIIGDDCCA/SgAwIBAgIJAPSvwQYk4qI4MA0GCSqGSIb3DQEBBQUAMGExCzAJBgNV BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRUwEwYDVQQKEwxPcGVuc3RhY2sg Q0ExEjAQBgNVBAsTCUdsYW5jZSBDQTESMBAGA1UEAxMJR2xhbmNlIENBMB4XDTEy MDIwOTE3MTAwMloXDTIyMDIwNjE3MTAwMlowYTELMAkGA1UEBhMCQVUxEzARBgNV BAgTClNvbWUtU3RhdGUxFTATBgNVBAoTDE9wZW5zdGFjayBDQTESMBAGA1UECxMJ R2xhbmNlIENBMRIwEAYDVQQDEwlHbGFuY2UgQ0EwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDmf+fapWfzy1Uylus0KGalw4X/5xZ+ltPVOr+IdCPbstvi RTC5g+O+TvXeOP32V/cnSY4ho/+f2q730za+ZA/cgWO252rcm3Q7KTJn3PoqzJvX /l3EXe3/TCrbzgZ7lW3QLTCTEE2eEzwYG3wfDTOyoBq+F6ct6ADh+86gmpbIRfYI N+ixB0hVyz9427PTof97fL7qxxkjAayB28OfwHrkEBl7iblNhUC0RoH+/H9r5GEl GnWiebxfNrONEHug6PHgiaGq7/Dj+u9bwr7J3/NoS84I08ajMnhlPZxZ8bS/O8If ceWGZv7clPozyhABT/otDfgVcNH1UdZ4zLlQwc1MuPYN7CwxrElxc8Quf94ttGjb tfGTl4RTXkDofYdG1qBWW962PsGl2tWmbYDXV0q5JhV/IwbrE1X9f+OksJQne1/+ dZDxMhdf2Q1V0P9hZZICu4+YhmTMs5Mc9myKVnzp4NYdX5fXoB/uNYph+G7xG5IK WLSODKhr1wFGTTcuaa8LhOH5UREVenGDJuc6DdgX9a9PzyJGIi2ngQ03TJIkCiU/ 4J/r/vsm81ezDiYZSp2j5JbME+ixW0GBLTUWpOIxUSHgUFwH5f7lQwbXWBOgwXQk BwpZTmdQx09MfalhBtWeu4/6BnOCOj7e/4+4J0eVxXST0AmVyv8YjJ2nz1F9oQID AQABo4HGMIHDMB0GA1UdDgQWBBTk7Krj4bEsTjHXaWEtI2GZ5ACQyTCBkwYDVR0j BIGLMIGIgBTk7Krj4bEsTjHXaWEtI2GZ5ACQyaFlpGMwYTELMAkGA1UEBhMCQVUx EzARBgNVBAgTClNvbWUtU3RhdGUxFTATBgNVBAoTDE9wZW5zdGFjayBDQTESMBAG A1UECxMJR2xhbmNlIENBMRIwEAYDVQQDEwlHbGFuY2UgQ0GCCQD0r8EGJOKiODAM BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQA8Zrss/MiwFHGmDlercE0h UvzA54n/EvKP9nP3jHM2qW/VPfKdnFw99nEPFLhb+lN553vdjOpCYFm+sW0Z5Mi4 qsFkk4AmXIIEFOPt6zKxMioLYDQ9Sw/BUv6EZGeANWr/bhmaE+dMcKJt5le/0jJm 2ahsVB9fbFu9jBFeYb7Ba/x2aLkEGMxaDLla+6EQhj148fTnS1wjmX9G2cNzJvj/ +C2EfKJIuDJDqw2oS2FGVpP37FA2Bz2vga0QatNneLkGKCFI3ZTenBznoN+fmurX TL3eJE4IFNrANCcdfMpdyLAtXz4KpjcehqpZMu70er3d30zbi1l0Ajz4dU+WKz/a NQES+vMkT2wqjXHVTjrNwodxw3oLK/EuTgwoxIHJuplx5E5Wrdx9g7Gl1PBIJL8V xiOYS5N7CakyALvdhP7cPubA2+TPAjNInxiAcmhdASS/Vrmpvrkat6XhGn8h9liv ysDOpMQmYQkmgZBpW8yBKK7JABGGsJADJ3E6J5MMWBX2RR4kFoqVGAzdOU3oyaTy I0kz5sfuahaWpdYJVlkO+esc0CRXw8fLDYivabK2tOgUEWeZsZGZ9uK6aV1VxTAY 9Guu3BJ4Rv/KP/hk7mP8rIeCwotV66/2H8nq72ImQhzSVyWcxbFf2rJiFQJ3BFwA WoRMgEwjGJWqzhJZUYpUAQ== -----END CERTIFICATE----- cinder-2014.1.5/cinder/tests/var/certificate.crt0000664000567000056700000000350212540642606022547 0ustar jenkinsjenkins00000000000000-----BEGIN CERTIFICATE----- MIIFLjCCAxYCAQEwDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCQVUxEzARBgNV BAgTClNvbWUtU3RhdGUxFTATBgNVBAoTDE9wZW5zdGFjayBDQTESMBAGA1UECxMJ R2xhbmNlIENBMRIwEAYDVQQDEwlHbGFuY2UgQ0EwHhcNMTIwMjA5MTcxMDUzWhcN MjIwMjA2MTcxMDUzWjBZMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0 ZTESMBAGA1UEChMJT3BlbnN0YWNrMQ8wDQYDVQQLEwZHbGFuY2UxEDAOBgNVBAMT BzAuMC4wLjAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXpUkQN6pu avo+gz3o1K4krVdPl1m7NjNJDyD/+ZH0EGNcEN7iag1qPE7JsjqGPNZsQK1dMoXb Sz+OSi9qvNeJnBcfwUx5qTAtwyAb9AxGkwuMafIU+lWbsclo+dPGsja01ywbXTCZ bF32iqnpOMYhfxWUdoQYiBkhxxhW9eMPKLS/KkP8/bx+Vaa2XJiAebqkd9nrksAA BeGc9mlafYBEmiChPdJEPw+1ePA4QVq9aPepDsqAKtGN8JLpmoC3BdxQQTbbwL3Q 8fTXK4tCNUaVk4AbDy/McFq6y0ocQoBPJjihOY35mWG/OLtcI99yPOpWGnps/5aG /64DDJ2D67Fnaj6gKHV+6TXFO8KZxlnxtgtiZDJBZkneTBt9ArSOv+l6NBsumRz0 iEJ4o4H1S2TSMnprAvX7WnGtc6Xi9gXahYcDHEelwwYzqAiTBv6hxSp4MZ2dNXa+ KzOitC7ZbV2qsg0au0wjfE/oSQ3NvsvUr8nOmfutJTvHRAwbC1v4G/tuAsO7O0w2 0u2B3u+pG06m5+rnEqp+rB9hmukRYTfgEFRRsVIvpFl/cwvPXKRcX03UIMx+lLr9 Ft+ep7YooBhY3wY2kwCxD4lRYNmbwsCIVywZt40f/4ad98TkufR9NhsfycxGeqbr mTMFlZ8TTlmP82iohekKCOvoyEuTIWL2+wIDAQABMA0GCSqGSIb3DQEBBQUAA4IC AQBMUBgV0R+Qltf4Du7u/8IFmGAoKR/mktB7R1gRRAqsvecUt7kIwBexGdavGg1y 0pU0+lgUZjJ20N1SlPD8gkNHfXE1fL6fmMjWz4dtYJjzRVhpufHPeBW4tl8DgHPN rBGAYQ+drDSXaEjiPQifuzKx8WS+DGA3ki4co5mPjVnVH1xvLIdFsk89z3b3YD1k yCJ/a9K36x6Z/c67JK7s6MWtrdRF9+MVnRKJ2PK4xznd1kBz16V+RA466wBDdARY vFbtkafbEqOb96QTonIZB7+fAldKDPZYnwPqasreLmaGOaM8sxtlPYAJ5bjDONbc AaXG8BMRQyO4FyH237otDKlxPyHOFV66BaffF5S8OlwIMiZoIvq+IcTZOdtDUSW2 KHNLfe5QEDZdKjWCBrfqAfvNuG13m03WqfmcMHl3o/KiPJlx8l9Z4QEzZ9xcyQGL cncgeHM9wJtzi2cD/rTDNFsx/gxvoyutRmno7I3NRbKmpsXF4StZioU3USRspB07 hYXOVnG3pS+PjVby7ThT3gvFHSocguOsxClx1epdUJAmJUbmM7NmOp5WVBVtMtC2 Su4NG/xJciXitKzw+btb7C7RjO6OEqv/1X/oBDzKBWQAwxUC+lqmnM7W6oqWJFEM YfTLnrjs7Hj6ThMGcEnfvc46dWK3dz0RjsQzUxugPuEkLA== -----END CERTIFICATE----- cinder-2014.1.5/cinder/tests/db/0000775000567000056700000000000012540643114017343 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/db/test_qos_specs.py0000664000567000056700000002220312540642606022757 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 eBay Inc. # Copyright (C) 2013 OpenStack Foundation # All Rights Reserved. # # 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. """Tests for qaulity_of_service_specs table.""" import time from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.volume import volume_types LOG = logging.getLogger(__name__) def fake_qos_specs_get_by_name(context, name, session=None, inactive=False): pass class QualityOfServiceSpecsTableTestCase(test.TestCase): """Test case for QualityOfServiceSpecs model.""" def setUp(self): super(QualityOfServiceSpecsTableTestCase, self).setUp() self.ctxt = context.RequestContext(user_id='user_id', project_id='project_id', is_admin=True) def tearDown(self): super(QualityOfServiceSpecsTableTestCase, self).tearDown() def _create_qos_specs(self, name, values=None): """Create a transfer object.""" if values: specs = dict(name=name, qos_specs=values) else: specs = {'name': name, 'qos_specs': { 'consumer': 'back-end', 'key1': 'value1', 'key2': 'value2'}} return db.qos_specs_create(self.ctxt, specs)['id'] def test_qos_specs_create(self): # If there is qos specs with the same name exists, # a QoSSpecsExists exception will be raised. name = 'QoSSpecsCreationTest' self._create_qos_specs(name) self.assertRaises(exception.QoSSpecsExists, db.qos_specs_create, self.ctxt, dict(name=name)) specs_id = self._create_qos_specs('NewName') query_id = db.qos_specs_get_by_name( self.ctxt, 'NewName')['id'] self.assertEqual(specs_id, query_id) def test_qos_specs_get(self): value = dict(consumer='front-end', key1='foo', key2='bar') specs_id = self._create_qos_specs('Name1', value) fake_id = 'fake-UUID' self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_get, self.ctxt, fake_id) specs = db.qos_specs_get(self.ctxt, specs_id) expected = dict(name='Name1', id=specs_id, consumer='front-end') del value['consumer'] expected.update(dict(specs=value)) self.assertDictMatch(specs, expected) def test_qos_specs_get_all(self): value1 = dict(consumer='front-end', key1='v1', key2='v2') value2 = dict(consumer='back-end', key3='v3', key4='v4') value3 = dict(consumer='back-end', key5='v5', key6='v6') spec_id1 = self._create_qos_specs('Name1', value1) spec_id2 = self._create_qos_specs('Name2', value2) spec_id3 = self._create_qos_specs('Name3', value3) specs = db.qos_specs_get_all(self.ctxt) self.assertEqual(len(specs), 3, "Unexpected number of qos specs records") expected1 = dict(name='Name1', id=spec_id1, consumer='front-end') expected2 = dict(name='Name2', id=spec_id2, consumer='back-end') expected3 = dict(name='Name3', id=spec_id3, consumer='back-end') del value1['consumer'] del value2['consumer'] del value3['consumer'] expected1.update(dict(specs=value1)) expected2.update(dict(specs=value2)) expected3.update(dict(specs=value3)) self.assertIn(expected1, specs) self.assertIn(expected2, specs) self.assertIn(expected3, specs) def test_qos_specs_get_by_name(self): name = str(int(time.time())) value = dict(consumer='front-end', foo='Foo', bar='Bar') specs_id = self._create_qos_specs(name, value) specs = db.qos_specs_get_by_name(self.ctxt, name) del value['consumer'] expected = {'name': name, 'id': specs_id, 'consumer': 'front-end', 'specs': value} self.assertDictMatch(specs, expected) def test_qos_specs_delete(self): name = str(int(time.time())) specs_id = self._create_qos_specs(name) db.qos_specs_delete(self.ctxt, specs_id) self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_get, self.ctxt, specs_id) def test_qos_specs_item_delete(self): name = str(int(time.time())) value = dict(consumer='front-end', foo='Foo', bar='Bar') specs_id = self._create_qos_specs(name, value) del value['consumer'] del value['foo'] expected = {'name': name, 'id': specs_id, 'consumer': 'front-end', 'specs': value} db.qos_specs_item_delete(self.ctxt, specs_id, 'foo') specs = db.qos_specs_get_by_name(self.ctxt, name) self.assertDictMatch(specs, expected) def test_associate_type_with_qos(self): self.assertRaises(exception.VolumeTypeNotFound, db.volume_type_qos_associate, self.ctxt, 'Fake-VOLID', 'Fake-QOSID') type_id = volume_types.create(self.ctxt, 'TypeName')['id'] specs_id = self._create_qos_specs('FakeQos') db.volume_type_qos_associate(self.ctxt, type_id, specs_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 1) self.assertEqual(res[0]['id'], type_id) self.assertEqual(res[0]['qos_specs_id'], specs_id) def test_qos_associations_get(self): self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_associations_get, self.ctxt, 'Fake-UUID') type_id = volume_types.create(self.ctxt, 'TypeName')['id'] specs_id = self._create_qos_specs('FakeQos') res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 0) db.volume_type_qos_associate(self.ctxt, type_id, specs_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 1) self.assertEqual(res[0]['id'], type_id) self.assertEqual(res[0]['qos_specs_id'], specs_id) type0_id = volume_types.create(self.ctxt, 'Type0Name')['id'] db.volume_type_qos_associate(self.ctxt, type0_id, specs_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 2) self.assertEqual(res[0]['qos_specs_id'], specs_id) self.assertEqual(res[1]['qos_specs_id'], specs_id) def test_qos_specs_disassociate(self): type_id = volume_types.create(self.ctxt, 'TypeName')['id'] specs_id = self._create_qos_specs('FakeQos') db.volume_type_qos_associate(self.ctxt, type_id, specs_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(res[0]['id'], type_id) self.assertEqual(res[0]['qos_specs_id'], specs_id) db.qos_specs_disassociate(self.ctxt, specs_id, type_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 0) res = db.volume_type_get(self.ctxt, type_id) self.assertIsNone(res['qos_specs_id']) def test_qos_specs_disassociate_all(self): specs_id = self._create_qos_specs('FakeQos') type1_id = volume_types.create(self.ctxt, 'Type1Name')['id'] type2_id = volume_types.create(self.ctxt, 'Type2Name')['id'] type3_id = volume_types.create(self.ctxt, 'Type3Name')['id'] db.volume_type_qos_associate(self.ctxt, type1_id, specs_id) db.volume_type_qos_associate(self.ctxt, type2_id, specs_id) db.volume_type_qos_associate(self.ctxt, type3_id, specs_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 3) db.qos_specs_disassociate_all(self.ctxt, specs_id) res = db.qos_specs_associations_get(self.ctxt, specs_id) self.assertEqual(len(res), 0) def test_qos_specs_update(self): name = 'FakeName' specs_id = self._create_qos_specs(name) value = dict(key2='new_value2', key3='value3') self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update, self.ctxt, 'Fake-UUID', value) db.qos_specs_update(self.ctxt, specs_id, value) specs = db.qos_specs_get(self.ctxt, specs_id) self.assertEqual(specs['specs']['key2'], 'new_value2') self.assertEqual(specs['specs']['key3'], 'value3') cinder-2014.1.5/cinder/tests/db/fakes.py0000664000567000056700000000255512540642606021022 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. """Stubouts, mocks and fixtures for the test suite.""" from cinder import db class FakeModel(object): """Stubs out for model.""" def __init__(self, values): self.values = values def __getattr__(self, name): return self.values[name] def __getitem__(self, key): if key in self.values: return self.values[key] else: raise NotImplementedError() def __repr__(self): return '' % self.values def stub_out(stubs, funcs): """Set the stubs in mapping in the db api.""" for func in funcs: func_name = '_'.join(func.__name__.split('_')[1:]) stubs.Set(db, func_name, func) cinder-2014.1.5/cinder/tests/db/test_name_id.py0000664000567000056700000000445012540642606022360 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Tests for volume name_id.""" from oslo.config import cfg from cinder import context from cinder import db from cinder import test from cinder.tests import utils as testutils CONF = cfg.CONF class NameIDsTestCase(test.TestCase): """Test cases for naming volumes with name_id.""" def setUp(self): super(NameIDsTestCase, self).setUp() self.ctxt = context.RequestContext(user_id='user_id', project_id='project_id') def tearDown(self): super(NameIDsTestCase, self).tearDown() def test_name_id_same(self): """New volume should have same 'id' and 'name_id'.""" vol_ref = testutils.create_volume(self.ctxt, size=1) self.assertEqual(vol_ref['name_id'], vol_ref['id']) expected_name = CONF.volume_name_template % vol_ref['id'] self.assertEqual(vol_ref['name'], expected_name) def test_name_id_diff(self): """Change name ID to mimic volume after migration.""" vol_ref = testutils.create_volume(self.ctxt, size=1) db.volume_update(self.ctxt, vol_ref['id'], {'name_id': 'fake'}) vol_ref = db.volume_get(self.ctxt, vol_ref['id']) expected_name = CONF.volume_name_template % 'fake' self.assertEqual(vol_ref['name'], expected_name) def test_name_id_snapshot_volume_name(self): """Make sure snapshot['volume_name'] is updated.""" vol_ref = testutils.create_volume(self.ctxt, size=1) db.volume_update(self.ctxt, vol_ref['id'], {'name_id': 'fake'}) snap_ref = testutils.create_snapshot(self.ctxt, vol_ref['id']) expected_name = CONF.volume_name_template % 'fake' self.assertEqual(snap_ref['volume_name'], expected_name) cinder-2014.1.5/cinder/tests/db/__init__.py0000664000567000056700000000126012540642606021460 0ustar jenkinsjenkins00000000000000# Copyright (c) 2010 Citrix Systems, Inc. # # 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. """ :mod:`db` -- Stubs for DB API ============================= """ cinder-2014.1.5/cinder/tests/db/test_finish_migration.py0000664000567000056700000000422012540642606024310 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """Tests for finish_volume_migration.""" from cinder import context from cinder import db from cinder import test from cinder.tests import utils as testutils class FinishVolumeMigrationTestCase(test.TestCase): """Test cases for finish_volume_migration.""" def setUp(self): super(FinishVolumeMigrationTestCase, self).setUp() def tearDown(self): super(FinishVolumeMigrationTestCase, self).tearDown() def test_finish_volume_migration(self): ctxt = context.RequestContext(user_id='user_id', project_id='project_id', is_admin=True) src_volume = testutils.create_volume(ctxt, host='src', migration_status='migrating', status='available') dest_volume = testutils.create_volume(ctxt, host='dest', migration_status='target:fake', status='available') db.finish_volume_migration(ctxt, src_volume['id'], dest_volume['id']) src_volume = db.volume_get(ctxt, src_volume['id']) expected_name = 'volume-%s' % dest_volume['id'] self.assertEqual(src_volume['_name_id'], dest_volume['id']) self.assertEqual(src_volume['name'], expected_name) self.assertEqual(src_volume['host'], 'dest') self.assertEqual(src_volume['status'], 'available') self.assertIsNone(src_volume['migration_status']) cinder-2014.1.5/cinder/tests/db/test_transfers.py0000664000567000056700000001232212540642606022770 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """Tests for transfers table.""" from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests import utils LOG = logging.getLogger(__name__) class TransfersTableTestCase(test.TestCase): """Test case for transfers model.""" def setUp(self): super(TransfersTableTestCase, self).setUp() self.ctxt = context.RequestContext(user_id='user_id', project_id='project_id') def tearDown(self): super(TransfersTableTestCase, self).tearDown() def _create_transfer(self, volume_id=None): """Create a transfer object.""" transfer = {'display_name': 'display_name', 'salt': 'salt', 'crypt_hash': 'crypt_hash'} if volume_id is not None: transfer['volume_id'] = volume_id return db.transfer_create(self.ctxt, transfer)['id'] def test_transfer_create(self): # If the volume_id is Null a KeyError exception will be raised. self.assertRaises(KeyError, self._create_transfer) volume_id = utils.create_volume(self.ctxt)['id'] self._create_transfer(volume_id) def test_transfer_create_not_available(self): volume_id = utils.create_volume(self.ctxt, size=1, status='notavailable')['id'] self.assertRaises(exception.InvalidVolume, self._create_transfer, volume_id) def test_transfer_get(self): volume_id1 = utils.create_volume(self.ctxt)['id'] xfer_id1 = self._create_transfer(volume_id1) xfer = db.transfer_get(self.ctxt, xfer_id1) self.assertEqual(xfer.volume_id, volume_id1, "Unexpected volume_id") nctxt = context.RequestContext(user_id='new_user_id', project_id='new_project_id') self.assertRaises(exception.TransferNotFound, db.transfer_get, nctxt, xfer_id1) xfer = db.transfer_get(nctxt.elevated(), xfer_id1) self.assertEqual(xfer.volume_id, volume_id1, "Unexpected volume_id") def test_transfer_get_all(self): volume_id1 = utils.create_volume(self.ctxt)['id'] volume_id2 = utils.create_volume(self.ctxt)['id'] self._create_transfer(volume_id1) self._create_transfer(volume_id2) self.assertRaises(exception.NotAuthorized, db.transfer_get_all, self.ctxt) xfer = db.transfer_get_all(context.get_admin_context()) self.assertEqual(len(xfer), 2, "Unexpected number of transfer records") xfer = db.transfer_get_all_by_project(self.ctxt, self.ctxt.project_id) self.assertEqual(len(xfer), 2, "Unexpected number of transfer records") nctxt = context.RequestContext(user_id='new_user_id', project_id='new_project_id') self.assertRaises(exception.NotAuthorized, db.transfer_get_all_by_project, nctxt, self.ctxt.project_id) xfer = db.transfer_get_all_by_project(nctxt.elevated(), self.ctxt.project_id) self.assertEqual(len(xfer), 2, "Unexpected number of transfer records") def test_transfer_destroy(self): volume_id = utils.create_volume(self.ctxt)['id'] volume_id2 = utils.create_volume(self.ctxt)['id'] xfer_id1 = self._create_transfer(volume_id) xfer_id2 = self._create_transfer(volume_id2) xfer = db.transfer_get_all(context.get_admin_context()) self.assertEqual(len(xfer), 2, "Unexpected number of transfer records") self.assertFalse(xfer[0]['deleted'], "Deleted flag is set") db.transfer_destroy(self.ctxt, xfer_id1) xfer = db.transfer_get_all(context.get_admin_context()) self.assertEqual(len(xfer), 1, "Unexpected number of transfer records") self.assertEqual(xfer[0]['id'], xfer_id2, "Unexpected value for Transfer id") nctxt = context.RequestContext(user_id='new_user_id', project_id='new_project_id') self.assertRaises(exception.TransferNotFound, db.transfer_destroy, nctxt, xfer_id2) db.transfer_destroy(nctxt.elevated(), xfer_id2) xfer = db.transfer_get_all(context.get_admin_context()) self.assertEqual(len(xfer), 0, "Unexpected number of transfer records") cinder-2014.1.5/cinder/tests/test_netapp_utils.py0000664000567000056700000002761112540642606023112 0ustar jenkinsjenkins00000000000000# Copyright 2014 Tom Barron. All rights reserved. # # 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. import platform import mock from cinder.openstack.common import processutils as putils from cinder import test from cinder import version from cinder.volume.drivers.netapp import utils as na_utils class OpenstackInfoTestCase(test.TestCase): UNKNOWN_VERSION = 'unknown version' UNKNOWN_RELEASE = 'unknown release' UNKNOWN_VENDOR = 'unknown vendor' UNKNOWN_PLATFORM = 'unknown platform' VERSION_STRING_RET_VAL = 'fake_version_1' RELEASE_STRING_RET_VAL = 'fake_release_1' PLATFORM_RET_VAL = 'fake_platform_1' VERSION_INFO_VERSION = 'fake_version_2' VERSION_INFO_RELEASE = 'fake_release_2' RPM_INFO_VERSION = 'fake_version_3' RPM_INFO_RELEASE = 'fake_release_3' RPM_INFO_VENDOR = 'fake vendor 3' PUTILS_RPM_RET_VAL = ('fake_version_3 fake_release_3 fake vendor 3', '') NO_PKG_FOUND = ('', 'whatever') PUTILS_DPKG_RET_VAL = ('epoch:upstream_version-debian_revision', '') DEB_RLS = 'upstream_version-debian_revision' DEB_VENDOR = 'debian_revision' def setUp(self): super(OpenstackInfoTestCase, self).setUp() def test_openstack_info_init(self): info = na_utils.OpenStackInfo() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(version.version_info, 'version_string', mock.Mock(return_value=VERSION_STRING_RET_VAL)) def test_update_version_from_version_string(self): info = na_utils.OpenStackInfo() info._update_version_from_version_string() self.assertEqual(self.VERSION_STRING_RET_VAL, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(version.version_info, 'version_string', mock.Mock(side_effect=Exception)) def test_xcption_in_update_version_from_version_string(self): info = na_utils.OpenStackInfo() info._update_version_from_version_string() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(version.version_info, 'release_string', mock.Mock(return_value=RELEASE_STRING_RET_VAL)) def test_update_release_from_release_string(self): info = na_utils.OpenStackInfo() info._update_release_from_release_string() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.RELEASE_STRING_RET_VAL, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(version.version_info, 'release_string', mock.Mock(side_effect=Exception)) def test_xcption_in_update_release_from_release_string(self): info = na_utils.OpenStackInfo() info._update_release_from_release_string() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(platform, 'platform', mock.Mock(return_value=PLATFORM_RET_VAL)) def test_update_platform(self): info = na_utils.OpenStackInfo() info._update_platform() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.PLATFORM_RET_VAL, info._platform) @mock.patch.object(platform, 'platform', mock.Mock(side_effect=Exception)) def test_xcption_in_update_platform(self): info = na_utils.OpenStackInfo() info._update_platform() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(na_utils.OpenStackInfo, '_get_version_info_version', mock.Mock(return_value=VERSION_INFO_VERSION)) @mock.patch.object(na_utils.OpenStackInfo, '_get_version_info_release', mock.Mock(return_value=VERSION_INFO_RELEASE)) def test_update_info_from_version_info(self): info = na_utils.OpenStackInfo() info._update_info_from_version_info() self.assertEqual(self.VERSION_INFO_VERSION, info._version) self.assertEqual(self.VERSION_INFO_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(na_utils.OpenStackInfo, '_get_version_info_version', mock.Mock(return_value='')) @mock.patch.object(na_utils.OpenStackInfo, '_get_version_info_release', mock.Mock(return_value=None)) def test_no_info_from_version_info(self): info = na_utils.OpenStackInfo() info._update_info_from_version_info() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(na_utils.OpenStackInfo, '_get_version_info_version', mock.Mock(return_value=VERSION_INFO_VERSION)) @mock.patch.object(na_utils.OpenStackInfo, '_get_version_info_release', mock.Mock(side_effect=Exception)) def test_xcption_in_info_from_version_info(self): info = na_utils.OpenStackInfo() info._update_info_from_version_info() self.assertEqual(self.VERSION_INFO_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) @mock.patch.object(putils, 'execute', mock.Mock(return_value=PUTILS_RPM_RET_VAL)) def test_update_info_from_rpm(self): info = na_utils.OpenStackInfo() found_package = info._update_info_from_rpm() self.assertEqual(self.RPM_INFO_VERSION, info._version) self.assertEqual(self.RPM_INFO_RELEASE, info._release) self.assertEqual(self.RPM_INFO_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) self.assertTrue(found_package) @mock.patch.object(putils, 'execute', mock.Mock(return_value=NO_PKG_FOUND)) def test_update_info_from_rpm_no_pkg_found(self): info = na_utils.OpenStackInfo() found_package = info._update_info_from_rpm() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) self.assertFalse(found_package) @mock.patch.object(putils, 'execute', mock.Mock(side_effect=Exception)) def test_xcption_in_update_info_from_rpm(self): info = na_utils.OpenStackInfo() found_package = info._update_info_from_rpm() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) self.assertFalse(found_package) @mock.patch.object(putils, 'execute', mock.Mock(return_value=PUTILS_DPKG_RET_VAL)) def test_update_info_from_dpkg(self): info = na_utils.OpenStackInfo() found_package = info._update_info_from_dpkg() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.DEB_RLS, info._release) self.assertEqual(self.DEB_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) self.assertTrue(found_package) @mock.patch.object(putils, 'execute', mock.Mock(return_value=NO_PKG_FOUND)) def test_update_info_from_dpkg_no_pkg_found(self): info = na_utils.OpenStackInfo() found_package = info._update_info_from_dpkg() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) self.assertFalse(found_package) @mock.patch.object(putils, 'execute', mock.Mock(side_effect=Exception)) def test_xcption_in_update_info_from_dpkg(self): info = na_utils.OpenStackInfo() found_package = info._update_info_from_dpkg() self.assertEqual(self.UNKNOWN_VERSION, info._version) self.assertEqual(self.UNKNOWN_RELEASE, info._release) self.assertEqual(self.UNKNOWN_VENDOR, info._vendor) self.assertEqual(self.UNKNOWN_PLATFORM, info._platform) self.assertFalse(found_package) @mock.patch.object(na_utils.OpenStackInfo, '_update_version_from_version_string', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_release_from_release_string', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_platform', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_info_from_version_info', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_info_from_rpm', mock.Mock(return_value=True)) @mock.patch.object(na_utils.OpenStackInfo, '_update_info_from_dpkg') def test_update_openstack_info_rpm_pkg_found(self, mock_updt_from_dpkg): info = na_utils.OpenStackInfo() info._update_openstack_info() self.assertFalse(mock_updt_from_dpkg.called) @mock.patch.object(na_utils.OpenStackInfo, '_update_version_from_version_string', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_release_from_release_string', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_platform', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_info_from_version_info', mock.Mock()) @mock.patch.object(na_utils.OpenStackInfo, '_update_info_from_rpm', mock.Mock(return_value=False)) @mock.patch.object(na_utils.OpenStackInfo, '_update_info_from_dpkg') def test_update_openstack_info_rpm_pkg_not_found(self, mock_updt_from_dpkg): info = na_utils.OpenStackInfo() info._update_openstack_info() self.assertTrue(mock_updt_from_dpkg.called) cinder-2014.1.5/cinder/tests/test_netapp_ssc.py0000664000567000056700000005705512540642606022547 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2012 NetApp, Inc. # All Rights Reserved. # # 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. """Unit tests for the NetApp-specific ssc module.""" import BaseHTTPServer import copy import httplib from lxml import etree from mox import IgnoreArg import six from cinder import exception from cinder import test from cinder.volume.drivers.netapp import api from cinder.volume.drivers.netapp import ssc_utils class FakeHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): """HTTP handler that doesn't spam the log.""" def log_message(self, format, *args): pass class FakeHttplibSocket(object): """A fake socket implementation for httplib.HTTPResponse.""" def __init__(self, value): self._rbuffer = six.StringIO(value) self._wbuffer = six.StringIO('') oldclose = self._wbuffer.close def newclose(): self.result = self._wbuffer.getvalue() oldclose() self._wbuffer.close = newclose def makefile(self, mode, _other): """Returns the socket's internal buffer""" if mode == 'r' or mode == 'rb': return self._rbuffer if mode == 'w' or mode == 'wb': return self._wbuffer RESPONSE_PREFIX_DIRECT_CMODE = """ """ RESPONSE_PREFIX_DIRECT = """ """ RESPONSE_SUFFIX_DIRECT = """""" class FakeDirectCMODEServerHandler(FakeHTTPRequestHandler): """HTTP handler that fakes enough stuff to allow the driver to run.""" def do_GET(s): """Respond to a GET request.""" if '/servlets/netapp.servlets.admin.XMLrequest_filer' not in s.path: s.send_response(404) s.end_headers return s.send_response(200) s.send_header("Content-Type", "text/xml; charset=utf-8") s.end_headers() out = s.wfile out.write('' '') def do_POST(s): """Respond to a POST request.""" if '/servlets/netapp.servlets.admin.XMLrequest_filer' not in s.path: s.send_response(404) s.end_headers return request_xml = s.rfile.read(int(s.headers['Content-Length'])) root = etree.fromstring(request_xml) body = [x for x in root.iterchildren()] request = body[0] tag = request.tag localname = etree.QName(tag).localname or tag if 'volume-get-iter' == localname: body = """ iscsi Openstack aggr0 /iscsi rw 214748364 224748364 enabled file true false online false false true nfsvol Openstack aggr0 /nfs rw 14748364 24748364 enabled volume true false online false false true nfsvol2 Openstack aggr0 /nfs2 rw 14748364 24748364 enabled volume true false online true true true nfsvol3 Openstack aggr0 /nfs3 rw enabled volume true false online false false true 4""" elif 'aggr-options-list-info' == localname: body = """ ha_policy cfo raidtype raid_dp """ elif 'sis-get-iter' == localname: body = """ /vol/iscsi true enabled """ elif 'storage-disk-get-iter' == localname: body = """ SATA """ else: # Unknown API s.send_response(500) s.end_headers return s.send_response(200) s.send_header("Content-Type", "text/xml; charset=utf-8") s.end_headers() s.wfile.write(RESPONSE_PREFIX_DIRECT_CMODE) s.wfile.write(RESPONSE_PREFIX_DIRECT) s.wfile.write(body) s.wfile.write(RESPONSE_SUFFIX_DIRECT) class FakeDirectCmodeHTTPConnection(object): """A fake httplib.HTTPConnection for netapp tests. Requests made via this connection actually get translated and routed into the fake direct handler above, we then turn the response into the httplib.HTTPResponse that the caller expects. """ def __init__(self, host, timeout=None): self.host = host def request(self, method, path, data=None, headers=None): if not headers: headers = {} req_str = '%s %s HTTP/1.1\r\n' % (method, path) for key, value in headers.iteritems(): req_str += "%s: %s\r\n" % (key, value) if data: req_str += '\r\n%s' % data # NOTE(vish): normally the http transport normailizes from unicode sock = FakeHttplibSocket(req_str.decode("latin-1").encode("utf-8")) # NOTE(vish): stop the server from trying to look up address from # the fake socket FakeDirectCMODEServerHandler.address_string = lambda x: '127.0.0.1' self.app = FakeDirectCMODEServerHandler(sock, '127.0.0.1:80', None) self.sock = FakeHttplibSocket(sock.result) self.http_response = httplib.HTTPResponse(self.sock) def set_debuglevel(self, level): pass def getresponse(self): self.http_response.begin() return self.http_response def getresponsebody(self): return self.sock.result def createNetAppVolume(**kwargs): vol = ssc_utils.NetAppVolume(kwargs['name'], kwargs['vs']) vol.state['vserver_root'] = kwargs.get('vs_root') vol.state['status'] = kwargs.get('status') vol.state['junction_active'] = kwargs.get('junc_active') vol.space['size_avl_bytes'] = kwargs.get('avl_byt') vol.space['size_total_bytes'] = kwargs.get('total_byt') vol.space['space-guarantee-enabled'] = kwargs.get('sg_enabled') vol.space['space-guarantee'] = kwargs.get('sg') vol.space['thin_provisioned'] = kwargs.get('thin') vol.mirror['mirrored'] = kwargs.get('mirrored') vol.qos['qos_policy_group'] = kwargs.get('qos') vol.aggr['name'] = kwargs.get('aggr_name') vol.aggr['junction'] = kwargs.get('junction') vol.sis['dedup'] = kwargs.get('dedup') vol.sis['compression'] = kwargs.get('compression') vol.aggr['raid_type'] = kwargs.get('raid') vol.aggr['ha_policy'] = kwargs.get('ha') vol.aggr['disk_type'] = kwargs.get('disk') return vol class SscUtilsTestCase(test.TestCase): """Test ssc utis.""" vol1 = createNetAppVolume(name='vola', vs='openstack', vs_root=False, status='online', junc_active=True, avl_byt='1000', total_byt='1500', sg_enabled=False, sg='file', thin=False, mirrored=False, qos=None, aggr_name='aggr1', junction='/vola', dedup=False, compression=False, raid='raiddp', ha='cfo', disk='SSD') vol2 = createNetAppVolume(name='volb', vs='openstack', vs_root=False, status='online', junc_active=True, avl_byt='2000', total_byt='2500', sg_enabled=True, sg='file', thin=True, mirrored=False, qos=None, aggr_name='aggr2', junction='/volb', dedup=True, compression=False, raid='raid4', ha='cfo', disk='SSD') vol3 = createNetAppVolume(name='volc', vs='openstack', vs_root=False, status='online', junc_active=True, avl_byt='3000', total_byt='3500', sg_enabled=True, sg='volume', thin=True, mirrored=False, qos=None, aggr_name='aggr1', junction='/volc', dedup=True, compression=True, raid='raiddp', ha='cfo', disk='SAS') vol4 = createNetAppVolume(name='vold', vs='openstack', vs_root=False, status='online', junc_active=True, avl_byt='4000', total_byt='4500', sg_enabled=False, sg='none', thin=False, mirrored=False, qos=None, aggr_name='aggr1', junction='/vold', dedup=False, compression=False, raid='raiddp', ha='cfo', disk='SSD') vol5 = createNetAppVolume(name='vole', vs='openstack', vs_root=False, status='online', junc_active=True, avl_byt='5000', total_byt='5500', sg_enabled=True, sg='none', thin=False, mirrored=True, qos=None, aggr_name='aggr2', junction='/vole', dedup=True, compression=False, raid='raid4', ha='cfo', disk='SAS') def setUp(self): super(SscUtilsTestCase, self).setUp() self.stubs.Set(httplib, 'HTTPConnection', FakeDirectCmodeHTTPConnection) def test_cl_vols_ssc_all(self): """Test cluster ssc for all vols.""" na_server = api.NaServer('127.0.0.1') vserver = 'openstack' test_vols = set([copy.deepcopy(self.vol1), copy.deepcopy(self.vol2), copy.deepcopy(self.vol3)]) sis = {'vola': {'dedup': False, 'compression': False}, 'volb': {'dedup': True, 'compression': False}} mirrored = {'vola': [{'dest_loc': 'openstack1:vol1', 'rel_type': 'data_protection', 'mirr_state': 'broken'}, {'dest_loc': 'openstack2:vol2', 'rel_type': 'data_protection', 'mirr_state': 'snapmirrored'}], 'volb': [{'dest_loc': 'openstack1:vol2', 'rel_type': 'data_protection', 'mirr_state': 'broken'}]} self.mox.StubOutWithMock(ssc_utils, 'query_cluster_vols_for_ssc') self.mox.StubOutWithMock(ssc_utils, 'get_sis_vol_dict') self.mox.StubOutWithMock(ssc_utils, 'get_snapmirror_vol_dict') self.mox.StubOutWithMock(ssc_utils, 'query_aggr_options') self.mox.StubOutWithMock(ssc_utils, 'query_aggr_storage_disk') ssc_utils.query_cluster_vols_for_ssc( na_server, vserver, None).AndReturn(test_vols) ssc_utils.get_sis_vol_dict(na_server, vserver, None).AndReturn(sis) ssc_utils.get_snapmirror_vol_dict(na_server, vserver, None).AndReturn( mirrored) raiddp = {'ha_policy': 'cfo', 'raid_type': 'raiddp'} ssc_utils.query_aggr_options( na_server, IgnoreArg()).AndReturn(raiddp) ssc_utils.query_aggr_storage_disk( na_server, IgnoreArg()).AndReturn('SSD') raid4 = {'ha_policy': 'cfo', 'raid_type': 'raid4'} ssc_utils.query_aggr_options( na_server, IgnoreArg()).AndReturn(raid4) ssc_utils.query_aggr_storage_disk( na_server, IgnoreArg()).AndReturn('SAS') self.mox.ReplayAll() res_vols = ssc_utils.get_cluster_vols_with_ssc( na_server, vserver, volume=None) self.mox.VerifyAll() for vol in res_vols: if vol.id['name'] == 'volc': self.assertEqual(vol.sis['compression'], False) self.assertEqual(vol.sis['dedup'], False) else: pass def test_cl_vols_ssc_single(self): """Test cluster ssc for single vol.""" na_server = api.NaServer('127.0.0.1') vserver = 'openstack' test_vols = set([copy.deepcopy(self.vol1)]) sis = {'vola': {'dedup': False, 'compression': False}} mirrored = {'vola': [{'dest_loc': 'openstack1:vol1', 'rel_type': 'data_protection', 'mirr_state': 'broken'}, {'dest_loc': 'openstack2:vol2', 'rel_type': 'data_protection', 'mirr_state': 'snapmirrored'}]} self.mox.StubOutWithMock(ssc_utils, 'query_cluster_vols_for_ssc') self.mox.StubOutWithMock(ssc_utils, 'get_sis_vol_dict') self.mox.StubOutWithMock(ssc_utils, 'get_snapmirror_vol_dict') self.mox.StubOutWithMock(ssc_utils, 'query_aggr_options') self.mox.StubOutWithMock(ssc_utils, 'query_aggr_storage_disk') ssc_utils.query_cluster_vols_for_ssc( na_server, vserver, 'vola').AndReturn(test_vols) ssc_utils.get_sis_vol_dict( na_server, vserver, 'vola').AndReturn(sis) ssc_utils.get_snapmirror_vol_dict( na_server, vserver, 'vola').AndReturn(mirrored) raiddp = {'ha_policy': 'cfo', 'raid_type': 'raiddp'} ssc_utils.query_aggr_options( na_server, 'aggr1').AndReturn(raiddp) ssc_utils.query_aggr_storage_disk(na_server, 'aggr1').AndReturn('SSD') self.mox.ReplayAll() res_vols = ssc_utils.get_cluster_vols_with_ssc( na_server, vserver, volume='vola') self.mox.VerifyAll() self.assertEqual(len(res_vols), 1) def test_get_cluster_ssc(self): """Test get cluster ssc map.""" na_server = api.NaServer('127.0.0.1') vserver = 'openstack' test_vols = set( [self.vol1, self.vol2, self.vol3, self.vol4, self.vol5]) self.mox.StubOutWithMock(ssc_utils, 'get_cluster_vols_with_ssc') ssc_utils.get_cluster_vols_with_ssc( na_server, vserver).AndReturn(test_vols) self.mox.ReplayAll() res_map = ssc_utils.get_cluster_ssc(na_server, vserver) self.mox.VerifyAll() self.assertEqual(len(res_map['mirrored']), 1) self.assertEqual(len(res_map['dedup']), 3) self.assertEqual(len(res_map['compression']), 1) self.assertEqual(len(res_map['thin']), 2) self.assertEqual(len(res_map['all']), 5) def test_vols_for_boolean_specs(self): """Test ssc for boolean specs.""" test_vols = set( [self.vol1, self.vol2, self.vol3, self.vol4, self.vol5]) ssc_map = {'mirrored': set([self.vol1]), 'dedup': set([self.vol1, self.vol2, self.vol3]), 'compression': set([self.vol3, self.vol4]), 'thin': set([self.vol5, self.vol2]), 'all': test_vols} test_map = {'mirrored': ('netapp_mirrored', 'netapp_unmirrored'), 'dedup': ('netapp_dedup', 'netapp_nodedup'), 'compression': ('netapp_compression', 'netapp_nocompression'), 'thin': ('netapp_thin_provisioned', 'netapp_thick_provisioned')} for type in test_map.keys(): # type extra_specs = {test_map[type][0]: 'true'} res = ssc_utils.get_volumes_for_specs(ssc_map, extra_specs) self.assertEqual(len(res), len(ssc_map[type])) # opposite type extra_specs = {test_map[type][1]: 'true'} res = ssc_utils.get_volumes_for_specs(ssc_map, extra_specs) self.assertEqual(len(res), len(ssc_map['all'] - ssc_map[type])) # both types extra_specs =\ {test_map[type][0]: 'true', test_map[type][1]: 'true'} res = ssc_utils.get_volumes_for_specs(ssc_map, extra_specs) self.assertEqual(len(res), len(ssc_map['all'])) def test_vols_for_optional_specs(self): """Test ssc for optional specs.""" test_vols =\ set([self.vol1, self.vol2, self.vol3, self.vol4, self.vol5]) ssc_map = {'mirrored': set([self.vol1]), 'dedup': set([self.vol1, self.vol2, self.vol3]), 'compression': set([self.vol3, self.vol4]), 'thin': set([self.vol5, self.vol2]), 'all': test_vols} extra_specs =\ {'netapp_dedup': 'true', 'netapp:raid_type': 'raid4', 'netapp:disk_type': 'SSD'} res = ssc_utils.get_volumes_for_specs(ssc_map, extra_specs) self.assertEqual(len(res), 1) def test_query_cl_vols_for_ssc(self): na_server = api.NaServer('127.0.0.1') na_server.set_api_version(1, 15) vols = ssc_utils.query_cluster_vols_for_ssc(na_server, 'Openstack') self.assertEqual(len(vols), 2) for vol in vols: if vol.id['name'] != 'iscsi' or vol.id['name'] != 'nfsvol': pass else: raise exception.InvalidVolume('Invalid volume returned.') def test_query_aggr_options(self): na_server = api.NaServer('127.0.0.1') aggr_attribs = ssc_utils.query_aggr_options(na_server, 'aggr0') if aggr_attribs: self.assertEqual(aggr_attribs['ha_policy'], 'cfo') self.assertEqual(aggr_attribs['raid_type'], 'raid_dp') else: raise exception.InvalidParameterValue("Incorrect aggr options") def test_query_aggr_storage_disk(self): na_server = api.NaServer('127.0.0.1') eff_disk_type = ssc_utils.query_aggr_storage_disk(na_server, 'aggr0') self.assertEqual(eff_disk_type, 'SATA') cinder-2014.1.5/cinder/tests/test_api_urlmap.py0000664000567000056700000003001612540642606022525 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests for cinder.api.urlmap.py """ from cinder.api import urlmap from cinder import test class TestParseFunctions(test.TestCase): def test_unquote_header_value_without_quotes(self): arg = 'TestString' result = urlmap.unquote_header_value(arg) self.assertEqual(result, arg) def test_unquote_header_value_with_quotes(self): result = urlmap.unquote_header_value('"TestString"') self.assertEqual(result, 'TestString') def test_parse_list_header(self): arg = 'token, "quoted value"' result = urlmap.parse_list_header(arg) self.assertEqual(result, ['token', 'quoted value']) def test_parse_options_header(self): result = urlmap.parse_options_header('Content-Type: text/html;' ' mimetype=text/html') self.assertEqual(result, ('Content-Type:', {'mimetype': 'text/html'})) def test_parse_options_header_without_value(self): result = urlmap.parse_options_header(None) self.assertEqual(result, ('', {})) class TestAccept(test.TestCase): def test_best_match_ValueError(self): arg = 'text/html; q=some_invalud_value' accept = urlmap.Accept(arg) self.assertEqual(accept.best_match(['text/html']), (None, {})) def test_best_match(self): arg = '*/*; q=0.7, application/json; q=0.7, text/html; q=-0.8' accept = urlmap.Accept(arg) self.assertEqual(accept.best_match(['application/json', 'application/xml', 'text/html']), ('application/json', {'q': '0.7'})) def test_match_mask_one_asterisk(self): arg = 'text/*; q=0.7' accept = urlmap.Accept(arg) self.assertEqual(accept.best_match(['text/html']), ('text/html', {'q': '0.7'})) def test_match_mask_two_asterisk(self): arg = '*/*; q=0.7' accept = urlmap.Accept(arg) self.assertEqual(accept.best_match(['text/html']), ('text/html', {'q': '0.7'})) def test_match_mask_no_asterisk(self): arg = 'application/json; q=0.7' accept = urlmap.Accept(arg) self.assertEqual(accept.best_match(['text/html']), (None, {})) def test_content_type_params(self): arg = "application/xml; q=0.1, application/json; q=0.2," \ " text/html; q=0.3" accept = urlmap.Accept(arg) self.assertEqual(accept.content_type_params('application/json'), {'q': '0.2'}) def test_content_type_params_wrong_content_type(self): arg = 'application/xml; q=0.1, text/html; q=0.1' accept = urlmap.Accept(arg) self.assertEqual(accept.content_type_params('application/json'), {}) class TestUrlMapFactory(test.TestCase): def setUp(self): super(TestUrlMapFactory, self).setUp() self.global_conf = {'not_found_app': 'app_global', 'domain hoobar.com port 10 /': 'some_app_global'} self.loader = self.mox.CreateMockAnything() def test_not_found_app_in_local_conf(self): local_conf = {'not_found_app': 'app_local', 'domain foobar.com port 20 /': 'some_app_local'} self.loader.get_app('app_local', global_conf=self.global_conf).\ AndReturn('app_local_loader') self.loader.get_app('some_app_local', global_conf=self.global_conf).\ AndReturn('some_app_loader') self.mox.ReplayAll() expected_urlmap = urlmap.URLMap(not_found_app='app_local_loader') expected_urlmap['http://foobar.com:20'] = 'some_app_loader' self.assertEqual(urlmap.urlmap_factory(self.loader, self.global_conf, **local_conf), expected_urlmap) def test_not_found_app_not_in_local_conf(self): local_conf = {'domain foobar.com port 20 /': 'some_app_local'} self.loader.get_app('app_global', global_conf=self.global_conf).\ AndReturn('app_global_loader') self.loader.get_app('some_app_local', global_conf=self.global_conf).\ AndReturn('some_app_returned_by_loader') self.mox.ReplayAll() expected_urlmap = urlmap.URLMap(not_found_app='app_global_loader') expected_urlmap['http://foobar.com:20'] = 'some_app_returned'\ '_by_loader' self.assertEqual(urlmap.urlmap_factory(self.loader, self.global_conf, **local_conf), expected_urlmap) def test_not_found_app_is_none(self): local_conf = {'not_found_app': None, 'domain foobar.com port 20 /': 'some_app_local'} self.loader.get_app('some_app_local', global_conf=self.global_conf).\ AndReturn('some_app_returned_by_loader') self.mox.ReplayAll() expected_urlmap = urlmap.URLMap(not_found_app=None) expected_urlmap['http://foobar.com:20'] = 'some_app_returned'\ '_by_loader' self.assertEqual(urlmap.urlmap_factory(self.loader, self.global_conf, **local_conf), expected_urlmap) class TestURLMap(test.TestCase): def setUp(self): super(TestURLMap, self).setUp() self.urlmap = urlmap.URLMap() self.input_environ = {'HTTP_ACCEPT': "application/json;" "version=9.0", 'REQUEST_METHOD': "GET", 'CONTENT_TYPE': 'application/xml', 'SCRIPT_NAME': '/scriptname', 'PATH_INFO': "/resource.xml"} self.environ = {'HTTP_ACCEPT': "application/json;" "version=9.0", 'REQUEST_METHOD': "GET", 'CONTENT_TYPE': 'application/xml', 'SCRIPT_NAME': '/scriptname/app_url', 'PATH_INFO': "/resource.xml"} def test_match_with_applications(self): self.urlmap[('http://10.20.30.40:50', '/path/somepath')] = 'app' self.assertEqual(self.urlmap._match('20.30.40.50', '20', 'path/somepath'), (None, None)) def test_match_without_applications(self): self.assertEqual(self.urlmap._match('host', 20, 'app_url/somepath'), (None, None)) def test_match_path_info_equals_app_url(self): self.urlmap[('http://20.30.40.50:60', '/app_url/somepath')] = 'app' self.assertEqual(self.urlmap._match('http://20.30.40.50', '60', '/app_url/somepath'), ('app', '/app_url/somepath')) def test_match_path_info_equals_app_url_many_app(self): self.urlmap[('http://20.30.40.50:60', '/path')] = 'app1' self.urlmap[('http://20.30.40.50:60', '/path/somepath')] = 'app2' self.urlmap[('http://20.30.40.50:60', '/path/somepath/elsepath')] = \ 'app3' self.assertEqual(self.urlmap._match('http://20.30.40.50', '60', '/path/somepath/elsepath'), ('app3', '/path/somepath/elsepath')) def test_set_script_name(self): app = self.mox.CreateMockAnything() start_response = self.mox.CreateMockAnything() app.__call__(self.environ, start_response).AndReturn('value') self.mox.ReplayAll() wrap = self.urlmap._set_script_name(app, '/app_url') self.assertEqual(wrap(self.input_environ, start_response), 'value') def test_munge_path(self): app = self.mox.CreateMockAnything() start_response = self.mox.CreateMockAnything() app.__call__(self.environ, start_response).AndReturn('value') self.mox.ReplayAll() wrap = self.urlmap._munge_path(app, '/app_url/resource.xml', '/app_url') self.assertEqual(wrap(self.input_environ, start_response), 'value') def test_content_type_strategy_without_version(self): self.assertEqual(self.urlmap._content_type_strategy('host', 20, self.environ), None) def test_content_type_strategy_with_version(self): environ = {'HTTP_ACCEPT': "application/vnd.openstack.melange+xml;" "version=9.0", 'REQUEST_METHOD': "GET", 'PATH_INFO': "/resource.xml", 'CONTENT_TYPE': 'application/xml; version=2.0'} self.urlmap[('http://10.20.30.40:50', '/v2.0')] = 'app' self.mox.StubOutWithMock(self.urlmap, '_set_script_name') self.urlmap._set_script_name('app', '/v2.0').AndReturn('value') self.mox.ReplayAll() self.assertEqual(self.urlmap._content_type_strategy( 'http://10.20.30.40', '50', environ), 'value') def test_path_strategy_wrong_path_info(self): self.assertEqual(self.urlmap._path_strategy('http://10.20.30.40', '50', '/resource'), (None, None, None)) def test_path_strategy_mime_type_only(self): self.assertEqual(self.urlmap._path_strategy('http://10.20.30.40', '50', '/resource.xml'), ('application/xml', None, None)) def test_path_strategy(self): self.urlmap[('http://10.20.30.40:50', '/path/elsepath/')] = 'app' self.mox.StubOutWithMock(self.urlmap, '_munge_path') self.urlmap._munge_path('app', '/path/elsepath/resource.xml', '/path/elsepath').AndReturn('value') self.mox.ReplayAll() self.assertEqual(self.urlmap._path_strategy( 'http://10.20.30.40', '50', '/path/elsepath/resource.xml'), ('application/xml', 'value', '/path/elsepath')) def test_path_strategy_wrong_mime_type(self): self.urlmap[('http://10.20.30.40:50', '/path/elsepath/')] = 'app' self.mox.StubOutWithMock(self.urlmap, '_munge_path') self.urlmap._munge_path('app', '/path/elsepath/resource.abc', '/path/elsepath').AndReturn('value') self.mox.ReplayAll() self.assertEqual(self.urlmap._path_strategy( 'http://10.20.30.40', '50', '/path/elsepath/resource.abc'), (None, 'value', '/path/elsepath')) def test_accept_strategy_version_not_in_params(self): environ = {'HTTP_ACCEPT': "application/xml; q=0.1, application/json; " "q=0.2", 'REQUEST_METHOD': "GET", 'PATH_INFO': "/resource.xml", 'CONTENT_TYPE': 'application/xml; version=2.0'} self.assertEqual(self.urlmap._accept_strategy( 'http://10.20.30.40', '50', environ, ['application/xml']), ('application/xml', None)) def test_accept_strategy_version(self): environ = {'HTTP_ACCEPT': "application/xml; q=0.1; version=1.0," "application/json; q=0.2; version=2.0", 'REQUEST_METHOD': "GET", 'PATH_INFO': "/resource.xml", 'CONTENT_TYPE': 'application/xml; version=2.0'} self.urlmap[('http://10.20.30.40:50', '/v1.0')] = 'app' self.mox.StubOutWithMock(self.urlmap, '_set_script_name') self.urlmap._set_script_name('app', '/v1.0').AndReturn('value') self.mox.ReplayAll() self.assertEqual(self.urlmap._accept_strategy( 'http://10.20.30.40', '50', environ, ['application/xml']), ('application/xml', 'value')) cinder-2014.1.5/cinder/tests/runtime_conf.py0000664000567000056700000000153112540642606022025 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from oslo.config import cfg CONF = cfg.CONF CONF.register_opt(cfg.IntOpt('runtime_answer', default=54, help='test conf')) cinder-2014.1.5/cinder/tests/test_api.py0000664000567000056700000000505512540642606021152 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Unit tests for the API endpoint.""" import httplib import six import webob class FakeHttplibSocket(object): """A fake socket implementation for httplib.HTTPResponse, trivial.""" def __init__(self, response_string): self.response_string = response_string self._buffer = six.StringIO(response_string) def makefile(self, _mode, _other): """Returns the socket's internal buffer.""" return self._buffer class FakeHttplibConnection(object): """A fake httplib.HTTPConnection for boto. requests made via this connection actually get translated and routed into our WSGI app, we then wait for the response and turn it back into the httplib.HTTPResponse that boto expects. """ def __init__(self, app, host, is_secure=False): self.app = app self.host = host def request(self, method, path, data, headers): req = webob.Request.blank(path) req.method = method req.body = data req.headers = headers req.headers['Accept'] = 'text/html' req.host = self.host # Call the WSGI app, get the HTTP response resp = str(req.get_response(self.app)) # For some reason, the response doesn't have "HTTP/1.0 " prepended; I # guess that's a function the web server usually provides. resp = "HTTP/1.0 %s" % resp self.sock = FakeHttplibSocket(resp) self.http_response = httplib.HTTPResponse(self.sock) # NOTE(vish): boto is accessing private variables for some reason self._HTTPConnection__response = self.http_response self.http_response.begin() def getresponse(self): return self.http_response def getresponsebody(self): return self.sock.response_string def close(self): """Required for compatibility with boto/tornado.""" pass cinder-2014.1.5/cinder/tests/test_create_volume_flow.py0000664000567000056700000000671712540642606024270 0ustar jenkinsjenkins00000000000000# Copyright 2013 Canonical Ltd. # All Rights Reserved. # # 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. """ Tests for create_volume TaskFlow """ import time from cinder import context from cinder import test from cinder.volume.flows.api import create_volume class fake_scheduler_rpc_api(object): def __init__(self, expected_spec, test_inst): self.expected_spec = expected_spec self.test_inst = test_inst def create_volume(self, ctxt, topic, volume_id, snapshot_id=None, image_id=None, request_spec=None, filter_properties=None): self.test_inst.assertEqual(self.expected_spec, request_spec) class fake_volume_api(object): def __init__(self, expected_spec, test_inst): self.expected_spec = expected_spec self.test_inst = test_inst def create_volume(self, ctxt, volume, host, request_spec, filter_properties, allow_reschedule=True, snapshot_id=None, image_id=None, source_volid=None): self.test_inst.assertEqual(self.expected_spec, request_spec) self.test_inst.assertEqual(request_spec['source_volid'], source_volid) self.test_inst.assertEqual(request_spec['snapshot_id'], snapshot_id) self.test_inst.assertEqual(request_spec['image_id'], image_id) class fake_db(object): def volume_get(self, *args, **kwargs): return {'host': 'barf'} def volume_update(self, *args, **kwargs): return {'host': 'farb'} def snapshot_get(self, *args, **kwargs): return {'volume_id': 1} class CreateVolumeFlowTestCase(test.TestCase): def time_inc(self): self.counter += 1 return self.counter def setUp(self): super(CreateVolumeFlowTestCase, self).setUp() self.ctxt = context.get_admin_context() self.counter = float(0) # Ensure that time.time() always returns more than the last time it was # called to avoid div by zero errors. self.counter = float(0) self.stubs.Set(time, 'time', self.time_inc) def test_cast_create_volume(self): props = {} spec = {'volume_id': None, 'source_volid': None, 'snapshot_id': None, 'image_id': None} task = create_volume.VolumeCastTask( fake_scheduler_rpc_api(spec, self), fake_volume_api(spec, self), fake_db()) task._cast_create_volume(self.ctxt, spec, props) spec = {'volume_id': 1, 'source_volid': 2, 'snapshot_id': 3, 'image_id': 4} task = create_volume.VolumeCastTask( fake_scheduler_rpc_api(spec, self), fake_volume_api(spec, self), fake_db()) task._cast_create_volume(self.ctxt, spec, props) def tearDown(self): self.stubs.UnsetAll() super(CreateVolumeFlowTestCase, self).tearDown() cinder-2014.1.5/cinder/tests/scheduler/0000775000567000056700000000000012540643114020734 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/scheduler/test_host_manager.py0000664000567000056700000002347712540642606025036 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests For HostManager """ import mock from oslo.config import cfg from cinder import exception from cinder.openstack.common.scheduler import filters from cinder.openstack.common import timeutils from cinder.scheduler import host_manager from cinder import test CONF = cfg.CONF class FakeFilterClass1(filters.BaseHostFilter): def host_passes(self, host_state, filter_properties): pass class FakeFilterClass2(filters.BaseHostFilter): def host_passes(self, host_state, filter_properties): pass class HostManagerTestCase(test.TestCase): """Test case for HostManager class.""" def setUp(self): super(HostManagerTestCase, self).setUp() self.host_manager = host_manager.HostManager() self.fake_hosts = [host_manager.HostState('fake_host%s' % x) for x in xrange(1, 5)] def test_choose_host_filters_not_found(self): self.flags(scheduler_default_filters='FakeFilterClass3') self.host_manager.filter_classes = [FakeFilterClass1, FakeFilterClass2] self.assertRaises(exception.SchedulerHostFilterNotFound, self.host_manager._choose_host_filters, None) def test_choose_host_filters(self): self.flags(scheduler_default_filters=['FakeFilterClass2']) self.host_manager.filter_classes = [FakeFilterClass1, FakeFilterClass2] # Test 'volume' returns 1 correct function filter_classes = self.host_manager._choose_host_filters(None) self.assertEqual(len(filter_classes), 1) self.assertEqual(filter_classes[0].__name__, 'FakeFilterClass2') @mock.patch('cinder.scheduler.host_manager.HostManager.' '_choose_host_filters') def test_get_filtered_hosts(self, _mock_choose_host_filters): filter_class = FakeFilterClass1 mock_func = mock.Mock() mock_func.return_value = True filter_class._filter_one = mock_func _mock_choose_host_filters.return_value = [filter_class] fake_properties = {'moo': 1, 'cow': 2} expected = [] for fake_host in self.fake_hosts: expected.append(mock.call(fake_host, fake_properties)) result = self.host_manager.get_filtered_hosts(self.fake_hosts, fake_properties) self.assertEqual(expected, mock_func.call_args_list) self.assertEqual(set(result), set(self.fake_hosts)) @mock.patch('cinder.openstack.common.timeutils.utcnow') def test_update_service_capabilities(self, _mock_utcnow): service_states = self.host_manager.service_states self.assertDictMatch(service_states, {}) _mock_utcnow.side_effect = [31337, 31338, 31339] host1_volume_capabs = dict(free_capacity_gb=4321, timestamp=1) host2_volume_capabs = dict(free_capacity_gb=5432, timestamp=1) host3_volume_capabs = dict(free_capacity_gb=6543, timestamp=1) service_name = 'volume' self.host_manager.update_service_capabilities(service_name, 'host1', host1_volume_capabs) self.host_manager.update_service_capabilities(service_name, 'host2', host2_volume_capabs) self.host_manager.update_service_capabilities(service_name, 'host3', host3_volume_capabs) # Make sure dictionary isn't re-assigned self.assertEqual(self.host_manager.service_states, service_states) # Make sure original dictionary wasn't copied self.assertEqual(host1_volume_capabs['timestamp'], 1) host1_volume_capabs['timestamp'] = 31337 host2_volume_capabs['timestamp'] = 31338 host3_volume_capabs['timestamp'] = 31339 expected = {'host1': host1_volume_capabs, 'host2': host2_volume_capabs, 'host3': host3_volume_capabs} self.assertDictMatch(service_states, expected) @mock.patch('cinder.db.service_get_all_by_topic') @mock.patch('cinder.utils.service_is_up') def test_get_all_host_states(self, _mock_service_is_up, _mock_service_get_all_by_topic): context = 'fake_context' topic = CONF.volume_topic services = [ dict(id=1, host='host1', topic='volume', disabled=False, availability_zone='zone1', updated_at=timeutils.utcnow()), dict(id=2, host='host2', topic='volume', disabled=False, availability_zone='zone1', updated_at=timeutils.utcnow()), dict(id=3, host='host3', topic='volume', disabled=False, availability_zone='zone2', updated_at=timeutils.utcnow()), dict(id=4, host='host4', topic='volume', disabled=False, availability_zone='zone3', updated_at=timeutils.utcnow()), # service on host5 is disabled dict(id=5, host='host5', topic='volume', disabled=True, availability_zone='zone4', updated_at=timeutils.utcnow()), ] # First test: service_is_up is always True, host5 is disabled _mock_service_get_all_by_topic.return_value = services _mock_service_is_up.return_value = True _mock_warning = mock.Mock() host_manager.LOG.warn = _mock_warning # Get all states, make sure host5 is reported as down/disabled self.host_manager.get_all_host_states(context) _mock_service_get_all_by_topic.assert_called_with(context, topic) expected = [] for service in services: expected.append(mock.call(service)) self.assertEqual(expected, _mock_service_is_up.call_args_list) _mock_warning.assert_called_with("volume service is down or disabled. " "(host: host5)") # Get host_state_map and make sure we have the first 4 hosts host_state_map = self.host_manager.host_state_map self.assertEqual(len(host_state_map), 4) for i in xrange(4): volume_node = services[i] host = volume_node['host'] self.assertEqual(host_state_map[host].service, volume_node) # Second test: Now service_is_up returns False for host4 _mock_service_is_up.reset_mock() _mock_service_is_up.side_effect = [True, True, True, False, True] _mock_service_get_all_by_topic.reset_mock() _mock_warning.reset_mock() # Get all states, make sure hosts 4 and 5 is reported as down/disabled self.host_manager.get_all_host_states(context) _mock_service_get_all_by_topic.assert_called_with(context, topic) expected = [] for service in services: expected.append(mock.call(service)) self.assertEqual(expected, _mock_service_is_up.call_args_list) expected = [] for num in ['4', '5']: expected.append(mock.call("volume service is down or disabled. " "(host: host" + num + ")")) self.assertEqual(expected, _mock_warning.call_args_list) # Get host_state_map and make sure we have the first 4 hosts host_state_map = self.host_manager.host_state_map self.assertEqual(len(host_state_map), 3) for i in xrange(3): volume_node = services[i] host = volume_node['host'] self.assertEqual(host_state_map[host].service, volume_node) class HostStateTestCase(test.TestCase): """Test case for HostState class.""" def test_update_from_volume_capability(self): fake_host = host_manager.HostState('host1') self.assertIsNone(fake_host.free_capacity_gb) volume_capability = {'total_capacity_gb': 1024, 'free_capacity_gb': 512, 'reserved_percentage': 0, 'timestamp': None} fake_host.update_from_volume_capability(volume_capability) self.assertEqual(fake_host.free_capacity_gb, 512) def test_update_from_volume_infinite_capability(self): fake_host = host_manager.HostState('host1') self.assertIsNone(fake_host.free_capacity_gb) volume_capability = {'total_capacity_gb': 'infinite', 'free_capacity_gb': 'infinite', 'reserved_percentage': 0, 'timestamp': None} fake_host.update_from_volume_capability(volume_capability) self.assertEqual(fake_host.total_capacity_gb, 'infinite') self.assertEqual(fake_host.free_capacity_gb, 'infinite') def test_update_from_volume_unknown_capability(self): fake_host = host_manager.HostState('host1') self.assertIsNone(fake_host.free_capacity_gb) volume_capability = {'total_capacity_gb': 'infinite', 'free_capacity_gb': 'unknown', 'reserved_percentage': 0, 'timestamp': None} fake_host.update_from_volume_capability(volume_capability) self.assertEqual(fake_host.total_capacity_gb, 'infinite') self.assertEqual(fake_host.free_capacity_gb, 'unknown') cinder-2014.1.5/cinder/tests/scheduler/test_rpcapi.py0000664000567000056700000001135212540642606023632 0ustar jenkinsjenkins00000000000000 # Copyright 2012, Red Hat, Inc. # # 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. """ Unit Tests for cinder.scheduler.rpcapi """ import copy import mock from oslo.config import cfg from cinder import context from cinder.scheduler import rpcapi as scheduler_rpcapi from cinder import test CONF = cfg.CONF class SchedulerRpcAPITestCase(test.TestCase): def setUp(self): super(SchedulerRpcAPITestCase, self).setUp() def tearDown(self): super(SchedulerRpcAPITestCase, self).tearDown() def _test_scheduler_api(self, method, rpc_method, fanout=False, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') rpcapi = scheduler_rpcapi.SchedulerAPI() expected_retval = 'foo' if rpc_method == 'call' else None target = { "fanout": fanout, "version": kwargs.pop('version', rpcapi.RPC_API_VERSION) } expected_msg = copy.deepcopy(kwargs) self.fake_args = None self.fake_kwargs = None def _fake_prepare_method(*args, **kwds): for kwd in kwds: self.assertEqual(kwds[kwd], target[kwd]) return rpcapi.client def _fake_rpc_method(*args, **kwargs): self.fake_args = args self.fake_kwargs = kwargs if expected_retval: return expected_retval with mock.patch.object(rpcapi.client, "prepare") as mock_prepared: mock_prepared.side_effect = _fake_prepare_method with mock.patch.object(rpcapi.client, rpc_method) as mock_method: mock_method.side_effect = _fake_rpc_method retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, expected_retval) expected_args = [ctxt, method, expected_msg] for arg, expected_arg in zip(self.fake_args, expected_args): self.assertEqual(arg, expected_arg) def test_update_service_capabilities(self): self._test_scheduler_api('update_service_capabilities', rpc_method='cast', service_name='fake_name', host='fake_host', capabilities='fake_capabilities', fanout=True) def test_create_volume(self): self._test_scheduler_api('create_volume', rpc_method='cast', topic='topic', volume_id='volume_id', snapshot_id='snapshot_id', image_id='image_id', request_spec='fake_request_spec', filter_properties='filter_properties', version='1.2') def test_migrate_volume_to_host(self): self._test_scheduler_api('migrate_volume_to_host', rpc_method='cast', topic='topic', volume_id='volume_id', host='host', force_host_copy=True, request_spec='fake_request_spec', filter_properties='filter_properties', version='1.3') def test_retype(self): self._test_scheduler_api('retype', rpc_method='cast', topic='topic', volume_id='volume_id', request_spec='fake_request_spec', filter_properties='filter_properties', version='1.4') def test_manage_existing(self): self._test_scheduler_api('manage_existing', rpc_method='cast', topic='topic', volume_id='volume_id', request_spec='fake_request_spec', filter_properties='filter_properties', version='1.5') cinder-2014.1.5/cinder/tests/scheduler/fakes.py0000664000567000056700000000653712540642606022417 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Fakes For Scheduler tests. """ from cinder.openstack.common import timeutils from cinder.scheduler import filter_scheduler from cinder.scheduler import host_manager class FakeFilterScheduler(filter_scheduler.FilterScheduler): def __init__(self, *args, **kwargs): super(FakeFilterScheduler, self).__init__(*args, **kwargs) self.host_manager = host_manager.HostManager() class FakeHostManager(host_manager.HostManager): def __init__(self): super(FakeHostManager, self).__init__() self.service_states = { 'host1': {'total_capacity_gb': 1024, 'free_capacity_gb': 1024, 'allocated_capacity_gb': 0, 'reserved_percentage': 10, 'volume_backend_name': 'lvm1', 'timestamp': None}, 'host2': {'total_capacity_gb': 2048, 'free_capacity_gb': 300, 'allocated_capacity_gb': 1748, 'reserved_percentage': 10, 'volume_backend_name': 'lvm2', 'timestamp': None}, 'host3': {'total_capacity_gb': 512, 'free_capacity_gb': 256, 'allocated_capacity_gb': 256, 'reserved_percentage': 0, 'volume_backend_name': 'lvm3', 'timestamp': None}, 'host4': {'total_capacity_gb': 2048, 'free_capacity_gb': 200, 'allocated_capacity_gb': 1848, 'reserved_percentage': 5, 'volume_backend_name': 'lvm4', 'timestamp': None}, } class FakeHostState(host_manager.HostState): def __init__(self, host, attribute_dict): super(FakeHostState, self).__init__(host) for (key, val) in attribute_dict.iteritems(): setattr(self, key, val) def mock_host_manager_db_calls(mock_obj): services = [ dict(id=1, host='host1', topic='volume', disabled=False, availability_zone='zone1', updated_at=timeutils.utcnow()), dict(id=2, host='host2', topic='volume', disabled=False, availability_zone='zone1', updated_at=timeutils.utcnow()), dict(id=3, host='host3', topic='volume', disabled=False, availability_zone='zone2', updated_at=timeutils.utcnow()), dict(id=4, host='host4', topic='volume', disabled=False, availability_zone='zone3', updated_at=timeutils.utcnow()), # service on host5 is disabled dict(id=5, host='host5', topic='volume', disabled=True, availability_zone='zone4', updated_at=timeutils.utcnow()), ] mock_obj.return_value = services cinder-2014.1.5/cinder/tests/scheduler/test_chance_weigher.py0000664000567000056700000000504712540642606025313 0ustar jenkinsjenkins00000000000000# Copyright (C) 2013 Hewlett-Packard Development Company, L.P. # # 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. """ Tests For Chance Weigher. """ import mock from cinder.scheduler import host_manager from cinder.scheduler.weights.chance import ChanceWeigher from cinder import test class ChanceWeigherTestCase(test.TestCase): def setUp(self): super(ChanceWeigherTestCase, self).setUp() def fake_random(self, reset=False): if reset: self.not_random_float = 0.0 else: self.not_random_float += 1.0 return self.not_random_float @mock.patch('random.random') def test_chance_weigher(self, _mock_random): # stub random.random() to verify the ChanceWeigher # is using random.random() (repeated calls to weigh should # return incrementing weights) weigher = ChanceWeigher() _mock_random.side_effect = self.fake_random self.fake_random(reset=True) host_state = {'host': 'host.example.com', 'free_capacity_gb': 99999} weight = weigher._weigh_object(host_state, None) self.assertEqual(1.0, weight) weight = weigher._weigh_object(host_state, None) self.assertEqual(2.0, weight) weight = weigher._weigh_object(host_state, None) self.assertEqual(3.0, weight) def test_host_manager_choosing_chance_weigher(self): # ensure HostManager can load the ChanceWeigher # via the entry points mechanism hm = host_manager.HostManager() weighers = hm._choose_host_weighers('ChanceWeigher') self.assertEqual(1, len(weighers)) self.assertEqual(weighers[0], ChanceWeigher) def test_use_of_chance_weigher_via_host_manager(self): # ensure we don't lose any hosts when weighing with # the ChanceWeigher hm = host_manager.HostManager() fake_hosts = [host_manager.HostState('fake_host%s' % x) for x in xrange(1, 5)] weighed_hosts = hm.get_weighed_hosts(fake_hosts, {}, 'ChanceWeigher') self.assertEqual(4, len(weighed_hosts)) cinder-2014.1.5/cinder/tests/scheduler/test_filter_scheduler.py0000664000567000056700000003231212540642606025676 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests For Filter Scheduler. """ import mock from cinder import context from cinder import exception from cinder.scheduler import filter_scheduler from cinder.scheduler import host_manager from cinder.tests.scheduler import fakes from cinder.tests.scheduler import test_scheduler class FilterSchedulerTestCase(test_scheduler.SchedulerTestCase): """Test case for Filter Scheduler.""" driver_cls = filter_scheduler.FilterScheduler def test_create_volume_no_hosts(self): # Ensure empty hosts/child_zones result in NoValidHosts exception. sched = fakes.FakeFilterScheduler() fake_context = context.RequestContext('user', 'project') request_spec = {'volume_properties': {'project_id': 1, 'size': 1}, 'volume_type': {'name': 'LVM_iSCSI'}, 'volume_id': ['fake-id1']} self.assertRaises(exception.NoValidHost, sched.schedule_create_volume, fake_context, request_spec, {}) @mock.patch('cinder.scheduler.host_manager.HostManager.' 'get_all_host_states') def test_create_volume_non_admin(self, _mock_get_all_host_states): # Test creating a volume locally using create_volume, passing # a non-admin context. DB actions should work. self.was_admin = False def fake_get(ctxt): # Make sure this is called with admin context, even though # we're using user context below. self.was_admin = ctxt.is_admin return {} sched = fakes.FakeFilterScheduler() _mock_get_all_host_states.side_effect = fake_get fake_context = context.RequestContext('user', 'project') request_spec = {'volume_properties': {'project_id': 1, 'size': 1}, 'volume_type': {'name': 'LVM_iSCSI'}, 'volume_id': ['fake-id1']} self.assertRaises(exception.NoValidHost, sched.schedule_create_volume, fake_context, request_spec, {}) self.assertTrue(self.was_admin) @mock.patch('cinder.db.service_get_all_by_topic') def test_schedule_happy_day(self, _mock_service_get_all_by_topic): # Make sure there's nothing glaringly wrong with _schedule() # by doing a happy day pass through. sched = fakes.FakeFilterScheduler() sched.host_manager = fakes.FakeHostManager() fake_context = context.RequestContext('user', 'project', is_admin=True) fakes.mock_host_manager_db_calls(_mock_service_get_all_by_topic) request_spec = {'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1}} weighed_host = sched._schedule(fake_context, request_spec, {}) self.assertIsNotNone(weighed_host.obj) self.assertTrue(_mock_service_get_all_by_topic.called) def test_max_attempts(self): self.flags(scheduler_max_attempts=4) sched = fakes.FakeFilterScheduler() self.assertEqual(4, sched._max_attempts()) def test_invalid_max_attempts(self): self.flags(scheduler_max_attempts=0) self.assertRaises(exception.InvalidParameterValue, fakes.FakeFilterScheduler) def test_retry_disabled(self): # Retry info should not get populated when re-scheduling is off. self.flags(scheduler_max_attempts=1) sched = fakes.FakeFilterScheduler() request_spec = {'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1}} filter_properties = {} sched._schedule(self.context, request_spec, filter_properties=filter_properties) # Should not have retry info in the populated filter properties. self.assertNotIn("retry", filter_properties) def test_retry_attempt_one(self): # Test retry logic on initial scheduling attempt. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() request_spec = {'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1}} filter_properties = {} sched._schedule(self.context, request_spec, filter_properties=filter_properties) num_attempts = filter_properties['retry']['num_attempts'] self.assertEqual(1, num_attempts) def test_retry_attempt_two(self): # Test retry logic when re-scheduling. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() request_spec = {'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1}} retry = dict(num_attempts=1) filter_properties = dict(retry=retry) sched._schedule(self.context, request_spec, filter_properties=filter_properties) num_attempts = filter_properties['retry']['num_attempts'] self.assertEqual(2, num_attempts) def test_retry_exceeded_max_attempts(self): # Test for necessary explosion when max retries is exceeded. self.flags(scheduler_max_attempts=2) sched = fakes.FakeFilterScheduler() request_spec = {'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1}} retry = dict(num_attempts=2) filter_properties = dict(retry=retry) self.assertRaises(exception.NoValidHost, sched._schedule, self.context, request_spec, filter_properties=filter_properties) def test_add_retry_host(self): retry = dict(num_attempts=1, hosts=[]) filter_properties = dict(retry=retry) host = "fakehost" sched = fakes.FakeFilterScheduler() sched._add_retry_host(filter_properties, host) hosts = filter_properties['retry']['hosts'] self.assertEqual(1, len(hosts)) self.assertEqual(host, hosts[0]) def test_post_select_populate(self): # Test addition of certain filter props after a node is selected. retry = {'hosts': [], 'num_attempts': 1} filter_properties = {'retry': retry} sched = fakes.FakeFilterScheduler() host_state = host_manager.HostState('host') host_state.total_capacity_gb = 1024 sched._post_select_populate_filter_properties(filter_properties, host_state) self.assertEqual('host', filter_properties['retry']['hosts'][0]) self.assertEqual(1024, host_state.total_capacity_gb) def _host_passes_filters_setup(self, mock_obj): sched = fakes.FakeFilterScheduler() sched.host_manager = fakes.FakeHostManager() fake_context = context.RequestContext('user', 'project', is_admin=True) fakes.mock_host_manager_db_calls(mock_obj) return (sched, fake_context) @mock.patch('cinder.db.service_get_all_by_topic') def test_host_passes_filters_happy_day(self, _mock_service_get_topic): """Do a successful pass through of with host_passes_filters().""" sched, ctx = self._host_passes_filters_setup( _mock_service_get_topic) request_spec = {'volume_id': 1, 'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1}} ret_host = sched.host_passes_filters(ctx, 'host1', request_spec, {}) self.assertEqual(ret_host.host, 'host1') self.assertTrue(_mock_service_get_topic.called) @mock.patch('cinder.db.service_get_all_by_topic') def test_host_passes_filters_no_capacity(self, _mock_service_get_topic): """Fail the host due to insufficient capacity.""" sched, ctx = self._host_passes_filters_setup( _mock_service_get_topic) request_spec = {'volume_id': 1, 'volume_type': {'name': 'LVM_iSCSI'}, 'volume_properties': {'project_id': 1, 'size': 1024}} self.assertRaises(exception.NoValidHost, sched.host_passes_filters, ctx, 'host1', request_spec, {}) self.assertTrue(_mock_service_get_topic.called) @mock.patch('cinder.db.service_get_all_by_topic') def test_retype_policy_never_migrate_pass(self, _mock_service_get_topic): # Retype should pass if current host passes filters and # policy=never. host4 doesn't have enough space to hold an additional # 200GB, but it is already the host of this volume and should not be # counted twice. sched, ctx = self._host_passes_filters_setup( _mock_service_get_topic) extra_specs = {'volume_backend_name': 'lvm4'} request_spec = {'volume_id': 1, 'volume_type': {'name': 'LVM_iSCSI', 'extra_specs': extra_specs}, 'volume_properties': {'project_id': 1, 'size': 200, 'host': 'host4'}} host_state = sched.find_retype_host(ctx, request_spec, filter_properties={}, migration_policy='never') self.assertEqual(host_state.host, 'host4') @mock.patch('cinder.db.service_get_all_by_topic') def test_retype_policy_never_migrate_fail(self, _mock_service_get_topic): # Retype should fail if current host doesn't pass filters and # policy=never. sched, ctx = self._host_passes_filters_setup( _mock_service_get_topic) extra_specs = {'volume_backend_name': 'lvm1'} request_spec = {'volume_id': 1, 'volume_type': {'name': 'LVM_iSCSI', 'extra_specs': extra_specs}, 'volume_properties': {'project_id': 1, 'size': 200, 'host': 'host4'}} self.assertRaises(exception.NoValidHost, sched.find_retype_host, ctx, request_spec, filter_properties={}, migration_policy='never') @mock.patch('cinder.db.service_get_all_by_topic') def test_retype_policy_demand_migrate_pass(self, _mock_service_get_topic): # Retype should pass if current host fails filters but another host # is suitable when policy=on-demand. sched, ctx = self._host_passes_filters_setup( _mock_service_get_topic) extra_specs = {'volume_backend_name': 'lvm1'} request_spec = {'volume_id': 1, 'volume_type': {'name': 'LVM_iSCSI', 'extra_specs': extra_specs}, 'volume_properties': {'project_id': 1, 'size': 200, 'host': 'host4'}} host_state = sched.find_retype_host(ctx, request_spec, filter_properties={}, migration_policy='on-demand') self.assertEqual(host_state.host, 'host1') @mock.patch('cinder.db.service_get_all_by_topic') def test_retype_policy_demand_migrate_fail(self, _mock_service_get_topic): # Retype should fail if current host doesn't pass filters and # no other suitable candidates exist even if policy=on-demand. sched, ctx = self._host_passes_filters_setup( _mock_service_get_topic) extra_specs = {'volume_backend_name': 'lvm1'} request_spec = {'volume_id': 1, 'volume_type': {'name': 'LVM_iSCSI', 'extra_specs': extra_specs}, 'volume_properties': {'project_id': 1, 'size': 2048, 'host': 'host4'}} self.assertRaises(exception.NoValidHost, sched.find_retype_host, ctx, request_spec, filter_properties={}, migration_policy='on-demand') cinder-2014.1.5/cinder/tests/scheduler/test_scheduler_options.py0000664000567000056700000001175012540642606026107 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests For PickledScheduler. """ import datetime import six from cinder.openstack.common import jsonutils from cinder.scheduler import scheduler_options from cinder import test class FakeSchedulerOptions(scheduler_options.SchedulerOptions): def __init__(self, last_checked, now, file_old, file_now, data, filedata): super(FakeSchedulerOptions, self).__init__() # Change internals ... self.last_modified = file_old self.last_checked = last_checked self.data = data # For overrides ... self._time_now = now self._file_now = file_now self._file_data = filedata self.file_was_loaded = False def _get_file_timestamp(self, filename): return self._file_now def _get_file_handle(self, filename): self.file_was_loaded = True return six.StringIO(self._file_data) def _get_time_now(self): return self._time_now class SchedulerOptionsTestCase(test.TestCase): def test_get_configuration_first_time_no_flag(self): last_checked = None now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = None file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, {}, jdata) self.assertEqual({}, fake.get_configuration()) self.assertFalse(fake.file_was_loaded) def test_get_configuration_first_time_empty_file(self): last_checked = None now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = None file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = "" fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, {}, jdata) self.assertEqual({}, fake.get_configuration('foo.json')) self.assertTrue(fake.file_was_loaded) def test_get_configuration_first_time_happy_day(self): last_checked = None now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = None file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, {}, jdata) self.assertEqual(data, fake.get_configuration('foo.json')) self.assertTrue(fake.file_was_loaded) def test_get_configuration_second_time_no_change(self): last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1) now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = datetime.datetime(2012, 1, 1, 1, 1, 1) file_now = datetime.datetime(2012, 1, 1, 1, 1, 1) data = dict(a=1, b=2, c=3) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, data, jdata) self.assertEqual(data, fake.get_configuration('foo.json')) self.assertFalse(fake.file_was_loaded) def test_get_configuration_second_time_too_fast(self): last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1) now = datetime.datetime(2011, 1, 1, 1, 1, 2) file_old = datetime.datetime(2012, 1, 1, 1, 1, 1) file_now = datetime.datetime(2013, 1, 1, 1, 1, 1) old_data = dict(a=1, b=2, c=3) data = dict(a=11, b=12, c=13) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, old_data, jdata) self.assertEqual(old_data, fake.get_configuration('foo.json')) self.assertFalse(fake.file_was_loaded) def test_get_configuration_second_time_change(self): last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1) now = datetime.datetime(2012, 1, 1, 1, 1, 1) file_old = datetime.datetime(2012, 1, 1, 1, 1, 1) file_now = datetime.datetime(2013, 1, 1, 1, 1, 1) old_data = dict(a=1, b=2, c=3) data = dict(a=11, b=12, c=13) jdata = jsonutils.dumps(data) fake = FakeSchedulerOptions(last_checked, now, file_old, file_now, old_data, jdata) self.assertEqual(data, fake.get_configuration('foo.json')) self.assertTrue(fake.file_was_loaded) cinder-2014.1.5/cinder/tests/scheduler/__init__.py0000664000567000056700000000134312540642606023053 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. # NOTE(vish): this forces the fixtures from tests/__init.py:setup() to work from cinder.tests import * cinder-2014.1.5/cinder/tests/scheduler/test_allocated_capacity_weigher.py0000664000567000056700000000710012540642606027667 0ustar jenkinsjenkins00000000000000# Copyright 2013 eBay Inc. # # All Rights Reserved. # # 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. """ Tests For Allocated Capacity Weigher. """ import mock from oslo.config import cfg from cinder import context from cinder.openstack.common.scheduler.weights import HostWeightHandler from cinder.scheduler.weights.capacity import AllocatedCapacityWeigher as ACW from cinder import test from cinder.tests.scheduler import fakes CONF = cfg.CONF class AllocatedCapacityWeigherTestCase(test.TestCase): def setUp(self): super(AllocatedCapacityWeigherTestCase, self).setUp() self.host_manager = fakes.FakeHostManager() self.weight_handler = HostWeightHandler('cinder.scheduler.weights') def _get_weighed_host(self, hosts, weight_properties=None): if weight_properties is None: weight_properties = {} return self.weight_handler.get_weighed_objects([ACW], hosts, weight_properties)[0] @mock.patch('cinder.db.sqlalchemy.api.service_get_all_by_topic') def _get_all_hosts(self, _mock_service_get_all_by_topic): ctxt = context.get_admin_context() fakes.mock_host_manager_db_calls(_mock_service_get_all_by_topic) host_states = self.host_manager.get_all_host_states(ctxt) _mock_service_get_all_by_topic.assert_called_once_with( ctxt, CONF.volume_topic) return host_states def test_default_of_spreading_first(self): hostinfo_list = self._get_all_hosts() # host1: allocated_capacity_gb=0, weight=0 # host2: allocated_capacity_gb=1748, weight=-1748 # host3: allocated_capacity_gb=256, weight=-256 # host4: allocated_capacity_gb=1848, weight=-1848 # so, host1 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 0) self.assertEqual(weighed_host.obj.host, 'host1') def test_capacity_weight_multiplier1(self): self.flags(allocated_capacity_weight_multiplier=1.0) hostinfo_list = self._get_all_hosts() # host1: allocated_capacity_gb=0, weight=0 # host2: allocated_capacity_gb=1748, weight=1748 # host3: allocated_capacity_gb=256, weight=256 # host4: allocated_capacity_gb=1848, weight=1848 # so, host4 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 1848.0) self.assertEqual(weighed_host.obj.host, 'host4') def test_capacity_weight_multiplier2(self): self.flags(allocated_capacity_weight_multiplier=-2.0) hostinfo_list = self._get_all_hosts() # host1: allocated_capacity_gb=0, weight=0 # host2: allocated_capacity_gb=1748, weight=-3496 # host3: allocated_capacity_gb=256, weight=-512 # host4: allocated_capacity_gb=1848, weight=-3696 # so, host1 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 0) self.assertEqual(weighed_host.obj.host, 'host1') cinder-2014.1.5/cinder/tests/scheduler/test_scheduler.py0000664000567000056700000002544012540642606024335 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Tests For Scheduler """ import mock from oslo.config import cfg from cinder import context from cinder import exception from cinder.scheduler import driver from cinder.scheduler import filter_scheduler from cinder.scheduler import manager from cinder import test CONF = cfg.CONF class SchedulerManagerTestCase(test.TestCase): """Test case for scheduler manager.""" manager_cls = manager.SchedulerManager driver_cls = driver.Scheduler driver_cls_name = 'cinder.scheduler.driver.Scheduler' class AnException(Exception): pass def setUp(self): super(SchedulerManagerTestCase, self).setUp() self.flags(scheduler_driver=self.driver_cls_name) self.manager = self.manager_cls() self.context = context.RequestContext('fake_user', 'fake_project') self.topic = 'fake_topic' self.fake_args = (1, 2, 3) self.fake_kwargs = {'cat': 'meow', 'dog': 'woof'} def test_1_correct_init(self): # Correct scheduler driver manager = self.manager self.assertIsInstance(manager.driver, self.driver_cls) @mock.patch('cinder.scheduler.driver.Scheduler.' 'update_service_capabilities') def test_update_service_capabilities_empty_dict(self, _mock_update_cap): # Test no capabilities passes empty dictionary service = 'fake_service' host = 'fake_host' self.manager.update_service_capabilities(self.context, service_name=service, host=host) _mock_update_cap.assert_called_once_with(service, host, {}) @mock.patch('cinder.scheduler.driver.Scheduler.' 'update_service_capabilities') def test_update_service_capabilities_correct(self, _mock_update_cap): # Test capabilities passes correctly service = 'fake_service' host = 'fake_host' capabilities = {'fake_capability': 'fake_value'} self.manager.update_service_capabilities(self.context, service_name=service, host=host, capabilities=capabilities) _mock_update_cap.assert_called_once_with(service, host, capabilities) @mock.patch('cinder.scheduler.driver.Scheduler.schedule_create_volume') @mock.patch('cinder.db.volume_update') def test_create_volume_exception_puts_volume_in_error_state( self, _mock_volume_update, _mock_sched_create): # Test NoValidHost exception behavior for create_volume. # Puts the volume in 'error' state and eats the exception. _mock_sched_create.side_effect = exception.NoValidHost(reason="") fake_volume_id = 1 topic = 'fake_topic' request_spec = {'volume_id': fake_volume_id} self.manager.create_volume(self.context, topic, fake_volume_id, request_spec=request_spec, filter_properties={}) _mock_volume_update.assert_called_once_with(self.context, fake_volume_id, {'status': 'error'}) _mock_sched_create.assert_called_once_with(self.context, request_spec, {}) @mock.patch('cinder.scheduler.driver.Scheduler.host_passes_filters') @mock.patch('cinder.db.volume_update') def test_migrate_volume_exception_returns_volume_state( self, _mock_volume_update, _mock_host_passes): # Test NoValidHost exception behavior for migrate_volume_to_host. # Puts the volume in 'error_migrating' state and eats the exception. _mock_host_passes.side_effect = exception.NoValidHost(reason="") fake_volume_id = 1 topic = 'fake_topic' request_spec = {'volume_id': fake_volume_id} self.manager.migrate_volume_to_host(self.context, topic, fake_volume_id, 'host', True, request_spec=request_spec, filter_properties={}) _mock_volume_update.assert_called_once_with(self.context, fake_volume_id, {'migration_status': None}) _mock_host_passes.assert_called_once_with(self.context, 'host', request_spec, {}) def test_chance_simple_scheduler_mocked(self): # Test FilterScheduler is loaded and predefined combination # of filters and weighers overrides the default value of config option # scheduler_default_filters and scheduler_default_weighers when # ChanceScheduler or SimpleScheduler is configured as scheduler_driver. chance = 'cinder.scheduler.chance.ChanceScheduler' simple = 'cinder.scheduler.simple.SimpleScheduler' default_filters = ['AvailabilityZoneFilter', 'CapacityFilter', 'CapabilitiesFilter'] self.flags(scheduler_driver=chance, scheduler_default_filters=['CapacityFilter'], scheduler_default_weighers=['CapacityWeigher']) self.manager = self.manager_cls() self.assertTrue(isinstance(self.manager.driver, filter_scheduler.FilterScheduler)) self.assertEqual(CONF.scheduler_default_filters, default_filters) self.assertEqual(CONF.scheduler_default_weighers, ['ChanceWeigher']) self.flags(scheduler_driver=simple, scheduler_default_filters=['CapacityFilter'], scheduler_default_weighers=['CapacityWeigher']) self.manager = self.manager_cls() self.assertTrue(isinstance(self.manager.driver, filter_scheduler.FilterScheduler)) self.assertEqual(CONF.scheduler_default_filters, default_filters) self.assertEqual(CONF.scheduler_default_weighers, ['AllocatedCapacityWeigher']) @mock.patch('cinder.db.volume_update') @mock.patch('cinder.db.volume_get') def test_retype_volume_exception_returns_volume_state(self, _mock_vol_get, _mock_vol_update): # Test NoValidHost exception behavior for retype. # Puts the volume in original state and eats the exception. fake_volume_id = 1 topic = 'fake_topic' volume_id = fake_volume_id request_spec = {'volume_id': fake_volume_id, 'volume_type': {'id': 3}, 'migration_policy': 'on-demand'} vol_info = {'id': fake_volume_id, 'status': 'in-use', 'instance_uuid': 'foo', 'attached_host': None} _mock_vol_get.return_value = vol_info _mock_vol_update.return_value = {'status': 'in-use'} _mock_find_retype_host = mock.Mock( side_effect=exception.NoValidHost(reason="")) orig_retype = self.manager.driver.find_retype_host self.manager.driver.find_retype_host = _mock_find_retype_host self.manager.retype(self.context, topic, volume_id, request_spec=request_spec, filter_properties={}) _mock_vol_get.assert_called_once_with(self.context, fake_volume_id) _mock_find_retype_host.assert_called_once_with(self.context, request_spec, {}, 'on-demand') _mock_vol_update.assert_called_once_with(self.context, fake_volume_id, {'status': 'in-use'}) self.manager.driver.find_retype_host = orig_retype class SchedulerTestCase(test.TestCase): """Test case for base scheduler driver class.""" # So we can subclass this test and re-use tests if we need. driver_cls = driver.Scheduler def setUp(self): super(SchedulerTestCase, self).setUp() self.driver = self.driver_cls() self.context = context.RequestContext('fake_user', 'fake_project') self.topic = 'fake_topic' @mock.patch('cinder.scheduler.driver.Scheduler.' 'update_service_capabilities') def test_update_service_capabilities(self, _mock_update_cap): service_name = 'fake_service' host = 'fake_host' capabilities = {'fake_capability': 'fake_value'} self.driver.update_service_capabilities(service_name, host, capabilities) _mock_update_cap.assert_called_once_with(service_name, host, capabilities) class SchedulerDriverBaseTestCase(SchedulerTestCase): """Test cases for base scheduler driver class methods that can't will fail if the driver is changed. """ def test_unimplemented_schedule(self): fake_args = (1, 2, 3) fake_kwargs = {'cat': 'meow'} self.assertRaises(NotImplementedError, self.driver.schedule, self.context, self.topic, 'schedule_something', *fake_args, **fake_kwargs) class SchedulerDriverModuleTestCase(test.TestCase): """Test case for scheduler driver module methods.""" def setUp(self): super(SchedulerDriverModuleTestCase, self).setUp() self.context = context.RequestContext('fake_user', 'fake_project') @mock.patch('cinder.db.volume_update') @mock.patch('cinder.openstack.common.timeutils.utcnow') def test_volume_host_update_db(self, _mock_utcnow, _mock_vol_update): _mock_utcnow.return_value = 'fake-now' driver.volume_update_db(self.context, 31337, 'fake_host') _mock_vol_update.assert_called_once_with(self.context, 31337, {'host': 'fake_host', 'scheduled_at': 'fake-now'}) cinder-2014.1.5/cinder/tests/scheduler/test_host_filters.py0000664000567000056700000000770612540642606025071 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests For Scheduler Host Filters. """ import mock from cinder import context from cinder.openstack.common import jsonutils from cinder.openstack.common.scheduler import filters from cinder import test from cinder.tests.scheduler import fakes class HostFiltersTestCase(test.TestCase): """Test case for host filters.""" def setUp(self): super(HostFiltersTestCase, self).setUp() self.context = context.RequestContext('fake', 'fake') self.json_query = jsonutils.dumps( ['and', ['>=', '$free_capacity_gb', 1024], ['>=', '$total_capacity_gb', 10 * 1024]]) # This has a side effect of testing 'get_filter_classes' # when specifying a method (in this case, our standard filters) filter_handler = filters.HostFilterHandler('cinder.scheduler.filters') classes = filter_handler.get_all_classes() self.class_map = {} for cls in classes: self.class_map[cls.__name__] = cls @mock.patch('cinder.utils.service_is_up') def test_capacity_filter_passes(self, _mock_serv_is_up): _mock_serv_is_up.return_value = True filt_cls = self.class_map['CapacityFilter']() filter_properties = {'size': 100} service = {'disabled': False} host = fakes.FakeHostState('host1', {'free_capacity_gb': 200, 'updated_at': None, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) @mock.patch('cinder.utils.service_is_up') def test_capacity_filter_fails(self, _mock_serv_is_up): _mock_serv_is_up.return_value = True filt_cls = self.class_map['CapacityFilter']() filter_properties = {'size': 100} service = {'disabled': False} host = fakes.FakeHostState('host1', {'free_capacity_gb': 120, 'reserved_percentage': 20, 'updated_at': None, 'service': service}) self.assertFalse(filt_cls.host_passes(host, filter_properties)) @mock.patch('cinder.utils.service_is_up') def test_capacity_filter_passes_infinite(self, _mock_serv_is_up): _mock_serv_is_up.return_value = True filt_cls = self.class_map['CapacityFilter']() filter_properties = {'size': 100} service = {'disabled': False} host = fakes.FakeHostState('host1', {'free_capacity_gb': 'infinite', 'updated_at': None, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) @mock.patch('cinder.utils.service_is_up') def test_capacity_filter_passes_unknown(self, _mock_serv_is_up): _mock_serv_is_up.return_value = True filt_cls = self.class_map['CapacityFilter']() filter_properties = {'size': 100} service = {'disabled': False} host = fakes.FakeHostState('host1', {'free_capacity_gb': 'unknown', 'updated_at': None, 'service': service}) self.assertTrue(filt_cls.host_passes(host, filter_properties)) cinder-2014.1.5/cinder/tests/scheduler/test_capacity_weigher.py0000664000567000056700000000714112540642606025664 0ustar jenkinsjenkins00000000000000# Copyright 2011-2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests For Capacity Weigher. """ import mock from oslo.config import cfg from cinder import context from cinder.openstack.common.scheduler.weights import HostWeightHandler from cinder.scheduler.weights.capacity import CapacityWeigher from cinder import test from cinder.tests.scheduler import fakes CONF = cfg.CONF class CapacityWeigherTestCase(test.TestCase): def setUp(self): super(CapacityWeigherTestCase, self).setUp() self.host_manager = fakes.FakeHostManager() self.weight_handler = HostWeightHandler('cinder.scheduler.weights') def _get_weighed_host(self, hosts, weight_properties=None): if weight_properties is None: weight_properties = {} return self.weight_handler.get_weighed_objects([CapacityWeigher], hosts, weight_properties)[0] @mock.patch('cinder.db.sqlalchemy.api.service_get_all_by_topic') def _get_all_hosts(self, _mock_service_get_all_by_topic): ctxt = context.get_admin_context() fakes.mock_host_manager_db_calls(_mock_service_get_all_by_topic) host_states = self.host_manager.get_all_host_states(ctxt) _mock_service_get_all_by_topic.assert_called_once_with( ctxt, CONF.volume_topic) return host_states def test_default_of_spreading_first(self): hostinfo_list = self._get_all_hosts() # host1: free_capacity_gb=1024, free=1024*(1-0.1) # host2: free_capacity_gb=300, free=300*(1-0.1) # host3: free_capacity_gb=512, free=256 # host4: free_capacity_gb=200, free=200*(1-0.05) # so, host1 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 921.0) self.assertEqual(weighed_host.obj.host, 'host1') def test_capacity_weight_multiplier1(self): self.flags(capacity_weight_multiplier=-1.0) hostinfo_list = self._get_all_hosts() # host1: free_capacity_gb=1024, free=-1024*(1-0.1) # host2: free_capacity_gb=300, free=-300*(1-0.1) # host3: free_capacity_gb=512, free=-256 # host4: free_capacity_gb=200, free=-200*(1-0.05) # so, host4 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, -190.0) self.assertEqual(weighed_host.obj.host, 'host4') def test_capacity_weight_multiplier2(self): self.flags(capacity_weight_multiplier=2.0) hostinfo_list = self._get_all_hosts() # host1: free_capacity_gb=1024, free=1024*(1-0.1)*2 # host2: free_capacity_gb=300, free=300*(1-0.1)*2 # host3: free_capacity_gb=512, free=256*2 # host4: free_capacity_gb=200, free=200*(1-0.05)*2 # so, host1 should win: weighed_host = self._get_weighed_host(hostinfo_list) self.assertEqual(weighed_host.weight, 921.0 * 2) self.assertEqual(weighed_host.obj.host, 'host1') cinder-2014.1.5/cinder/tests/test_service.py0000775000567000056700000002102012540642606022032 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Unit Tests for remote procedure calls using queue """ import mock import mox from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder import manager from cinder import service from cinder import test from cinder import wsgi test_service_opts = [ cfg.StrOpt("fake_manager", default="cinder.tests.test_service.FakeManager", help="Manager for testing"), cfg.StrOpt("test_service_listen", default=None, help="Host to bind test service to"), cfg.IntOpt("test_service_listen_port", default=0, help="Port number to bind test service to"), ] CONF = cfg.CONF CONF.register_opts(test_service_opts) class FakeManager(manager.Manager): """Fake manager for tests.""" def __init__(self, host=None, db_driver=None, service_name=None): super(FakeManager, self).__init__(host=host, db_driver=db_driver) def test_method(self): return 'manager' class ExtendedService(service.Service): def test_method(self): return 'service' class ServiceManagerTestCase(test.TestCase): """Test cases for Services.""" def test_message_gets_to_manager(self): serv = service.Service('test', 'test', 'test', 'cinder.tests.test_service.FakeManager') serv.start() self.assertEqual(serv.test_method(), 'manager') def test_override_manager_method(self): serv = ExtendedService('test', 'test', 'test', 'cinder.tests.test_service.FakeManager') serv.start() self.assertEqual(serv.test_method(), 'service') class ServiceFlagsTestCase(test.TestCase): def test_service_enabled_on_create_based_on_flag(self): self.flags(enable_new_services=True) host = 'foo' binary = 'cinder-fake' app = service.Service.create(host=host, binary=binary) app.start() app.stop() ref = db.service_get(context.get_admin_context(), app.service_id) db.service_destroy(context.get_admin_context(), app.service_id) self.assertFalse(ref['disabled']) def test_service_disabled_on_create_based_on_flag(self): self.flags(enable_new_services=False) host = 'foo' binary = 'cinder-fake' app = service.Service.create(host=host, binary=binary) app.start() app.stop() ref = db.service_get(context.get_admin_context(), app.service_id) db.service_destroy(context.get_admin_context(), app.service_id) self.assertTrue(ref['disabled']) class ServiceTestCase(test.TestCase): """Test cases for Services.""" def setUp(self): super(ServiceTestCase, self).setUp() self.mox.StubOutWithMock(service, 'db') def test_create(self): host = 'foo' binary = 'cinder-fake' topic = 'fake' # NOTE(vish): Create was moved out of mox replay to make sure that # the looping calls are created in StartService. app = service.Service.create(host=host, binary=binary, topic=topic) self.assertTrue(app) def test_report_state_newly_disconnected(self): host = 'foo' binary = 'bar' topic = 'test' service_create = {'host': host, 'binary': binary, 'topic': topic, 'report_count': 0, 'availability_zone': 'nova'} service_ref = {'host': host, 'binary': binary, 'topic': topic, 'report_count': 0, 'availability_zone': 'nova', 'id': 1} service.db.service_get_by_args(mox.IgnoreArg(), host, binary).AndRaise(exception.NotFound()) service.db.service_create(mox.IgnoreArg(), service_create).AndReturn(service_ref) service.db.service_get(mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(Exception()) self.mox.ReplayAll() serv = service.Service(host, binary, topic, 'cinder.tests.test_service.FakeManager') serv.start() serv.report_state() self.assertTrue(serv.model_disconnected) def test_report_state_newly_connected(self): host = 'foo' binary = 'bar' topic = 'test' service_create = {'host': host, 'binary': binary, 'topic': topic, 'report_count': 0, 'availability_zone': 'nova'} service_ref = {'host': host, 'binary': binary, 'topic': topic, 'report_count': 0, 'availability_zone': 'nova', 'id': 1} service.db.service_get_by_args(mox.IgnoreArg(), host, binary).AndRaise(exception.NotFound()) service.db.service_create(mox.IgnoreArg(), service_create).AndReturn(service_ref) service.db.service_get(mox.IgnoreArg(), service_ref['id']).AndReturn(service_ref) service.db.service_update(mox.IgnoreArg(), service_ref['id'], mox.ContainsKeyValue('report_count', 1)) self.mox.ReplayAll() serv = service.Service(host, binary, topic, 'cinder.tests.test_service.FakeManager') serv.start() serv.model_disconnected = True serv.report_state() self.assertFalse(serv.model_disconnected) def test_service_with_long_report_interval(self): CONF.set_override('service_down_time', 10) CONF.set_override('report_interval', 10) service.Service.create(binary="test_service", manager="cinder.tests.test_service.FakeManager") self.assertEqual(CONF.service_down_time, 25) class TestWSGIService(test.TestCase): def setUp(self): super(TestWSGIService, self).setUp() self.stubs.Set(wsgi.Loader, "load_app", mox.MockAnything()) def test_service_random_port(self): test_service = service.WSGIService("test_service") self.assertEqual(0, test_service.port) test_service.start() self.assertNotEqual(0, test_service.port) test_service.stop() class OSCompatibilityTestCase(test.TestCase): def _test_service_launcher(self, fake_os): # Note(lpetrut): The cinder-volume service needs to be spawned # differently on Windows due to an eventlet bug. For this reason, # we must check the process launcher used. fake_process_launcher = mock.MagicMock() with mock.patch('os.name', fake_os): with mock.patch('cinder.service.process_launcher', fake_process_launcher): launcher = service.get_launcher() if fake_os == 'nt': self.assertEqual(type(launcher), service.Launcher) else: self.assertEqual(launcher, fake_process_launcher()) def test_process_launcher_on_windows(self): self._test_service_launcher('nt') def test_process_launcher_on_linux(self): self._test_service_launcher('posix') cinder-2014.1.5/cinder/tests/zonemanager/0000775000567000056700000000000012540643114021264 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/zonemanager/test_fc_zone_manager.py0000664000567000056700000000625212540642606026024 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """Unit tests for FC Zone Manager.""" import mock from cinder import exception from cinder import test from cinder.volume import configuration as conf from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver from cinder.zonemanager.fc_zone_manager import ZoneManager from mock import Mock fabric_name = 'BRCD_FAB_3' init_target_map = {'10008c7cff523b01': ['20240002ac000a50']} fabric_map = {'BRCD_FAB_3': ['20240002ac000a50']} target_list = ['20240002ac000a50'] class TestFCZoneManager(ZoneManager, test.TestCase): def setUp(self): super(TestFCZoneManager, self).setUp() self.configuration = conf.Configuration(None) self.configuration.set_default('fc_fabric_names', fabric_name) self.driver = Mock(FCZoneDriver) def __init__(self, *args, **kwargs): test.TestCase.__init__(self, *args, **kwargs) def test_add_connection(self): with mock.patch.object(self.driver, 'add_connection')\ as add_connection_mock: self.driver.get_san_context.return_value = fabric_map self.add_connection(init_target_map) self.driver.get_san_context.assert_called_once(target_list) add_connection_mock.assert_called_once_with(fabric_name, init_target_map) def test_add_connection_error(self): with mock.patch.object(self.driver, 'add_connection')\ as add_connection_mock: add_connection_mock.side_effect = exception.FCZoneDriverException self.assertRaises(exception.ZoneManagerException, self.add_connection, init_target_map) def test_delete_connection(self): with mock.patch.object(self.driver, 'delete_connection')\ as delete_connection_mock: self.driver.get_san_context.return_value = fabric_map self.delete_connection(init_target_map) self.driver.get_san_context.assert_called_once_with(target_list) delete_connection_mock.assert_called_once_with(fabric_name, init_target_map) def test_delete_connection_error(self): with mock.patch.object(self.driver, 'delete_connection')\ as del_connection_mock: del_connection_mock.side_effect = exception.FCZoneDriverException self.assertRaises(exception.ZoneManagerException, self.delete_connection, init_target_map) cinder-2014.1.5/cinder/tests/zonemanager/test_brcd_fc_zone_client_cli.py0000664000567000056700000002766512540642606027524 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """Unit tests for brcd fc zone client cli.""" import mock from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import test from cinder.zonemanager.drivers.brocade.brcd_fc_zone_client_cli \ import BrcdFCZoneClientCLI import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant from mock import patch LOG = logging.getLogger(__name__) nsshow = '20:1a:00:05:1e:e8:e3:29' switch_data = [' N 011a00;2,3;20:1a:00:05:1e:e8:e3:29;\ 20:1a:00:05:1e:e8:e3:29;na', ' Fabric Port Name: 20:1a:00:05:1e:e8:e3:29'] cfgactvshow = ['Effective configuration:\n', ' cfg:\tOpenStack_Cfg\t\n', ' zone:\topenstack50060b0000c26604201900051ee8e329\t\n', '\t\t50:06:0b:00:00:c2:66:04\n', '\t\t20:19:00:05:1e:e8:e3:29\n'] active_zoneset = { 'zones': { 'openstack50060b0000c26604201900051ee8e329': ['50:06:0b:00:00:c2:66:04', '20:19:00:05:1e:e8:e3:29']}, 'active_zone_config': 'OpenStack_Cfg'} active_zoneset_multiple_zones = { 'zones': { 'openstack50060b0000c26604201900051ee8e329': ['50:06:0b:00:00:c2:66:04', '20:19:00:05:1e:e8:e3:29'], 'openstack50060b0000c26602201900051ee8e327': ['50:06:0b:00:00:c2:66:02', '20:19:00:05:1e:e8:e3:27']}, 'active_zone_config': 'OpenStack_Cfg'} new_zone = {'openstack10000012345678902001009876543210': ['10:00:00:12:34:56:78:90', '20:01:00:98:76:54:32:10']} new_zones = {'openstack10000012345678902001009876543210': ['10:00:00:12:34:56:78:90', '20:01:00:98:76:54:32:10'], 'openstack10000011111111112001001111111111': ['10:00:00:11:11:11:11:11', '20:01:00:11:11:11:11:11']} zone_names_to_delete = 'openstack50060b0000c26604201900051ee8e329' supported_firmware = ['Kernel: 2.6', 'Fabric OS: v7.0.1'] unsupported_firmware = ['Fabric OS: v6.2.1'] class TestBrcdFCZoneClientCLI(BrcdFCZoneClientCLI, test.TestCase): def setUp(self): super(TestBrcdFCZoneClientCLI, self).setUp() # override some of the functions def __init__(self, *args, **kwargs): test.TestCase.__init__(self, *args, **kwargs) @patch.object(BrcdFCZoneClientCLI, '_get_switch_info') def test_get_active_zone_set(self, get_switch_info_mock): cmd_list = [ZoneConstant.GET_ACTIVE_ZONE_CFG] get_switch_info_mock.return_value = cfgactvshow active_zoneset_returned = self.get_active_zone_set() get_switch_info_mock.assert_called_once_with(cmd_list) self.assertDictMatch(active_zoneset_returned, active_zoneset) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test_get_active_zone_set_ssh_error(self, run_ssh_mock): run_ssh_mock.side_effect = processutils.ProcessExecutionError self.assertRaises(exception.BrocadeZoningCliException, self.get_active_zone_set) @mock.patch.object(BrcdFCZoneClientCLI, 'get_active_zone_set') @mock.patch.object(BrcdFCZoneClientCLI, 'apply_zone_change') @mock.patch.object(BrcdFCZoneClientCLI, '_cfg_save') def test_add_zones_new_zone_no_activate(self, get_active_zs_mock, apply_zone_change_mock, cfg_save_mock): get_active_zs_mock.return_value = active_zoneset self.add_zones(new_zones, False, None) get_active_zs_mock.assert_called_once() apply_zone_change_mock.assert_called_twice() cfg_save_mock.assert_called_once() @mock.patch.object(BrcdFCZoneClientCLI, 'get_active_zone_set') @mock.patch.object(BrcdFCZoneClientCLI, 'apply_zone_change') @mock.patch.object(BrcdFCZoneClientCLI, 'activate_zoneset') def test_add_zones_new_zone_activate(self, get_active_zs_mock, apply_zone_change_mock, activate_zoneset_mock): get_active_zs_mock.return_value = active_zoneset self.add_zones(new_zone, True, active_zoneset) apply_zone_change_mock.assert_called_once() activate_zoneset_mock.assert_called_once() @mock.patch.object(BrcdFCZoneClientCLI, '_ssh_execute') def test_activate_zoneset(self, ssh_execute_mock): ssh_execute_mock.return_value = True return_value = self.activate_zoneset('zoneset1') self.assertTrue(return_value) @mock.patch.object(BrcdFCZoneClientCLI, '_ssh_execute') def test_deactivate_zoneset(self, ssh_execute_mock): ssh_execute_mock.return_value = True return_value = self.deactivate_zoneset() self.assertTrue(return_value) @mock.patch.object(BrcdFCZoneClientCLI, 'apply_zone_change') @mock.patch.object(BrcdFCZoneClientCLI, '_cfg_save') def test_delete_zones_activate_false(self, apply_zone_change_mock, cfg_save_mock): with mock.patch.object(self, '_zone_delete') \ as zone_delete_mock: self.delete_zones(zone_names_to_delete, False, active_zoneset_multiple_zones) apply_zone_change_mock.assert_called_once() zone_delete_mock.assert_called_once_with(zone_names_to_delete) cfg_save_mock.assert_called_once() @patch.object(BrcdFCZoneClientCLI, 'apply_zone_change') @patch.object(BrcdFCZoneClientCLI, 'activate_zoneset') def test_delete_zones_activate_true(self, apply_zone_change_mock, activate_zs_mock): with mock.patch.object(self, '_zone_delete') \ as zone_delete_mock: self.delete_zones(zone_names_to_delete, True, active_zoneset_multiple_zones) apply_zone_change_mock.assert_called_once() zone_delete_mock.assert_called_once_with(zone_names_to_delete) activate_zs_mock.assert_called_once() @patch.object(BrcdFCZoneClientCLI, '_get_switch_info') def test_get_nameserver_info(self, get_switch_info_mock): ns_info_list = [] ns_info_list_expected = ['20:1a:00:05:1e:e8:e3:29'] get_switch_info_mock.return_value = (switch_data) ns_info_list = self.get_nameserver_info() self.assertEqual(ns_info_list, ns_info_list_expected) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test_get_nameserver_info_ssh_error(self, run_ssh_mock): run_ssh_mock.side_effect = processutils.ProcessExecutionError self.assertRaises(exception.BrocadeZoningCliException, self.get_nameserver_info) @patch.object(BrcdFCZoneClientCLI, '_ssh_execute') def test__cfg_save(self, ssh_execute_mock): cmd_list = [ZoneConstant.CFG_SAVE] self._cfg_save() ssh_execute_mock.assert_called_once_with(cmd_list, True, 1) @patch.object(BrcdFCZoneClientCLI, 'apply_zone_change') def test__zone_delete(self, apply_zone_change_mock): zone_name = 'testzone' cmd_list = ['zonedelete', '"testzone"'] self._zone_delete(zone_name) apply_zone_change_mock.assert_called_once_with(cmd_list) @patch.object(BrcdFCZoneClientCLI, 'apply_zone_change') def test__cfg_trans_abort(self, apply_zone_change_mock): cmd_list = [ZoneConstant.CFG_ZONE_TRANS_ABORT] with mock.patch.object(self, '_is_trans_abortable') \ as is_trans_abortable_mock: is_trans_abortable_mock.return_value = True self._cfg_trans_abort() is_trans_abortable_mock.assert_called_once() apply_zone_change_mock.assert_called_once_with(cmd_list) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test__is_trans_abortable_true(self, run_ssh_mock): cmd_list = [ZoneConstant.CFG_SHOW_TRANS] run_ssh_mock.return_value = (Stream(ZoneConstant.TRANS_ABORTABLE), None) data = self._is_trans_abortable() self.assertTrue(data) run_ssh_mock.assert_called_once_with(cmd_list, True, 1) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test__is_trans_abortable_ssh_error(self, run_ssh_mock): run_ssh_mock.return_value = (Stream(), Stream()) self.assertRaises(exception.BrocadeZoningCliException, self._is_trans_abortable) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test__is_trans_abortable_false(self, run_ssh_mock): cmd_list = [ZoneConstant.CFG_SHOW_TRANS] cfgtransshow = 'There is no outstanding zoning transaction' run_ssh_mock.return_value = (Stream(cfgtransshow), None) data = self._is_trans_abortable() self.assertFalse(data) run_ssh_mock.assert_called_once_with(cmd_list, True, 1) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test_apply_zone_change(self, run_ssh_mock): cmd_list = [ZoneConstant.CFG_SAVE] run_ssh_mock.return_value = (None, None) self.apply_zone_change(cmd_list) run_ssh_mock.assert_called_once_with(cmd_list, True, 1) @patch.object(BrcdFCZoneClientCLI, '_run_ssh') def test__get_switch_info(self, run_ssh_mock): cmd_list = [ZoneConstant.NS_SHOW] nsshow_list = [nsshow] run_ssh_mock.return_value = (Stream(nsshow), Stream()) switch_data = self._get_switch_info(cmd_list) self.assertEqual(switch_data, nsshow_list) run_ssh_mock.assert_called_once_with(cmd_list, True, 1) def test__parse_ns_output(self): invalid_switch_data = [' N 011a00;20:1a:00:05:1e:e8:e3:29'] return_wwn_list = [] expected_wwn_list = ['20:1a:00:05:1e:e8:e3:29'] return_wwn_list = self._parse_ns_output(switch_data) self.assertEqual(return_wwn_list, expected_wwn_list) self.assertRaises(exception.InvalidParameterValue, self._parse_ns_output, invalid_switch_data) @patch.object(BrcdFCZoneClientCLI, '_execute_shell_cmd') def test_is_supported_firmware(self, exec_shell_cmd_mock): exec_shell_cmd_mock.return_value = (supported_firmware, None) self.assertTrue(self.is_supported_firmware()) @patch.object(BrcdFCZoneClientCLI, '_execute_shell_cmd') def test_is_supported_firmware_invalid(self, exec_shell_cmd_mock): exec_shell_cmd_mock.return_value = (unsupported_firmware, None) self.assertFalse(self.is_supported_firmware()) @patch.object(BrcdFCZoneClientCLI, '_execute_shell_cmd') def test_is_supported_firmware_no_ssh_response(self, exec_shell_cmd_mock): exec_shell_cmd_mock.return_value = (None, Stream()) self.assertFalse(self.is_supported_firmware()) @patch.object(BrcdFCZoneClientCLI, '_execute_shell_cmd') def test_is_supported_firmware_ssh_error(self, exec_shell_cmd_mock): exec_shell_cmd_mock.side_effect = processutils.ProcessExecutionError self.assertRaises(exception.BrocadeZoningCliException, self.is_supported_firmware) class Channel(object): def recv_exit_status(self): return 0 class Stream(object): def __init__(self, buffer=''): self.buffer = buffer self.channel = Channel() def readlines(self): return self.buffer def splitlines(self): return self.buffer.splitlines() def close(self): pass def flush(self): self.buffer = '' cinder-2014.1.5/cinder/tests/zonemanager/__init__.py0000664000567000056700000000000012540642606023370 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/zonemanager/test_brcd_fc_san_lookup_service.py0000664000567000056700000001314612540642606030243 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """Unit tests for brcd fc san lookup service.""" import mock import paramiko from oslo.config import cfg from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf import cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service \ as brcd_lookup from cinder.zonemanager.drivers.brocade import fc_zone_constants LOG = logging.getLogger(__name__) nsshow = '20:1a:00:05:1e:e8:e3:29' switch_data = [' N 011a00;2,3;20:1a:00:05:1e:e8:e3:29;\ 20:1a:00:05:1e:e8:e3:29;na'] nsshow_data = ['10:00:8c:7c:ff:52:3b:01', '20:24:00:02:ac:00:0a:50'] _device_map_to_verify = { '100000051e55a100': { 'initiator_port_wwn_list': ['10008c7cff523b01'], 'target_port_wwn_list': ['20240002ac000a50']}} class TestBrcdFCSanLookupService(brcd_lookup.BrcdFCSanLookupService, test.TestCase): def setUp(self): super(TestBrcdFCSanLookupService, self).setUp() self.client = paramiko.SSHClient() self.configuration = conf.Configuration(None) self.configuration.set_default('fc_fabric_names', 'BRCD_FAB_2', 'fc-zone-manager') self.configuration.fc_fabric_names = 'BRCD_FAB_2' self.create_configuration() # override some of the functions def __init__(self, *args, **kwargs): test.TestCase.__init__(self, *args, **kwargs) def create_configuration(self): fc_fabric_opts = [] fc_fabric_opts.append(cfg.StrOpt('fc_fabric_address', default='10.24.49.100', help='')) fc_fabric_opts.append(cfg.StrOpt('fc_fabric_user', default='admin', help='')) fc_fabric_opts.append(cfg.StrOpt('fc_fabric_password', default='password', help='', secret=True)) fc_fabric_opts.append(cfg.IntOpt('fc_fabric_port', default=22, help='')) fc_fabric_opts.append(cfg.StrOpt('principal_switch_wwn', default='100000051e55a100', help='')) config = conf.Configuration(fc_fabric_opts, 'BRCD_FAB_2') self.fabric_configs = {'BRCD_FAB_2': config} @mock.patch.object(brcd_lookup.BrcdFCSanLookupService, 'get_nameserver_info') def test_get_device_mapping_from_network(self, get_nameserver_info_mock): initiator_list = ['10008c7cff523b01'] target_list = ['20240002ac000a50', '20240002ac000a40'] with mock.patch.object(self.client, 'connect') as client_connect_mock: get_nameserver_info_mock.return_value = (nsshow_data) device_map = self.get_device_mapping_from_network( initiator_list, target_list) self.assertDictMatch(device_map, _device_map_to_verify) @mock.patch.object(brcd_lookup.BrcdFCSanLookupService, '_get_switch_data') def test_get_nameserver_info(self, get_switch_data_mock): ns_info_list = [] ns_info_list_expected = ['20:1a:00:05:1e:e8:e3:29', '20:1a:00:05:1e:e8:e3:29'] get_switch_data_mock.return_value = (switch_data) ns_info_list = self.get_nameserver_info() self.assertEqual(ns_info_list, ns_info_list_expected) def test__get_switch_data(self): cmd = fc_zone_constants.NS_SHOW with mock.patch.object(self.client, 'exec_command') \ as exec_command_mock: exec_command_mock.return_value = (Stream(), Stream(nsshow), Stream()) switch_data = self._get_switch_data(cmd) self.assertEqual(switch_data, nsshow) exec_command_mock.assert_called_once_with(cmd) def test__parse_ns_output(self): invalid_switch_data = [' N 011a00;20:1a:00:05:1e:e8:e3:29'] return_wwn_list = [] expected_wwn_list = ['20:1a:00:05:1e:e8:e3:29'] return_wwn_list = self._parse_ns_output(switch_data) self.assertEqual(return_wwn_list, expected_wwn_list) self.assertRaises(exception.InvalidParameterValue, self._parse_ns_output, invalid_switch_data) def test_get_formatted_wwn(self): wwn_list = ['10008c7cff523b01'] return_wwn_list = [] expected_wwn_list = ['10:00:8c:7c:ff:52:3b:01'] return_wwn_list.append(self.get_formatted_wwn(wwn_list[0])) self.assertEqual(return_wwn_list, expected_wwn_list) class Channel(object): def recv_exit_status(self): return 0 class Stream(object): def __init__(self, buffer=''): self.buffer = buffer self.channel = Channel() def readlines(self): return self.buffer def close(self): pass def flush(self): self.buffer = '' cinder-2014.1.5/cinder/tests/zonemanager/test_volume_manager_fc.py0000664000567000056700000001552712540642606026365 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """Unit tests for Volume Manager.""" import mock from cinder import exception from cinder import test from cinder import utils from cinder.volume import configuration as conf from cinder.volume import driver from cinder.volume import manager from cinder.zonemanager import fc_zone_manager init_target_map = {'10008c7cff523b01': ['20240002ac000a50']} conn_info = { 'driver_volume_type': 'fibre_channel', 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': '20240002ac000a50', 'initiator_target_map': { '10008c7cff523b01': ['20240002ac000a50'] } } } conn_info_no_init_target_map = { 'driver_volume_type': 'fibre_channel', 'data': { 'target_discovered': True, 'target_lun': 1, 'target_wwn': '20240002ac000a50', } } class TestVolumeManager(manager.VolumeManager, test.TestCase): def setUp(self): super(TestVolumeManager, self).setUp() self.configuration = conf.Configuration(None) self.configuration.set_default('fc_fabric_names', 'BRCD_FAB_4', 'fc-zone-manager') self.configuration.zoning_mode = 'fabric' self.driver = mock.Mock(driver.VolumeDriver) self.driver.initialize_connection.return_value = conn_info self.driver.terminate_connection.return_value = conn_info self.driver.create_export.return_value = None self.db = mock.Mock() self.db.volume_get.return_value = {'volume_type_id': None} self.db.volume_admin_metadata_get.return_value = {} self.context_mock = mock.Mock() self.context_mock.elevated.return_value = None self.zonemanager = fc_zone_manager.ZoneManager( configuration=self.configuration) def tearDown(self): super(TestVolumeManager, self).tearDown() self.configuration = None self.db = None self.driver = None self.zonemanager = None def __init__(self, *args, **kwargs): test.TestCase.__init__(self, *args, **kwargs) @mock.patch.object(utils, 'require_driver_initialized') def test_initialize_connection_voltype_fc_mode_fabric(self, utils_mock): utils_mock.return_value = True with mock.patch.object(manager.VolumeManager, '_add_or_delete_fc_connection')\ as add_del_conn_mock: self.initialize_connection(self.context_mock, None, None) add_del_conn_mock.assert_called_once_with(conn_info, 1) @mock.patch.object(utils, 'require_driver_initialized') def test_initialize_connection_voltype_fc_mode_none(self, utils_mock): utils_mock.return_value = True with mock.patch.object(manager.VolumeManager, '_add_or_delete_fc_connection')\ as add_del_conn_mock: self.configuration.zoning_mode = 'none' self.zonemanager = None self.initialize_connection(self.context_mock, None, None) assert not add_del_conn_mock.called def test_terminate_connection_exception(self): with mock.patch.object(manager.VolumeManager, '_add_or_delete_fc_connection')\ as add_del_conn_mock: add_del_conn_mock.side_effect = exception.ZoneManagerException self.assertRaises(exception.VolumeBackendAPIException, self.terminate_connection, None, None, None, False) @mock.patch.object(utils, 'require_driver_initialized') def test_terminate_connection_voltype_fc_mode_fabric(self, utils_mock): utils_mock.return_value = True with mock.patch.object(manager.VolumeManager, '_add_or_delete_fc_connection')\ as add_del_conn_mock: self.terminate_connection(self.context_mock, None, None, False) add_del_conn_mock.assert_called_once_with(conn_info, 0) @mock.patch.object(utils, 'require_driver_initialized') def test_terminate_connection_mode_none(self, utils_mock): utils_mock.return_value = True with mock.patch.object(manager.VolumeManager, '_add_or_delete_fc_connection')\ as add_del_conn_mock: self.configuration.zoning_mode = 'none' self.zonemanager = None self.terminate_connection(self.context_mock, None, None, False) assert not add_del_conn_mock.called @mock.patch.object(utils, 'require_driver_initialized') def test_terminate_connection_conn_info_none(self, utils_mock): utils_mock.return_value = True self.driver.terminate_connection.return_value = None with mock.patch.object(manager.VolumeManager, '_add_or_delete_fc_connection')\ as add_del_conn_mock: self.terminate_connection(self.context_mock, None, None, False) assert not add_del_conn_mock.called @mock.patch.object(fc_zone_manager.ZoneManager, 'add_connection') def test__add_or_delete_connection_add(self, add_connection_mock): self._add_or_delete_fc_connection(conn_info, 1) add_connection_mock.assert_called_once_with(init_target_map) @mock.patch.object(fc_zone_manager.ZoneManager, 'delete_connection') def test__add_or_delete_connection_delete(self, delete_connection_mock): self._add_or_delete_fc_connection(conn_info, 0) delete_connection_mock.assert_called_once_with(init_target_map) @mock.patch.object(fc_zone_manager.ZoneManager, 'delete_connection') def test__add_or_delete_connection_no_init_target_map(self, del_conn_mock): self._add_or_delete_fc_connection(conn_info_no_init_target_map, 0) assert not del_conn_mock.called cinder-2014.1.5/cinder/tests/zonemanager/test_brcd_lookup_service.py0000664000567000056700000000710412540642606026727 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """Unit tests for fc san lookup service.""" from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf from cinder.zonemanager.fc_san_lookup_service import FCSanLookupService LOG = logging.getLogger(__name__) _target_ns_map = {'100000051e55a100': ['20240002ac000a50']} _initiator_ns_map = {'100000051e55a100': ['10008c7cff523b01']} _device_map_to_verify = { '100000051e55a100': { 'initiator_port_wwn_list': [ '10008c7cff523b01'], 'target_port_wwn_list': ['20240002ac000a50']}} _fabric_wwn = '100000051e55a100' class TestFCSanLookupService(FCSanLookupService, test.TestCase): def setUp(self): super(TestFCSanLookupService, self).setUp() self.configuration = self.setup_config() # override some of the functions def __init__(self, *args, **kwargs): test.TestCase.__init__(self, *args, **kwargs) def setup_config(self): configuration = conf.Configuration(None) # fill up config configuration.fc_san_lookup_service = ( 'cinder.tests.zonemanager.test_brcd_lookup_service.' 'FakeBrcdFCSanLookupService') return configuration def test_get_device_mapping_from_network(self): GlobalParams._is_normal_test = True initiator_list = ['10008c7cff523b01'] target_list = ['20240002ac000a50', '20240002ac000a40'] device_map = self.get_device_mapping_from_network( initiator_list, target_list) self.assertDictMatch(device_map, _device_map_to_verify) def test_get_device_mapping_from_network_for_invalid_config(self): GlobalParams._is_normal_test = False initiator_list = ['10008c7cff523b01'] target_list = ['20240002ac000a50', '20240002ac000a40'] self.assertRaises(exception.FCSanLookupServiceException, self.get_device_mapping_from_network, initiator_list, target_list) class FakeBrcdFCSanLookupService(object): def __init__(self, **kwargs): pass def get_device_mapping_from_network(self, initiator_wwn_list, target_wwn_list): if not GlobalParams._is_normal_test: raise exception.FCSanLookupServiceException("Error") device_map = {} initiators = [] targets = [] for i in initiator_wwn_list: if (i in _initiator_ns_map[_fabric_wwn]): initiators.append(i) for t in target_wwn_list: if (t in _target_ns_map[_fabric_wwn]): targets.append(t) device_map[_fabric_wwn] = { 'initiator_port_wwn_list': initiators, 'target_port_wwn_list': targets} return device_map class GlobalParams(object): global _is_normal_test _is_normal_test = True cinder-2014.1.5/cinder/tests/zonemanager/test_brcd_fc_zone_driver.py0000664000567000056700000002242512540642606026677 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Brocade Communications Systems Inc. # All Rights Reserved. # # Copyright 2014 OpenStack Foundation # # 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. # """Unit tests for Brocade fc zone driver.""" import mock import paramiko from oslo.config import cfg from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf from cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver \ import BrcdFCZoneDriver LOG = logging.getLogger(__name__) _active_cfg_before_add = {} _active_cfg_before_delete = { 'zones': { 'openstack10008c7cff523b0120240002ac000a50': ( ['10:00:8c:7c:ff:52:3b:01', '20:24:00:02:ac:00:0a:50']), 't_zone': ['1,0']}, 'active_zone_config': 'cfg1'} _activate = True _zone_name = 'openstack10008c7cff523b0120240002ac000a50' _target_ns_map = {'100000051e55a100': ['20240002ac000a50']} _initiator_ns_map = {'100000051e55a100': ['10008c7cff523b01']} _zone_map_to_add = {'openstack10008c7cff523b0120240002ac000a50': ( ['10:00:8c:7c:ff:52:3b:01', '20:24:00:02:ac:00:0a:50'])} _initiator_target_map = {'10008c7cff523b01': ['20240002ac000a50']} _device_map_to_verify = { '100000051e55a100': { 'initiator_port_wwn_list': [ '10008c7cff523b01'], 'target_port_wwn_list': ['20240002ac000a50']}} _fabric_wwn = '100000051e55a100' class BrcdFcZoneDriverBaseTest(object): def setup_config(self, is_normal, mode): fc_test_opts = [ cfg.StrOpt('fc_fabric_address_BRCD_FAB_1', default='10.24.48.213', help='FC Fabric names'), ] configuration = conf.Configuration(fc_test_opts) # fill up config configuration.zoning_mode = 'fabric' configuration.zone_driver = ('cinder.tests.zonemanager.' 'test_brcd_fc_zone_driver.' 'FakeBrcdFCZoneDriver') configuration.brcd_sb_connector = ('cinder.tests.zonemanager.' 'test_brcd_fc_zone_driver' '.FakeBrcdFCZoneClientCLI') configuration.zoning_policy = 'initiator-target' configuration.zone_activate = True configuration.zone_name_prefix = 'openstack' configuration.fc_san_lookup_service = ('cinder.tests.zonemanager.' 'test_brcd_fc_zone_driver.' 'FakeBrcdFCSanLookupService') configuration.fc_fabric_names = 'BRCD_FAB_1' configuration.fc_fabric_address_BRCD_FAB_1 = '10.24.48.213' if (is_normal): configuration.fc_fabric_user_BRCD_FAB_1 = 'admin' else: configuration.fc_fabric_user_BRCD_FAB_1 = 'invaliduser' configuration.fc_fabric_password_BRCD_FAB_1 = 'password' if (mode == 1): configuration.zoning_policy_BRCD_FAB_1 = 'initiator-target' elif (mode == 2): configuration.zoning_policy_BRCD_FAB_1 = 'initiator' else: configuration.zoning_policy_BRCD_FAB_1 = 'initiator-target' configuration.zone_activate_BRCD_FAB_1 = True configuration.zone_name_prefix_BRCD_FAB_1 = 'openstack_fab1' configuration.principal_switch_wwn_BRCD_FAB_1 = '100000051e55a100' return configuration class TestBrcdFcZoneDriver(BrcdFcZoneDriverBaseTest, test.TestCase): def setUp(self): super(TestBrcdFcZoneDriver, self).setUp() # setup config for normal flow self.setup_driver(self.setup_config(True, 1)) GlobalVars._zone_state = [] def setup_driver(self, config): self.driver = importutils.import_object( 'cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver' '.BrcdFCZoneDriver', configuration=config) def fake__get_active_zone_set(self, brcd_sb_connector, fabric_ip): return GlobalVars._active_cfg def fake_get_san_context(self, target_wwn_list): fabric_map = {} return fabric_map @mock.patch.object(BrcdFCZoneDriver, '_get_active_zone_set') def test_add_connection(self, get_active_zs_mock): """Normal flow for i-t mode.""" GlobalVars._is_normal_test = True GlobalVars._zone_state = [] LOG.info(_("In Add GlobalVars._is_normal_test: " "%s"), GlobalVars._is_normal_test) LOG.info(_("In Add GlobalVars._zone_state:" " %s"), GlobalVars._zone_state) get_active_zs_mock.return_value = _active_cfg_before_add self.driver.add_connection('BRCD_FAB_1', _initiator_target_map) self.assertTrue(_zone_name in GlobalVars._zone_state) @mock.patch.object(BrcdFCZoneDriver, '_get_active_zone_set') def test_delete_connection(self, get_active_zs_mock): GlobalVars._is_normal_test = True get_active_zs_mock.return_value = _active_cfg_before_delete self.driver.delete_connection( 'BRCD_FAB_1', _initiator_target_map) self.assertFalse(_zone_name in GlobalVars._zone_state) @mock.patch.object(BrcdFCZoneDriver, '_get_active_zone_set') def test_add_connection_for_initiator_mode(self, get_active_zs_mock): """Normal flow for i mode.""" GlobalVars._is_normal_test = True get_active_zs_mock.return_value = _active_cfg_before_add self.setup_driver(self.setup_config(True, 2)) self.driver.add_connection('BRCD_FAB_1', _initiator_target_map) self.assertTrue(_zone_name in GlobalVars._zone_state) @mock.patch.object(BrcdFCZoneDriver, '_get_active_zone_set') def test_delete_connection_for_initiator_mode(self, get_active_zs_mock): GlobalVars._is_normal_test = True get_active_zs_mock.return_value = _active_cfg_before_delete self.setup_driver(self.setup_config(True, 2)) self.driver.delete_connection( 'BRCD_FAB_1', _initiator_target_map) self.assertFalse(_zone_name in GlobalVars._zone_state) def test_add_connection_for_invalid_fabric(self): """Test abnormal flows.""" GlobalVars._is_normal_test = True GlobalVars._active_cfg = _active_cfg_before_add GlobalVars._is_normal_test = False self.setup_driver(self.setup_config(False, 1)) self.assertRaises(exception.FCZoneDriverException, self.driver.add_connection, 'BRCD_FAB_1', _initiator_target_map) def test_delete_connection_for_invalid_fabric(self): GlobalVars._active_cfg = _active_cfg_before_delete GlobalVars._is_normal_test = False self.setup_driver(self.setup_config(False, 1)) self.assertRaises(exception.FCZoneDriverException, self.driver.delete_connection, 'BRCD_FAB_1', _initiator_target_map) class FakeBrcdFCZoneClientCLI(object): def __init__(self, ipaddress, username, password, port): LOG.info(_("User: %s"), username) LOG.info(_("_zone_state: %s"), GlobalVars._zone_state) self.firmware_supported = True if not GlobalVars._is_normal_test: raise paramiko.SSHException("Unable to connect to fabric") def get_active_zone_set(self): LOG.debug(_("Inside get_active_zone_set %s"), GlobalVars._active_cfg) return GlobalVars._active_cfg def add_zones(self, zones, isActivate, active_zone_set): GlobalVars._zone_state.extend(zones.keys()) def delete_zones(self, zone_names, isActivate, active_zone_set): zone_list = zone_names.split(';') GlobalVars._zone_state = [ x for x in GlobalVars._zone_state if x not in zone_list] def is_supported_firmware(self): return True def get_nameserver_info(self): return _target_ns_map def close_connection(self): pass def cleanup(self): pass class FakeBrcdFCSanLookupService(object): def get_device_mapping_from_network(self, initiator_wwn_list, target_wwn_list): device_map = {} initiators = [] targets = [] for i in initiator_wwn_list: if (i in _initiator_ns_map[_fabric_wwn]): initiators.append(i) for t in target_wwn_list: if (t in _target_ns_map[_fabric_wwn]): targets.append(t) device_map[_fabric_wwn] = { 'initiator_port_wwn_list': initiators, 'target_port_wwn_list': targets} return device_map class GlobalVars(object): global _active_cfg _active_cfg = {} global _zone_state _zone_state = list() global _is_normal_test _is_normal_test = True cinder-2014.1.5/cinder/tests/conf_fixture.py0000664000567000056700000000444312540642606022035 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import os from oslo.config import cfg CONF = cfg.CONF CONF.import_opt('iscsi_num_targets', 'cinder.volume.drivers.lvm') CONF.import_opt('policy_file', 'cinder.policy') CONF.import_opt('volume_driver', 'cinder.volume.manager') CONF.import_opt('xiv_ds8k_proxy', 'cinder.volume.drivers.ibm.xiv_ds8k') CONF.import_opt('backup_driver', 'cinder.backup.manager') CONF.import_opt('fixed_key', 'cinder.keymgr.conf_key_mgr', group='keymgr') CONF.import_opt('scheduler_driver', 'cinder.scheduler.manager') def_vol_type = 'fake_vol_type' def set_defaults(conf): conf.set_default('default_volume_type', def_vol_type) conf.set_default('volume_driver', 'cinder.tests.fake_driver.FakeISCSIDriver') conf.set_default('iscsi_helper', 'fake') conf.set_default('fake_rabbit', True) conf.set_default('rpc_backend', 'cinder.openstack.common.rpc.impl_fake') conf.set_default('iscsi_num_targets', 8) conf.set_default('connection', 'sqlite://', group='database') conf.set_default('sqlite_synchronous', False) conf.set_default('policy_file', 'cinder/tests/policy.json') conf.set_default( 'xiv_ds8k_proxy', 'cinder.tests.test_ibm_xiv_ds8k.XIVDS8KFakeProxyDriver') conf.set_default('backup_driver', 'cinder.tests.backup.fake_service') conf.set_default('fixed_key', default='0' * 64, group='keymgr') conf.set_default('scheduler_driver', 'cinder.scheduler.filter_scheduler.FilterScheduler') conf.set_default('state_path', os.path.abspath( os.path.join(os.path.dirname(__file__), '..', '..'))) cinder-2014.1.5/cinder/tests/test_gpfs.py0000664000567000056700000021315412540642606021341 0ustar jenkinsjenkins00000000000000 # Copyright IBM Corp. 2013 All Rights Reserved # # 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. import mock import os import tempfile from oslo.config import cfg from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import test from cinder import units from cinder import utils from cinder.volume import configuration as conf from cinder.volume.drivers.ibm import gpfs from cinder.volume import volume_types from mock import patch LOG = logging.getLogger(__name__) CONF = cfg.CONF class FakeQemuImgInfo(object): def __init__(self): self.file_format = None self.backing_file = None class GPFSDriverTestCase(test.TestCase): driver_name = "cinder.volume.drivers.gpfs.GPFSDriver" context = context.get_admin_context() def _execute_wrapper(self, cmd, *args, **kwargs): try: kwargs.pop('run_as_root') except KeyError: pass return utils.execute(cmd, *args, **kwargs) def setUp(self): super(GPFSDriverTestCase, self).setUp() self.volumes_path = tempfile.mkdtemp(prefix="gpfs_") self.images_dir = '%s/images' % self.volumes_path if not os.path.exists(self.volumes_path): os.mkdir(self.volumes_path) if not os.path.exists(self.images_dir): os.mkdir(self.images_dir) self.image_id = '70a599e0-31e7-49b7-b260-868f441e862b' self.driver = gpfs.GPFSDriver(configuration=conf.Configuration(None)) self.driver.set_execute(self._execute_wrapper) self.driver._cluster_id = '123456' self.driver._gpfs_device = '/dev/gpfs' self.driver._storage_pool = 'system' self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=self.volumes_path) self.context = context.get_admin_context() self.context.user_id = 'fake' self.context.project_id = 'fake' CONF.gpfs_images_dir = self.images_dir def tearDown(self): try: os.rmdir(self.images_dir) os.rmdir(self.volumes_path) except OSError: pass super(GPFSDriverTestCase, self).tearDown() def test_different(self): self.assertTrue(gpfs._different((True, False))) self.assertFalse(gpfs._different((True, True))) self.assertFalse(gpfs._different(None)) def test_sizestr(self): self.assertEqual(gpfs._sizestr('0'), '100M') self.assertEqual(gpfs._sizestr('10'), '10G') @patch('cinder.utils.execute') def test_get_gpfs_state_ok(self, mock_exec): mock_exec.return_value = ('mmgetstate::HEADER:version:reserved:' 'reserved:nodeName:nodeNumber:state:quorum:' 'nodesUp:totalNodes:remarks:cnfsState:\n' 'mmgetstate::0:1:::devstack:3:active:2:3:3:' 'quorum node:(undefined):', '') self.assertEqual(True, self.driver._get_gpfs_state().splitlines()[1]. startswith('mmgetstate::0:1:::devstack')) @patch('cinder.utils.execute') def test_get_gpfs_state_fail_mmgetstate(self, mock_exec): mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_gpfs_state) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_gpfs_state') def test_check_gpfs_state_ok(self, mock_get_gpfs_state): mock_get_gpfs_state.return_value = ('mmgetstate::HEADER:version:' 'reserved:reserved:nodeName:' 'nodeNumber:state:quorum:nodesUp:' 'totalNodes:remarks:cnfsState:\n' 'mmgetstate::0:1:::devstack:3:' 'active:2:3:3:' 'quorum node:(undefined):') self.driver._check_gpfs_state() @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_gpfs_state') def test_check_gpfs_state_fail_not_active(self, mock_get_gpfs_state): mock_get_gpfs_state.return_value = ('mmgetstate::HEADER:version:' 'reserved:reserved:nodeName:' 'nodeNumber:state:quorum:nodesUp:' 'totalNodes:remarks:cnfsState:\n' 'mmgetstate::0:1:::devstack:3:' 'arbitrating:2:3:3:' 'quorum node:(undefined):') self.assertRaises(exception.VolumeBackendAPIException, self.driver._check_gpfs_state) @patch('cinder.utils.execute') def test_get_fs_from_path_ok(self, mock_exec): ctxt = self.context mock_exec.return_value = ('Filesystem 1K-blocks ' 'Used Available Use%% Mounted on\n' '%s 10485760 531968 9953792' ' 6%% /gpfs0' % self.driver._gpfs_device, '') self.assertEqual(self.driver._gpfs_device, self.driver._get_filesystem_from_path('/gpfs0')) @patch('cinder.utils.execute') def test_get_fs_from_path_fail_path(self, mock_exec): ctxt = self.context mock_exec.return_value = ('Filesystem 1K-blocks ' 'Used Available Use% Mounted on\n' 'test 10485760 531968 ' '9953792 6% /gpfs0', '') self.assertNotEqual(self.driver._gpfs_device, self.driver._get_filesystem_from_path('/gpfs0')) @patch('cinder.utils.execute') def test_get_fs_from_path_fail_raise(self, mock_exec): ctxt = self.context mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_filesystem_from_path, '/gpfs0') @patch('cinder.utils.execute') def test_get_gpfs_cluster_id_ok(self, mock_exec): ctxt = self.context mock_exec.return_value = ('mmlsconfig::HEADER:version:reserved:' 'reserved:configParameter:value:nodeList:\n' 'mmlsconfig::0:1:::clusterId:%s::' % self.driver._cluster_id, '') self.assertEqual(self.driver._cluster_id, self.driver._get_gpfs_cluster_id()) @patch('cinder.utils.execute') def test_get_gpfs_cluster_id_fail_id(self, mock_exec): ctxt = self.context mock_exec.return_value = ('mmlsconfig::HEADER.:version:reserved:' 'reserved:configParameter:value:nodeList:\n' 'mmlsconfig::0:1:::clusterId:test::', '') self.assertNotEqual(self.driver._cluster_id, self.driver._get_gpfs_cluster_id()) @patch('cinder.utils.execute') def test_get_gpfs_cluster_id_fail_raise(self, mock_exec): ctxt = self.context mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_gpfs_cluster_id) @patch('cinder.utils.execute') def test_get_fileset_from_path_ok(self, mock_exec): mock_exec.return_value = ('file name: /gpfs0\n' 'metadata replication: 1 max 2\n' 'data replication: 1 max 2\n' 'immutable: no\n' 'appendOnly: no\n' 'flags:\n' 'storage pool name: system\n' 'fileset name: root\n' 'snapshot name:\n' 'Windows attributes: DIRECTORY', '') self.driver._get_fileset_from_path('') @patch('cinder.utils.execute') def test_get_fileset_from_path_fail_mmlsattr(self, mock_exec): mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_fileset_from_path, '') @patch('cinder.utils.execute') def test_get_fileset_from_path_fail_find_fileset(self, mock_exec): mock_exec.return_value = ('file name: /gpfs0\n' 'metadata replication: 1 max 2\n' 'data replication: 1 max 2\n' 'immutable: no\n' 'appendOnly: no\n' 'flags:\n' 'storage pool name: system\n' '*** name: root\n' 'snapshot name:\n' 'Windows attributes: DIRECTORY', '') self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_fileset_from_path, '') @patch('cinder.utils.execute') def test_verify_gpfs_pool_ok(self, mock_exec): ctxt = self.context mock_exec.return_value = ('Storage pools in file system at \'/gpfs0\':' '\n' 'Name Id BlkSize Data ' 'Meta ' 'Total Data in (KB) Free Data in (KB) ' 'Total Meta in (KB) Free Meta in (KB)\n' 'system 0 256 KB yes ' 'yes ' ' 10485760 9953792 ( 95%) ' '10485760 9954560 ( 95%)', '') self.assertTrue(self.driver._gpfs_device, self.driver._verify_gpfs_pool('/dev/gpfs')) @patch('cinder.utils.execute') def test_verify_gpfs_pool_fail_pool(self, mock_exec): ctxt = self.context mock_exec.return_value = ('Storage pools in file system at \'/gpfs0\':' '\n' 'Name Id BlkSize Data ' 'Meta ' 'Total Data in (KB) Free Data in (KB) ' 'Total Meta in (KB) Free Meta in (KB)\n' 'test 0 256 KB yes ' 'yes' ' 10485760 9953792 ( 95%)' ' 10485760 9954560 ( 95%)', '') self.assertTrue(self.driver._gpfs_device, self.driver._verify_gpfs_pool('/dev/gpfs')) @patch('cinder.utils.execute') def test_verify_gpfs_pool_fail_raise(self, mock_exec): ctxt = self.context mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertFalse(self.driver._verify_gpfs_pool('/dev/gpfs')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.utils.execute') def test_update_volume_storage_pool_ok(self, mock_exec, mock_verify_pool): mock_verify_pool.return_value = True self.assertTrue(self.driver._update_volume_storage_pool('', 'system')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.utils.execute') def test_update_volume_storage_pool_ok_pool_none(self, mock_exec, mock_verify_pool): mock_verify_pool.return_value = True self.assertTrue(self.driver._update_volume_storage_pool('', None)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.utils.execute') def test_update_volume_storage_pool_fail_pool(self, mock_exec, mock_verify_pool): mock_verify_pool.return_value = False self.assertRaises(exception.VolumeBackendAPIException, self.driver._update_volume_storage_pool, '', 'system') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.utils.execute') def test_update_volume_storage_pool_fail_mmchattr(self, mock_exec, mock_verify_pool): mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') mock_verify_pool.return_value = True self.assertFalse(self.driver._update_volume_storage_pool('', 'system')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_filesystem_from_path') @patch('cinder.utils.execute') def test_get_gpfs_fs_release_level_ok(self, mock_exec, mock_fs_from_path): mock_exec.return_value = ('mmlsfs::HEADER:version:reserved:reserved:' 'deviceName:fieldName:data:remarks:\n' 'mmlsfs::0:1:::gpfs:filesystemVersion:14.03 ' '(4.1.0.0):\n' 'mmlsfs::0:1:::gpfs:filesystemVersionLocal:' '14.03 (4.1.0.0):\n' 'mmlsfs::0:1:::gpfs:filesystemVersionManager' ':14.03 (4.1.0.0):\n' 'mmlsfs::0:1:::gpfs:filesystemVersion' 'Original:14.03 (4.1.0.0):\n' 'mmlsfs::0:1:::gpfs:filesystemHighest' 'Supported:14.03 (4.1.0.0):', '') mock_fs_from_path.return_value = '/dev/gpfs' self.assertEqual(('/dev/gpfs', 1403), self.driver._get_gpfs_fs_release_level('')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_filesystem_from_path') @patch('cinder.utils.execute') def test_get_gpfs_fs_release_level_fail_mmlsfs(self, mock_exec, mock_fs_from_path): mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') mock_fs_from_path.return_value = '/dev/gpfs' self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_gpfs_fs_release_level, '') @patch('cinder.utils.execute') def test_get_gpfs_cluster_release_level_ok(self, mock_exec): mock_exec.return_value = ('mmlsconfig::HEADER:version:reserved:' 'reserved:configParameter:value:nodeList:\n' 'mmlsconfig::0:1:::minReleaseLevel:1403::', '') self.assertEqual(1403, self.driver._get_gpfs_cluster_release_level()) @patch('cinder.utils.execute') def test_get_gpfs_cluster_release_level_fail_mmlsconfig(self, mock_exec): mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertRaises(exception.VolumeBackendAPIException, self.driver._get_gpfs_cluster_release_level) @patch('cinder.utils.execute') def test_is_gpfs_path_fail_mmlsattr(self, mock_exec): mock_exec.side_effect = processutils.ProcessExecutionError( stdout='test', stderr='test') self.assertRaises(exception.VolumeBackendAPIException, self.driver._is_gpfs_path, '/dummy/path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_fileset_from_path') @patch('cinder.utils.execute') def test_is_same_fileset_ok(self, mock_exec, mock_get_fileset_from_path): mock_get_fileset_from_path.return_value = True self.assertTrue(self.driver._is_same_fileset('', '')) mock_get_fileset_from_path.side_effect = [True, False] self.assertFalse(self.driver._is_same_fileset('', '')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_available_capacity') @patch('cinder.utils.execute') def test_same_cluster_ok(self, mock_exec, mock_avail_capacity): mock_avail_capacity.return_value = (10192683008, 10737418240) stats = self.driver.get_volume_stats() loc = stats['location_info'] cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} self.assertTrue(self.driver._same_cluster(host)) locinfo = stats['location_info'] + '_' loc = locinfo cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} self.assertFalse(self.driver._same_cluster(host)) @patch('cinder.utils.execute') def test_set_rw_permission(self, mock_exec): self.driver._set_rw_permission('') @patch('cinder.utils.execute') def test_can_migrate_locally(self, mock_exec): host = {'host': 'foo', 'capabilities': ''} self.assertEqual(self.driver._can_migrate_locally(host), None) loc = 'GPFSDriver:%s' % self.driver._cluster_id cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} self.assertEqual(self.driver._can_migrate_locally(host), None) loc = 'GPFSDriver_:%s:testpath' % self.driver._cluster_id cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} self.assertEqual(self.driver._can_migrate_locally(host), None) loc = 'GPFSDriver:%s:testpath' % (self.driver._cluster_id + '_') cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} self.assertEqual(self.driver._can_migrate_locally(host), None) loc = 'GPFSDriver:%s:testpath' % self.driver._cluster_id cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} self.assertEqual(self.driver._can_migrate_locally(host), 'testpath') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_filesystem_from_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_gpfs_cluster_id') @patch('cinder.utils.execute') def test_do_setup_ok(self, mock_exec, mock_get_gpfs_cluster_id, mock_get_filesystem_from_path, mock_verify_gpfs_pool): ctxt = self.context mock_get_gpfs_cluster_id.return_value = self.driver._cluster_id mock_get_filesystem_from_path.return_value = '/dev/gpfs' mock_verify_gpfs_pool.return_value = True self.driver.do_setup(ctxt) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_filesystem_from_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_gpfs_cluster_id') @patch('cinder.utils.execute') def test_do_setup_fail_get_cluster_id(self, mock_exec, mock_get_gpfs_cluster_id, mock_get_filesystem_from_path, mock_verify_gpfs_pool): ctxt = self.context mock_get_gpfs_cluster_id.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) mock_get_filesystem_from_path.return_value = '/dev/gpfs' mock_verify_gpfs_pool.return_value = True self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, ctxt) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_filesystem_from_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_gpfs_cluster_id') @patch('cinder.utils.execute') def test_do_setup_fail_get_fs_from_path(self, mock_exec, mock_get_gpfs_cluster_id, mock_get_fs_from_path, mock_verify_gpfs_pool): ctxt = self.context mock_get_gpfs_cluster_id.return_value = self.driver._cluster_id mock_get_fs_from_path.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) mock_verify_gpfs_pool.return_value = True self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, ctxt) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_pool') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_filesystem_from_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._get_gpfs_cluster_id') @patch('cinder.utils.execute') def test_do_setup_fail_volume(self, mock_exec, mock_get_gpfs_cluster_id, mock_get_filesystem_from_path, mock_verify_gpfs_pool): ctxt = self.context mock_get_gpfs_cluster_id. return_value = self.driver._cluster_id mock_get_filesystem_from_path.return_value = '/dev/gpfs' mock_verify_gpfs_pool.return_value = False self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, ctxt) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._check_gpfs_state') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_fs_release_level') def test_check_for_setup_error_fail_conf(self, mock_get_gpfs_fs_rel_lev, mock_is_gpfs_path, mock_check_gpfs_state): fake_fs = '/dev/gpfs' fake_fs_release = 1400 fake_cluster_release = 1201 # fail configuration.gpfs_mount_point_base is None org_value = self.driver.configuration.gpfs_mount_point_base self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=None) mock_get_gpfs_fs_rel_lev.return_value = (fake_fs, fake_fs_release) self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=org_value) # fail configuration.gpfs_images_share_mode not in # ['copy_on_write', 'copy'] org_value = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy_on_read') self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=org_value) # fail configuration.gpfs_images_share_mode and # configuration.gpfs_images_dir is None org_value_share_mode = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy') org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = None self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=org_value_share_mode) CONF.gpfs_images_dir = org_value_dir # fail configuration.gpfs_images_share_mode == 'copy_on_write' and not # _same_filesystem(configuration.gpfs_mount_point_base, # configuration.gpfs_images_dir) org_value = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy_on_write') with mock.patch('cinder.volume.drivers.ibm.gpfs._same_filesystem', return_value=False): self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=org_value) # fail self.configuration.gpfs_images_share_mode == 'copy_on_write' and # not self._is_same_fileset(self.configuration.gpfs_mount_point_base, # self.configuration.gpfs_images_dir) org_value = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy_on_write') with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_is_same_fileset', return_value=False): self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=org_value) # fail directory is None org_value_share_mode = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=None) org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = None with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_cluster_release_level', return_value=fake_cluster_release): self.driver.check_for_setup_error() self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=org_value_share_mode) CONF.gpfs_images_dir = org_value_dir # fail directory.startswith('/') org_value_mount = self.driver.configuration.gpfs_mount_point_base self.flags(volume_driver=self.driver_name, gpfs_mount_point_base='_' + self.volumes_path) org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = None with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_cluster_release_level', return_value=fake_cluster_release): self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=org_value_mount) CONF.gpfs_images_dir = org_value_dir # fail os.path.isdir(directory) org_value_mount = self.driver.configuration.gpfs_mount_point_base self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=self.volumes_path + '_') org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = None with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_cluster_release_level', return_value=fake_cluster_release): self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=org_value_mount) CONF.gpfs_images_dir = org_value_dir # fail not cluster release level >= GPFS_CLONE_MIN_RELEASE org_fake_cluster_release = fake_cluster_release fake_cluster_release = 1105 org_value_mount = self.driver.configuration.gpfs_mount_point_base self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=self.volumes_path) org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = None with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_cluster_release_level', return_value=fake_cluster_release): with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_fs_release_level', return_value=(fake_fs, fake_fs_release)): self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) fake_cluster_release = org_fake_cluster_release # fail not fs release level >= GPFS_CLONE_MIN_RELEASE org_fake_fs_release = fake_fs_release fake_fs_release = 1105 org_value_mount = self.driver.configuration.gpfs_mount_point_base self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=self.volumes_path) org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = None with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_cluster_release_level', return_value=fake_cluster_release): with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_gpfs_fs_release_level', return_value=(fake_fs, fake_fs_release)): self.assertRaises(exception.VolumeBackendAPIException, self.driver.check_for_setup_error) self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=org_value_mount) CONF.gpfs_images_dir = org_value_dir fake_fs_release = org_fake_fs_release @patch('cinder.utils.execute') def test_create_sparse_file(self, mock_exec): self.driver._create_sparse_file('', 100) @patch('cinder.utils.execute') def test_allocate_file_blocks(self, mock_exec): self.driver._allocate_file_blocks(os.path.join(self.images_dir, 'test'), 1) @patch('cinder.utils.execute') def test_gpfs_change_attributes(self, mock_exec): options = [] options.extend(['-T', 'test']) self.driver._gpfs_change_attributes(options, self.images_dir) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_change_attributes') def test_set_volume_attributes(self, mock_change_attributes): metadata = [dict([('key', 'data_pool_name'), ('value', 'test')]), dict([('key', 'replicas'), ('value', 'test')]), dict([('key', 'dio'), ('value', 'test')]), dict([('key', 'write_affinity_depth'), ('value', 'test')]), dict([('key', 'block_group_factor'), ('value', 'test')]), dict([('key', 'write_affinity_failure_group'), ('value', 'test')]), dict([('key', 'test'), ('value', 'test')])] self.driver._set_volume_attributes('', metadata) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_change_attributes') def test_set_volume_attributes_no_attributes(self, mock_change_attributes): metadata = [] org_value = self.driver.configuration.gpfs_storage_pool self.flags(volume_driver=self.driver_name, gpfs_storage_pool='system') self.driver._set_volume_attributes('', metadata) self.flags(volume_driver=self.driver_name, gpfs_storage_pool=org_value) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_change_attributes') def test_set_volume_attributes_no_options(self, mock_change_attributes): metadata = [] org_value = self.driver.configuration.gpfs_storage_pool self.flags(volume_driver=self.driver_name, gpfs_storage_pool='') self.driver._set_volume_attributes('', metadata) self.flags(volume_driver=self.driver_name, gpfs_storage_pool=org_value) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._allocate_file_blocks') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_volume_attributes') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_sparse_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_create_volume(self, mock_gpfs_path_state, mock_local_path, mock_sparse_file, mock_rw_permission, mock_set_volume_attributes, mock_allocate_file_blocks, mock_exec): mock_local_path.return_value = 'test' volume = {} volume['size'] = 1000 value = {} value['value'] = 'test' volume['volume_metadata'] = [dict([('key', 'fstype'), ('value', 'test')]), dict([('key', 'fslabel'), ('value', 'test')]), dict([('key', 'test'), ('value', 'test')])] org_value = self.driver.configuration.gpfs_sparse_volumes self.flags(volume_driver=self.driver_name, gpfs_sparse_volumes=False) self.driver.create_volume(volume) self.flags(volume_driver=self.driver_name, gpfs_sparse_volumes=org_value) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._allocate_file_blocks') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_volume_attributes') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_sparse_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_create_volume_no_sparse_volume(self, mock_gpfs_path_state, mock_local_path, mock_sparse_file, mock_rw_permission, mock_set_volume_attributes, mock_allocate_file_blocks, mock_exec): mock_local_path.return_value = 'test' volume = {} volume['size'] = 1000 value = {} value['value'] = 'test' volume['volume_metadata'] = [dict([('key', 'fstype_'), ('value', 'test')]), dict([('key', 'fslabel'), ('value', 'test')]), dict([('key', 'test'), ('value', 'test')])] org_value = self.driver.configuration.gpfs_sparse_volumes self.flags(volume_driver=self.driver_name, gpfs_sparse_volumes=True) self.driver.create_volume(volume) self.flags(volume_driver=self.driver_name, gpfs_sparse_volumes=org_value) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._resize_volume_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_redirect') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_copy') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_create_volume_from_snapshot(self, mock_local_path, mock_create_gpfs_copy, mock_rw_permission, mock_gpfs_redirect, mock_resize_volume_file): mock_resize_volume_file.return_value = 5 * units.GiB volume = {} volume['size'] = 1000 self.assertEqual(self.driver.create_volume_from_snapshot(volume, ''), {'size': 5.0}) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._resize_volume_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_clone') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_create_cloned_volume(self, mock_local_path, mock_create_gpfs_clone, mock_rw_permission, mock_resize_volume_file): mock_resize_volume_file.return_value = 5 * units.GiB volume = {} volume['size'] = 1000 self.assertEqual(self.driver.create_cloned_volume(volume, ''), {'size': 5.0}) @patch('cinder.utils.execute') def test_delete_gpfs_file_ok(self, mock_exec): mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', ''), ('', ''), ('', '')] self.driver._delete_gpfs_file(self.images_dir) self.driver._delete_gpfs_file(self.images_dir + '_') mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' ' '/gpfs0/test.txt', ''), ('', '')] self.driver._delete_gpfs_file(self.images_dir) @patch('os.path.exists') @patch('cinder.utils.execute') def test_delete_gpfs_file_ok_parent(self, mock_exec, mock_path_exists): mock_path_exists.side_effect = [True, False, False, True, False, False, True, False, False] mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', ''), ('/gpfs0/test.snap\ntest', ''), ('', '')] self.driver._delete_gpfs_file(self.images_dir) mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', ''), ('/gpfs0/test.ts\ntest', ''), ('', '')] self.driver._delete_gpfs_file(self.images_dir) mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', ''), ('/gpfs0/test.txt\ntest', ''), ('', '')] self.driver._delete_gpfs_file(self.images_dir) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._delete_gpfs_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_delete_volume(self, mock_verify_gpfs_path_state, mock_local_path, mock_delete_gpfs_file): self.driver.delete_volume('') @patch('cinder.utils.execute') def test_gpfs_redirect_ok(self, mock_exec): org_value = self.driver.configuration.gpfs_max_clone_depth self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=1) mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', ''), ('', '')] self.assertEqual(True, self.driver._gpfs_redirect('')) self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=1) mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 1 148488 ' '/gpfs0/test.txt', ''), ('', '')] self.assertEqual(False, self.driver._gpfs_redirect('')) self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=org_value) @patch('cinder.utils.execute') def test_gpfs_redirect_fail_depth(self, mock_exec): org_value = self.driver.configuration.gpfs_max_clone_depth self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=0) mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', ''), ('', '')] self.assertEqual(False, self.driver._gpfs_redirect('')) self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=org_value) @patch('cinder.utils.execute') def test_gpfs_redirect_fail_match(self, mock_exec): org_value = self.driver.configuration.gpfs_max_clone_depth self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=1) mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' 148488 ' '/gpfs0/test.txt', ''), ('', '')] self.assertEqual(False, self.driver._gpfs_redirect('')) self.flags(volume_driver=self.driver_name, gpfs_max_clone_depth=org_value) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_snap') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_copy') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_redirect') @patch('cinder.utils.execute') def test_create_gpfs_clone(self, mock_exec, mock_redirect, mock_cr_gpfs_cp, mock_cr_gpfs_snap): mock_redirect.return_value = True self.driver._create_gpfs_clone('', '') mock_redirect.side_effect = [True, False] self.driver._create_gpfs_clone('', '') @patch('cinder.utils.execute') def test_create_gpfs_copy(self, mock_exec): self.driver._create_gpfs_copy('', '') @patch('cinder.utils.execute') def test_create_gpfs_snap(self, mock_exec): self.driver._create_gpfs_snap('') self.driver._create_gpfs_snap('', '') @patch('cinder.utils.execute') def test_is_gpfs_parent_file_ok(self, mock_exec): mock_exec.side_effect = [('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' yes 2 148488 ' '/gpfs0/test.txt', ''), ('Parent Depth Parent inode File name\n' '------ ----- -------------- ---------\n' ' no 2 148488 ' '/gpfs0/test.txt', '')] self.assertEqual(True, self.driver._is_gpfs_parent_file('')) self.assertEqual(False, self.driver._is_gpfs_parent_file('')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_redirect') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_snap') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_create_snapshot(self, mock_local_path, mock_create_gpfs_snap, mock_set_rw_permission, mock_gpfs_redirect): org_value = self.driver.configuration.gpfs_mount_point_base self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=self.volumes_path) snapshot = {} snapshot['volume_name'] = 'test' self.driver.create_snapshot(snapshot) self.flags(volume_driver=self.driver_name, gpfs_mount_point_base=org_value) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_delete_snapshot(self, mock_local_path, mock_exec): snapshot = {} self.driver.delete_snapshot(snapshot) def test_ensure_export(self): self.assertEqual(None, self.driver.ensure_export('', '')) def test_create_export(self): self.assertEqual(None, self.driver.create_export('', '')) def test_remove_export(self): self.assertEqual(None, self.driver.remove_export('', '')) def test_initialize_connection(self): volume = {} volume['name'] = 'test' data = self.driver.initialize_connection(volume, '') self.assertEqual(data['data']['name'], 'test') self.assertEqual(data['data']['device_path'], os.path.join( self.driver.configuration.gpfs_mount_point_base, 'test')) def test_terminate_connection(self): self.assertEqual(None, self.driver.terminate_connection('', '')) def test_get_volume_stats(self): fake_avail = 80 * units.GiB fake_size = 2 * fake_avail with mock.patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_get_available_capacity', return_value=(fake_avail, fake_size)): stats = self.driver.get_volume_stats() self.assertEqual(stats['volume_backend_name'], 'GPFS') self.assertEqual(stats['storage_protocol'], 'file') stats = self.driver.get_volume_stats(True) self.assertEqual(stats['volume_backend_name'], 'GPFS') self.assertEqual(stats['storage_protocol'], 'file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._update_volume_stats') def test_get_volume_stats_none_stats(self, mock_upd_vol_stats): _stats_org = self.driver._stats self.driver._stats = mock.Mock() self.driver._stats.return_value = None self.driver.get_volume_stats() self.driver._stats = _stats_org @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._clone_image') def test_clone_image_pub(self, mock_exec): self.driver.clone_image('', '', '', '') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_path') def test_is_cloneable_ok(self, mock_is_gpfs_path): org_value_share_mode = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='test') org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = self.images_dir mock_is_gpfs_path.return_value = None self.assertEqual((True, None, os.path.join(CONF.gpfs_images_dir, '12345')), self.driver._is_cloneable('12345')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_path') def test_is_cloneable_fail_config(self, mock_is_gpfs_path): org_value_share_mode = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='') org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = '' mock_is_gpfs_path.return_value = None self.assertNotEqual((True, None, os.path.join(CONF.gpfs_images_dir, '12345')), self.driver._is_cloneable('12345')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_path') def test_is_cloneable_fail_path(self, mock_is_gpfs_path): org_value_share_mode = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='test') org_value_dir = CONF.gpfs_images_dir CONF.gpfs_images_dir = self.images_dir mock_is_gpfs_path.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) self.assertNotEqual((True, None, os.path.join(CONF.gpfs_images_dir, '12345')), self.driver._is_cloneable('12345')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._resize_volume_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.image.image_utils.convert_image') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_copy') @patch('cinder.image.image_utils.qemu_img_info') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_snap') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_parent_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_cloneable') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_clone_image(self, mock_verify_gpfs_path_state, mock_is_cloneable, mock_local_path, mock_is_gpfs_parent_file, mock_create_gpfs_snap, mock_qemu_img_info, mock_create_gpfs_copy, mock_conv_image, mock_set_rw_permission, mock_resize_volume_file): mock_is_cloneable.return_value = (True, 'test', self.images_dir) mock_is_gpfs_parent_file.return_value = False mock_qemu_img_info.return_value = self._fake_qemu_qcow2_image_info('') volume = {} volume['id'] = 'test' volume['size'] = 1000 self.assertEqual(({'provider_location': None}, True), self.driver._clone_image(volume, '', 1)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_cloneable') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_clone_image_not_cloneable(self, mock_verify_gpfs_path_state, mock_is_cloneable): mock_is_cloneable.return_value = (False, 'test', self.images_dir) volume = {} volume['id'] = 'test' volume['size'] = 1000 self.assertEqual((None, False), self.driver._clone_image(volume, '', 1)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._resize_volume_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._set_rw_permission') @patch('cinder.image.image_utils.convert_image') @patch('shutil.copyfile') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_copy') @patch('cinder.image.image_utils.qemu_img_info') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_snap') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_parent_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_cloneable') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_clone_image_format(self, mock_verify_gpfs_path_state, mock_is_cloneable, mock_local_path, mock_is_gpfs_parent_file, mock_create_gpfs_snap, mock_qemu_img_info, mock_create_gpfs_copy, mock_copyfile, mock_conv_image, mock_set_rw_permission, mock_resize_volume_file): mock_is_cloneable.return_value = (True, 'test', self.images_dir) mock_is_gpfs_parent_file.return_value = True mock_qemu_img_info.return_value = self._fake_qemu_raw_image_info('') volume = {} volume['id'] = 'test' volume['size'] = 1000 org_value = self.driver.configuration.gpfs_images_share_mode self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy_on_write') self.assertEqual(({'provider_location': None}, True), self.driver._clone_image(volume, '', 1)) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy') self.assertEqual(({'provider_location': None}, True), self.driver._clone_image(volume, '', 1)) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode='copy_on_read') self.assertEqual(({'provider_location': None}, True), self.driver._clone_image(volume, '', 1)) self.flags(volume_driver=self.driver_name, gpfs_images_share_mode=org_value) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._resize_volume_file') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.image.image_utils.fetch_to_raw') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') def test_copy_image_to_volume(self, mock_verify_gpfs_path_state, mock_fetch_to_raw, mock_local_path, mock_resize_volume_file): volume = {} volume['id'] = 'test' volume['size'] = 1000 self.driver.copy_image_to_volume('', volume, '', 1) @patch('cinder.image.image_utils.qemu_img_info') @patch('cinder.image.image_utils.resize_image') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_resize_volume_file_ok(self, mock_local_path, mock_resize_image, mock_qemu_img_info): volume = {} volume['id'] = 'test' mock_qemu_img_info.return_value = self._fake_qemu_qcow2_image_info('') self.assertEqual(self._fake_qemu_qcow2_image_info('').virtual_size, self.driver._resize_volume_file(volume, 2000)) @patch('cinder.image.image_utils.qemu_img_info') @patch('cinder.image.image_utils.resize_image') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_resize_volume_file_fail(self, mock_local_path, mock_resize_image, mock_qemu_img_info): volume = {} volume['id'] = 'test' mock_resize_image.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) mock_qemu_img_info.return_value = self._fake_qemu_qcow2_image_info('') self.assertRaises(exception.VolumeBackendAPIException, self.driver._resize_volume_file, volume, 2000) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._resize_volume_file') def test_extend_volume(self, mock_resize_volume_file): volume = {} volume['id'] = 'test' self.driver.extend_volume(volume, 2000) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') @patch('cinder.image.image_utils.upload_volume') def test_copy_volume_to_image(self, mock_upload_volume, mock_local_path): volume = {} volume['id'] = 'test' self.driver.copy_volume_to_image('', volume, '', '') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._delete_gpfs_file') @patch('cinder.openstack.common.fileutils.file_open') @patch('cinder.utils.temporary_chown') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._gpfs_redirect') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._create_gpfs_clone') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_backup_volume(self, mock_local_path, mock_create_gpfs_clone, mock_gpfs_redirect, mock_temp_chown, mock_file_open, mock_delete_gpfs_file): volume = {} volume['name'] = 'test' self.driver.db = mock.Mock() self.driver.db.volume_get = mock.Mock() self.driver.db.volume_get.return_value = volume backup = {} backup['volume_id'] = 'test' backup['id'] = '123456' backup_service = mock.Mock() mock_local_path.return_value = self.volumes_path self.driver.backup_volume('', backup, backup_service) @patch('cinder.openstack.common.fileutils.file_open') @patch('cinder.utils.temporary_chown') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.local_path') def test_restore_backup(self, mock_local_path, mock_temp_chown, mock_file_open): volume = {} volume['id'] = '123456' backup = {} backup['id'] = '123456' backup_service = mock.Mock() mock_local_path.return_value = self.volumes_path self.driver.restore_backup('', backup, volume, backup_service) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._can_migrate_locally') def test_migrate_volume_ok(self, mock_local, mock_exec): volume = {} volume['name'] = 'test' host = {} host = {'host': 'foo', 'capabilities': {}} mock_local.return_value = (self.driver.configuration. gpfs_mount_point_base + '_') self.assertEqual((True, None), self.driver._migrate_volume(volume, host)) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._can_migrate_locally') def test_migrate_volume_fail_dest_path(self, mock_local, mock_exec): volume = {} volume['name'] = 'test' host = {} host = {'host': 'foo', 'capabilities': {}} mock_local.return_value = None self.assertEqual((False, None), self.driver._migrate_volume(volume, host)) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._can_migrate_locally') def test_migrate_volume_fail_mpb(self, mock_local, mock_exec): volume = {} volume['name'] = 'test' host = {} host = {'host': 'foo', 'capabilities': {}} mock_local.return_value = (self.driver.configuration. gpfs_mount_point_base) mock_exec.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) self.assertEqual((True, None), self.driver._migrate_volume(volume, host)) @patch('cinder.utils.execute') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._can_migrate_locally') def test_migrate_volume_fail_mv(self, mock_local, mock_exec): volume = {} volume['name'] = 'test' host = {} host = {'host': 'foo', 'capabilities': {}} mock_local.return_value = ( self.driver.configuration.gpfs_mount_point_base + '_') mock_exec.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) self.assertEqual((False, None), self.driver._migrate_volume(volume, host)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._migrate_volume') def test_migrate_volume_ok_pub(self, mock_migrate_volume): self.driver.migrate_volume('', '', '') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._migrate_volume') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_update_volume_storage_pool') @patch('cinder.volume.drivers.ibm.gpfs._different') def test_retype_ok(self, mock_different, mock_strg_pool, mock_migrate_vol): ctxt = self.context (volume, new_type, diff, host) = self._fake_retype_arguments() self.driver.db = mock.Mock() mock_different.side_effect = [False, True, True] mock_strg_pool.return_value = True mock_migrate_vol.return_value = (True, True) self.assertTrue(self.driver.retype(ctxt, volume, new_type, diff, host)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._migrate_volume') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_update_volume_storage_pool') @patch('cinder.volume.drivers.ibm.gpfs._different') def test_retype_diff_backend(self, mock_different, mock_strg_pool, mock_migrate_vol): ctxt = self.context (volume, new_type, diff, host) = self._fake_retype_arguments() mock_different.side_effect = [True, True, True] self.assertFalse(self.driver.retype(ctxt, volume, new_type, diff, host)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._migrate_volume') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_update_volume_storage_pool') @patch('cinder.volume.drivers.ibm.gpfs._different') def test_retype_diff_pools_migrated(self, mock_different, mock_strg_pool, mock_migrate_vol): ctxt = self.context (volume, new_type, diff, host) = self._fake_retype_arguments() self.driver.db = mock.Mock() mock_different.side_effect = [False, False, True] mock_strg_pool.return_value = True mock_migrate_vol.return_value = (True, True) self.assertTrue(self.driver.retype(ctxt, volume, new_type, diff, host)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._migrate_volume') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_update_volume_storage_pool') @patch('cinder.volume.drivers.ibm.gpfs._different') def test_retype_diff_pools(self, mock_different, mock_strg_pool, mock_migrate_vol): ctxt = self.context (volume, new_type, diff, host) = self._fake_retype_arguments() mock_different.side_effect = [False, False, True] mock_strg_pool.return_value = True mock_migrate_vol.return_value = (False, False) self.assertFalse(self.driver.retype(ctxt, volume, new_type, diff, host)) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._migrate_volume') @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver.' '_update_volume_storage_pool') @patch('cinder.volume.drivers.ibm.gpfs._different') def test_retype_no_diff_hit(self, mock_different, mock_strg_pool, mock_migrate_vol): ctxt = self.context (volume, new_type, diff, host) = self._fake_retype_arguments() mock_different.side_effect = [False, False, False] self.assertFalse(self.driver.retype(ctxt, volume, new_type, diff, host)) @patch('cinder.utils.execute') def test_mkfs_ok(self, mock_exec): volume = {} volume['name'] = 'test' self.driver._mkfs(volume, 'swap') self.driver._mkfs(volume, 'swap', 'test') self.driver._mkfs(volume, 'ext3', 'test') self.driver._mkfs(volume, 'vfat', 'test') @patch('cinder.utils.execute') def test_mkfs_fail_mk(self, mock_exec): volume = {} volume['name'] = 'test' mock_exec.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) self.assertRaises(exception.VolumeBackendAPIException, self.driver._mkfs, volume, 'swap', 'test') @patch('cinder.utils.execute') def test_get_available_capacity_ok(self, mock_exec): mock_exec.return_value = ('Filesystem 1-blocks Used ' 'Available Capacity Mounted on\n' '/dev/gpfs 10737418240 544735232 ' '10192683008 6%% /gpfs0', '') self.assertEqual((10192683008, 10737418240), self.driver._get_available_capacity('/gpfs0')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._verify_gpfs_path_state') @patch('cinder.utils.execute') def test_get_available_capacity_fail_mounted(self, mock_exec, mock_path_state): mock_path_state.side_effect = ( exception.VolumeBackendAPIException('test')) mock_exec.return_value = ('Filesystem 1-blocks Used ' 'Available Capacity Mounted on\n' '/dev/gpfs 10737418240 544735232 ' '10192683008 6%% /gpfs0', '') self.assertEqual((0, 0), self.driver._get_available_capacity('/gpfs0')) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_path') def test_verify_gpfs_path_state_ok(self, mock_is_gpfs_path): self.driver._verify_gpfs_path_state(self.images_dir) @patch('cinder.volume.drivers.ibm.gpfs.GPFSDriver._is_gpfs_path') def test_verify_gpfs_path_state_fail_path(self, mock_is_gpfs_path): mock_is_gpfs_path.side_effect = ( processutils.ProcessExecutionError(stdout='test', stderr='test')) self.assertRaises(exception.VolumeBackendAPIException, self.driver._verify_gpfs_path_state, self.images_dir) def _fake_qemu_qcow2_image_info(self, path): data = FakeQemuImgInfo() data.file_format = 'qcow2' data.backing_file = None data.virtual_size = 1 * units.GiB return data def _fake_qemu_raw_image_info(self, path): data = FakeQemuImgInfo() data.file_format = 'raw' data.backing_file = None data.virtual_size = 1 * units.GiB return data def _fake_retype_arguments(self): ctxt = self.context loc = 'GPFSDriver:%s:testpath' % self.driver._cluster_id cap = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} key_specs_old = {'capabilities:storage_pool': 'bronze', 'volume_backend_name': 'backend1'} key_specs_new = {'capabilities:storage_pool': 'gold', 'volume_backend_name': 'backend1'} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = {} volume['name'] = 'test' volume['host'] = host volume['id'] = '123456' return (volume, new_type, diff, host) cinder-2014.1.5/cinder/tests/test_scality.py0000664000567000056700000002355512540642606022056 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Scality # # 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. """ Unit tests for the Scality SOFS Volume Driver. """ import errno import os import shutil import tempfile import mox as mox_lib from cinder import context from cinder import exception from cinder.image import image_utils from cinder import test from cinder import units from cinder import utils from cinder.volume.drivers import scality class ScalityDriverTestCase(test.TestCase): """Test case for the Scality driver.""" TEST_MOUNT = '/tmp/fake_mount' TEST_CONFIG = '/tmp/fake_config' TEST_VOLDIR = 'volumes' TEST_VOLNAME = 'volume_name' TEST_VOLSIZE = '0' TEST_VOLUME = { 'name': TEST_VOLNAME, 'size': TEST_VOLSIZE } TEST_VOLPATH = os.path.join(TEST_MOUNT, TEST_VOLDIR, TEST_VOLNAME) TEST_SNAPNAME = 'snapshot_name' TEST_SNAPSHOT = { 'name': TEST_SNAPNAME, 'volume_name': TEST_VOLNAME, 'volume_size': TEST_VOLSIZE } TEST_SNAPPATH = os.path.join(TEST_MOUNT, TEST_VOLDIR, TEST_SNAPNAME) TEST_CLONENAME = 'clone_name' TEST_CLONE = { 'name': TEST_CLONENAME, 'size': TEST_VOLSIZE } TEST_NEWSIZE = '2' TEST_IMAGE_SERVICE = 'image_service' TEST_IMAGE_ID = 'image_id' TEST_IMAGE_META = 'image_meta' def _makedirs(self, path): try: os.makedirs(path) except OSError as e: if e.errno != errno.EEXIST: raise def _create_fake_config(self): open(self.TEST_CONFIG, "w+").close() def _create_fake_mount(self): self._makedirs(os.path.join(self.TEST_MOUNT, 'sys')) self._makedirs(os.path.join(self.TEST_MOUNT, self.TEST_VOLDIR)) def _remove_fake_config(self): try: os.unlink(self.TEST_CONFIG) except OSError as e: if e.errno != errno.ENOENT: raise def _configure_driver(self): scality.CONF.scality_sofs_config = self.TEST_CONFIG scality.CONF.scality_sofs_mount_point = self.TEST_MOUNT scality.CONF.scality_sofs_volume_dir = self.TEST_VOLDIR scality.CONF.volume_dd_blocksize = '1M' def _execute_wrapper(self, cmd, *args, **kwargs): try: kwargs.pop('run_as_root') except KeyError: pass utils.execute(cmd, *args, **kwargs) def _set_access_wrapper(self, is_visible): def _access_wrapper(path, flags): if path == '/sbin/mount.sofs': return is_visible else: return os.access(path, flags) self.stubs.Set(os, 'access', _access_wrapper) def setUp(self): super(ScalityDriverTestCase, self).setUp() self.tempdir = tempfile.mkdtemp() self.TEST_MOUNT = self.tempdir self.TEST_VOLPATH = os.path.join(self.TEST_MOUNT, self.TEST_VOLDIR, self.TEST_VOLNAME) self.TEST_SNAPPATH = os.path.join(self.TEST_MOUNT, self.TEST_VOLDIR, self.TEST_SNAPNAME) self.TEST_CLONEPATH = os.path.join(self.TEST_MOUNT, self.TEST_VOLDIR, self.TEST_CLONENAME) self._driver = scality.ScalityDriver() self._driver.set_execute(self._execute_wrapper) self._mox = mox_lib.Mox() self._create_fake_mount() self._create_fake_config() self._configure_driver() def tearDown(self): shutil.rmtree(self.tempdir) self._remove_fake_config() super(ScalityDriverTestCase, self).tearDown() def test_setup_no_config(self): """Missing SOFS configuration shall raise an error.""" scality.CONF.scality_sofs_config = None self.assertRaises(exception.VolumeBackendAPIException, self._driver.do_setup, None) def test_setup_missing_config(self): """Non-existent SOFS configuration file shall raise an error.""" scality.CONF.scality_sofs_config = 'nonexistent.conf' self.assertRaises(exception.VolumeBackendAPIException, self._driver.do_setup, None) def test_setup_no_mount_helper(self): """SOFS must be installed to use the driver.""" self._set_access_wrapper(False) self.assertRaises(exception.VolumeBackendAPIException, self._driver.do_setup, None) def test_setup_make_voldir(self): """The directory for volumes shall be created automatically.""" self._set_access_wrapper(True) voldir_path = os.path.join(self.TEST_MOUNT, self.TEST_VOLDIR) os.rmdir(voldir_path) self._driver.do_setup(None) self.assertTrue(os.path.isdir(voldir_path)) def test_local_path(self): """Expected behaviour for local_path.""" self.assertEqual(self._driver.local_path(self.TEST_VOLUME), self.TEST_VOLPATH) def test_create_volume(self): """Expected behaviour for create_volume.""" ret = self._driver.create_volume(self.TEST_VOLUME) self.assertEqual(ret['provider_location'], os.path.join(self.TEST_VOLDIR, self.TEST_VOLNAME)) self.assertTrue(os.path.isfile(self.TEST_VOLPATH)) self.assertEqual(os.stat(self.TEST_VOLPATH).st_size, 100 * units.MiB) def test_delete_volume(self): """Expected behaviour for delete_volume.""" self._driver.create_volume(self.TEST_VOLUME) self._driver.delete_volume(self.TEST_VOLUME) self.assertFalse(os.path.isfile(self.TEST_VOLPATH)) def test_create_snapshot(self): """Expected behaviour for create_snapshot.""" mox = self._mox vol_size = self._driver._size_bytes(self.TEST_VOLSIZE) mox.StubOutWithMock(self._driver, '_create_file') self._driver._create_file(self.TEST_SNAPPATH, vol_size) mox.StubOutWithMock(self._driver, '_copy_file') self._driver._copy_file(self.TEST_VOLPATH, self.TEST_SNAPPATH) mox.ReplayAll() self._driver.create_snapshot(self.TEST_SNAPSHOT) mox.UnsetStubs() mox.VerifyAll() def test_delete_snapshot(self): """Expected behaviour for delete_snapshot.""" mox = self._mox mox.StubOutWithMock(os, 'remove') os.remove(self.TEST_SNAPPATH) mox.ReplayAll() self._driver.delete_snapshot(self.TEST_SNAPSHOT) mox.UnsetStubs() mox.VerifyAll() def test_initialize_connection(self): """Expected behaviour for initialize_connection.""" ret = self._driver.initialize_connection(self.TEST_VOLUME, None) self.assertEqual(ret['driver_volume_type'], 'scality') self.assertEqual(ret['data']['sofs_path'], os.path.join(self.TEST_VOLDIR, self.TEST_VOLNAME)) def test_copy_image_to_volume(self): """Expected behaviour for copy_image_to_volume.""" self.mox.StubOutWithMock(image_utils, 'fetch_to_raw') image_utils.fetch_to_raw(context, self.TEST_IMAGE_SERVICE, self.TEST_IMAGE_ID, self.TEST_VOLPATH, mox_lib.IgnoreArg(), size=self.TEST_VOLSIZE) self.mox.ReplayAll() self._driver.copy_image_to_volume(context, self.TEST_VOLUME, self.TEST_IMAGE_SERVICE, self.TEST_IMAGE_ID) def test_copy_volume_to_image(self): """Expected behaviour for copy_volume_to_image.""" self.mox.StubOutWithMock(image_utils, 'upload_volume') image_utils.upload_volume(context, self.TEST_IMAGE_SERVICE, self.TEST_IMAGE_META, self.TEST_VOLPATH) self.mox.ReplayAll() self._driver.copy_volume_to_image(context, self.TEST_VOLUME, self.TEST_IMAGE_SERVICE, self.TEST_IMAGE_META) def test_create_cloned_volume(self): """Expected behaviour for create_cloned_volume.""" self.mox.StubOutWithMock(self._driver, '_create_file') self.mox.StubOutWithMock(self._driver, '_copy_file') vol_size = self._driver._size_bytes(self.TEST_VOLSIZE) self._driver._create_file(self.TEST_CLONEPATH, vol_size) self._driver._copy_file(self.TEST_VOLPATH, self.TEST_CLONEPATH) self.mox.ReplayAll() self._driver.create_cloned_volume(self.TEST_CLONE, self.TEST_VOLUME) def test_extend_volume(self): """Expected behaviour for extend_volume.""" self.mox.StubOutWithMock(self._driver, '_create_file') new_size = self._driver._size_bytes(self.TEST_NEWSIZE) self._driver._create_file(self.TEST_VOLPATH, new_size) self.mox.ReplayAll() self._driver.extend_volume(self.TEST_VOLUME, self.TEST_NEWSIZE) cinder-2014.1.5/cinder/tests/test_qos_specs.py0000664000567000056700000003574212540642606022406 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2013 eBay Inc. # Copyright (c) 2013 OpenStack Foundation # # 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. """ Unit Tests for qos specs internal API """ import time from cinder import context from cinder import db from cinder import exception from cinder.openstack.common.db import exception as db_exc from cinder.openstack.common import log as logging from cinder import test from cinder.volume import qos_specs from cinder.volume import volume_types LOG = logging.getLogger(__name__) def fake_db_qos_specs_create(context, values): if values['name'] == 'DupQoSName': raise exception.QoSSpecsExists(specs_id=values['name']) elif values['name'] == 'FailQoSName': raise db_exc.DBError() pass class QoSSpecsTestCase(test.TestCase): """Test cases for qos specs code.""" def setUp(self): super(QoSSpecsTestCase, self).setUp() self.ctxt = context.get_admin_context() def _create_qos_specs(self, name, values=None): """Create a transfer object.""" if values: specs = dict(name=name, qos_specs=values) else: specs = {'name': name, 'qos_specs': { 'consumer': 'back-end', 'key1': 'value1', 'key2': 'value2'}} return db.qos_specs_create(self.ctxt, specs)['id'] def test_create(self): input = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} ref = qos_specs.create(self.ctxt, 'FakeName', input) specs = qos_specs.get_qos_specs(self.ctxt, ref['id']) expected = (dict(consumer='back-end')) expected.update(dict(id=ref['id'])) expected.update(dict(name='FakeName')) del input['consumer'] expected.update(dict(specs=input)) self.assertDictMatch(specs, expected) self.stubs.Set(db, 'qos_specs_create', fake_db_qos_specs_create) # qos specs must have unique name self.assertRaises(exception.QoSSpecsExists, qos_specs.create, self.ctxt, 'DupQoSName', input) input.update({'consumer': 'FakeConsumer'}) # consumer must be one of: front-end, back-end, both self.assertRaises(exception.InvalidQoSSpecs, qos_specs.create, self.ctxt, 'QoSName', input) del input['consumer'] # able to catch DBError self.assertRaises(exception.QoSSpecsCreateFailed, qos_specs.create, self.ctxt, 'FailQoSName', input) def test_update(self): def fake_db_update(context, specs_id, values): raise db_exc.DBError() input = {'key1': 'value1', 'consumer': 'WrongPlace'} # consumer must be one of: front-end, back-end, both self.assertRaises(exception.InvalidQoSSpecs, qos_specs.update, self.ctxt, 'fake_id', input) input['consumer'] = 'front-end' # qos specs must exists self.assertRaises(exception.QoSSpecsNotFound, qos_specs.update, self.ctxt, 'fake_id', input) specs_id = self._create_qos_specs('Name', input) qos_specs.update(self.ctxt, specs_id, {'key1': 'newvalue1', 'key2': 'value2'}) specs = qos_specs.get_qos_specs(self.ctxt, specs_id) self.assertEqual(specs['specs']['key1'], 'newvalue1') self.assertEqual(specs['specs']['key2'], 'value2') self.stubs.Set(db, 'qos_specs_update', fake_db_update) self.assertRaises(exception.QoSSpecsUpdateFailed, qos_specs.update, self.ctxt, 'fake_id', input) def test_delete(self): def fake_db_associations_get(context, id): if id == 'InUse': return True else: return False def fake_db_delete(context, id): if id == 'NotFound': raise exception.QoSSpecsNotFound(specs_id=id) def fake_disassociate_all(context, id): pass self.stubs.Set(db, 'qos_specs_associations_get', fake_db_associations_get) self.stubs.Set(qos_specs, 'disassociate_all', fake_disassociate_all) self.stubs.Set(db, 'qos_specs_delete', fake_db_delete) self.assertRaises(exception.InvalidQoSSpecs, qos_specs.delete, self.ctxt, None) self.assertRaises(exception.QoSSpecsNotFound, qos_specs.delete, self.ctxt, 'NotFound') self.assertRaises(exception.QoSSpecsInUse, qos_specs.delete, self.ctxt, 'InUse') # able to delete in-use qos specs if force=True qos_specs.delete(self.ctxt, 'InUse', force=True) def test_delete_keys(self): def fake_db_qos_delete_key(context, id, key): if key == 'NotFound': raise exception.QoSSpecsKeyNotFound(specs_id=id, specs_key=key) else: pass def fake_qos_specs_get(context, id): if id == 'NotFound': raise exception.QoSSpecsNotFound(specs_id=id) else: pass value = dict(consumer='front-end', foo='Foo', bar='Bar', zoo='tiger') specs_id = self._create_qos_specs('QoSName', value) qos_specs.delete_keys(self.ctxt, specs_id, ['foo', 'bar']) del value['consumer'] del value['foo'] del value['bar'] expected = {'name': 'QoSName', 'id': specs_id, 'consumer': 'front-end', 'specs': value} specs = qos_specs.get_qos_specs(self.ctxt, specs_id) self.assertDictMatch(expected, specs) self.stubs.Set(qos_specs, 'get_qos_specs', fake_qos_specs_get) self.stubs.Set(db, 'qos_specs_item_delete', fake_db_qos_delete_key) self.assertRaises(exception.InvalidQoSSpecs, qos_specs.delete_keys, self.ctxt, None, []) self.assertRaises(exception.QoSSpecsNotFound, qos_specs.delete_keys, self.ctxt, 'NotFound', []) self.assertRaises(exception.QoSSpecsKeyNotFound, qos_specs.delete_keys, self.ctxt, 'Found', ['NotFound']) self.assertRaises(exception.QoSSpecsKeyNotFound, qos_specs.delete_keys, self.ctxt, 'Found', ['foo', 'bar', 'NotFound']) def test_get_associations(self): def fake_db_associate_get(context, id): if id == 'Trouble': raise db_exc.DBError() return [{'name': 'type-1', 'id': 'id-1'}, {'name': 'type-2', 'id': 'id-2'}] self.stubs.Set(db, 'qos_specs_associations_get', fake_db_associate_get) expected1 = {'association_type': 'volume_type', 'name': 'type-1', 'id': 'id-1'} expected2 = {'association_type': 'volume_type', 'name': 'type-2', 'id': 'id-2'} res = qos_specs.get_associations(self.ctxt, 'specs-id') self.assertIn(expected1, res) self.assertIn(expected2, res) self.assertRaises(exception.CinderException, qos_specs.get_associations, self.ctxt, 'Trouble') def test_associate_qos_with_type(self): def fake_qos_specs_get(context, id): if id == 'NotFound': raise exception.QoSSpecsNotFound(specs_id=id) else: pass def fake_db_associate(context, id, type_id): if id == 'Trouble': raise db_exc.DBError() elif type_id == 'NotFound': raise exception.VolumeTypeNotFound(volume_type_id=type_id) pass def fake_vol_type_qos_get(type_id): if type_id == 'Invalid': return {'qos_specs': {'id': 'Invalid'}} else: return {'qos_specs': None} type_ref = volume_types.create(self.ctxt, 'TypeName') specs_id = self._create_qos_specs('QoSName') qos_specs.associate_qos_with_type(self.ctxt, specs_id, type_ref['id']) res = qos_specs.get_associations(self.ctxt, specs_id) self.assertEqual(len(res), 1) self.assertEqual('TypeName', res[0]['name']) self.assertEqual(type_ref['id'], res[0]['id']) self.stubs.Set(db, 'qos_specs_associate', fake_db_associate) self.stubs.Set(qos_specs, 'get_qos_specs', fake_qos_specs_get) self.stubs.Set(volume_types, 'get_volume_type_qos_specs', fake_vol_type_qos_get) self.assertRaises(exception.VolumeTypeNotFound, qos_specs.associate_qos_with_type, self.ctxt, 'specs-id', 'NotFound') self.assertRaises(exception.QoSSpecsAssociateFailed, qos_specs.associate_qos_with_type, self.ctxt, 'Trouble', 'id') self.assertRaises(exception.QoSSpecsNotFound, qos_specs.associate_qos_with_type, self.ctxt, 'NotFound', 'id') self.assertRaises(exception.InvalidVolumeType, qos_specs.associate_qos_with_type, self.ctxt, 'specs-id', 'Invalid') def test_disassociate_qos_specs(self): def fake_qos_specs_get(context, id): if id == 'NotFound': raise exception.QoSSpecsNotFound(specs_id=id) else: pass def fake_db_disassociate(context, id, type_id): if id == 'Trouble': raise db_exc.DBError() elif type_id == 'NotFound': raise exception.VolumeTypeNotFound(volume_type_id=type_id) pass type_ref = volume_types.create(self.ctxt, 'TypeName') specs_id = self._create_qos_specs('QoSName') qos_specs.associate_qos_with_type(self.ctxt, specs_id, type_ref['id']) res = qos_specs.get_associations(self.ctxt, specs_id) self.assertEqual(len(res), 1) qos_specs.disassociate_qos_specs(self.ctxt, specs_id, type_ref['id']) res = qos_specs.get_associations(self.ctxt, specs_id) self.assertEqual(len(res), 0) self.stubs.Set(db, 'qos_specs_disassociate', fake_db_disassociate) self.stubs.Set(qos_specs, 'get_qos_specs', fake_qos_specs_get) self.assertRaises(exception.VolumeTypeNotFound, qos_specs.disassociate_qos_specs, self.ctxt, 'specs-id', 'NotFound') self.assertRaises(exception.QoSSpecsDisassociateFailed, qos_specs.disassociate_qos_specs, self.ctxt, 'Trouble', 'id') def test_disassociate_all(self): def fake_db_disassociate_all(context, id): if id == 'Trouble': raise db_exc.DBError() pass def fake_qos_specs_get(context, id): if id == 'NotFound': raise exception.QoSSpecsNotFound(specs_id=id) else: pass type1_ref = volume_types.create(self.ctxt, 'TypeName1') type2_ref = volume_types.create(self.ctxt, 'TypeName2') specs_id = self._create_qos_specs('QoSName') qos_specs.associate_qos_with_type(self.ctxt, specs_id, type1_ref['id']) qos_specs.associate_qos_with_type(self.ctxt, specs_id, type2_ref['id']) res = qos_specs.get_associations(self.ctxt, specs_id) self.assertEqual(len(res), 2) qos_specs.disassociate_all(self.ctxt, specs_id) res = qos_specs.get_associations(self.ctxt, specs_id) self.assertEqual(len(res), 0) self.stubs.Set(db, 'qos_specs_disassociate_all', fake_db_disassociate_all) self.stubs.Set(qos_specs, 'get_qos_specs', fake_qos_specs_get) self.assertRaises(exception.QoSSpecsDisassociateFailed, qos_specs.disassociate_all, self.ctxt, 'Trouble') def test_get_all_specs(self): input = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'consumer': 'both'} specs_id1 = self._create_qos_specs('Specs1', input) input.update({'key4': 'value4'}) specs_id2 = self._create_qos_specs('Specs2', input) expected1 = { 'id': specs_id1, 'name': 'Specs1', 'consumer': 'both', 'specs': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}} expected2 = { 'id': specs_id2, 'name': 'Specs2', 'consumer': 'both', 'specs': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}} res = qos_specs.get_all_specs(self.ctxt) self.assertEqual(len(res), 2) self.assertIn(expected1, res) self.assertIn(expected2, res) def test_get_qos_specs(self): one_time_value = str(int(time.time())) input = {'key1': one_time_value, 'key2': 'value2', 'key3': 'value3', 'consumer': 'both'} id = self._create_qos_specs('Specs1', input) specs = qos_specs.get_qos_specs(self.ctxt, id) self.assertEqual(specs['specs']['key1'], one_time_value) self.assertRaises(exception.InvalidQoSSpecs, qos_specs.get_qos_specs, self.ctxt, None) def test_get_qos_specs_by_name(self): one_time_value = str(int(time.time())) input = {'key1': one_time_value, 'key2': 'value2', 'key3': 'value3', 'consumer': 'back-end'} id = self._create_qos_specs(one_time_value, input) specs = qos_specs.get_qos_specs_by_name(self.ctxt, one_time_value) self.assertEqual(specs['specs']['key1'], one_time_value) self.assertRaises(exception.InvalidQoSSpecs, qos_specs.get_qos_specs_by_name, self.ctxt, None) cinder-2014.1.5/cinder/tests/test_backup_ceph.py0000664000567000056700000012252712540642606022651 0ustar jenkinsjenkins00000000000000# Copyright 2013 Canonical Ltd. # All Rights Reserved. # # 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. """ Tests for Ceph backup service.""" import hashlib import mock import os import six import tempfile import uuid from cinder.backup import driver from cinder.backup.drivers import ceph from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import test from cinder.volume.drivers import rbd as rbddriver LOG = logging.getLogger(__name__) # This is used to collect raised exceptions so that tests may check what was # raised. # NOTE: this must be initialised in test setUp(). RAISED_EXCEPTIONS = [] class MockException(Exception): def __init__(self, *args, **kwargs): RAISED_EXCEPTIONS.append(self.__class__) class MockImageNotFoundException(MockException): """Used as mock for rbd.ImageNotFound.""" class MockImageBusyException(MockException): """Used as mock for rbd.ImageBusy.""" class MockObjectNotFoundException(MockException): """Used as mock for rados.MockObjectNotFoundException.""" def common_mocks(f): """Decorator to set mocks common to all tests. The point of doing these mocks here is so that we don't accidentally set mocks that can't/dont't get unset. """ def _common_inner_inner1(inst, *args, **kwargs): # NOTE(dosaboy): mock Popen to, by default, raise Exception in order to # ensure that any test ending up in a subprocess fails # if not properly mocked. @mock.patch('subprocess.Popen', spec=True) # NOTE(dosaboy): mock out eventlet.sleep() so that it does nothing. @mock.patch('eventlet.sleep', spec=True) @mock.patch('time.time', spec=True) # NOTE(dosaboy): set spec to empty object so that hasattr calls return # False by default. @mock.patch('cinder.backup.drivers.ceph.rbd', spec=object) @mock.patch('cinder.backup.drivers.ceph.rados', spec=object) def _common_inner_inner2(mock_rados, mock_rbd, mock_time, mock_sleep, mock_popen): mock_time.side_effect = inst.time_inc mock_popen.side_effect = Exception inst.mock_rados = mock_rados inst.mock_rbd = mock_rbd inst.mock_rados.Rados = mock.Mock inst.mock_rados.Rados.ioctx = mock.Mock() inst.mock_rbd.RBD = mock.Mock inst.mock_rbd.Image = mock.Mock inst.mock_rbd.Image.close = mock.Mock() inst.mock_rbd.ImageBusy = MockImageBusyException inst.mock_rbd.ImageNotFound = MockImageNotFoundException inst.service.rbd = inst.mock_rbd inst.service.rados = inst.mock_rados return f(inst, *args, **kwargs) return _common_inner_inner2() return _common_inner_inner1 class BackupCephTestCase(test.TestCase): """Test case for ceph backup driver.""" def _create_volume_db_entry(self, id, size): vol = {'id': id, 'size': size, 'status': 'available'} return db.volume_create(self.ctxt, vol)['id'] def _create_backup_db_entry(self, backupid, volid, size): backup = {'id': backupid, 'size': size, 'volume_id': volid} return db.backup_create(self.ctxt, backup)['id'] def time_inc(self): self.counter += 1 return self.counter def _get_wrapped_rbd_io(self, rbd_image): rbd_meta = rbddriver.RBDImageMetadata(rbd_image, 'pool_foo', 'user_foo', 'conf_foo') return rbddriver.RBDImageIOWrapper(rbd_meta) def _setup_mock_popen(self, mock_popen, retval=None, p1hook=None, p2hook=None): class MockPopen(object): hooks = [p2hook, p1hook] def __init__(mock_inst, cmd, *args, **kwargs): self.callstack.append('popen_init') mock_inst.stdout = mock.Mock() mock_inst.stdout.close = mock.Mock() mock_inst.stdout.close.side_effect = \ lambda *args: self.callstack.append('stdout_close') mock_inst.returncode = 0 hook = mock_inst.__class__.hooks.pop() if hook is not None: hook() def communicate(mock_inst): self.callstack.append('communicate') return retval mock_popen.side_effect = MockPopen def setUp(self): global RAISED_EXCEPTIONS RAISED_EXCEPTIONS = [] super(BackupCephTestCase, self).setUp() self.ctxt = context.get_admin_context() # Create volume. self.volume_size = 1 self.volume_id = str(uuid.uuid4()) self._create_volume_db_entry(self.volume_id, self.volume_size) self.volume = db.volume_get(self.ctxt, self.volume_id) # Create backup of volume. self.backup_id = str(uuid.uuid4()) self._create_backup_db_entry(self.backup_id, self.volume_id, self.volume_size) self.backup = db.backup_get(self.ctxt, self.backup_id) # Create alternate volume. self.alt_volume_id = str(uuid.uuid4()) self._create_volume_db_entry(self.alt_volume_id, self.volume_size) self.alt_volume = db.volume_get(self.ctxt, self.alt_volume_id) self.chunk_size = 1024 self.num_chunks = 128 self.data_length = self.num_chunks * self.chunk_size self.checksum = hashlib.sha256() # Create a file with some data in it. self.volume_file = tempfile.NamedTemporaryFile() for i in xrange(0, self.num_chunks): data = os.urandom(self.chunk_size) self.checksum.update(data) self.volume_file.write(data) self.volume_file.seek(0) # Always trigger an exception if a command is executed since it should # always be dealt with gracefully. At time of writing on rbd # export/import-diff is executed and if they fail we expect to find # alternative means of backing up. mock_exec = mock.Mock() mock_exec.side_effect = processutils.ProcessExecutionError self.service = ceph.CephBackupDriver(self.ctxt, execute=mock_exec) # Ensure that time.time() always returns more than the last time it was # called to avoid div by zero errors. self.counter = float(0) self.callstack = [] def tearDown(self): self.volume_file.close() super(BackupCephTestCase, self).tearDown() @common_mocks def test_get_rbd_support(self): self.assertFalse(hasattr(self.service.rbd, 'RBD_FEATURE_LAYERING')) self.assertFalse(hasattr(self.service.rbd, 'RBD_FEATURE_STRIPINGV2')) oldformat, features = self.service._get_rbd_support() self.assertTrue(oldformat) self.assertEqual(features, 0) self.service.rbd.RBD_FEATURE_LAYERING = 1 oldformat, features = self.service._get_rbd_support() self.assertFalse(oldformat) self.assertEqual(features, 1) self.service.rbd.RBD_FEATURE_STRIPINGV2 = 2 oldformat, features = self.service._get_rbd_support() self.assertFalse(oldformat) self.assertEqual(features, 1 | 2) @common_mocks def test_get_most_recent_snap(self): last = 'backup.%s.snap.9824923.1212' % (uuid.uuid4()) self.mock_rbd.Image.list_snaps = mock.Mock() self.mock_rbd.Image.list_snaps.return_value = \ [{'name': 'backup.%s.snap.6423868.2342' % (uuid.uuid4())}, {'name': 'backup.%s.snap.1321319.3235' % (uuid.uuid4())}, {'name': last}, {'name': 'backup.%s.snap.3824923.1412' % (uuid.uuid4())}] snap = self.service._get_most_recent_snap(self.service.rbd.Image()) self.assertEqual(last, snap) @common_mocks def test_get_backup_snap_name(self): snap_name = 'backup.%s.snap.3824923.1412' % (uuid.uuid4()) def get_backup_snaps(inst, *args): return [{'name': 'backup.%s.snap.6423868.2342' % (uuid.uuid4()), 'backup_id': str(uuid.uuid4())}, {'name': snap_name, 'backup_id': self.backup_id}] with mock.patch.object(self.service, 'get_backup_snaps'): name = self.service._get_backup_snap_name(self.service.rbd.Image(), 'base_foo', self.backup_id) self.assertIsNone(name) with mock.patch.object(self.service, 'get_backup_snaps') as \ mock_get_backup_snaps: mock_get_backup_snaps.side_effect = get_backup_snaps name = self.service._get_backup_snap_name(self.service.rbd.Image(), 'base_foo', self.backup_id) self.assertEqual(name, snap_name) self.assertTrue(mock_get_backup_snaps.called) @common_mocks def test_get_backup_snaps(self): self.mock_rbd.Image.list_snaps = mock.Mock() self.mock_rbd.Image.list_snaps.return_value = \ [{'name': 'backup.%s.snap.6423868.2342' % (uuid.uuid4())}, {'name': 'backup.%s.wambam.6423868.2342' % (uuid.uuid4())}, {'name': 'backup.%s.snap.1321319.3235' % (uuid.uuid4())}, {'name': 'bbbackup.%s.snap.1321319.3235' % (uuid.uuid4())}, {'name': 'backup.%s.snap.3824923.1412' % (uuid.uuid4())}] snaps = self.service.get_backup_snaps(self.service.rbd.Image()) self.assertEqual(len(snaps), 3) @common_mocks def test_transfer_data_from_rbd_to_file(self): self.mock_rbd.Image.read = mock.Mock() self.mock_rbd.Image.read.return_value = \ self.volume_file.read(self.data_length) with tempfile.NamedTemporaryFile() as test_file: self.volume_file.seek(0) rbd_io = self._get_wrapped_rbd_io(self.service.rbd.Image()) self.service._transfer_data(rbd_io, 'src_foo', test_file, 'dest_foo', self.data_length) checksum = hashlib.sha256() test_file.seek(0) for c in xrange(0, self.num_chunks): checksum.update(test_file.read(self.chunk_size)) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) @common_mocks def test_transfer_data_from_rbd_to_rbd(self): def mock_write_data(data, offset): checksum.update(data) test_file.write(data) self.mock_rbd.Image.read = mock.Mock() self.mock_rbd.Image.read.return_value = \ self.volume_file.read(self.data_length) self.mock_rbd.Image.size = mock.Mock() self.mock_rbd.Image.size.return_value = \ self.chunk_size * self.num_chunks self.mock_rbd.Image.write = mock.Mock() self.mock_rbd.Image.write.side_effect = mock_write_data with tempfile.NamedTemporaryFile() as test_file: self.volume_file.seek(0) checksum = hashlib.sha256() rbd1 = self.service.rbd.Image() rbd2 = self.service.rbd.Image() src_rbd_io = self._get_wrapped_rbd_io(rbd1) dest_rbd_io = self._get_wrapped_rbd_io(rbd2) self.service._transfer_data(src_rbd_io, 'src_foo', dest_rbd_io, 'dest_foo', self.data_length) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) @common_mocks def test_transfer_data_from_file_to_rbd(self): def mock_write_data(data, offset): checksum.update(data) test_file.write(data) self.mock_rbd.Image.write = mock.Mock() self.mock_rbd.Image.write.side_effect = mock_write_data with tempfile.NamedTemporaryFile() as test_file: self.volume_file.seek(0) checksum = hashlib.sha256() rbd_io = self._get_wrapped_rbd_io(self.service.rbd.Image()) self.service._transfer_data(self.volume_file, 'src_foo', rbd_io, 'dest_foo', self.data_length) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) @common_mocks def test_transfer_data_from_file_to_file(self): with tempfile.NamedTemporaryFile() as test_file: self.volume_file.seek(0) checksum = hashlib.sha256() self.service._transfer_data(self.volume_file, 'src_foo', test_file, 'dest_foo', self.data_length) checksum = hashlib.sha256() test_file.seek(0) for c in xrange(0, self.num_chunks): checksum.update(test_file.read(self.chunk_size)) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) @common_mocks def test_backup_volume_from_file(self): checksum = hashlib.sha256() def mock_write_data(data, offset): checksum.update(data) test_file.write(data) self.service.rbd.Image.write = mock.Mock() self.service.rbd.Image.write.side_effect = mock_write_data with mock.patch.object(self.service, '_backup_metadata'): with mock.patch.object(self.service, '_discard_bytes'): with tempfile.NamedTemporaryFile() as test_file: self.service.backup(self.backup, self.volume_file) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) self.assertTrue(self.service.rbd.Image.write.called) @common_mocks def test_get_backup_base_name(self): name = self.service._get_backup_base_name(self.volume_id, diff_format=True) self.assertEqual(name, "volume-%s.backup.base" % (self.volume_id)) self.assertRaises(exception.InvalidParameterValue, self.service._get_backup_base_name, self.volume_id) name = self.service._get_backup_base_name(self.volume_id, '1234') self.assertEqual(name, "volume-%s.backup.%s" % (self.volume_id, '1234')) @common_mocks @mock.patch('fcntl.fcntl', spec=True) @mock.patch('subprocess.Popen', spec=True) def test_backup_volume_from_rbd(self, mock_popen, mock_fnctl): backup_name = self.service._get_backup_base_name(self.backup_id, diff_format=True) def mock_write_data(): self.volume_file.seek(0) data = self.volume_file.read(self.data_length) self.callstack.append('write') checksum.update(data) test_file.write(data) def mock_read_data(): self.callstack.append('read') return self.volume_file.read(self.data_length) self._setup_mock_popen(mock_popen, ['out', 'err'], p1hook=mock_read_data, p2hook=mock_write_data) self.mock_rbd.RBD.list = mock.Mock() self.mock_rbd.RBD.list.return_value = [backup_name] with mock.patch.object(self.service, '_backup_metadata'): with mock.patch.object(self.service, 'get_backup_snaps') as \ mock_get_backup_snaps: with mock.patch.object(self.service, '_full_backup') as \ mock_full_backup: with mock.patch.object(self.service, '_try_delete_base_image'): with tempfile.NamedTemporaryFile() as test_file: checksum = hashlib.sha256() image = self.service.rbd.Image() meta = rbddriver.RBDImageMetadata(image, 'pool_foo', 'user_foo', 'conf_foo') rbdio = rbddriver.RBDImageIOWrapper(meta) self.service.backup(self.backup, rbdio) self.assertEqual(self.callstack, ['popen_init', 'read', 'popen_init', 'write', 'stdout_close', 'communicate']) self.assertFalse(mock_full_backup.called) self.assertTrue(mock_get_backup_snaps.called) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) @common_mocks def test_backup_vol_length_0(self): volume_id = str(uuid.uuid4()) self._create_volume_db_entry(volume_id, 0) volume = db.volume_get(self.ctxt, volume_id) backup_id = str(uuid.uuid4()) self._create_backup_db_entry(backup_id, volume_id, 1) backup = db.backup_get(self.ctxt, backup_id) self.assertRaises(exception.InvalidParameterValue, self.service.backup, backup, self.volume_file) @common_mocks def test_restore(self): backup_name = self.service._get_backup_base_name(self.backup_id, diff_format=True) self.mock_rbd.RBD.list = mock.Mock() self.mock_rbd.RBD.list.return_value = [backup_name] def mock_read_data(offset, length): return self.volume_file.read(self.data_length) self.mock_rbd.Image.read = mock.Mock() self.mock_rbd.Image.read.side_effect = mock_read_data self.mock_rbd.Image.size = mock.Mock() self.mock_rbd.Image.size.return_value = \ self.chunk_size * self.num_chunks with mock.patch.object(self.service, '_restore_metadata') as \ mock_restore_metadata: with mock.patch.object(self.service, '_discard_bytes') as \ mock_discard_bytes: with tempfile.NamedTemporaryFile() as test_file: self.volume_file.seek(0) self.service.restore(self.backup, self.volume_id, test_file) checksum = hashlib.sha256() test_file.seek(0) for c in xrange(0, self.num_chunks): checksum.update(test_file.read(self.chunk_size)) # Ensure the files are equal self.assertEqual(checksum.digest(), self.checksum.digest()) self.assertTrue(mock_restore_metadata.called) self.assertTrue(mock_discard_bytes.called) self.assertTrue(mock_discard_bytes.called) self.assertTrue(self.service.rbd.Image.read.called) @common_mocks def test_discard_bytes(self): self.mock_rbd.Image.discard = mock.Mock() wrapped_rbd = self._get_wrapped_rbd_io(self.mock_rbd.Image()) self.service._discard_bytes(wrapped_rbd, 0, 0) self.assertEqual(self.mock_rbd.Image.discard.call_count, 0) self.service._discard_bytes(wrapped_rbd, 0, 1234) self.assertEqual(self.mock_rbd.Image.discard.call_count, 1) self.mock_rbd.Image.discard.reset_mock() self.mock_rbd.Image.write = mock.Mock() self.mock_rbd.Image.flush = mock.Mock() # Test discard with no remainder with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = False self.service._discard_bytes(wrapped_rbd, 0, self.service.chunk_size * 2) self.assertEqual(self.mock_rbd.Image.write.call_count, 2) self.assertEqual(self.mock_rbd.Image.flush.call_count, 2) self.assertFalse(self.mock_rbd.Image.discard.called) self.mock_rbd.Image.write.reset_mock() self.mock_rbd.Image.flush.reset_mock() self.mock_rbd.Image.discard.reset_mock() # Now test with a remainder. with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = False self.service._discard_bytes(wrapped_rbd, 0, (self.service.chunk_size * 2) + 1) self.assertEqual(self.mock_rbd.Image.write.call_count, 3) self.assertEqual(self.mock_rbd.Image.flush.call_count, 3) self.assertFalse(self.mock_rbd.Image.discard.called) @common_mocks def test_delete_backup_snapshot(self): snap_name = 'backup.%s.snap.3824923.1412' % (uuid.uuid4()) base_name = self.service._get_backup_base_name(self.volume_id, diff_format=True) self.mock_rbd.RBD.remove_snap = mock.Mock() with mock.patch.object(self.service, '_get_backup_snap_name') as \ mock_get_backup_snap_name: mock_get_backup_snap_name.return_value = snap_name with mock.patch.object(self.service, 'get_backup_snaps') as \ mock_get_backup_snaps: mock_get_backup_snaps.return_value = None rem = self.service._delete_backup_snapshot(self.mock_rados, base_name, self.backup_id) self.assertTrue(mock_get_backup_snap_name.called) self.assertTrue(mock_get_backup_snaps.called) self.assertEqual(rem, (snap_name, 0)) @common_mocks @mock.patch('cinder.backup.drivers.ceph.VolumeMetadataBackup', spec=True) def test_try_delete_base_image_diff_format(self, mock_meta_backup): backup_name = self.service._get_backup_base_name(self.volume_id, diff_format=True) self.mock_rbd.RBD.list = mock.Mock() self.mock_rbd.RBD.list.return_value = [backup_name] self.mock_rbd.RBD.remove = mock.Mock() with mock.patch.object(self.service, '_delete_backup_snapshot') as \ mock_del_backup_snap: snap_name = self.service._get_new_snap_name(self.backup_id) mock_del_backup_snap.return_value = (snap_name, 0) self.service.delete(self.backup) self.assertTrue(mock_del_backup_snap.called) #self.assertFalse(self.mock_rbd.ImageNotFound.called) self.assertTrue(self.mock_rbd.RBD.list.called) self.assertTrue(self.mock_rbd.RBD.remove.called) @common_mocks @mock.patch('cinder.backup.drivers.ceph.VolumeMetadataBackup', spec=True) def test_try_delete_base_image(self, mock_meta_backup): backup_name = self.service._get_backup_base_name(self.volume_id, self.backup_id) self.mock_rbd.RBD.list = mock.Mock() self.mock_rbd.RBD.list.return_value = [backup_name] self.mock_rbd.RBD.remove = mock.Mock() with mock.patch.object(self.service, 'get_backup_snaps'): self.service.delete(self.backup) self.assertTrue(self.mock_rbd.RBD.remove.called) @common_mocks def test_try_delete_base_image_busy(self): """This should induce retries then raise rbd.ImageBusy.""" backup_name = self.service._get_backup_base_name(self.volume_id, self.backup_id) self.mock_rbd.RBD.list = mock.Mock() self.mock_rbd.RBD.list.return_value = [backup_name] self.mock_rbd.RBD.remove = mock.Mock() self.mock_rbd.RBD.remove.side_effect = self.mock_rbd.ImageBusy with mock.patch.object(self.service, 'get_backup_snaps') as \ mock_get_backup_snaps: self.assertRaises(self.mock_rbd.ImageBusy, self.service._try_delete_base_image, self.backup['id'], self.backup['volume_id']) self.assertTrue(mock_get_backup_snaps.called) self.assertTrue(self.mock_rbd.RBD.list.called) self.assertTrue(self.mock_rbd.RBD.remove.called) self.assertTrue(MockImageBusyException in RAISED_EXCEPTIONS) @common_mocks @mock.patch('cinder.backup.drivers.ceph.VolumeMetadataBackup', spec=True) def test_delete(self, mock_meta_backup): with mock.patch.object(self.service, '_try_delete_base_image'): self.service.delete(self.backup) self.assertEqual(RAISED_EXCEPTIONS, []) @common_mocks @mock.patch('cinder.backup.drivers.ceph.VolumeMetadataBackup', spec=True) def test_delete_image_not_found(self, mock_meta_backup): with mock.patch.object(self.service, '_try_delete_base_image') as \ mock_del_base: mock_del_base.side_effect = self.mock_rbd.ImageNotFound # ImageNotFound exception is caught so that db entry can be cleared self.service.delete(self.backup) self.assertEqual(RAISED_EXCEPTIONS, [MockImageNotFoundException]) @common_mocks def test_diff_restore_allowed(self): not_allowed = (False, None) backup_base = 'backup.base' restore_point = 'backup.snap.1' rbd_io = self._get_wrapped_rbd_io(self.service.rbd.Image()) args_vols_different = [backup_base, self.backup, self.alt_volume, rbd_io, self.mock_rados] args_vols_same = [backup_base, self.backup, self.volume, rbd_io, self.mock_rados] # 1. destination volume is not an rbd with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = False resp = self.service._diff_restore_allowed(*args_vols_different) self.assertEqual(resp, not_allowed) self.assertTrue(mock_file_is_rbd.called) # 1. destination volume is an rbd # 2. backup base is not diff-format with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = True with mock.patch.object(self.service, '_rbd_image_exists') as \ mock_rbd_image_exists: mock_rbd_image_exists.return_value = (False, backup_base) resp = self.service._diff_restore_allowed(*args_vols_different) self.assertEqual(resp, not_allowed) self.assertTrue(mock_file_is_rbd.called) self.assertTrue(mock_rbd_image_exists.called) # 1. destination volume is an rbd # 2. backup base is diff-format # 3. restore point does not exist # 4. source and destination volumes are different with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = True with mock.patch.object(self.service, '_rbd_image_exists') as \ mock_rbd_image_exists: mock_rbd_image_exists.return_value = (True, backup_base) with mock.patch.object(self.service, '_get_restore_point') as \ mock_get_restore_point: mock_get_restore_point.return_value = None args = args_vols_different resp = self.service._diff_restore_allowed(*args) self.assertEqual(resp, not_allowed) self.assertTrue(mock_file_is_rbd.called) self.assertTrue(mock_rbd_image_exists.called) self.assertTrue(mock_get_restore_point.called) # 1. destination volume is an rbd # 2. backup base is diff-format # 3. restore point does not exist # 4. source and destination volumes are the same with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = True with mock.patch.object(self.service, '_rbd_image_exists') as \ mock_rbd_image_exists: mock_rbd_image_exists.return_value = (True, backup_base) with mock.patch.object(self.service, '_get_restore_point') as \ mock_get_restore_point: mock_get_restore_point.return_value = None resp = self.service._diff_restore_allowed(*args_vols_same) self.assertEqual(resp, not_allowed) self.assertTrue(mock_file_is_rbd.called) self.assertTrue(mock_rbd_image_exists.called) self.assertTrue(mock_get_restore_point.called) # 1. destination volume is an rbd # 2. backup base is diff-format # 3. restore point exists # 4. source and destination volumes are different # 5. destination volume has data on it - full copy is mandated with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = True with mock.patch.object(self.service, '_rbd_image_exists') as \ mock_rbd_image_exists: mock_rbd_image_exists.return_value = (True, backup_base) with mock.patch.object(self.service, '_get_restore_point') as \ mock_get_restore_point: mock_get_restore_point.return_value = restore_point with mock.patch.object(self.service, '_rbd_has_extents') \ as mock_rbd_has_extents: mock_rbd_has_extents.return_value = True args = args_vols_different resp = self.service._diff_restore_allowed(*args) self.assertEqual(resp, (False, restore_point)) self.assertTrue(mock_file_is_rbd.called) self.assertTrue(mock_rbd_image_exists.called) self.assertTrue(mock_get_restore_point.called) self.assertTrue(mock_rbd_has_extents.called) # 1. destination volume is an rbd # 2. backup base is diff-format # 3. restore point exists # 4. source and destination volumes are different # 5. destination volume no data on it with mock.patch.object(self.service, '_file_is_rbd') as \ mock_file_is_rbd: mock_file_is_rbd.return_value = True with mock.patch.object(self.service, '_rbd_image_exists') as \ mock_rbd_image_exists: mock_rbd_image_exists.return_value = (True, backup_base) with mock.patch.object(self.service, '_get_restore_point') as \ mock_restore_point: mock_restore_point.return_value = restore_point with mock.patch.object(self.service, '_rbd_has_extents') \ as mock_rbd_has_extents: mock_rbd_has_extents.return_value = False args = args_vols_different resp = self.service._diff_restore_allowed(*args) self.assertEqual(resp, (True, restore_point)) self.assertTrue(mock_restore_point.called) self.assertTrue(mock_rbd_has_extents.called) self.assertTrue(mock_rbd_image_exists.called) self.assertTrue(mock_file_is_rbd.called) @common_mocks @mock.patch('fcntl.fcntl', spec=True) @mock.patch('subprocess.Popen', spec=True) def test_piped_execute(self, mock_popen, mock_fcntl): mock_fcntl.return_value = 0 self._setup_mock_popen(mock_popen, ['out', 'err']) self.service._piped_execute(['foo'], ['bar']) self.assertEqual(self.callstack, ['popen_init', 'popen_init', 'stdout_close', 'communicate']) @common_mocks def test_restore_metdata(self): version = 1 def mock_read(*args): base_tag = driver.BackupMetadataAPI.TYPE_TAG_VOL_BASE_META glance_tag = driver.BackupMetadataAPI.TYPE_TAG_VOL_GLANCE_META return jsonutils.dumps({base_tag: {'image_name': 'image.base'}, glance_tag: {'image_name': 'image.glance'}, 'version': version}) self.mock_rados.Object = mock.Mock self.mock_rados.Object.read = mock.Mock() self.mock_rados.Object.read.side_effect = mock_read self.mock_rados.Object.stat = mock.Mock() self.service._restore_metadata(self.backup, self.volume_id) self.assertTrue(self.mock_rados.Object.stat.called) self.assertTrue(self.mock_rados.Object.read.called) version = 2 try: self.service._restore_metadata(self.backup, self.volume_id) except exception.BackupOperationError as exc: msg = _("Metadata restore failed due to incompatible version") self.assertEqual(six.text_type(exc), msg) else: # Force a test failure self.assertFalse(True) @common_mocks @mock.patch('cinder.backup.drivers.ceph.VolumeMetadataBackup', spec=True) def test_backup_metata_already_exists(self, mock_meta_backup): def mock_set(json_meta): msg = (_("Metadata backup object '%s' already exists") % ("backup.%s.meta" % (self.backup_id))) raise exception.VolumeMetadataBackupExists(msg) mock_meta_backup.return_value.set = mock.Mock() mock_meta_backup.return_value.set.side_effect = mock_set with mock.patch.object(self.service, 'get_metadata') as \ mock_get_metadata: mock_get_metadata.return_value = "some.json.metadata" try: self.service._backup_metadata(self.backup) except exception.BackupOperationError as e: msg = (_("Failed to backup volume metadata - Metadata backup " "object 'backup.%s.meta' already exists") % (self.backup_id)) self.assertEqual(six.text_type(e), msg) else: # Make the test fail self.assertFalse(True) self.assertFalse(mock_meta_backup.set.called) @common_mocks def test_backup_metata_error(self): """Ensure that delete() is called if the metadata backup fails. Also ensure that the exception is propagated to the caller. """ with mock.patch.object(self.service, '_backup_metadata') as \ mock_backup_metadata: mock_backup_metadata.side_effect = exception.BackupOperationError with mock.patch.object(self.service, '_get_volume_size_gb'): with mock.patch.object(self.service, '_file_is_rbd', return_value=False): with mock.patch.object(self.service, '_full_backup'): with mock.patch.object(self.service, 'delete') as \ mock_delete: self.assertRaises(exception.BackupOperationError, self.service.backup, self.backup, mock.Mock(), backup_metadata=True) self.assertTrue(mock_delete.called) @common_mocks def test_restore_invalid_metadata_version(self): def mock_read(*args): base_tag = driver.BackupMetadataAPI.TYPE_TAG_VOL_BASE_META glance_tag = driver.BackupMetadataAPI.TYPE_TAG_VOL_GLANCE_META return jsonutils.dumps({base_tag: {'image_name': 'image.base'}, glance_tag: {'image_name': 'image.glance'}, 'version': 2}) self.mock_rados.Object = mock.Mock self.mock_rados.Object.read = mock.Mock() self.mock_rados.Object.read.side_effect = mock_read with mock.patch.object(ceph.VolumeMetadataBackup, '_exists') as \ mock_exists: mock_exists.return_value = True self.assertRaises(exception.BackupOperationError, self.service._restore_metadata, self.backup, self.volume_id) self.assertTrue(mock_exists.called) self.assertTrue(self.mock_rados.Object.read.called) def common_meta_backup_mocks(f): """Decorator to set mocks common to all metadata backup tests. The point of doing these mocks here is so that we don't accidentally set mocks that can't/dont't get unset. """ def _common_inner_inner1(inst, *args, **kwargs): @mock.patch('cinder.backup.drivers.ceph.rbd', spec=object) @mock.patch('cinder.backup.drivers.ceph.rados', spec=object) def _common_inner_inner2(mock_rados, mock_rbd): inst.mock_rados = mock_rados inst.mock_rbd = mock_rbd inst.mock_rados.Object = mock.Mock inst.mock_rados.ObjectNotFound = MockObjectNotFoundException return f(inst, *args, **kwargs) return _common_inner_inner2() return _common_inner_inner1 class VolumeMetadataBackupTestCase(test.TestCase): def setUp(self): global RAISED_EXCEPTIONS RAISED_EXCEPTIONS = [] super(VolumeMetadataBackupTestCase, self).setUp() self.backup_id = str(uuid.uuid4()) self.mb = ceph.VolumeMetadataBackup(mock.Mock(), self.backup_id) def tearDown(self): super(VolumeMetadataBackupTestCase, self).tearDown() @common_meta_backup_mocks def test_name(self): self.assertEqual(self.mb.name, 'backup.%s.meta' % (self.backup_id)) @common_meta_backup_mocks def test_exists(self): # True with mock.patch.object(self.mock_rados.Object, 'stat') as mock_stat: self.assertTrue(self.mb.exists) self.assertTrue(mock_stat.called) # False with mock.patch.object(self.mock_rados.Object, 'stat') as mock_stat: mock_stat.side_effect = self.mock_rados.ObjectNotFound self.assertFalse(self.mb.exists) self.assertTrue(mock_stat.called) self.assertEqual(RAISED_EXCEPTIONS, [MockObjectNotFoundException]) @common_meta_backup_mocks def test_set(self): obj_data = [] called = [] def mock_read(*args): called.append('read') self.assertTrue(len(obj_data) == 1) return obj_data[0] def _mock_write(data): obj_data.append(data) called.append('write') self.mb.get = mock.Mock() self.mb.get.side_effect = mock_read with mock.patch.object(ceph.VolumeMetadataBackup, 'set') as mock_write: mock_write.side_effect = _mock_write self.mb.set({'foo': 'bar'}) self.assertEqual(self.mb.get(), {'foo': 'bar'}) self.assertTrue(self.mb.get.called) self.mb._exists = mock.Mock() self.mb._exists.return_value = True # use the unmocked set() method. self.assertRaises(exception.VolumeMetadataBackupExists, self.mb.set, {'doo': 'dah'}) # check the meta obj state has not changed. self.assertEqual(self.mb.get(), {'foo': 'bar'}) self.assertEqual(called, ['write', 'read', 'read']) @common_meta_backup_mocks def test_get(self): with mock.patch.object(self.mock_rados.Object, 'stat') as mock_stat: mock_stat.side_effect = self.mock_rados.ObjectNotFound with mock.patch.object(self.mock_rados.Object, 'read') as \ mock_read: mock_read.return_value = 'meta' self.assertIsNone(self.mb.get()) mock_stat.side_effect = None self.assertEqual(self.mb.get(), 'meta') @common_meta_backup_mocks def remove_if_exists(self): with mock.patch.object(self.mock_rados.Object, 'remove') as \ mock_remove: mock_remove.side_effect = self.mock_rados.ObjectNotFound self.mb.remove_if_exists() self.assertEqual(RAISED_EXCEPTIONS, [MockObjectNotFoundException]) self.mock_rados.Object.remove.side_effect = None self.mb.remove_if_exists() self.assertEqual(RAISED_EXCEPTIONS, []) cinder-2014.1.5/cinder/tests/fake_driver.py0000664000567000056700000001141712540642606021622 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from cinder.openstack.common import log as logging from cinder.tests.brick.fake_lvm import FakeBrickLVM from cinder.volume import driver from cinder.volume.drivers import lvm LOG = logging.getLogger(__name__) class FakeISCSIDriver(lvm.LVMISCSIDriver): """Logs calls instead of executing.""" def __init__(self, *args, **kwargs): super(FakeISCSIDriver, self).__init__(execute=self.fake_execute, *args, **kwargs) self.vg = FakeBrickLVM('cinder-volumes', False, None, 'default', self.fake_execute) def check_for_setup_error(self): """No setup necessary in fake mode.""" pass def initialize_connection(self, volume, connector): volume_metadata = {} for metadata in volume['volume_admin_metadata']: volume_metadata[metadata['key']] = metadata['value'] access_mode = volume_metadata.get('attached_mode') if access_mode is None: access_mode = ('ro' if volume_metadata.get('readonly') == 'True' else 'rw') return { 'driver_volume_type': 'iscsi', 'data': {'access_mode': access_mode} } def terminate_connection(self, volume, connector, **kwargs): pass @staticmethod def fake_execute(cmd, *_args, **_kwargs): """Execute that simply logs the command.""" LOG.debug(_("FAKE ISCSI: %s"), cmd) return (None, None) class FakeISERDriver(FakeISCSIDriver): """Logs calls instead of executing.""" def __init__(self, *args, **kwargs): super(FakeISERDriver, self).__init__(execute=self.fake_execute, *args, **kwargs) def initialize_connection(self, volume, connector): return { 'driver_volume_type': 'iser', 'data': {} } @staticmethod def fake_execute(cmd, *_args, **_kwargs): """Execute that simply logs the command.""" LOG.debug(_("FAKE ISER: %s"), cmd) return (None, None) class LoggingVolumeDriver(driver.VolumeDriver): """Logs and records calls, for unit tests.""" def check_for_setup_error(self): pass def create_volume(self, volume): self.log_action('create_volume', volume) def delete_volume(self, volume): self.clear_volume(volume) self.log_action('delete_volume', volume) def clear_volume(self, volume): self.log_action('clear_volume', volume) def local_path(self, volume): LOG.error(_("local_path not implemented")) raise NotImplementedError() def ensure_export(self, context, volume): self.log_action('ensure_export', volume) def create_export(self, context, volume): self.log_action('create_export', volume) def remove_export(self, context, volume): self.log_action('remove_export', volume) def initialize_connection(self, volume, connector): self.log_action('initialize_connection', volume) def terminate_connection(self, volume, connector): self.log_action('terminate_connection', volume) _LOGS = [] @staticmethod def clear_logs(): LoggingVolumeDriver._LOGS = [] @staticmethod def log_action(action, parameters): """Logs the command.""" LOG.debug(_("LoggingVolumeDriver: %s") % (action)) log_dictionary = {} if parameters: log_dictionary = dict(parameters) log_dictionary['action'] = action LOG.debug(_("LoggingVolumeDriver: %s") % (log_dictionary)) LoggingVolumeDriver._LOGS.append(log_dictionary) @staticmethod def all_logs(): return LoggingVolumeDriver._LOGS @staticmethod def logs_like(action, **kwargs): matches = [] for entry in LoggingVolumeDriver._LOGS: if entry['action'] != action: continue match = True for k, v in kwargs.iteritems(): if entry.get(k) != v: match = False break if match: matches.append(entry) return matches cinder-2014.1.5/cinder/tests/test_exception.py0000664000567000056700000000564312540642606022402 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from cinder import exception from cinder import test class FakeNotifier(object): """Acts like the cinder.openstack.common.notifier.api module.""" ERROR = 88 def __init__(self): self.provided_publisher = None self.provided_event = None self.provided_priority = None self.provided_payload = None def notify(self, context, publisher, event, priority, payload): self.provided_publisher = publisher self.provided_event = event self.provided_priority = priority self.provided_payload = payload def good_function(): return 99 def bad_function_error(): raise exception.Error() def bad_function_exception(): raise test.TestingException() class CinderExceptionTestCase(test.TestCase): def test_default_error_msg(self): class FakeCinderException(exception.CinderException): message = "default message" exc = FakeCinderException() self.assertEqual(unicode(exc), 'default message') def test_error_msg(self): self.assertEqual(unicode(exception.CinderException('test')), 'test') def test_default_error_msg_with_kwargs(self): class FakeCinderException(exception.CinderException): message = "default message: %(code)s" exc = FakeCinderException(code=500) self.assertEqual(unicode(exc), 'default message: 500') def test_error_msg_exception_with_kwargs(self): # NOTE(dprince): disable format errors for this test self.flags(fatal_exception_format_errors=False) class FakeCinderException(exception.CinderException): message = "default message: %(misspelled_code)s" exc = FakeCinderException(code=500) self.assertEqual(unicode(exc), 'default message: %(misspelled_code)s') def test_default_error_code(self): class FakeCinderException(exception.CinderException): code = 404 exc = FakeCinderException() self.assertEqual(exc.kwargs['code'], 404) def test_error_code_from_kwarg(self): class FakeCinderException(exception.CinderException): code = 500 exc = FakeCinderException(code=404) self.assertEqual(exc.kwargs['code'], 404) cinder-2014.1.5/cinder/tests/test_block_device.py0000664000567000056700000002614012540642606023010 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Mirantis, Inc. # All Rights Reserved. # # 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. import os.path import mox from cinder import context from cinder.db.sqlalchemy import api import cinder.exception from cinder.image import image_utils import cinder.test from cinder.volume.driver import ISCSIDriver from cinder.volume.drivers.block_device import BlockDeviceDriver from cinder.volume import utils as volutils class TestBlockDeviceDriver(cinder.test.TestCase): def setUp(self): super(TestBlockDeviceDriver, self).setUp() self.configuration = mox.MockAnything() self.configuration.available_devices = ['/dev/loop1', '/dev/loop2'] self.host = 'localhost' self.configuration.iscsi_port = 3260 self.drv = BlockDeviceDriver(configuration=self.configuration, host='localhost') def test_initialize_connection(self): TEST_VOLUME1 = {'host': 'localhost1', 'provider_location': '1 2 3 /dev/loop1', } TEST_CONNECTOR = {'host': 'localhost1'} self.mox.StubOutWithMock(self.drv, 'local_path') self.drv.local_path(TEST_VOLUME1).AndReturn('/dev/loop1') self.mox.ReplayAll() data = self.drv.initialize_connection(TEST_VOLUME1, TEST_CONNECTOR) self.assertEqual(data, { 'driver_volume_type': 'local', 'data': {'device_path': '/dev/loop1'} }) def test_initialize_connection_different_hosts(self): TEST_CONNECTOR = {'host': 'localhost1'} TEST_VOLUME2 = {'host': 'localhost2', 'provider_location': '1 2 3 /dev/loop2', } self.mox.StubOutWithMock(ISCSIDriver, 'initialize_connection') ISCSIDriver.initialize_connection(TEST_VOLUME2, TEST_CONNECTOR).AndReturn('data') self.mox.ReplayAll() data = self.drv.initialize_connection(TEST_VOLUME2, TEST_CONNECTOR) self.assertEqual(data, 'data') def test_delete_not_volume_provider_location(self): TEST_VOLUME2 = {'provider_location': None} self.mox.StubOutWithMock(self.drv, 'local_path') self.drv.local_path(TEST_VOLUME2).AndReturn(None) self.mox.StubOutWithMock(volutils, 'clear_volume') self.mox.ReplayAll() self.drv.delete_volume(TEST_VOLUME2) def test_delete_volume_path_exist(self): TEST_VOLUME1 = {'provider_location': '1 2 3 /dev/loop1'} self.mox.StubOutWithMock(self.drv, 'local_path') path = self.drv.local_path(TEST_VOLUME1).AndReturn('/dev/loop1') self.mox.StubOutWithMock(os.path, 'exists') os.path.exists(path).AndReturn(True) self.mox.StubOutWithMock(volutils, 'clear_volume') self.mox.StubOutWithMock(self.drv, '_get_device_size') size = self.drv._get_device_size(path).AndReturn(1024) volutils.clear_volume(size, path, volume_clear=mox.IgnoreArg(), volume_clear_size=mox.IgnoreArg()) self.mox.ReplayAll() self.drv.delete_volume(TEST_VOLUME1) def test_delete_path_is_not_in_list_of_available_devices(self): TEST_VOLUME2 = {'provider_location': '1 2 3 /dev/loop0'} self.mox.StubOutWithMock(self.drv, 'local_path') self.drv.local_path(TEST_VOLUME2).AndReturn('/dev/loop0') self.mox.StubOutWithMock(volutils, 'clear_volume') self.mox.ReplayAll() self.drv.delete_volume(TEST_VOLUME2) def test_create_volume(self): TEST_VOLUME = {'size': 1, 'name': 'vol1'} self.mox.StubOutWithMock(self.drv, 'find_appropriate_size_device') self.drv.find_appropriate_size_device(TEST_VOLUME['size']) \ .AndReturn('dev_path') self.mox.ReplayAll() result = self.drv.create_volume(TEST_VOLUME) self.assertEqual(result, { 'provider_location': 'dev_path'}) def test_update_volume_stats(self): self.mox.StubOutWithMock(self.drv, '_devices_sizes') self.drv._devices_sizes().AndReturn({'/dev/loop1': 1024, '/dev/loop2': 1024}) self.mox.StubOutWithMock(self.drv, '_get_used_devices') self.drv._get_used_devices().AndReturn(set()) self.mox.StubOutWithMock(self.configuration, 'safe_get') self.configuration.safe_get('volume_backend_name'). \ AndReturn('BlockDeviceDriver') self.mox.ReplayAll() self.drv._update_volume_stats() self.assertEqual(self.drv._stats, {'total_capacity_gb': 2, 'free_capacity_gb': 2, 'reserved_percentage': self.configuration.reserved_percentage, 'QoS_support': False, 'vendor_name': "Open Source", 'driver_version': self.drv.VERSION, 'storage_protocol': 'unknown', 'volume_backend_name': 'BlockDeviceDriver', }) def test_create_cloned_volume(self): TEST_SRC = {'id': '1', 'size': 1, 'provider_location': '1 2 3 /dev/loop1'} TEST_VOLUME = {} self.mox.StubOutWithMock(self.drv, 'find_appropriate_size_device') dev = self.drv.find_appropriate_size_device(TEST_SRC['size']).\ AndReturn('/dev/loop2') self.mox.StubOutWithMock(volutils, 'copy_volume') self.mox.StubOutWithMock(self.drv, 'local_path') self.mox.StubOutWithMock(self.drv, '_get_device_size') self.drv.local_path(TEST_SRC).AndReturn('/dev/loop1') self.drv._get_device_size('/dev/loop2').AndReturn(1) volutils.copy_volume('/dev/loop1', dev, 2048, mox.IgnoreArg(), execute=self.drv._execute) self.mox.ReplayAll() self.assertEqual(self.drv.create_cloned_volume(TEST_VOLUME, TEST_SRC), {'provider_location': '/dev/loop2'}) def test_copy_image_to_volume(self): TEST_VOLUME = {'provider_location': '1 2 3 /dev/loop1', 'size': 1} TEST_IMAGE_SERVICE = "image_service" TEST_IMAGE_ID = "image_id" self.mox.StubOutWithMock(image_utils, 'fetch_to_raw') self.mox.StubOutWithMock(self.drv, 'local_path') self.drv.local_path(TEST_VOLUME).AndReturn('/dev/loop1') image_utils.fetch_to_raw(context, TEST_IMAGE_SERVICE, TEST_IMAGE_ID, '/dev/loop1', mox.IgnoreArg(), size=1) self.mox.ReplayAll() self.drv.copy_image_to_volume(context, TEST_VOLUME, TEST_IMAGE_SERVICE, TEST_IMAGE_ID) def test_copy_volume_to_image(self): TEST_VOLUME = {'provider_location': '1 2 3 /dev/loop1'} TEST_IMAGE_SERVICE = "image_service" TEST_IMAGE_META = "image_meta" self.mox.StubOutWithMock(image_utils, 'upload_volume') self.mox.StubOutWithMock(self.drv, 'local_path') self.drv.local_path(TEST_VOLUME).AndReturn('/dev/loop1') image_utils.upload_volume(context, TEST_IMAGE_SERVICE, TEST_IMAGE_META, '/dev/loop1') self.mox.ReplayAll() self.drv.copy_volume_to_image(context, TEST_VOLUME, TEST_IMAGE_SERVICE, TEST_IMAGE_META) def test_get_used_devices(self): TEST_VOLUME1 = {'host': 'localhost', 'provider_location': '1 2 3 /dev/loop1'} TEST_VOLUME2 = {'host': 'localhost', 'provider_location': '1 2 3 /dev/loop2'} self.mox.StubOutWithMock(api, 'volume_get_all_by_host') self.mox.StubOutWithMock(context, 'get_admin_context') context.get_admin_context() api.volume_get_all_by_host(None, self.host) \ .AndReturn([TEST_VOLUME1, TEST_VOLUME2]) self.mox.StubOutWithMock(self.drv, 'local_path') path1 = self.drv.local_path(TEST_VOLUME1).AndReturn('/dev/loop1') path2 = self.drv.local_path(TEST_VOLUME2).AndReturn('/dev/loop2') self.mox.ReplayAll() self.assertEqual(self.drv._get_used_devices(), set([path1, path2])) def test_get_device_size(self): dev_path = '/dev/loop1' self.mox.StubOutWithMock(self.drv, '_execute') out = '2048' self.drv._execute('blockdev', '--getsz', dev_path, run_as_root=True).AndReturn((out, None)) self.mox.ReplayAll() self.assertEqual(self.drv._get_device_size(dev_path), 1) def test_devices_sizes(self): self.mox.StubOutWithMock(self.drv, '_get_device_size') for dev in self.configuration.available_devices: self.drv._get_device_size(dev).AndReturn(1) self.mox.ReplayAll() self.assertEqual(self.drv._devices_sizes(), {'/dev/loop1': 1, '/dev/loop2': 1}) def test_find_appropriate_size_device_no_free_disks(self): size = 1 self.mox.StubOutWithMock(self.drv, '_devices_sizes') self.drv._devices_sizes().AndReturn({'/dev/loop1': 1024, '/dev/loop2': 1024}) self.mox.StubOutWithMock(self.drv, '_get_used_devices') self.drv._get_used_devices().AndReturn(set(['/dev/loop1', '/dev/loop2'])) self.mox.ReplayAll() self.assertRaises(cinder.exception.CinderException, self.drv.find_appropriate_size_device, size) def test_find_appropriate_size_device_not_big_enough_disk(self): size = 2 self.mox.StubOutWithMock(self.drv, '_devices_sizes') self.drv._devices_sizes().AndReturn({'/dev/loop1': 1024, '/dev/loop2': 1024}) self.mox.StubOutWithMock(self.drv, '_get_used_devices') self.drv._get_used_devices().AndReturn(set(['/dev/loop1'])) self.mox.ReplayAll() self.assertRaises(cinder.exception.CinderException, self.drv.find_appropriate_size_device, size) def test_find_appropriate_size_device(self): size = 1 self.mox.StubOutWithMock(self.drv, '_devices_sizes') self.drv._devices_sizes().AndReturn({'/dev/loop1': 2048, '/dev/loop2': 1024}) self.mox.StubOutWithMock(self.drv, '_get_used_devices') self.drv._get_used_devices().AndReturn(set()) self.mox.ReplayAll() self.assertEqual(self.drv.find_appropriate_size_device(size), '/dev/loop2') cinder-2014.1.5/cinder/tests/test_netapp.py0000664000567000056700000016266712540642606021705 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2012 NetApp, Inc. # All Rights Reserved. # # 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. """ Tests for NetApp volume driver """ import BaseHTTPServer import httplib from lxml import etree import mock import six from cinder import exception from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.netapp.api import NaApiError from cinder.volume.drivers.netapp.api import NaElement from cinder.volume.drivers.netapp.api import NaServer from cinder.volume.drivers.netapp import common from cinder.volume.drivers.netapp import iscsi from cinder.volume.drivers.netapp.options import netapp_7mode_opts from cinder.volume.drivers.netapp.options import netapp_basicauth_opts from cinder.volume.drivers.netapp.options import netapp_cluster_opts from cinder.volume.drivers.netapp.options import netapp_connection_opts from cinder.volume.drivers.netapp.options import netapp_provisioning_opts from cinder.volume.drivers.netapp.options import netapp_transport_opts from cinder.volume.drivers.netapp import ssc_utils def create_configuration(): configuration = conf.Configuration(None) configuration.append_config_values(netapp_connection_opts) configuration.append_config_values(netapp_transport_opts) configuration.append_config_values(netapp_basicauth_opts) configuration.append_config_values(netapp_cluster_opts) configuration.append_config_values(netapp_7mode_opts) configuration.append_config_values(netapp_provisioning_opts) return configuration class FakeHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): """HTTP handler that doesn't spam the log.""" def log_message(self, format, *args): pass class FakeHttplibSocket(object): """A fake socket implementation for httplib.HTTPResponse.""" def __init__(self, value): self._rbuffer = six.StringIO(value) self._wbuffer = six.StringIO('') oldclose = self._wbuffer.close def newclose(): self.result = self._wbuffer.getvalue() oldclose() self._wbuffer.close = newclose def makefile(self, mode, _other): """Returns the socket's internal buffer""" if mode == 'r' or mode == 'rb': return self._rbuffer if mode == 'w' or mode == 'wb': return self._wbuffer RESPONSE_PREFIX_DIRECT_CMODE = """ """ RESPONSE_PREFIX_DIRECT_7MODE = """ """ RESPONSE_PREFIX_DIRECT = """ """ RESPONSE_SUFFIX_DIRECT = """""" class FakeDirectCMODEServerHandler(FakeHTTPRequestHandler): """HTTP handler that fakes enough stuff to allow the driver to run.""" def do_GET(s): """Respond to a GET request.""" if '/servlets/netapp.servlets.admin.XMLrequest_filer' not in s.path: s.send_response(404) s.end_headers return s.send_response(200) s.send_header("Content-Type", "text/xml; charset=utf-8") s.end_headers() out = s.wfile out.write('' '') def do_POST(s): """Respond to a POST request.""" if '/servlets/netapp.servlets.admin.XMLrequest_filer' not in s.path: s.send_response(404) s.end_headers return request_xml = s.rfile.read(int(s.headers['Content-Length'])) root = etree.fromstring(request_xml) body = [x for x in root.iterchildren()] request = body[0] tag = request.tag api = etree.QName(tag).localname or tag if 'lun-get-iter' == api: tag = \ FakeDirectCMODEServerHandler._get_child_by_name(request, 'tag') if tag is None: body = """ indeterminate 512 1354536362 false true falselinux true/vol/navneet/lun1 0 false2FfGI$APyN68 none20971520 0false 0 cec1f3d7-3d41-11e2-9cf4-123478563412 navneetben_vserver <lun-get-iter-key-td> <key-0>ben_vserver</key-0> <key-1>/vol/navneet/lun2</key-1> <key-2>navneet</key-2> <key-3></key-3> <key-4>lun2</key-4> </lun-get-iter-key-td> 1""" else: body = """ indeterminate 512 1354536362 false true falselinux true/vol/navneet/lun3 0 false2FfGI$APyN68 none20971520 0false 0 cec1f3d7-3d41-11e2-9cf4-123478563412 navneetben_vserver 1""" elif 'volume-get-iter' == api: tag = \ FakeDirectCMODEServerHandler._get_child_by_name(request, 'tag') if tag is None: body = """ iscsi Openstack 214748364 true falseonline nfsvol openstack 247483648 true falseonline <volume-get-iter-key-td> <key-0>openstack</key-0> <key-1>nfsvol</key-1> </volume-get-iter-key-td> 2""" else: body = """ iscsi Openstack 4147483648 true falseonline nfsvol openstack 8147483648 true falseonline 2""" elif 'lun-create-by-size' == api: body = """ 22020096""" elif 'lun-destroy' == api: body = """""" elif 'igroup-get-iter' == api: init_found = True query = FakeDirectCMODEServerHandler._get_child_by_name(request, 'query') if query is not None: igroup_info = FakeDirectCMODEServerHandler._get_child_by_name( query, 'initiator-group-info') if igroup_info is not None: inits = FakeDirectCMODEServerHandler._get_child_by_name( igroup_info, 'initiators') if inits is not None: init_info = \ FakeDirectCMODEServerHandler._get_child_by_name( inits, 'initiator-info') init_name = \ FakeDirectCMODEServerHandler._get_child_content( init_info, 'initiator-name') if init_name == 'iqn.1993-08.org.debian:01:10': init_found = True else: init_found = False if init_found: tag = \ FakeDirectCMODEServerHandler._get_child_by_name( request, 'tag') if tag is None: body = """ openstack-01f5297b-00f7-4170-bf30-69b1314b2118 windows iscsi iqn.1993-08.org.debian:01:10 openstack <igroup-get-iter-key-td> <key-0>openstack</key-0> <key-1> openstack-01f5297b-00f7-4170-bf30-69b1314b2118< /key-1> </igroup-get-iter-key-td> 1""" else: body = """ openstack-01f5297b-00f7-4170-bf30-69b1314b2118 linux iscsi iqn.1993-08.org.debian:01:10 openstack 1""" else: body = """ 0 """ elif 'lun-map-get-iter' == api: tag = \ FakeDirectCMODEServerHandler._get_child_by_name(request, 'tag') if tag is None: body = """ openstack-44c5e7e1-3306-4800-9623-259e57d56a83 948ae304-06e9-11e2 0 5587e563-06e9-11e2-9cf4-123478563412 /vol/openvol/lun1 openstack <lun-map-get-iter-key-td> <key-0>openstack</key-0> <key-1>openstack-01f5297b-00f7-4170-bf30-69b1314b2118< /key-1> </lun-map-get-iter-key-td> 1 """ else: body = """ openstack-44c5e7e1-3306-4800-9623-259e57d56a83 948ae304-06e9-11e2 0 5587e563-06e9-11e2-9cf4-123478563412 /vol/openvol/lun1 openstack 1 """ elif 'lun-map' == api: body = """1 """ elif 'lun-get-geometry' == api: body = """256 512 3221225472512 2147483648 256""" elif 'iscsi-service-get-iter' == api: body = """ openstack true iqn.1992-08.com.netapp:sn.fa9:vs.105 openstack 1""" elif 'iscsi-interface-get-iter' == api: body = """ fas3170rre-cmode-01 e1b-1165 iscsi_data_if 10.63.165.216 3260true 5 iscsi_data_if 1038 openstack 1""" elif 'igroup-create' == api: body = """""" elif 'igroup-add' == api: body = """""" elif 'clone-create' == api: body = """""" elif 'lun-unmap' == api: body = """""" elif 'system-get-ontapi-version' == api: body = """ 1 19 """ elif 'vserver-get-iter' == api: body = """ vserver node 1""" elif 'ems-autosupport-log' == api: body = """""" elif 'lun-resize' == api: body = """""" elif 'lun-get-geometry' == api: body = """ 1 2 8 2 4 5 """ elif 'volume-options-list-info' == api: body = """ """ elif 'lun-move' == api: body = """""" else: # Unknown API s.send_response(500) s.end_headers return s.send_response(200) s.send_header("Content-Type", "text/xml; charset=utf-8") s.end_headers() s.wfile.write(RESPONSE_PREFIX_DIRECT_CMODE) s.wfile.write(RESPONSE_PREFIX_DIRECT) s.wfile.write(body) s.wfile.write(RESPONSE_SUFFIX_DIRECT) @staticmethod def _get_child_by_name(self, name): for child in self.iterchildren(): if child.tag == name or etree.QName(child.tag).localname == name: return child return None @staticmethod def _get_child_content(self, name): """Get the content of the child.""" for child in self.iterchildren(): if child.tag == name or etree.QName(child.tag).localname == name: return child.text return None class FakeDirectCmodeHTTPConnection(object): """A fake httplib.HTTPConnection for netapp tests Requests made via this connection actually get translated and routed into the fake direct handler above, we then turn the response into the httplib.HTTPResponse that the caller expects. """ def __init__(self, host, timeout=None): self.host = host def request(self, method, path, data=None, headers=None): if not headers: headers = {} req_str = '%s %s HTTP/1.1\r\n' % (method, path) for key, value in headers.iteritems(): req_str += "%s: %s\r\n" % (key, value) if data: req_str += '\r\n%s' % data # NOTE(vish): normally the http transport normalizes from unicode sock = FakeHttplibSocket(req_str.decode("latin-1").encode("utf-8")) # NOTE(vish): stop the server from trying to look up address from # the fake socket FakeDirectCMODEServerHandler.address_string = lambda x: '127.0.0.1' self.app = FakeDirectCMODEServerHandler(sock, '127.0.0.1:80', None) self.sock = FakeHttplibSocket(sock.result) self.http_response = httplib.HTTPResponse(self.sock) def set_debuglevel(self, level): pass def getresponse(self): self.http_response.begin() return self.http_response def getresponsebody(self): return self.sock.result class NetAppDirectCmodeISCSIDriverTestCase(test.TestCase): """Test case for NetAppISCSIDriver""" volume = {'name': 'lun1', 'size': 2, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'lun1', 'id': 'lun1', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} snapshot = {'name': 'snapshot1', 'size': 2, 'volume_name': 'lun1', 'volume_size': 2, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} snapshot_fail = {'name': 'snapshot2', 'size': 2, 'volume_name': 'lun1', 'volume_size': 1, 'project_id': 'project'} volume_sec = {'name': 'vol_snapshot', 'size': 2, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'lun1', 'id': 'lun1', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} volume_clone = {'name': 'cl_sm', 'size': 3, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'cl_sm', 'id': 'lun1', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} volume_clone_large = {'name': 'cl_lg', 'size': 6, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'cl_lg', 'id': 'lun1', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} connector = {'initiator': 'iqn.1993-08.org.debian:01:10'} vol_fail = {'name': 'lun_fail', 'size': 10000, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'lun1', 'id': 'lun1', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} vol1 = ssc_utils.NetAppVolume('lun1', 'openstack') vol1.state['vserver_root'] = False vol1.state['status'] = 'online' vol1.state['junction_active'] = True vol1.space['size_avl_bytes'] = '4000000000' vol1.space['size_total_bytes'] = '5000000000' vol1.space['space-guarantee-enabled'] = False vol1.space['space-guarantee'] = 'file' vol1.space['thin_provisioned'] = True vol1.mirror['mirrored'] = True vol1.qos['qos_policy_group'] = None vol1.aggr['name'] = 'aggr1' vol1.aggr['junction'] = '/vola' vol1.sis['dedup'] = True vol1.sis['compression'] = True vol1.aggr['raid_type'] = 'raiddp' vol1.aggr['ha_policy'] = 'cfo' vol1.aggr['disk_type'] = 'SSD' ssc_map = {'mirrored': set([vol1]), 'dedup': set([vol1]), 'compression': set([vol1]), 'thin': set([vol1]), 'all': set([vol1])} def setUp(self): super(NetAppDirectCmodeISCSIDriverTestCase, self).setUp() self._custom_setup() def _custom_setup(self): self.stubs.Set( ssc_utils, 'refresh_cluster_ssc', lambda a, b, c, synchronous: None) configuration = self._set_config(create_configuration()) driver = common.NetAppDriver(configuration=configuration) self.stubs.Set(httplib, 'HTTPConnection', FakeDirectCmodeHTTPConnection) driver.do_setup(context='') client = driver.client client.set_api_version(1, 15) self.driver = driver self.driver.ssc_vols = self.ssc_map def _set_config(self, configuration): configuration.netapp_storage_protocol = 'iscsi' configuration.netapp_login = 'admin' configuration.netapp_password = 'pass' configuration.netapp_server_hostname = '127.0.0.1' configuration.netapp_transport_type = 'http' configuration.netapp_server_port = '80' configuration.netapp_vserver = 'openstack' return configuration def test_connect(self): self.driver.check_for_setup_error() def test_create_destroy(self): self.driver.create_volume(self.volume) self.driver.delete_volume(self.volume) def test_create_vol_snapshot_destroy(self): self.driver.create_volume(self.volume) self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot(self.volume_sec, self.snapshot) self.driver.delete_snapshot(self.snapshot) self.driver.delete_volume(self.volume) def test_map_unmap(self): self.driver.create_volume(self.volume) updates = self.driver.create_export(None, self.volume) self.assertTrue(updates['provider_location']) self.volume['provider_location'] = updates['provider_location'] connection_info = self.driver.initialize_connection(self.volume, self.connector) self.assertEqual(connection_info['driver_volume_type'], 'iscsi') properties = connection_info['data'] if not properties: raise AssertionError('Target portal is none') self.driver.terminate_connection(self.volume, self.connector) self.driver.delete_volume(self.volume) def test_cloned_volume_destroy(self): self.driver.create_volume(self.volume) self.driver.create_cloned_volume(self.snapshot, self.volume) self.driver.delete_volume(self.snapshot) self.driver.delete_volume(self.volume) def test_map_by_creating_igroup(self): self.driver.create_volume(self.volume) updates = self.driver.create_export(None, self.volume) self.assertTrue(updates['provider_location']) self.volume['provider_location'] = updates['provider_location'] connector_new = {'initiator': 'iqn.1993-08.org.debian:01:1001'} connection_info = self.driver.initialize_connection(self.volume, connector_new) self.assertEqual(connection_info['driver_volume_type'], 'iscsi') properties = connection_info['data'] if not properties: raise AssertionError('Target portal is none') def test_fail_create_vol(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, self.vol_fail) def test_vol_stats(self): self.driver.get_volume_stats(refresh=True) def test_create_vol_snapshot_diff_size_resize(self): self.driver.create_volume(self.volume) self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot( self.volume_clone, self.snapshot) self.driver.delete_snapshot(self.snapshot) self.driver.delete_volume(self.volume) def test_create_vol_snapshot_diff_size_subclone(self): self.driver.create_volume(self.volume) self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot( self.volume_clone_large, self.snapshot) self.driver.delete_snapshot(self.snapshot) self.driver.delete_volume(self.volume) def test_extend_vol_same_size(self): self.driver.create_volume(self.volume) self.driver.extend_volume(self.volume, self.volume['size']) def test_extend_vol_direct_resize(self): self.driver.create_volume(self.volume) self.driver.extend_volume(self.volume, 3) def test_extend_vol_sub_lun_clone(self): self.driver.create_volume(self.volume) self.driver.extend_volume(self.volume, 4) @mock.patch.object(iscsi.LOG, 'error') def test_na_api_error_in_create_lun_on_eligible_vol(self, mock_log): drv = self.driver.driver vol_name = 'fake_lun_vol' lun_name = 'lun1' size = '1' metadata = {'OSType': 'linux', 'SpaceReserved': 'true'} path = '/vol/%(vol_name)s/%(lun_name)s' % {'vol_name': vol_name, 'lun_name': lun_name} metadata_out = {'Path': path, 'Qtree': None, 'OSType': 'linux', 'SpaceReserved': 'true', 'Volume': 'lun1'} extra_specs = {} available_vol = ssc_utils.NetAppVolume(vol_name) with mock.patch.object(drv, '_get_avl_volumes', return_value=[available_vol]): with mock.patch.object(drv, 'create_lun', side_effect=NaApiError): self.assertRaises(exception.VolumeBackendAPIException, drv._create_lun_on_eligible_vol, lun_name, size, metadata, extra_specs) self.assertEqual(1, mock_log.call_count) class NetAppDriverNegativeTestCase(test.TestCase): """Test case for NetAppDriver""" def setUp(self): super(NetAppDriverNegativeTestCase, self).setUp() def test_incorrect_family(self): configuration = create_configuration() configuration.netapp_storage_family = 'xyz_abc' try: driver = common.NetAppDriver(configuration=configuration) raise AssertionError('Wrong storage family is getting accepted.') except exception.InvalidInput: pass def test_incorrect_protocol(self): configuration = create_configuration() configuration.netapp_storage_family = 'ontap' configuration.netapp_storage_protocol = 'ontap' try: driver = common.NetAppDriver(configuration=configuration) raise AssertionError('Wrong storage protocol is getting accepted.') except exception.InvalidInput: pass def test_non_netapp_driver(self): configuration = create_configuration() common.netapp_unified_plugin_registry['test_family'] =\ {'iscsi': 'cinder.volume.drivers.arbitrary.IscsiDriver'} configuration.netapp_storage_family = 'test_family' configuration.netapp_storage_protocol = 'iscsi' try: driver = common.NetAppDriver(configuration=configuration) raise AssertionError('Non NetApp driver is getting instantiated.') except exception.InvalidInput: pass finally: common.netapp_unified_plugin_registry.pop('test_family') class FakeDirect7MODEServerHandler(FakeHTTPRequestHandler): """HTTP handler that fakes enough stuff to allow the driver to run.""" def do_GET(s): """Respond to a GET request.""" if '/servlets/netapp.servlets.admin.XMLrequest_filer' not in s.path: s.send_response(404) s.end_headers return s.send_response(200) s.send_header("Content-Type", "text/xml; charset=utf-8") s.end_headers() out = s.wfile out.write('' '') def do_POST(s): """Respond to a POST request.""" if '/servlets/netapp.servlets.admin.XMLrequest_filer' not in s.path: s.send_response(404) s.end_headers return request_xml = s.rfile.read(int(s.headers['Content-Length'])) root = etree.fromstring(request_xml) body = [x for x in root.iterchildren()] request = body[0] tag = request.tag api = etree.QName(tag).localname or tag if 'lun-list-info' == api: body = """ false false /vol/vol1/lun1 20971520 true false false false none linux e867d844-c2c0-11e0-9282-00a09825b3b5 P3lgP4eTyaNl 512 true 0 indeterminate /vol/vol1/lun1 20971520 true false false false none linux 8e1e9284-c288-11e0-9282-00a09825b3b5 P3lgP4eTc3lp 512 true 0 indeterminate """ elif 'volume-list-info' == api: body = """ vol0 019c8f7a-9243-11e0-9281-00a09825b3b5 flex 32_bit online 576914493440 13820354560 563094110208 2 20 140848264 0 0 0 0 20907162 7010 518 31142 31142 0 false aggr0 disabled idle idle for 70:36:44 regular sun-sat@0 Mon Aug 8 09:34:15 EST 2011 Mon Aug 8 09:34:15 EST 2011 0 0 0 0 0 0 0 0 0 0 false volume true 14 raid_dp,sis block true false false false false unmirrored 3 1 /aggr0/plex0 true false vol1 2d50ecf4-c288-11e0-9282-00a09825b3b5 flex 32_bit online 42949672960 44089344 42905583616 0 20 10485760 8192 8192 0 0 1556480 110 504 31142 31142 0 false aggr1 disabled idle idle for 89:19:59 regular sun-sat@0 Sun Aug 7 14:51:00 EST 2011 Sun Aug 7 14:51:00 EST 2011 0 0 0 0 0 0 0 0 0 0 false volume true 7 raid4,sis block true false false false false unmirrored 2 1 /aggr1/plex0 true false """ elif 'volume-options-list-info' == api: body = """ snapmirrored off root false ha_policy cfo striping not_striped compression off """ elif 'lun-create-by-size' == api: body = """ 22020096""" elif 'lun-destroy' == api: body = """""" elif 'igroup-list-info' == api: body = """ openstack-8bc96490 iscsi b8e1d274-c378-11e0 linux 0 false false false true iqn.1993-08.org.debian:01:10 iscsi_group iscsi ccb8cbe4-c36f linux 0 false false false true iqn.1993-08.org.debian:01:10ca """ elif 'lun-map-list-info' == api: body = """ """ elif 'lun-map' == api: body = """1 """ elif 'iscsi-node-get-name' == api: body = """ iqn.1992-08.com.netapp:sn.135093938 """ elif 'iscsi-portal-list-info' == api: body = """ 10.61.176.156 3260 1000 e0a """ elif 'igroup-create' == api: body = """""" elif 'igroup-add' == api: body = """""" elif 'clone-start' == api: body = """ 2d50ecf4-c288-11e0-9282-00a09825b3b5 11 """ elif 'clone-list-status' == api: body = """ completed """ elif 'lun-unmap' == api: body = """""" elif 'system-get-ontapi-version' == api: body = """ 1 8 """ elif 'lun-set-space-reservation-info' == api: body = """""" elif 'ems-autosupport-log' == api: body = """""" elif 'lun-resize' == api: body = """""" elif 'lun-get-geometry' == api: body = """ 1 2 8 2 4 5 """ elif 'volume-options-list-info' == api: body = """ """ elif 'lun-move' == api: body = """""" else: # Unknown API s.send_response(500) s.end_headers return s.send_response(200) s.send_header("Content-Type", "text/xml; charset=utf-8") s.end_headers() s.wfile.write(RESPONSE_PREFIX_DIRECT_7MODE) s.wfile.write(RESPONSE_PREFIX_DIRECT) s.wfile.write(body) s.wfile.write(RESPONSE_SUFFIX_DIRECT) class FakeDirect7modeHTTPConnection(object): """A fake httplib.HTTPConnection for netapp tests Requests made via this connection actually get translated and routed into the fake direct handler above, we then turn the response into the httplib.HTTPResponse that the caller expects. """ def __init__(self, host, timeout=None): self.host = host def request(self, method, path, data=None, headers=None): if not headers: headers = {} req_str = '%s %s HTTP/1.1\r\n' % (method, path) for key, value in headers.iteritems(): req_str += "%s: %s\r\n" % (key, value) if data: req_str += '\r\n%s' % data # NOTE(vish): normally the http transport normailizes from unicode sock = FakeHttplibSocket(req_str.decode("latin-1").encode("utf-8")) # NOTE(vish): stop the server from trying to look up address from # the fake socket FakeDirect7MODEServerHandler.address_string = lambda x: '127.0.0.1' self.app = FakeDirect7MODEServerHandler(sock, '127.0.0.1:80', None) self.sock = FakeHttplibSocket(sock.result) self.http_response = httplib.HTTPResponse(self.sock) def set_debuglevel(self, level): pass def getresponse(self): self.http_response.begin() return self.http_response def getresponsebody(self): return self.sock.result class NetAppDirect7modeISCSIDriverTestCase_NV( NetAppDirectCmodeISCSIDriverTestCase): """Test case for NetAppISCSIDriver No vfiler """ def setUp(self): super(NetAppDirect7modeISCSIDriverTestCase_NV, self).setUp() def _custom_setup(self): configuration = self._set_config(create_configuration()) driver = common.NetAppDriver(configuration=configuration) self.stubs.Set(httplib, 'HTTPConnection', FakeDirect7modeHTTPConnection) driver.do_setup(context='') client = driver.client client.set_api_version(1, 9) self.driver = driver def _set_config(self, configuration): configuration.netapp_storage_family = 'ontap_7mode' configuration.netapp_storage_protocol = 'iscsi' configuration.netapp_login = 'admin' configuration.netapp_password = 'pass' configuration.netapp_server_hostname = '127.0.0.1' configuration.netapp_transport_type = 'http' configuration.netapp_server_port = '80' return configuration def test_create_on_select_vol(self): self.driver.volume_list = ['vol0', 'vol1'] self.driver.create_volume(self.volume) self.driver.delete_volume(self.volume) self.driver.volume_list = [] def test_create_fail_on_select_vol(self): self.driver.volume_list = ['vol2', 'vol3'] success = False try: self.driver.create_volume(self.volume) except exception.VolumeBackendAPIException: success = True pass finally: self.driver.volume_list = [] if not success: raise AssertionError('Failed creating on selected volumes') def test_check_for_setup_error_version(self): drv = self.driver delattr(drv.client, '_api_version') # check exception raises when version not found self.assertRaises(exception.VolumeBackendAPIException, drv.check_for_setup_error) drv.client.set_api_version(1, 8) # check exception raises when not supported version self.assertRaises(exception.VolumeBackendAPIException, drv.check_for_setup_error) def test_na_api_error_in_create_lun_on_eligible_vol(self): drv = self.driver.driver req_size = 1.0 fake_volume = {'name': 'fake_vol'} fake_metadata = {} with mock.patch.object(drv, '_get_avl_volume_by_size', return_value=fake_volume): with mock.patch.object(drv, 'create_lun', side_effect=NaApiError): self.assertRaises(NaApiError, drv._create_lun_on_eligible_vol, fake_volume['name'], req_size, fake_metadata) class NetAppDirect7modeISCSIDriverTestCase_WV( NetAppDirect7modeISCSIDriverTestCase_NV): """Test case for NetAppISCSIDriver With vfiler """ def setUp(self): super(NetAppDirect7modeISCSIDriverTestCase_WV, self).setUp() def _custom_setup(self): configuration = self._set_config(create_configuration()) driver = common.NetAppDriver(configuration=configuration) self.stubs.Set(httplib, 'HTTPConnection', FakeDirect7modeHTTPConnection) driver.do_setup(context='') client = driver.client client.set_api_version(1, 9) self.driver = driver def _set_config(self, configuration): configuration.netapp_storage_family = 'ontap_7mode' configuration.netapp_storage_protocol = 'iscsi' configuration.netapp_login = 'admin' configuration.netapp_password = 'pass' configuration.netapp_server_hostname = '127.0.0.1' configuration.netapp_transport_type = 'http' configuration.netapp_server_port = '80' configuration.netapp_vfiler = 'openstack' return configuration class NetAppApiElementTransTests(test.TestCase): """Test case for NetApp api element translations.""" def setUp(self): super(NetAppApiElementTransTests, self).setUp() def test_translate_struct_dict_unique_key(self): """Tests if dict gets properly converted to NaElements.""" root = NaElement('root') child = {'e1': 'v1', 'e2': 'v2', 'e3': 'v3'} root.translate_struct(child) self.assertEqual(len(root.get_children()), 3) self.assertEqual(root.get_child_content('e1'), 'v1') self.assertEqual(root.get_child_content('e2'), 'v2') self.assertEqual(root.get_child_content('e3'), 'v3') def test_translate_struct_dict_nonunique_key(self): """Tests if list/dict gets properly converted to NaElements.""" root = NaElement('root') child = [{'e1': 'v1', 'e2': 'v2'}, {'e1': 'v3'}] root.translate_struct(child) self.assertEqual(len(root.get_children()), 3) children = root.get_children() for c in children: if c.get_name() == 'e1': self.assertIn(c.get_content(), ['v1', 'v3']) else: self.assertEqual(c.get_content(), 'v2') def test_translate_struct_list(self): """Tests if list gets properly converted to NaElements.""" root = NaElement('root') child = ['e1', 'e2'] root.translate_struct(child) self.assertEqual(len(root.get_children()), 2) self.assertIsNone(root.get_child_content('e1')) self.assertIsNone(root.get_child_content('e2')) def test_translate_struct_tuple(self): """Tests if tuple gets properly converted to NaElements.""" root = NaElement('root') child = ('e1', 'e2') root.translate_struct(child) self.assertEqual(len(root.get_children()), 2) self.assertIsNone(root.get_child_content('e1')) self.assertIsNone(root.get_child_content('e2')) def test_translate_invalid_struct(self): """Tests if invalid data structure raises exception.""" root = NaElement('root') child = 'random child element' self.assertRaises(ValueError, root.translate_struct, child) def test_setter_builtin_types(self): """Tests str, int, float get converted to NaElement.""" root = NaElement('root') root['e1'] = 'v1' root['e2'] = 1 root['e3'] = 2.0 root['e4'] = 8l self.assertEqual(len(root.get_children()), 4) self.assertEqual(root.get_child_content('e1'), 'v1') self.assertEqual(root.get_child_content('e2'), '1') self.assertEqual(root.get_child_content('e3'), '2.0') self.assertEqual(root.get_child_content('e4'), '8') def test_setter_na_element(self): """Tests na_element gets appended as child.""" root = NaElement('root') root['e1'] = NaElement('nested') self.assertEqual(len(root.get_children()), 1) e1 = root.get_child_by_name('e1') self.assertIsInstance(e1, NaElement) self.assertIsInstance(e1.get_child_by_name('nested'), NaElement) def test_setter_child_dict(self): """Tests dict is appended as child to root.""" root = NaElement('root') root['d'] = {'e1': 'v1', 'e2': 'v2'} e1 = root.get_child_by_name('d') self.assertIsInstance(e1, NaElement) sub_ch = e1.get_children() self.assertEqual(len(sub_ch), 2) for c in sub_ch: self.assertIn(c.get_name(), ['e1', 'e2']) if c.get_name() == 'e1': self.assertEqual(c.get_content(), 'v1') else: self.assertEqual(c.get_content(), 'v2') def test_setter_child_list_tuple(self): """Tests list/tuple are appended as child to root.""" root = NaElement('root') root['l'] = ['l1', 'l2'] root['t'] = ('t1', 't2') l = root.get_child_by_name('l') self.assertIsInstance(l, NaElement) t = root.get_child_by_name('t') self.assertIsInstance(t, NaElement) for le in l.get_children(): self.assertIn(le.get_name(), ['l1', 'l2']) for te in t.get_children(): self.assertIn(te.get_name(), ['t1', 't2']) def test_setter_no_value(self): """Tests key with None value.""" root = NaElement('root') root['k'] = None self.assertIsNone(root.get_child_content('k')) def test_setter_invalid_value(self): """Tests invalid value raises exception.""" root = NaElement('root') try: root['k'] = NaServer('localhost') except Exception as e: if not isinstance(e, TypeError): self.fail(_('Error not a TypeError.')) def test_setter_invalid_key(self): """Tests invalid value raises exception.""" root = NaElement('root') try: root[None] = 'value' except Exception as e: if not isinstance(e, KeyError): self.fail(_('Error not a KeyError.')) cinder-2014.1.5/cinder/tests/test_db_api.py0000664000567000056700000015304712540642606021624 0ustar jenkinsjenkins00000000000000# 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. """Unit tests for cinder.db.api.""" import datetime from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import uuidutils from cinder.quota import ReservableResource from cinder import test CONF = cfg.CONF def _quota_reserve(context, project_id): """Create sample Quota, QuotaUsage and Reservation objects. There is no method db.quota_usage_create(), so we have to use db.quota_reserve() for creating QuotaUsage objects. Returns reservations uuids. """ def get_sync(resource, usage): def sync(elevated, project_id, session): return {resource: usage} return sync quotas = {} resources = {} deltas = {} for i, resource in enumerate(('volumes', 'gigabytes')): quotas[resource] = db.quota_create(context, project_id, resource, i + 1) resources[resource] = ReservableResource(resource, '_sync_%s' % resource) deltas[resource] = i + 1 return db.quota_reserve( context, resources, quotas, deltas, datetime.datetime.utcnow(), datetime.datetime.utcnow(), datetime.timedelta(days=1), project_id ) class ModelsObjectComparatorMixin(object): def _dict_from_object(self, obj, ignored_keys): if ignored_keys is None: ignored_keys = [] return dict([(k, v) for k, v in obj.iteritems() if k not in ignored_keys]) def _assertEqualObjects(self, obj1, obj2, ignored_keys=None): obj1 = self._dict_from_object(obj1, ignored_keys) obj2 = self._dict_from_object(obj2, ignored_keys) self.assertEqual( len(obj1), len(obj2), "Keys mismatch: %s" % str(set(obj1.keys()) ^ set(obj2.keys()))) for key, value in obj1.iteritems(): self.assertEqual(value, obj2[key]) def _assertEqualListsOfObjects(self, objs1, objs2, ignored_keys=None): obj_to_dict = lambda o: self._dict_from_object(o, ignored_keys) sort_key = lambda d: [d[k] for k in sorted(d)] conv_and_sort = lambda obj: sorted(map(obj_to_dict, obj), key=sort_key) self.assertEqual(conv_and_sort(objs1), conv_and_sort(objs2)) def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2): self.assertEqual(len(primitives1), len(primitives2)) for primitive in primitives1: self.assertIn(primitive, primitives2) for primitive in primitives2: self.assertIn(primitive, primitives1) class BaseTest(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): super(BaseTest, self).setUp() self.ctxt = context.get_admin_context() class DBAPIServiceTestCase(BaseTest): """Unit tests for cinder.db.api.service_*.""" def _get_base_values(self): return { 'host': 'fake_host', 'binary': 'fake_binary', 'topic': 'fake_topic', 'report_count': 3, 'disabled': False } def _create_service(self, values): v = self._get_base_values() v.update(values) return db.service_create(self.ctxt, v) def test_service_create(self): service = self._create_service({}) self.assertFalse(service['id'] is None) for key, value in self._get_base_values().iteritems(): self.assertEqual(value, service[key]) def test_service_destroy(self): service1 = self._create_service({}) service2 = self._create_service({'host': 'fake_host2'}) db.service_destroy(self.ctxt, service1['id']) self.assertRaises(exception.ServiceNotFound, db.service_get, self.ctxt, service1['id']) self._assertEqualObjects(db.service_get(self.ctxt, service2['id']), service2) def test_service_update(self): service = self._create_service({}) new_values = { 'host': 'fake_host1', 'binary': 'fake_binary1', 'topic': 'fake_topic1', 'report_count': 4, 'disabled': True } db.service_update(self.ctxt, service['id'], new_values) updated_service = db.service_get(self.ctxt, service['id']) for key, value in new_values.iteritems(): self.assertEqual(value, updated_service[key]) def test_service_update_not_found_exception(self): self.assertRaises(exception.ServiceNotFound, db.service_update, self.ctxt, 100500, {}) def test_service_get(self): service1 = self._create_service({}) service2 = self._create_service({'host': 'some_other_fake_host'}) real_service1 = db.service_get(self.ctxt, service1['id']) self._assertEqualObjects(service1, real_service1) def test_service_get_not_found_exception(self): self.assertRaises(exception.ServiceNotFound, db.service_get, self.ctxt, 100500) def test_service_get_by_host_and_topic(self): service1 = self._create_service({'host': 'host1', 'topic': 'topic1'}) service2 = self._create_service({'host': 'host2', 'topic': 'topic2'}) real_service1 = db.service_get_by_host_and_topic(self.ctxt, host='host1', topic='topic1') self._assertEqualObjects(service1, real_service1) def test_service_get_all(self): values = [ {'host': 'host1', 'topic': 'topic1'}, {'host': 'host2', 'topic': 'topic2'}, {'disabled': True} ] services = [self._create_service(vals) for vals in values] disabled_services = [services[-1]] non_disabled_services = services[:-1] compares = [ (services, db.service_get_all(self.ctxt)), (disabled_services, db.service_get_all(self.ctxt, True)), (non_disabled_services, db.service_get_all(self.ctxt, False)) ] for comp in compares: self._assertEqualListsOfObjects(*comp) def test_service_get_all_by_topic(self): values = [ {'host': 'host1', 'topic': 't1'}, {'host': 'host2', 'topic': 't1'}, {'disabled': True, 'topic': 't1'}, {'host': 'host3', 'topic': 't2'} ] services = [self._create_service(vals) for vals in values] expected = services[:2] real = db.service_get_all_by_topic(self.ctxt, 't1') self._assertEqualListsOfObjects(expected, real) def test_service_get_all_by_host(self): values = [ {'host': 'host1', 'topic': 't1'}, {'host': 'host1', 'topic': 't1'}, {'host': 'host2', 'topic': 't1'}, {'host': 'host3', 'topic': 't2'} ] services = [self._create_service(vals) for vals in values] expected = services[:2] real = db.service_get_all_by_host(self.ctxt, 'host1') self._assertEqualListsOfObjects(expected, real) def test_service_get_by_args(self): values = [ {'host': 'host1', 'binary': 'a'}, {'host': 'host2', 'binary': 'b'} ] services = [self._create_service(vals) for vals in values] service1 = db.service_get_by_args(self.ctxt, 'host1', 'a') self._assertEqualObjects(services[0], service1) service2 = db.service_get_by_args(self.ctxt, 'host2', 'b') self._assertEqualObjects(services[1], service2) def test_service_get_by_args_not_found_exception(self): self.assertRaises(exception.HostBinaryNotFound, db.service_get_by_args, self.ctxt, 'non-exists-host', 'a') def test_service_get_all_volume_sorted(self): values = [ ({'host': 'h1', 'binary': 'a', 'topic': CONF.volume_topic}, 100), ({'host': 'h2', 'binary': 'b', 'topic': CONF.volume_topic}, 200), ({'host': 'h3', 'binary': 'b', 'topic': CONF.volume_topic}, 300)] services = [] for vals, size in values: services.append(self._create_service(vals)) db.volume_create(self.ctxt, {'host': vals['host'], 'size': size}) for service, size in db.service_get_all_volume_sorted(self.ctxt): self._assertEqualObjects(services.pop(0), service) self.assertEqual(values.pop(0)[1], size) class DBAPIVolumeTestCase(BaseTest): """Unit tests for cinder.db.api.volume_*.""" def test_volume_create(self): volume = db.volume_create(self.ctxt, {'host': 'host1'}) self.assertTrue(uuidutils.is_uuid_like(volume['id'])) self.assertEqual(volume.host, 'host1') def test_volume_allocate_iscsi_target_no_more_targets(self): self.assertRaises(exception.NoMoreTargets, db.volume_allocate_iscsi_target, self.ctxt, 42, 'host1') def test_volume_allocate_iscsi_target(self): host = 'host1' volume = db.volume_create(self.ctxt, {'host': host}) db.iscsi_target_create_safe(self.ctxt, {'host': host, 'target_num': 42}) target_num = db.volume_allocate_iscsi_target(self.ctxt, volume['id'], host) self.assertEqual(target_num, 42) def test_volume_attached_invalid_uuid(self): self.assertRaises(exception.InvalidUUID, db.volume_attached, self.ctxt, 42, 'invalid-uuid', None, '/tmp') def test_volume_attached_to_instance(self): volume = db.volume_create(self.ctxt, {'host': 'host1'}) instance_uuid = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' db.volume_attached(self.ctxt, volume['id'], instance_uuid, None, '/tmp') volume = db.volume_get(self.ctxt, volume['id']) self.assertEqual(volume['status'], 'in-use') self.assertEqual(volume['mountpoint'], '/tmp') self.assertEqual(volume['attach_status'], 'attached') self.assertEqual(volume['instance_uuid'], instance_uuid) self.assertIsNone(volume['attached_host']) def test_volume_attached_to_host(self): volume = db.volume_create(self.ctxt, {'host': 'host1'}) host_name = 'fake_host' db.volume_attached(self.ctxt, volume['id'], None, host_name, '/tmp') volume = db.volume_get(self.ctxt, volume['id']) self.assertEqual(volume['status'], 'in-use') self.assertEqual(volume['mountpoint'], '/tmp') self.assertEqual(volume['attach_status'], 'attached') self.assertIsNone(volume['instance_uuid']) self.assertEqual(volume['attached_host'], host_name) def test_volume_data_get_for_host(self): for i in xrange(3): for j in xrange(3): db.volume_create(self.ctxt, {'host': 'h%d' % i, 'size': 100}) for i in xrange(3): self.assertEqual((3, 300), db.volume_data_get_for_host( self.ctxt, 'h%d' % i)) def test_volume_data_get_for_project(self): for i in xrange(3): for j in xrange(3): db.volume_create(self.ctxt, {'project_id': 'p%d' % i, 'size': 100, 'host': 'h-%d-%d' % (i, j), }) for i in xrange(3): self.assertEqual((3, 300), db.volume_data_get_for_project( self.ctxt, 'p%d' % i)) def test_volume_detached_from_instance(self): volume = db.volume_create(self.ctxt, {}) db.volume_attached(self.ctxt, volume['id'], 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', None, '/tmp') db.volume_detached(self.ctxt, volume['id']) volume = db.volume_get(self.ctxt, volume['id']) self.assertEqual('available', volume['status']) self.assertEqual('detached', volume['attach_status']) self.assertIsNone(volume['mountpoint']) self.assertIsNone(volume['instance_uuid']) self.assertIsNone(volume['attached_host']) def test_volume_detached_from_host(self): volume = db.volume_create(self.ctxt, {}) db.volume_attached(self.ctxt, volume['id'], None, 'fake_host', '/tmp') db.volume_detached(self.ctxt, volume['id']) volume = db.volume_get(self.ctxt, volume['id']) self.assertEqual('available', volume['status']) self.assertEqual('detached', volume['attach_status']) self.assertIsNone(volume['mountpoint']) self.assertIsNone(volume['instance_uuid']) self.assertIsNone(volume['attached_host']) def test_volume_get(self): volume = db.volume_create(self.ctxt, {}) self._assertEqualObjects(volume, db.volume_get(self.ctxt, volume['id'])) def test_volume_destroy(self): volume = db.volume_create(self.ctxt, {}) db.volume_destroy(self.ctxt, volume['id']) self.assertRaises(exception.VolumeNotFound, db.volume_get, self.ctxt, volume['id']) def test_volume_get_all(self): volumes = [db.volume_create(self.ctxt, {'host': 'h%d' % i, 'size': i}) for i in xrange(3)] self._assertEqualListsOfObjects(volumes, db.volume_get_all( self.ctxt, None, None, 'host', None)) def test_volume_get_all_marker_passed(self): volumes = [ db.volume_create(self.ctxt, {'id': 1}), db.volume_create(self.ctxt, {'id': 2}), db.volume_create(self.ctxt, {'id': 3}), db.volume_create(self.ctxt, {'id': 4}), ] self._assertEqualListsOfObjects(volumes[2:], db.volume_get_all( self.ctxt, 2, 2, 'id', None)) def test_volume_get_all_by_host(self): volumes = [] for i in xrange(3): volumes.append([db.volume_create(self.ctxt, {'host': 'h%d' % i}) for j in xrange(3)]) for i in xrange(3): self._assertEqualListsOfObjects(volumes[i], db.volume_get_all_by_host( self.ctxt, 'h%d' % i)) def test_volume_get_all_by_instance_uuid(self): instance_uuids = [] volumes = [] for i in xrange(3): instance_uuid = str(uuidutils.uuid.uuid1()) instance_uuids.append(instance_uuid) volumes.append([db.volume_create(self.ctxt, {'instance_uuid': instance_uuid}) for j in xrange(3)]) for i in xrange(3): self._assertEqualListsOfObjects(volumes[i], db.volume_get_all_by_instance_uuid( self.ctxt, instance_uuids[i])) def test_volume_get_all_by_instance_uuid_empty(self): self.assertEqual([], db.volume_get_all_by_instance_uuid(self.ctxt, 'empty')) def test_volume_get_all_by_project(self): volumes = [] for i in xrange(3): volumes.append([db.volume_create(self.ctxt, { 'project_id': 'p%d' % i}) for j in xrange(3)]) for i in xrange(3): self._assertEqualListsOfObjects(volumes[i], db.volume_get_all_by_project( self.ctxt, 'p%d' % i, None, None, 'host', None)) def test_volume_get_by_name(self): db.volume_create(self.ctxt, {'display_name': 'vol1'}) db.volume_create(self.ctxt, {'display_name': 'vol2'}) db.volume_create(self.ctxt, {'display_name': 'vol3'}) # no name filter volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc') self.assertEqual(len(volumes), 3) # filter on name volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc', {'display_name': 'vol2'}) self.assertEqual(len(volumes), 1) self.assertEqual(volumes[0]['display_name'], 'vol2') # filter no match volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc', {'display_name': 'vol4'}) self.assertEqual(len(volumes), 0) def test_volume_list_by_status(self): db.volume_create(self.ctxt, {'display_name': 'vol1', 'status': 'available'}) db.volume_create(self.ctxt, {'display_name': 'vol2', 'status': 'available'}) db.volume_create(self.ctxt, {'display_name': 'vol3', 'status': 'in-use'}) # no status filter volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc') self.assertEqual(len(volumes), 3) # single match volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc', {'status': 'in-use'}) self.assertEqual(len(volumes), 1) self.assertEqual(volumes[0]['status'], 'in-use') # multiple match volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc', {'status': 'available'}) self.assertEqual(len(volumes), 2) for volume in volumes: self.assertEqual(volume['status'], 'available') # multiple filters volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc', {'status': 'available', 'display_name': 'vol1'}) self.assertEqual(len(volumes), 1) self.assertEqual(volumes[0]['display_name'], 'vol1') self.assertEqual(volumes[0]['status'], 'available') # no match volumes = db.volume_get_all(self.ctxt, None, None, 'created_at', 'asc', {'status': 'in-use', 'display_name': 'vol1'}) self.assertEqual(len(volumes), 0) def _assertEqualsVolumeOrderResult(self, correct_order, limit=None, sort_key='created_at', sort_dir='asc', filters=None, project_id=None, match_keys=['id', 'display_name', 'volume_metadata', 'created_at']): """"Verifies that volumes are returned in the correct order.""" if project_id: result = db.volume_get_all_by_project(self.ctxt, project_id, None, limit, sort_key, sort_dir, filters=filters) else: result = db.volume_get_all(self.ctxt, None, limit, sort_key, sort_dir, filters=filters) self.assertEqual(len(correct_order), len(result)) for vol1, vol2 in zip(result, correct_order): for key in match_keys: val1 = vol1.get(key) val2 = vol2.get(key) # metadata is a dict, compare the 'key' and 'value' of each if key == 'volume_metadata': self.assertEqual(len(val1), len(val2)) val1_dict = dict((x.key, x.value) for x in val1) val2_dict = dict((x.key, x.value) for x in val2) self.assertDictMatch(val1_dict, val2_dict) else: self.assertEqual(val1, val2) def test_volume_get_by_filter(self): """Verifies that all filtering is done at the DB layer.""" vols = [] vols.extend([db.volume_create(self.ctxt, {'project_id': 'g1', 'display_name': 'name_%d' % i, 'size': 1}) for i in xrange(2)]) vols.extend([db.volume_create(self.ctxt, {'project_id': 'g1', 'display_name': 'name_%d' % i, 'size': 2}) for i in xrange(2)]) vols.extend([db.volume_create(self.ctxt, {'project_id': 'g1', 'display_name': 'name_%d' % i}) for i in xrange(2)]) vols.extend([db.volume_create(self.ctxt, {'project_id': 'g2', 'display_name': 'name_%d' % i, 'size': 1}) for i in xrange(2)]) # By project, filter on size and name filters = {'size': '1'} correct_order = [vols[0], vols[1]] self._assertEqualsVolumeOrderResult(correct_order, filters=filters, project_id='g1') filters = {'size': '1', 'display_name': 'name_1'} correct_order = [vols[1]] self._assertEqualsVolumeOrderResult(correct_order, filters=filters, project_id='g1') # Remove project scope filters = {'size': '1'} correct_order = [vols[0], vols[1], vols[6], vols[7]] self._assertEqualsVolumeOrderResult(correct_order, filters=filters) filters = {'size': '1', 'display_name': 'name_1'} correct_order = [vols[1], vols[7]] self._assertEqualsVolumeOrderResult(correct_order, filters=filters) # Remove size constraint filters = {'display_name': 'name_1'} correct_order = [vols[1], vols[3], vols[5]] self._assertEqualsVolumeOrderResult(correct_order, filters=filters, project_id='g1') correct_order = [vols[1], vols[3], vols[5], vols[7]] self._assertEqualsVolumeOrderResult(correct_order, filters=filters) # Verify bogus values return nothing filters = {'display_name': 'name_1', 'bogus_value': 'foo'} self._assertEqualsVolumeOrderResult([], filters=filters, project_id='g1') self._assertEqualsVolumeOrderResult([], project_id='bogus') self._assertEqualsVolumeOrderResult([], filters=filters) self._assertEqualsVolumeOrderResult([], filters={'metadata': 'not valid'}) self._assertEqualsVolumeOrderResult([], filters={'metadata': ['not', 'valid']}) # Verify that relationship property keys return nothing, these # exist on the Volumes model but are not columns filters = {'volume_type': 'bogus_type'} self._assertEqualsVolumeOrderResult([], filters=filters) def test_volume_get_all_filters_limit(self): vol1 = db.volume_create(self.ctxt, {'display_name': 'test1'}) vol2 = db.volume_create(self.ctxt, {'display_name': 'test2'}) vol3 = db.volume_create(self.ctxt, {'display_name': 'test2', 'metadata': {'key1': 'val1'}}) vol4 = db.volume_create(self.ctxt, {'display_name': 'test3', 'metadata': {'key1': 'val1', 'key2': 'val2'}}) vol5 = db.volume_create(self.ctxt, {'display_name': 'test3', 'metadata': {'key2': 'val2', 'key3': 'val3'}, 'host': 'host5'}) vols = [vol1, vol2, vol3, vol4, vol5] # Ensure we have 5 total instances self._assertEqualsVolumeOrderResult(vols) # No filters, test limit self._assertEqualsVolumeOrderResult(vols[:1], limit=1) self._assertEqualsVolumeOrderResult(vols[:4], limit=4) # Just the test2 volumes filters = {'display_name': 'test2'} self._assertEqualsVolumeOrderResult([vol2, vol3], filters=filters) self._assertEqualsVolumeOrderResult([vol2], limit=1, filters=filters) self._assertEqualsVolumeOrderResult([vol2, vol3], limit=2, filters=filters) self._assertEqualsVolumeOrderResult([vol2, vol3], limit=100, filters=filters) # metdata filters filters = {'metadata': {'key1': 'val1'}} self._assertEqualsVolumeOrderResult([vol3, vol4], filters=filters) self._assertEqualsVolumeOrderResult([vol3], limit=1, filters=filters) self._assertEqualsVolumeOrderResult([vol3, vol4], limit=10, filters=filters) filters = {'metadata': {'key1': 'val1', 'key2': 'val2'}} self._assertEqualsVolumeOrderResult([vol4], filters=filters) self._assertEqualsVolumeOrderResult([vol4], limit=1, filters=filters) # No match filters = {'metadata': {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}} self._assertEqualsVolumeOrderResult([], filters=filters) filters = {'metadata': {'key1': 'val1', 'key2': 'bogus'}} self._assertEqualsVolumeOrderResult([], filters=filters) filters = {'metadata': {'key1': 'val1', 'key2': 'val1'}} self._assertEqualsVolumeOrderResult([], filters=filters) # Combination filters = {'display_name': 'test2', 'metadata': {'key1': 'val1'}} self._assertEqualsVolumeOrderResult([vol3], filters=filters) self._assertEqualsVolumeOrderResult([vol3], limit=1, filters=filters) self._assertEqualsVolumeOrderResult([vol3], limit=100, filters=filters) filters = {'display_name': 'test3', 'metadata': {'key2': 'val2', 'key3': 'val3'}, 'host': 'host5'} self._assertEqualsVolumeOrderResult([vol5], filters=filters) self._assertEqualsVolumeOrderResult([vol5], limit=1, filters=filters) def test_volume_get_no_migration_targets(self): """Verifies the unique 'no_migration_targets'=True filter. This filter returns volumes with either a NULL 'migration_status' or a non-NULL value that does not start with 'target:'. """ vol1 = db.volume_create(self.ctxt, {'display_name': 'test1'}) vol2 = db.volume_create(self.ctxt, {'display_name': 'test2', 'migration_status': 'bogus'}) vol3 = db.volume_create(self.ctxt, {'display_name': 'test3', 'migration_status': 'btarget:'}) vol4 = db.volume_create(self.ctxt, {'display_name': 'test4', 'migration_status': 'target:'}) vols = [vol1, vol2, vol3, vol4] # Ensure we have 4 total instances self._assertEqualsVolumeOrderResult(vols) # Apply the unique filter filters = {'no_migration_targets': True} self._assertEqualsVolumeOrderResult([vol1, vol2, vol3], filters=filters) self._assertEqualsVolumeOrderResult([vol1, vol2], limit=2, filters=filters) filters = {'no_migration_targets': True, 'display_name': 'test4'} self._assertEqualsVolumeOrderResult([], filters=filters) def test_volume_get_iscsi_target_num(self): target = db.iscsi_target_create_safe(self.ctxt, {'volume_id': 42, 'target_num': 43}) self.assertEqual(43, db.volume_get_iscsi_target_num(self.ctxt, 42)) def test_volume_get_iscsi_target_num_nonexistent(self): self.assertRaises(exception.ISCSITargetNotFoundForVolume, db.volume_get_iscsi_target_num, self.ctxt, 42) def test_volume_update(self): volume = db.volume_create(self.ctxt, {'host': 'h1'}) db.volume_update(self.ctxt, volume['id'], {'host': 'h2', 'metadata': {'m1': 'v1'}}) volume = db.volume_get(self.ctxt, volume['id']) self.assertEqual('h2', volume['host']) def test_volume_update_nonexistent(self): self.assertRaises(exception.VolumeNotFound, db.volume_update, self.ctxt, 42, {}) def test_volume_metadata_get(self): metadata = {'a': 'b', 'c': 'd'} db.volume_create(self.ctxt, {'id': 1, 'metadata': metadata}) self.assertEqual(metadata, db.volume_metadata_get(self.ctxt, 1)) def test_volume_metadata_update(self): metadata1 = {'a': '1', 'c': '2'} metadata2 = {'a': '3', 'd': '5'} should_be = {'a': '3', 'c': '2', 'd': '5'} db.volume_create(self.ctxt, {'id': 1, 'metadata': metadata1}) db_meta = db.volume_metadata_update(self.ctxt, 1, metadata2, False) self.assertEqual(should_be, db_meta) def test_volume_metadata_update_delete(self): metadata1 = {'a': '1', 'c': '2'} metadata2 = {'a': '3', 'd': '4'} should_be = metadata2 db.volume_create(self.ctxt, {'id': 1, 'metadata': metadata1}) db_meta = db.volume_metadata_update(self.ctxt, 1, metadata2, True) self.assertEqual(should_be, db_meta) def test_volume_metadata_delete(self): metadata = {'a': 'b', 'c': 'd'} db.volume_create(self.ctxt, {'id': 1, 'metadata': metadata}) db.volume_metadata_delete(self.ctxt, 1, 'c') metadata.pop('c') self.assertEqual(metadata, db.volume_metadata_get(self.ctxt, 1)) class DBAPISnapshotTestCase(BaseTest): """Tests for cinder.db.api.snapshot_*.""" def test_snapshot_data_get_for_project(self): actual = db.snapshot_data_get_for_project(self.ctxt, 'project1') self.assertEqual(actual, (0, 0)) db.volume_create(self.ctxt, {'id': 1, 'project_id': 'project1', 'size': 42}) snapshot = db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1, 'project_id': 'project1', 'volume_size': 42}) actual = db.snapshot_data_get_for_project(self.ctxt, 'project1') self.assertEqual(actual, (1, 42)) def test_snapshot_get_all(self): db.volume_create(self.ctxt, {'id': 1}) snapshot = db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1}) self._assertEqualListsOfObjects([snapshot], db.snapshot_get_all(self.ctxt), ignored_keys=['metadata', 'volume']) def test_snapshot_metadata_get(self): metadata = {'a': 'b', 'c': 'd'} db.volume_create(self.ctxt, {'id': 1}) db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1, 'metadata': metadata}) self.assertEqual(metadata, db.snapshot_metadata_get(self.ctxt, 1)) def test_snapshot_metadata_update(self): metadata1 = {'a': '1', 'c': '2'} metadata2 = {'a': '3', 'd': '5'} should_be = {'a': '3', 'c': '2', 'd': '5'} db.volume_create(self.ctxt, {'id': 1}) db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1, 'metadata': metadata1}) db_meta = db.snapshot_metadata_update(self.ctxt, 1, metadata2, False) self.assertEqual(should_be, db_meta) def test_snapshot_metadata_update_delete(self): metadata1 = {'a': '1', 'c': '2'} metadata2 = {'a': '3', 'd': '5'} should_be = metadata2 db.volume_create(self.ctxt, {'id': 1}) db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1, 'metadata': metadata1}) db_meta = db.snapshot_metadata_update(self.ctxt, 1, metadata2, True) self.assertEqual(should_be, db_meta) def test_snapshot_metadata_delete(self): metadata = {'a': '1', 'c': '2'} should_be = {'a': '1'} db.volume_create(self.ctxt, {'id': 1}) db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1, 'metadata': metadata}) db.snapshot_metadata_delete(self.ctxt, 1, 'c') self.assertEqual(should_be, db.snapshot_metadata_get(self.ctxt, 1)) class DBAPIVolumeTypeTestCase(BaseTest): """Tests for the db.api.volume_type_* methods.""" def setUp(self): self.ctxt = context.get_admin_context() super(DBAPIVolumeTypeTestCase, self).setUp() def test_volume_type_create_exists(self): vt = db.volume_type_create(self.ctxt, {'name': 'n1'}) self.assertRaises(exception.VolumeTypeExists, db.volume_type_create, self.ctxt, {'name': 'n1'}) self.assertRaises(exception.VolumeTypeExists, db.volume_type_create, self.ctxt, {'name': 'n2', 'id': vt['id']}) class DBAPIEncryptionTestCase(BaseTest): """Tests for the db.api.volume_type_encryption_* methods.""" _ignored_keys = [ 'deleted', 'deleted_at', 'created_at', 'updated_at', ] def setUp(self): super(DBAPIEncryptionTestCase, self).setUp() self.created = \ [db.volume_type_encryption_create(self.ctxt, values['volume_type_id'], values) for values in self._get_values()] def _get_values(self, one=False, updated=False): base_values = { 'cipher': 'fake_cipher', 'key_size': 256, 'provider': 'fake_provider', 'volume_type_id': 'fake_type', 'control_location': 'front-end', } updated_values = { 'cipher': 'fake_updated_cipher', 'key_size': 512, 'provider': 'fake_updated_provider', 'volume_type_id': 'fake_type', 'control_location': 'front-end', } if one: return base_values if updated: values = updated_values else: values = base_values def compose(val, step): if isinstance(val, str): step = str(step) return val + step return [dict([(k, compose(v, i)) for k, v in values.items()]) for i in range(1, 4)] def test_volume_type_encryption_create(self): values = self._get_values() for i, encryption in enumerate(self.created): self._assertEqualObjects(values[i], encryption, self._ignored_keys) def test_volume_type_encryption_update(self): update_values = self._get_values(updated=True) self.updated = \ [db.volume_type_encryption_update(self.ctxt, values['volume_type_id'], values) for values in update_values] for i, encryption in enumerate(self.updated): self._assertEqualObjects(update_values[i], encryption, self._ignored_keys) def test_volume_type_encryption_get(self): for encryption in self.created: encryption_get = \ db.volume_type_encryption_get(self.ctxt, encryption['volume_type_id']) self._assertEqualObjects(encryption, encryption_get, self._ignored_keys) def test_volume_type_update_with_no_create(self): self.assertRaises(exception.VolumeTypeEncryptionNotFound, db.volume_type_encryption_update, self.ctxt, 'fake_no_create_type', {'cipher': 'fake_updated_cipher'}) def test_volume_type_encryption_delete(self): values = { 'cipher': 'fake_cipher', 'key_size': 256, 'provider': 'fake_provider', 'volume_type_id': 'fake_type', 'control_location': 'front-end', } encryption = db.volume_type_encryption_create(self.ctxt, 'fake_type', values) self._assertEqualObjects(values, encryption, self._ignored_keys) db.volume_type_encryption_delete(self.ctxt, encryption['volume_type_id']) encryption_get = \ db.volume_type_encryption_get(self.ctxt, encryption['volume_type_id']) self.assertIsNone(encryption_get) class DBAPIReservationTestCase(BaseTest): """Tests for db.api.reservation_* methods.""" def setUp(self): super(DBAPIReservationTestCase, self).setUp() self.values = { 'uuid': 'sample-uuid', 'project_id': 'project1', 'resource': 'resource', 'delta': 42, 'expire': (datetime.datetime.utcnow() + datetime.timedelta(days=1)), 'usage': {'id': 1} } def test_reservation_create(self): reservation = db.reservation_create(self.ctxt, **self.values) self._assertEqualObjects(self.values, reservation, ignored_keys=( 'deleted', 'updated_at', 'deleted_at', 'id', 'created_at', 'usage', 'usage_id')) self.assertEqual(reservation['usage_id'], self.values['usage']['id']) def test_reservation_get(self): reservation = db.reservation_create(self.ctxt, **self.values) reservation_db = db.reservation_get(self.ctxt, self.values['uuid']) self._assertEqualObjects(reservation, reservation_db) def test_reservation_get_nonexistent(self): self.assertRaises(exception.ReservationNotFound, db.reservation_get, self.ctxt, 'non-exitent-resevation-uuid') def test_reservation_commit(self): reservations = _quota_reserve(self.ctxt, 'project1') expected = {'project_id': 'project1', 'volumes': {'reserved': 1, 'in_use': 0}, 'gigabytes': {'reserved': 2, 'in_use': 0}, } self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'project1')) db.reservation_get(self.ctxt, reservations[0]) db.reservation_commit(self.ctxt, reservations, 'project1') self.assertRaises(exception.ReservationNotFound, db.reservation_get, self.ctxt, reservations[0]) expected = {'project_id': 'project1', 'volumes': {'reserved': 0, 'in_use': 1}, 'gigabytes': {'reserved': 0, 'in_use': 2}, } self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'project1')) def test_reservation_rollback(self): reservations = _quota_reserve(self.ctxt, 'project1') expected = {'project_id': 'project1', 'volumes': {'reserved': 1, 'in_use': 0}, 'gigabytes': {'reserved': 2, 'in_use': 0}, } self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'project1')) db.reservation_get(self.ctxt, reservations[0]) db.reservation_rollback(self.ctxt, reservations, 'project1') self.assertRaises(exception.ReservationNotFound, db.reservation_get, self.ctxt, reservations[0]) expected = {'project_id': 'project1', 'volumes': {'reserved': 0, 'in_use': 0}, 'gigabytes': {'reserved': 0, 'in_use': 0}, } self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'project1')) def test_reservation_get_all_by_project(self): reservations = _quota_reserve(self.ctxt, 'project1') r1 = db.reservation_get(self.ctxt, reservations[0]) r2 = db.reservation_get(self.ctxt, reservations[1]) expected = {'project_id': 'project1', r1['resource']: {r1['uuid']: r1['delta']}, r2['resource']: {r2['uuid']: r2['delta']}} self.assertEqual(expected, db.reservation_get_all_by_project( self.ctxt, 'project1')) def test_reservation_expire(self): self.values['expire'] = datetime.datetime.utcnow() + \ datetime.timedelta(days=1) reservations = _quota_reserve(self.ctxt, 'project1') db.reservation_expire(self.ctxt) expected = {'project_id': 'project1', 'gigabytes': {'reserved': 0, 'in_use': 0}, 'volumes': {'reserved': 0, 'in_use': 0}} self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'project1')) def test_reservation_destroy(self): reservations = _quota_reserve(self.ctxt, 'project1') r1 = db.reservation_get(self.ctxt, reservations[0]) db.reservation_destroy(self.ctxt, reservations[1]) expected = {'project_id': 'project1', r1['resource']: {r1['uuid']: r1['delta']}} self.assertEqual(expected, db.reservation_get_all_by_project( self.ctxt, 'project1')) class DBAPIQuotaClassTestCase(BaseTest): """Tests for db.api.quota_class_* methods.""" def setUp(self): super(DBAPIQuotaClassTestCase, self).setUp() self.sample_qc = db.quota_class_create(self.ctxt, 'test_qc', 'test_resource', 42) def test_quota_class_get(self): qc = db.quota_class_get(self.ctxt, 'test_qc', 'test_resource') self._assertEqualObjects(self.sample_qc, qc) def test_quota_class_destroy(self): db.quota_class_destroy(self.ctxt, 'test_qc', 'test_resource') self.assertRaises(exception.QuotaClassNotFound, db.quota_class_get, self.ctxt, 'test_qc', 'test_resource') def test_quota_class_get_not_found(self): self.assertRaises(exception.QuotaClassNotFound, db.quota_class_get, self.ctxt, 'nonexistent', 'nonexistent') def test_quota_class_get_all_by_name(self): sample1 = db.quota_class_create(self.ctxt, 'test2', 'res1', 43) sample2 = db.quota_class_create(self.ctxt, 'test2', 'res2', 44) self.assertEqual({'class_name': 'test_qc', 'test_resource': 42}, db.quota_class_get_all_by_name(self.ctxt, 'test_qc')) self.assertEqual({'class_name': 'test2', 'res1': 43, 'res2': 44}, db.quota_class_get_all_by_name(self.ctxt, 'test2')) def test_quota_class_update(self): db.quota_class_update(self.ctxt, 'test_qc', 'test_resource', 43) updated = db.quota_class_get(self.ctxt, 'test_qc', 'test_resource') self.assertEqual(43, updated['hard_limit']) def test_quota_class_destroy_all_by_name(self): sample1 = db.quota_class_create(self.ctxt, 'test2', 'res1', 43) sample2 = db.quota_class_create(self.ctxt, 'test2', 'res2', 44) db.quota_class_destroy_all_by_name(self.ctxt, 'test2') self.assertEqual({'class_name': 'test2'}, db.quota_class_get_all_by_name(self.ctxt, 'test2')) class DBAPIQuotaTestCase(BaseTest): """Tests for db.api.reservation_* methods.""" def test_quota_create(self): quota = db.quota_create(self.ctxt, 'project1', 'resource', 99) self.assertEqual(quota.resource, 'resource') self.assertEqual(quota.hard_limit, 99) self.assertEqual(quota.project_id, 'project1') def test_quota_get(self): quota = db.quota_create(self.ctxt, 'project1', 'resource', 99) quota_db = db.quota_get(self.ctxt, 'project1', 'resource') self._assertEqualObjects(quota, quota_db) def test_quota_get_all_by_project(self): for i in range(3): for j in range(3): db.quota_create(self.ctxt, 'proj%d' % i, 'res%d' % j, j) for i in range(3): quotas_db = db.quota_get_all_by_project(self.ctxt, 'proj%d' % i) self.assertEqual(quotas_db, {'project_id': 'proj%d' % i, 'res0': 0, 'res1': 1, 'res2': 2}) def test_quota_update(self): db.quota_create(self.ctxt, 'project1', 'resource1', 41) db.quota_update(self.ctxt, 'project1', 'resource1', 42) quota = db.quota_get(self.ctxt, 'project1', 'resource1') self.assertEqual(quota.hard_limit, 42) self.assertEqual(quota.resource, 'resource1') self.assertEqual(quota.project_id, 'project1') def test_quota_update_nonexistent(self): self.assertRaises(exception.ProjectQuotaNotFound, db.quota_update, self.ctxt, 'project1', 'resource1', 42) def test_quota_get_nonexistent(self): self.assertRaises(exception.ProjectQuotaNotFound, db.quota_get, self.ctxt, 'project1', 'resource1') def test_quota_reserve(self): reservations = _quota_reserve(self.ctxt, 'project1') self.assertEqual(len(reservations), 2) res_names = ['gigabytes', 'volumes'] for uuid in reservations: reservation = db.reservation_get(self.ctxt, uuid) self.assertIn(reservation.resource, res_names) res_names.remove(reservation.resource) def test_quota_destroy(self): db.quota_create(self.ctxt, 'project1', 'resource1', 41) self.assertIsNone(db.quota_destroy(self.ctxt, 'project1', 'resource1')) self.assertRaises(exception.ProjectQuotaNotFound, db.quota_get, self.ctxt, 'project1', 'resource1') def test_quota_destroy_all_by_project(self): reservations = _quota_reserve(self.ctxt, 'project1') db.quota_destroy_all_by_project(self.ctxt, 'project1') self.assertEqual(db.quota_get_all_by_project(self.ctxt, 'project1'), {'project_id': 'project1'}) self.assertEqual(db.quota_usage_get_all_by_project(self.ctxt, 'project1'), {'project_id': 'project1'}) for r in reservations: self.assertRaises(exception.ReservationNotFound, db.reservation_get, self.ctxt, r) def test_quota_usage_get_nonexistent(self): self.assertRaises(exception.QuotaUsageNotFound, db.quota_usage_get, self.ctxt, 'p1', 'nonexitent_resource') def test_quota_usage_get(self): reservations = _quota_reserve(self.ctxt, 'p1') quota_usage = db.quota_usage_get(self.ctxt, 'p1', 'gigabytes') expected = {'resource': 'gigabytes', 'project_id': 'p1', 'in_use': 0, 'reserved': 2, 'total': 2} for key, value in expected.iteritems(): self.assertEqual(value, quota_usage[key], key) def test_quota_usage_get_all_by_project(self): reservations = _quota_reserve(self.ctxt, 'p1') expected = {'project_id': 'p1', 'volumes': {'in_use': 0, 'reserved': 1}, 'gigabytes': {'in_use': 0, 'reserved': 2}} self.assertEqual(expected, db.quota_usage_get_all_by_project( self.ctxt, 'p1')) class DBAPIIscsiTargetTestCase(BaseTest): """Unit tests for cinder.db.api.iscsi_target_*.""" def _get_base_values(self): return {'target_num': 10, 'host': 'fake_host'} def test_iscsi_target_create_safe(self): target = db.iscsi_target_create_safe(self.ctxt, self._get_base_values()) self.assertTrue(target['id']) self.assertEqual(target['host'], 'fake_host') self.assertEqual(target['target_num'], 10) def test_iscsi_target_count_by_host(self): for i in range(3): values = self._get_base_values() values['target_num'] += i db.iscsi_target_create_safe(self.ctxt, values) self.assertEqual(db.iscsi_target_count_by_host(self.ctxt, 'fake_host'), 3) @test.testtools.skip("bug 1187367") def test_integrity_error(self): db.iscsi_target_create_safe(self.ctxt, self._get_base_values()) self.assertFalse(db.iscsi_target_create_safe(self.ctxt, self._get_base_values())) class DBAPIBackupTestCase(BaseTest): """Tests for db.api.backup_* methods.""" _ignored_keys = ['id', 'deleted', 'deleted_at', 'created_at', 'updated_at'] def setUp(self): super(DBAPIBackupTestCase, self).setUp() self.created = [db.backup_create(self.ctxt, values) for values in self._get_values()] def _get_values(self, one=False): base_values = { 'user_id': 'user', 'project_id': 'project', 'volume_id': 'volume', 'host': 'host', 'availability_zone': 'zone', 'display_name': 'display', 'display_description': 'description', 'container': 'container', 'status': 'status', 'fail_reason': 'test', 'service_metadata': 'metadata', 'service': 'service', 'size': 1000, 'object_count': 100} if one: return base_values def compose(val, step): if isinstance(val, str): step = str(step) return val + step return [dict([(k, compose(v, i)) for k, v in base_values.items()]) for i in range(1, 4)] def test_backup_create(self): values = self._get_values() for i, backup in enumerate(self.created): self.assertTrue(backup['id']) self._assertEqualObjects(values[i], backup, self._ignored_keys) def test_backup_get(self): for backup in self.created: backup_get = db.backup_get(self.ctxt, backup['id']) self._assertEqualObjects(backup, backup_get) def tests_backup_get_all(self): all_backups = db.backup_get_all(self.ctxt) self._assertEqualListsOfObjects(self.created, all_backups) def test_backup_get_all_by_host(self): byhost = db.backup_get_all_by_host(self.ctxt, self.created[1]['host']) self._assertEqualObjects(self.created[1], byhost[0]) def test_backup_get_all_by_project(self): byproj = db.backup_get_all_by_project(self.ctxt, self.created[1]['project_id']) self._assertEqualObjects(self.created[1], byproj[0]) def test_backup_update_nonexistent(self): self.assertRaises(exception.BackupNotFound, db.backup_update, self.ctxt, 'nonexistent', {}) def test_backup_update(self): updated_values = self._get_values(one=True) update_id = self.created[1]['id'] updated_backup = db.backup_update(self.ctxt, update_id, updated_values) self._assertEqualObjects(updated_values, updated_backup, self._ignored_keys) def test_backup_destroy(self): for backup in self.created: db.backup_destroy(self.ctxt, backup['id']) self.assertFalse(db.backup_get_all(self.ctxt)) def test_backup_not_found(self): self.assertRaises(exception.BackupNotFound, db.backup_get, self.ctxt, 'notinbase') cinder-2014.1.5/cinder/tests/test_volume_types_extra_specs.py0000664000567000056700000001210712540642606025530 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # Copyright 2011 University of Southern California # 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. """ Unit Tests for volume types extra specs code """ from cinder import context from cinder import db from cinder import test class VolumeTypeExtraSpecsTestCase(test.TestCase): def setUp(self): super(VolumeTypeExtraSpecsTestCase, self).setUp() self.context = context.get_admin_context() self.vol_type1 = dict(name="TEST: Regular volume test") self.vol_type1_specs = dict(vol_extra1="value1", vol_extra2="value2", vol_extra3=3) self.vol_type1['extra_specs'] = self.vol_type1_specs ref = db.volume_type_create(self.context, self.vol_type1) self.volume_type1_id = ref.id for k, v in self.vol_type1_specs.iteritems(): self.vol_type1_specs[k] = str(v) self.vol_type2_noextra = dict(name="TEST: Volume type without extra") ref = db.volume_type_create(self.context, self.vol_type2_noextra) self.vol_type2_id = ref.id def tearDown(self): # Remove the volume type from the database db.volume_type_destroy(context.get_admin_context(), self.vol_type1['id']) db.volume_type_destroy(context.get_admin_context(), self.vol_type2_noextra['id']) super(VolumeTypeExtraSpecsTestCase, self).tearDown() def test_volume_type_specs_get(self): expected_specs = self.vol_type1_specs.copy() actual_specs = db.volume_type_extra_specs_get( context.get_admin_context(), self.volume_type1_id) self.assertEqual(expected_specs, actual_specs) def test_volume_type_extra_specs_delete(self): expected_specs = self.vol_type1_specs.copy() del expected_specs['vol_extra2'] db.volume_type_extra_specs_delete(context.get_admin_context(), self.volume_type1_id, 'vol_extra2') actual_specs = db.volume_type_extra_specs_get( context.get_admin_context(), self.volume_type1_id) self.assertEqual(expected_specs, actual_specs) def test_volume_type_extra_specs_update(self): expected_specs = self.vol_type1_specs.copy() expected_specs['vol_extra3'] = "4" db.volume_type_extra_specs_update_or_create( context.get_admin_context(), self.volume_type1_id, dict(vol_extra3=4)) actual_specs = db.volume_type_extra_specs_get( context.get_admin_context(), self.volume_type1_id) self.assertEqual(expected_specs, actual_specs) def test_volume_type_extra_specs_create(self): expected_specs = self.vol_type1_specs.copy() expected_specs['vol_extra4'] = 'value4' expected_specs['vol_extra5'] = 'value5' db.volume_type_extra_specs_update_or_create( context.get_admin_context(), self.volume_type1_id, dict(vol_extra4="value4", vol_extra5="value5")) actual_specs = db.volume_type_extra_specs_get( context.get_admin_context(), self.volume_type1_id) self.assertEqual(expected_specs, actual_specs) def test_volume_type_get_with_extra_specs(self): volume_type = db.volume_type_get( context.get_admin_context(), self.volume_type1_id) self.assertEqual(volume_type['extra_specs'], self.vol_type1_specs) volume_type = db.volume_type_get( context.get_admin_context(), self.vol_type2_id) self.assertEqual(volume_type['extra_specs'], {}) def test_volume_type_get_by_name_with_extra_specs(self): volume_type = db.volume_type_get_by_name( context.get_admin_context(), self.vol_type1['name']) self.assertEqual(volume_type['extra_specs'], self.vol_type1_specs) volume_type = db.volume_type_get_by_name( context.get_admin_context(), self.vol_type2_noextra['name']) self.assertEqual(volume_type['extra_specs'], {}) def test_volume_type_get_all(self): expected_specs = self.vol_type1_specs.copy() types = db.volume_type_get_all(context.get_admin_context()) self.assertEqual( types[self.vol_type1['name']]['extra_specs'], expected_specs) self.assertEqual( types[self.vol_type2_noextra['name']]['extra_specs'], {}) cinder-2014.1.5/cinder/tests/test_volume_utils.py0000664000567000056700000001651112540642606023127 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Tests For miscellaneous util methods used with volume.""" import os import re from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder import test from cinder.tests import fake_notifier from cinder import utils from cinder.volume import utils as volume_utils LOG = logging.getLogger(__name__) CONF = cfg.CONF class UsageInfoTestCase(test.TestCase): QUEUE_NAME = 'cinder-volume' HOSTNAME = 'my-host.com' HOSTIP = '10.0.0.1' BACKEND = 'test_backend' MULTI_AT_BACKEND = 'test_b@ckend' def setUp(self): super(UsageInfoTestCase, self).setUp() self.flags(host='fake', notification_driver=["test"]) self.volume = importutils.import_object(CONF.volume_manager) self.user_id = 'fake' self.project_id = 'fake' self.snapshot_id = 'fake' self.volume_size = 0 self.context = context.RequestContext(self.user_id, self.project_id) def tearDown(self): super(UsageInfoTestCase, self).tearDown() fake_notifier.reset() def _create_volume(self, params={}): """Create a test volume.""" vol = {} vol['snapshot_id'] = self.snapshot_id vol['user_id'] = self.user_id vol['project_id'] = self.project_id vol['host'] = CONF.host vol['availability_zone'] = CONF.storage_availability_zone vol['status'] = "creating" vol['attach_status'] = "detached" vol['size'] = self.volume_size vol.update(params) return db.volume_create(self.context, vol)['id'] class LVMVolumeDriverTestCase(test.TestCase): def test_convert_blocksize_option(self): # Test valid volume_dd_blocksize bs, count = volume_utils._calculate_count(1024, '10M') self.assertEqual(bs, '10M') self.assertEqual(count, 103) bs, count = volume_utils._calculate_count(1024, '1xBBB') self.assertEqual(bs, '1M') self.assertEqual(count, 1024) # Test 'volume_dd_blocksize' with fraction bs, count = volume_utils._calculate_count(1024, '1.3M') self.assertEqual(bs, '1M') self.assertEqual(count, 1024) # Test zero-size 'volume_dd_blocksize' bs, count = volume_utils._calculate_count(1024, '0M') self.assertEqual(bs, '1M') self.assertEqual(count, 1024) # Test negative 'volume_dd_blocksize' bs, count = volume_utils._calculate_count(1024, '-1M') self.assertEqual(bs, '1M') self.assertEqual(count, 1024) # Test non-digital 'volume_dd_blocksize' bs, count = volume_utils._calculate_count(1024, 'ABM') self.assertEqual(bs, '1M') self.assertEqual(count, 1024) class ClearVolumeTestCase(test.TestCase): def test_clear_volume(self): CONF.volume_clear = 'zero' CONF.volume_clear_size = 0 CONF.volume_dd_blocksize = '1M' CONF.volume_clear_ionice = None self.mox.StubOutWithMock(volume_utils, 'copy_volume') volume_utils.copy_volume("/dev/zero", "volume_path", 1024, CONF.volume_dd_blocksize, sync=True, ionice=None, execute=utils.execute) self.mox.ReplayAll() volume_utils.clear_volume(1024, "volume_path") def test_clear_volume_zero(self): CONF.volume_clear = 'zero' CONF.volume_clear_size = 1 CONF.volume_clear_ionice = None self.mox.StubOutWithMock(volume_utils, 'copy_volume') volume_utils.copy_volume("/dev/zero", "volume_path", 1, CONF.volume_dd_blocksize, sync=True, ionice=None, execute=utils.execute) self.mox.ReplayAll() volume_utils.clear_volume(1024, "volume_path") def test_clear_volume_ionice(self): CONF.volume_clear = 'zero' CONF.volume_clear_size = 0 CONF.volume_dd_blocksize = '1M' CONF.volume_clear_ionice = '-c3' self.mox.StubOutWithMock(volume_utils, 'copy_volume') volume_utils.copy_volume("/dev/zero", "volume_path", 1024, CONF.volume_dd_blocksize, sync=True, ionice=CONF.volume_clear_ionice, execute=utils.execute) self.mox.ReplayAll() volume_utils.clear_volume(1024, "volume_path") def test_clear_volume_zero_ionice(self): CONF.volume_clear = 'zero' CONF.volume_clear_size = 1 CONF.volume_clear_ionice = '-c3' self.mox.StubOutWithMock(volume_utils, 'copy_volume') volume_utils.copy_volume("/dev/zero", "volume_path", 1, CONF.volume_dd_blocksize, sync=True, ionice=CONF.volume_clear_ionice, execute=utils.execute) self.mox.ReplayAll() volume_utils.clear_volume(1024, "volume_path") def test_clear_volume_shred(self): CONF.volume_clear = 'shred' CONF.volume_clear_size = 1 clear_cmd = ['shred', '-n3', '-s1MiB', "volume_path"] self.mox.StubOutWithMock(utils, "execute") utils.execute(*clear_cmd, run_as_root=True) self.mox.ReplayAll() volume_utils.clear_volume(1024, "volume_path") def test_clear_volume_shred_not_clear_size(self): CONF.volume_clear = 'shred' CONF.volume_clear_size = None clear_cmd = ['shred', '-n3', "volume_path"] self.mox.StubOutWithMock(utils, "execute") utils.execute(*clear_cmd, run_as_root=True) self.mox.ReplayAll() volume_utils.clear_volume(1024, "volume_path") def test_clear_volume_invalid_opt(self): CONF.volume_clear = 'non_existent_volume_clearer' CONF.volume_clear_size = 0 self.mox.StubOutWithMock(volume_utils, 'copy_volume') self.mox.ReplayAll() self.assertRaises(exception.InvalidConfigurationValue, volume_utils.clear_volume, 1024, "volume_path") def test_clear_volume_lvm_snap(self): self.stubs.Set(os.path, 'exists', lambda x: True) CONF.volume_clear = 'zero' CONF.volume_clear_size = 0 uuid = '00000000-0000-0000-0000-90ed32cdeed3' name = 'snapshot-' + uuid mangle_name = '_' + re.sub(r'-', r'--', name) vol_path = '/dev/mapper/cinder--volumes-%s-cow' % mangle_name def fake_copy_volume(srcstr, deststr, size, blocksize, **kwargs): self.assertEqual(deststr, vol_path) return True self.stubs.Set(volume_utils, 'copy_volume', fake_copy_volume) volume_utils.clear_volume(123, vol_path) cinder-2014.1.5/cinder/tests/test_nfs.py0000664000567000056700000005142512540642606021171 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2012 NetApp, Inc. # All Rights Reserved. # # 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. """Unit tests for the NFS driver module.""" import errno import os import mock import mox as mox_lib from mox import IgnoreArg from mox import IsA from mox import stubout from oslo.config import cfg from cinder import context from cinder import exception from cinder.image import image_utils from cinder import test from cinder import units from cinder.volume import configuration as conf from cinder.volume.drivers import nfs class DumbVolume(object): fields = {} def __setitem__(self, key, value): self.fields[key] = value def __getitem__(self, item): return self.fields[item] class RemoteFsDriverTestCase(test.TestCase): TEST_FILE_NAME = 'test.txt' def setUp(self): super(RemoteFsDriverTestCase, self).setUp() self._driver = nfs.RemoteFsDriver() self._mox = mox_lib.Mox() self.addCleanup(self._mox.UnsetStubs) def test_create_sparsed_file(self): (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('truncate', '-s', '1G', '/path', run_as_root=True).\ AndReturn("") mox.ReplayAll() drv._create_sparsed_file('/path', 1) mox.VerifyAll() def test_create_regular_file(self): (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('dd', 'if=/dev/zero', 'of=/path', 'bs=1M', 'count=1024', run_as_root=True) mox.ReplayAll() drv._create_regular_file('/path', 1) mox.VerifyAll() def test_create_qcow2_file(self): (mox, drv) = self._mox, self._driver file_size = 1 mox.StubOutWithMock(drv, '_execute') drv._execute('qemu-img', 'create', '-f', 'qcow2', '-o', 'preallocation=metadata', '/path', '%s' % str(file_size * units.GiB), run_as_root=True) mox.ReplayAll() drv._create_qcow2_file('/path', file_size) mox.VerifyAll() def test_set_rw_permissions_for_all(self): (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('chmod', 'ugo+rw', '/path', run_as_root=True) mox.ReplayAll() drv._set_rw_permissions_for_all('/path') mox.VerifyAll() class NfsDriverTestCase(test.TestCase): """Test case for NFS driver.""" TEST_NFS_EXPORT1 = 'nfs-host1:/export' TEST_NFS_EXPORT2 = 'nfs-host2:/export' TEST_NFS_EXPORT2_OPTIONS = '-o intr' TEST_SIZE_IN_GB = 1 TEST_MNT_POINT = '/mnt/nfs' TEST_MNT_POINT_BASE = '/mnt/test' TEST_LOCAL_PATH = '/mnt/nfs/volume-123' TEST_FILE_NAME = 'test.txt' TEST_SHARES_CONFIG_FILE = '/etc/cinder/test-shares.conf' TEST_NFS_EXPORT_SPACES = 'nfs-host3:/export this' TEST_MNT_POINT_SPACES = '/ 0 0 0 /foo' def setUp(self): super(NfsDriverTestCase, self).setUp() self._mox = mox_lib.Mox() self.stubs = stubout.StubOutForTesting() self.configuration = mox_lib.MockObject(conf.Configuration) self.configuration.append_config_values(mox_lib.IgnoreArg()) self.configuration.nfs_shares_config = None self.configuration.nfs_sparsed_volumes = True self.configuration.nfs_used_ratio = 0.95 self.configuration.nfs_oversub_ratio = 1.0 self.configuration.nfs_mount_point_base = self.TEST_MNT_POINT_BASE self.configuration.nfs_mount_options = None self.configuration.volume_dd_blocksize = '1M' self._driver = nfs.NfsDriver(configuration=self.configuration) self._driver.shares = {} self.addCleanup(self.stubs.UnsetAll) self.addCleanup(self._mox.UnsetStubs) def stub_out_not_replaying(self, obj, attr_name): attr_to_replace = getattr(obj, attr_name) stub = mox_lib.MockObject(attr_to_replace) self.stubs.Set(obj, attr_name, stub) def test_local_path(self): """local_path common use case.""" self.configuration.nfs_mount_point_base = self.TEST_MNT_POINT_BASE drv = self._driver volume = DumbVolume() volume['provider_location'] = self.TEST_NFS_EXPORT1 volume['name'] = 'volume-123' self.assertEqual( '/mnt/test/2f4f60214cf43c595666dd815f0360a4/volume-123', drv.local_path(volume)) def test_copy_image_to_volume(self): """resize_image common case usage.""" mox = self._mox drv = self._driver TEST_IMG_SOURCE = 'foo.img' volume = {'size': self.TEST_SIZE_IN_GB, 'name': TEST_IMG_SOURCE} def fake_local_path(volume): return volume['name'] self.stubs.Set(drv, 'local_path', fake_local_path) mox.StubOutWithMock(image_utils, 'fetch_to_raw') image_utils.fetch_to_raw(None, None, None, TEST_IMG_SOURCE, mox_lib.IgnoreArg(), size=self.TEST_SIZE_IN_GB) mox.StubOutWithMock(image_utils, 'resize_image') image_utils.resize_image(TEST_IMG_SOURCE, self.TEST_SIZE_IN_GB) mox.StubOutWithMock(image_utils, 'qemu_img_info') data = mox_lib.MockAnything() data.virtual_size = 1 * units.GiB image_utils.qemu_img_info(TEST_IMG_SOURCE).AndReturn(data) mox.ReplayAll() drv.copy_image_to_volume(None, volume, None, None) mox.VerifyAll() def test_get_mount_point_for_share(self): """_get_mount_point_for_share should calculate correct value.""" drv = self._driver self.configuration.nfs_mount_point_base = self.TEST_MNT_POINT_BASE self.assertEqual('/mnt/test/2f4f60214cf43c595666dd815f0360a4', drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1)) def test_get_capacity_info(self): """_get_capacity_info should calculate correct value.""" mox = self._mox drv = self._driver stat_total_size = 2620544 stat_avail = 2129984 stat_output = '1 %d %d' % (stat_total_size, stat_avail) du_used = 490560 du_output = '%d /mnt' % du_used mox.StubOutWithMock(drv, '_get_mount_point_for_share') drv._get_mount_point_for_share(self.TEST_NFS_EXPORT1).\ AndReturn(self.TEST_MNT_POINT) mox.StubOutWithMock(drv, '_execute') drv._execute('stat', '-f', '-c', '%S %b %a', self.TEST_MNT_POINT, run_as_root=True).AndReturn((stat_output, None)) drv._execute('du', '-sb', '--apparent-size', '--exclude', '*snapshot*', self.TEST_MNT_POINT, run_as_root=True).AndReturn((du_output, None)) mox.ReplayAll() self.assertEqual((stat_total_size, stat_avail, du_used), drv._get_capacity_info(self.TEST_NFS_EXPORT1)) mox.VerifyAll() def test_get_capacity_info_for_share_and_mount_point_with_spaces(self): """_get_capacity_info should calculate correct value.""" mox = self._mox drv = self._driver stat_total_size = 2620544 stat_avail = 2129984 stat_output = '1 %d %d' % (stat_total_size, stat_avail) du_used = 490560 du_output = '%d /mnt' % du_used mox.StubOutWithMock(drv, '_get_mount_point_for_share') drv._get_mount_point_for_share(self.TEST_NFS_EXPORT_SPACES).\ AndReturn(self.TEST_MNT_POINT_SPACES) mox.StubOutWithMock(drv, '_execute') drv._execute('stat', '-f', '-c', '%S %b %a', self.TEST_MNT_POINT_SPACES, run_as_root=True).AndReturn((stat_output, None)) drv._execute('du', '-sb', '--apparent-size', '--exclude', '*snapshot*', self.TEST_MNT_POINT_SPACES, run_as_root=True).AndReturn((du_output, None)) mox.ReplayAll() self.assertEqual((stat_total_size, stat_avail, du_used), drv._get_capacity_info(self.TEST_NFS_EXPORT_SPACES)) mox.VerifyAll() def test_load_shares_config(self): mox = self._mox drv = self._driver drv.configuration.nfs_shares_config = self.TEST_SHARES_CONFIG_FILE mox.StubOutWithMock(drv, '_read_config_file') config_data = [] config_data.append(self.TEST_NFS_EXPORT1) config_data.append('#' + self.TEST_NFS_EXPORT2) config_data.append('') config_data.append(self.TEST_NFS_EXPORT2 + ' ' + self.TEST_NFS_EXPORT2_OPTIONS) config_data.append('broken:share_format') drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) mox.ReplayAll() drv._load_shares_config(drv.configuration.nfs_shares_config) self.assertIn(self.TEST_NFS_EXPORT1, drv.shares) self.assertIn(self.TEST_NFS_EXPORT2, drv.shares) self.assertEqual(len(drv.shares), 2) self.assertEqual(drv.shares[self.TEST_NFS_EXPORT2], self.TEST_NFS_EXPORT2_OPTIONS) mox.VerifyAll() def test_ensure_shares_mounted_should_save_mounting_successfully(self): """_ensure_shares_mounted should save share if mounted with success.""" mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_read_config_file') config_data = [] config_data.append(self.TEST_NFS_EXPORT1) drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) mox.StubOutWithMock(drv, '_ensure_share_mounted') drv.configuration.nfs_shares_config = self.TEST_SHARES_CONFIG_FILE drv._ensure_share_mounted(self.TEST_NFS_EXPORT1) mox.ReplayAll() drv._ensure_shares_mounted() self.assertEqual(1, len(drv._mounted_shares)) self.assertEqual(self.TEST_NFS_EXPORT1, drv._mounted_shares[0]) mox.VerifyAll() def test_ensure_shares_mounted_should_not_save_mounting_with_error(self): """_ensure_shares_mounted should not save share if failed to mount.""" mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_read_config_file') config_data = [] config_data.append(self.TEST_NFS_EXPORT1) drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) mox.StubOutWithMock(drv, '_ensure_share_mounted') drv.configuration.nfs_shares_config = self.TEST_SHARES_CONFIG_FILE drv._ensure_share_mounted(self.TEST_NFS_EXPORT1).AndRaise(Exception()) mox.ReplayAll() drv._ensure_shares_mounted() self.assertEqual(0, len(drv._mounted_shares)) mox.VerifyAll() def test_setup_should_throw_error_if_shares_config_not_configured(self): """do_setup should throw error if shares config is not configured.""" drv = self._driver self.configuration.nfs_shares_config = self.TEST_SHARES_CONFIG_FILE self.assertRaises(exception.NfsException, drv.do_setup, IsA(context.RequestContext)) def test_setup_should_throw_error_if_oversub_ratio_less_than_zero(self): """do_setup should throw error if nfs_oversub_ratio is less than 0.""" drv = self._driver self.configuration.nfs_oversub_ratio = -1 self.assertRaises(exception.NfsException, drv.do_setup, IsA(context.RequestContext)) def test_setup_should_throw_error_if_used_ratio_less_than_zero(self): """do_setup should throw error if nfs_used_ratio is less than 0.""" drv = self._driver self.configuration.nfs_used_ratio = -1 self.assertRaises(exception.NfsException, drv.do_setup, IsA(context.RequestContext)) def test_setup_should_throw_error_if_used_ratio_greater_than_one(self): """do_setup should throw error if nfs_used_ratio is greater than 1.""" drv = self._driver self.configuration.nfs_used_ratio = 2 self.assertRaises(exception.NfsException, drv.do_setup, IsA(context.RequestContext)) def test_setup_should_throw_exception_if_nfs_client_is_not_installed(self): """do_setup should throw error if nfs client is not installed.""" mox = self._mox drv = self._driver self.configuration.nfs_shares_config = self.TEST_SHARES_CONFIG_FILE mox.StubOutWithMock(os.path, 'exists') os.path.exists(self.TEST_SHARES_CONFIG_FILE).AndReturn(True) mox.StubOutWithMock(drv, '_execute') drv._execute('mount.nfs', check_exit_code=False, run_as_root=True).\ AndRaise(OSError(errno.ENOENT, 'No such file or directory')) mox.ReplayAll() self.assertRaises(exception.NfsException, drv.do_setup, IsA(context.RequestContext)) mox.VerifyAll() def test_find_share_should_throw_error_if_there_is_no_mounted_shares(self): """_find_share should throw error if there is no mounted shares.""" drv = self._driver drv._mounted_shares = [] self.assertRaises(exception.NfsNoSharesMounted, drv._find_share, self.TEST_SIZE_IN_GB) def test_find_share(self): """_find_share simple use case.""" mox = self._mox drv = self._driver drv._mounted_shares = [self.TEST_NFS_EXPORT1, self.TEST_NFS_EXPORT2] mox.StubOutWithMock(drv, '_get_capacity_info') drv._get_capacity_info(self.TEST_NFS_EXPORT1).\ AndReturn((5 * units.GiB, 2 * units.GiB, 2 * units.GiB)) drv._get_capacity_info(self.TEST_NFS_EXPORT1).\ AndReturn((5 * units.GiB, 2 * units.GiB, 2 * units.GiB)) drv._get_capacity_info(self.TEST_NFS_EXPORT2).\ AndReturn((10 * units.GiB, 3 * units.GiB, 1 * units.GiB)) drv._get_capacity_info(self.TEST_NFS_EXPORT2).\ AndReturn((10 * units.GiB, 3 * units.GiB, 1 * units.GiB)) mox.ReplayAll() self.assertEqual(self.TEST_NFS_EXPORT2, drv._find_share(self.TEST_SIZE_IN_GB)) mox.VerifyAll() def test_find_share_should_throw_error_if_there_is_no_enough_place(self): """_find_share should throw error if there is no share to host vol.""" mox = self._mox drv = self._driver drv._mounted_shares = [self.TEST_NFS_EXPORT1, self.TEST_NFS_EXPORT2] mox.StubOutWithMock(drv, '_get_capacity_info') drv._get_capacity_info(self.TEST_NFS_EXPORT1).\ AndReturn((5 * units.GiB, 0, 5 * units.GiB)) drv._get_capacity_info(self.TEST_NFS_EXPORT2).\ AndReturn((10 * units.GiB, 0, 10 * units.GiB)) mox.ReplayAll() self.assertRaises(exception.NfsNoSuitableShareFound, drv._find_share, self.TEST_SIZE_IN_GB) mox.VerifyAll() def _simple_volume(self): volume = DumbVolume() volume['provider_location'] = '127.0.0.1:/mnt' volume['name'] = 'volume_name' volume['size'] = 10 return volume def test_create_sparsed_volume(self): mox = self._mox drv = self._driver volume = self._simple_volume() setattr(cfg.CONF, 'nfs_sparsed_volumes', True) mox.StubOutWithMock(drv, '_create_sparsed_file') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') drv._create_sparsed_file(IgnoreArg(), IgnoreArg()) drv._set_rw_permissions_for_all(IgnoreArg()) mox.ReplayAll() drv._do_create_volume(volume) mox.VerifyAll() delattr(cfg.CONF, 'nfs_sparsed_volumes') def test_create_nonsparsed_volume(self): mox = self._mox drv = self._driver self.configuration.nfs_sparsed_volumes = False volume = self._simple_volume() setattr(cfg.CONF, 'nfs_sparsed_volumes', False) mox.StubOutWithMock(drv, '_create_regular_file') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') drv._create_regular_file(IgnoreArg(), IgnoreArg()) drv._set_rw_permissions_for_all(IgnoreArg()) mox.ReplayAll() drv._do_create_volume(volume) mox.VerifyAll() delattr(cfg.CONF, 'nfs_sparsed_volumes') def test_create_volume_should_ensure_nfs_mounted(self): """create_volume ensures shares provided in config are mounted.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(nfs, 'LOG') self.stub_out_not_replaying(drv, '_find_share') self.stub_out_not_replaying(drv, '_do_create_volume') mox.StubOutWithMock(drv, '_ensure_shares_mounted') drv._ensure_shares_mounted() mox.ReplayAll() volume = DumbVolume() volume['size'] = self.TEST_SIZE_IN_GB drv.create_volume(volume) mox.VerifyAll() def test_create_volume_should_return_provider_location(self): """create_volume should return provider_location with found share.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(nfs, 'LOG') self.stub_out_not_replaying(drv, '_ensure_shares_mounted') self.stub_out_not_replaying(drv, '_do_create_volume') mox.StubOutWithMock(drv, '_find_share') drv._find_share(self.TEST_SIZE_IN_GB).AndReturn(self.TEST_NFS_EXPORT1) mox.ReplayAll() volume = DumbVolume() volume['size'] = self.TEST_SIZE_IN_GB result = drv.create_volume(volume) self.assertEqual(self.TEST_NFS_EXPORT1, result['provider_location']) mox.VerifyAll() def test_delete_volume(self): """delete_volume simple test case.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(drv, '_ensure_share_mounted') volume = DumbVolume() volume['name'] = 'volume-123' volume['provider_location'] = self.TEST_NFS_EXPORT1 mox.StubOutWithMock(drv, 'local_path') drv.local_path(volume).AndReturn(self.TEST_LOCAL_PATH) mox.StubOutWithMock(drv, '_execute') drv._execute('rm', '-f', self.TEST_LOCAL_PATH, run_as_root=True) mox.ReplayAll() drv.delete_volume(volume) mox.VerifyAll() def test_delete_should_ensure_share_mounted(self): """delete_volume should ensure that corresponding share is mounted.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(drv, '_execute') volume = DumbVolume() volume['name'] = 'volume-123' volume['provider_location'] = self.TEST_NFS_EXPORT1 mox.StubOutWithMock(drv, '_ensure_share_mounted') drv._ensure_share_mounted(self.TEST_NFS_EXPORT1) mox.ReplayAll() drv.delete_volume(volume) mox.VerifyAll() def test_delete_should_not_delete_if_provider_location_not_provided(self): """delete_volume shouldn't delete if provider_location missed.""" drv = self._driver self.stubs.Set(drv, '_ensure_share_mounted', mock.Mock()) self.stubs.Set(drv, 'local_path', mock.Mock()) volume = DumbVolume() volume['name'] = 'volume-123' volume['provider_location'] = None with mock.patch.object(drv, '_execute') as mock_execute: drv.delete_volume(volume) self.assertEqual(mock_execute.call_count, 0) def test_get_volume_stats(self): """get_volume_stats must fill the correct values.""" mox = self._mox drv = self._driver drv._mounted_shares = [self.TEST_NFS_EXPORT1, self.TEST_NFS_EXPORT2] mox.StubOutWithMock(drv, '_ensure_shares_mounted') mox.StubOutWithMock(drv, '_get_capacity_info') drv._ensure_shares_mounted() drv._get_capacity_info(self.TEST_NFS_EXPORT1).\ AndReturn((10 * units.GiB, 2 * units.GiB, 2 * units.GiB)) drv._get_capacity_info(self.TEST_NFS_EXPORT2).\ AndReturn((20 * units.GiB, 3 * units.GiB, 3 * units.GiB)) mox.ReplayAll() drv.get_volume_stats() self.assertEqual(drv._stats['total_capacity_gb'], 30.0) self.assertEqual(drv._stats['free_capacity_gb'], 5.0) mox.VerifyAll() cinder-2014.1.5/cinder/tests/image/0000775000567000056700000000000012540643114020040 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/image/fake.py0000664000567000056700000002076212540642606021334 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. """Implementation of a fake image service.""" import copy import datetime import uuid from cinder import exception import cinder.image.glance from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class _FakeImageService(object): """Mock (fake) image service for unit testing.""" def __init__(self): self.images = {} # NOTE(justinsb): The OpenStack API can't upload an image? # So, make sure we've got one.. timestamp = datetime.datetime(2011, 1, 1, 1, 2, 3) image1 = {'id': '155d900f-4e14-4e4c-a73d-069cbf4541e6', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'raw', 'disk_format': 'raw', 'properties': {'kernel_id': 'nokernel', 'ramdisk_id': 'nokernel', 'architecture': 'x86_64'}} image2 = {'id': 'a2459075-d96c-40d5-893e-577ff92e721c', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': 'ami', 'disk_format': 'ami', 'properties': {'kernel_id': 'nokernel', 'ramdisk_id': 'nokernel'}} image3 = {'id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': None, 'disk_format': None, 'properties': {'kernel_id': 'nokernel', 'ramdisk_id': 'nokernel'}} image4 = {'id': 'cedef40a-ed67-4d10-800e-17455edce175', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': 'ami', 'disk_format': 'ami', 'properties': {'kernel_id': 'nokernel', 'ramdisk_id': 'nokernel'}} image5 = {'id': 'c905cedb-7281-47e4-8a62-f26bc5fc4c77', 'name': 'fakeimage123456', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': True, 'container_format': 'ami', 'disk_format': 'ami', 'properties': { 'kernel_id': '155d900f-4e14-4e4c-a73d-069cbf4541e6', 'ramdisk_id': None}} image6 = {'id': 'a440c04b-79fa-479c-bed1-0b816eaec379', 'name': 'fakeimage6', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'ova', 'disk_format': 'vhd', 'properties': {'kernel_id': 'nokernel', 'ramdisk_id': 'nokernel', 'architecture': 'x86_64', 'auto_disk_config': 'False'}} image7 = {'id': '70a599e0-31e7-49b7-b260-868f441e862b', 'name': 'fakeimage7', 'created_at': timestamp, 'updated_at': timestamp, 'deleted_at': None, 'deleted': False, 'status': 'active', 'is_public': False, 'container_format': 'ova', 'disk_format': 'vhd', 'properties': {'kernel_id': 'nokernel', 'ramdisk_id': 'nokernel', 'architecture': 'x86_64', 'auto_disk_config': 'True'}} self.create(None, image1) self.create(None, image2) self.create(None, image3) self.create(None, image4) self.create(None, image5) self.create(None, image6) self.create(None, image7) self._imagedata = {} super(_FakeImageService, self).__init__() #TODO(bcwaldon): implement optional kwargs such as limit, sort_dir def detail(self, context, **kwargs): """Return list of detailed image information.""" return copy.deepcopy(self.images.values()) def download(self, context, image_id, data): self.show(context, image_id) data.write(self._imagedata.get(image_id, '')) def show(self, context, image_id): """Get data about specified image. Returns a dict containing image data for the given opaque image id. """ image = self.images.get(str(image_id)) if image: return copy.deepcopy(image) LOG.warn('Unable to find image id %s. Have images: %s', image_id, self.images) raise exception.ImageNotFound(image_id=image_id) def create(self, context, metadata, data=None): """Store the image data and return the new image id. :raises: Duplicate if the image already exist. """ image_id = str(metadata.get('id', uuid.uuid4())) metadata['id'] = image_id if image_id in self.images: raise exception.Duplicate() self.images[image_id] = copy.deepcopy(metadata) if data: self._imagedata[image_id] = data.read() return self.images[image_id] def update(self, context, image_id, metadata, data=None, purge_props=False): """Replace the contents of the given image with the new data. :raises: ImageNotFound if the image does not exist. """ if not self.images.get(image_id): raise exception.ImageNotFound(image_id=image_id) if purge_props: self.images[image_id] = copy.deepcopy(metadata) else: image = self.images[image_id] try: image['properties'].update(metadata.pop('properties')) except Exception: pass image.update(metadata) return self.images[image_id] def delete(self, context, image_id): """Delete the given image. :raises: ImageNotFound if the image does not exist. """ removed = self.images.pop(image_id, None) if not removed: raise exception.ImageNotFound(image_id=image_id) def get_location(self, context, image_id): if image_id in self.images: return 'fake_location' return None _fakeImageService = _FakeImageService() def FakeImageService(): return _fakeImageService def FakeImageService_reset(): global _fakeImageService _fakeImageService = _FakeImageService() def stub_out_image_service(stubs): def fake_get_remote_image_service(context, image_href): return (FakeImageService(), image_href) stubs.Set(cinder.image.glance, 'get_remote_image_service', lambda x, y: (FakeImageService(), y)) stubs.Set(cinder.image.glance, 'get_default_image_service', lambda: FakeImageService()) cinder-2014.1.5/cinder/tests/image/__init__.py0000664000567000056700000000134412540642606022160 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. # NOTE(vish): this forces the fixtures from tests/__init.py:setup() to work from cinder.tests import * cinder-2014.1.5/cinder/tests/image/test_glance.py0000664000567000056700000006314312540642606022716 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import datetime import glanceclient.exc import mock from oslo.config import cfg from cinder import context from cinder import exception from cinder.image import glance from cinder import test from cinder.tests.glance import stubs as glance_stubs CONF = cfg.CONF class NullWriter(object): """Used to test ImageService.get which takes a writer object.""" def write(self, *arg, **kwargs): pass class TestGlanceSerializer(test.TestCase): def test_serialize(self): metadata = {'name': 'image1', 'is_public': True, 'foo': 'bar', 'properties': { 'prop1': 'propvalue1', 'mappings': [ {'virtual': 'aaa', 'device': 'bbb'}, {'virtual': 'xxx', 'device': 'yyy'}], 'block_device_mapping': [ {'virtual_device': 'fake', 'device_name': '/dev/fake'}, {'virtual_device': 'ephemeral0', 'device_name': '/dev/fake0'}]}} converted_expected = { 'name': 'image1', 'is_public': True, 'foo': 'bar', 'properties': { 'prop1': 'propvalue1', 'mappings': '[{"device": "bbb", "virtual": "aaa"}, ' '{"device": "yyy", "virtual": "xxx"}]', 'block_device_mapping': '[{"virtual_device": "fake", "device_name": "/dev/fake"}, ' '{"virtual_device": "ephemeral0", ' '"device_name": "/dev/fake0"}]'}} converted = glance._convert_to_string(metadata) self.assertEqual(converted, converted_expected) self.assertEqual(glance._convert_from_string(converted), metadata) class TestGlanceImageService(test.TestCase): """Tests the Glance image service. At a high level, the translations involved are: 1. Glance -> ImageService - This is needed so we can support multple ImageServices (Glance, Local, etc) 2. ImageService -> API - This is needed so we can support multple APIs (OpenStack, EC2) """ NOW_GLANCE_OLD_FORMAT = "2010-10-11T10:30:22" NOW_GLANCE_FORMAT = "2010-10-11T10:30:22.000000" class tzinfo(datetime.tzinfo): @staticmethod def utcoffset(*args, **kwargs): return datetime.timedelta() NOW_DATETIME = datetime.datetime(2010, 10, 11, 10, 30, 22, tzinfo=tzinfo()) def setUp(self): super(TestGlanceImageService, self).setUp() #fakes.stub_out_compute_api_snapshot(self.stubs) client = glance_stubs.StubGlanceClient() self.service = self._create_image_service(client) self.context = context.RequestContext('fake', 'fake', auth_token=True) self.stubs.Set(glance.time, 'sleep', lambda s: None) def _create_image_service(self, client): def _fake_create_glance_client(context, netloc, use_ssl, version): return client self.stubs.Set(glance, '_create_glance_client', _fake_create_glance_client) client_wrapper = glance.GlanceClientWrapper('fake', 'fake_host', 9292) return glance.GlanceImageService(client=client_wrapper) @staticmethod def _make_fixture(**kwargs): fixture = {'name': None, 'properties': {}, 'status': None, 'is_public': None} fixture.update(kwargs) return fixture def _make_datetime_fixture(self): return self._make_fixture(created_at=self.NOW_GLANCE_FORMAT, updated_at=self.NOW_GLANCE_FORMAT, deleted_at=self.NOW_GLANCE_FORMAT) def test_create_with_instance_id(self): """Ensure instance_id is persisted as an image-property.""" fixture = {'name': 'test image', 'is_public': False, 'properties': {'instance_id': '42', 'user_id': 'fake'}} image_id = self.service.create(self.context, fixture)['id'] image_meta = self.service.show(self.context, image_id) expected = { 'id': image_id, 'name': 'test image', 'is_public': False, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {'instance_id': '42', 'user_id': 'fake'}, 'owner': None, } self.assertDictMatch(image_meta, expected) image_metas = self.service.detail(self.context) self.assertDictMatch(image_metas[0], expected) def test_create_without_instance_id(self): """Test Creating images without instance_id. Ensure we can create an image without having to specify an instance_id. Public images are an example of an image not tied to an instance. """ fixture = {'name': 'test image', 'is_public': False} image_id = self.service.create(self.context, fixture)['id'] expected = { 'id': image_id, 'name': 'test image', 'is_public': False, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {}, 'owner': None, } actual = self.service.show(self.context, image_id) self.assertDictMatch(actual, expected) def test_create(self): fixture = self._make_fixture(name='test image') num_images = len(self.service.detail(self.context)) image_id = self.service.create(self.context, fixture)['id'] self.assertIsNotNone(image_id) self.assertEqual(num_images + 1, len(self.service.detail(self.context))) def test_create_and_show_non_existing_image(self): fixture = self._make_fixture(name='test image') image_id = self.service.create(self.context, fixture)['id'] self.assertIsNotNone(image_id) self.assertRaises(exception.ImageNotFound, self.service.show, self.context, 'bad image id') def test_detail_private_image(self): fixture = self._make_fixture(name='test image') fixture['is_public'] = False properties = {'owner_id': 'proj1'} fixture['properties'] = properties self.service.create(self.context, fixture)['id'] proj = self.context.project_id self.context.project_id = 'proj1' image_metas = self.service.detail(self.context) self.context.project_id = proj self.assertEqual(1, len(image_metas)) self.assertEqual(image_metas[0]['name'], 'test image') self.assertEqual(image_metas[0]['is_public'], False) def test_detail_marker(self): fixtures = [] ids = [] for i in range(10): fixture = self._make_fixture(name='TestImage %d' % (i)) fixtures.append(fixture) ids.append(self.service.create(self.context, fixture)['id']) image_metas = self.service.detail(self.context, marker=ids[1]) self.assertEqual(len(image_metas), 8) i = 2 for meta in image_metas: expected = { 'id': ids[i], 'status': None, 'is_public': None, 'name': 'TestImage %d' % (i), 'properties': {}, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'owner': None, } self.assertDictMatch(meta, expected) i = i + 1 def test_detail_limit(self): fixtures = [] ids = [] for i in range(10): fixture = self._make_fixture(name='TestImage %d' % (i)) fixtures.append(fixture) ids.append(self.service.create(self.context, fixture)['id']) image_metas = self.service.detail(self.context, limit=5) self.assertEqual(len(image_metas), 5) def test_detail_default_limit(self): fixtures = [] ids = [] for i in range(10): fixture = self._make_fixture(name='TestImage %d' % (i)) fixtures.append(fixture) ids.append(self.service.create(self.context, fixture)['id']) image_metas = self.service.detail(self.context) for i, meta in enumerate(image_metas): self.assertEqual(meta['name'], 'TestImage %d' % (i)) def test_detail_marker_and_limit(self): fixtures = [] ids = [] for i in range(10): fixture = self._make_fixture(name='TestImage %d' % (i)) fixtures.append(fixture) ids.append(self.service.create(self.context, fixture)['id']) image_metas = self.service.detail(self.context, marker=ids[3], limit=5) self.assertEqual(len(image_metas), 5) i = 4 for meta in image_metas: expected = { 'id': ids[i], 'status': None, 'is_public': None, 'name': 'TestImage %d' % (i), 'properties': {}, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'owner': None, } self.assertDictMatch(meta, expected) i = i + 1 def test_detail_invalid_marker(self): fixtures = [] ids = [] for i in range(10): fixture = self._make_fixture(name='TestImage %d' % (i)) fixtures.append(fixture) ids.append(self.service.create(self.context, fixture)['id']) self.assertRaises(exception.Invalid, self.service.detail, self.context, marker='invalidmarker') def test_update(self): fixture = self._make_fixture(name='test image') image = self.service.create(self.context, fixture) image_id = image['id'] fixture['name'] = 'new image name' self.service.update(self.context, image_id, fixture) new_image_data = self.service.show(self.context, image_id) self.assertEqual('new image name', new_image_data['name']) def test_delete(self): fixture1 = self._make_fixture(name='test image 1') fixture2 = self._make_fixture(name='test image 2') fixtures = [fixture1, fixture2] num_images = len(self.service.detail(self.context)) self.assertEqual(0, num_images) ids = [] for fixture in fixtures: new_id = self.service.create(self.context, fixture)['id'] ids.append(new_id) num_images = len(self.service.detail(self.context)) self.assertEqual(2, num_images) self.service.delete(self.context, ids[0]) num_images = len(self.service.detail(self.context)) self.assertEqual(1, num_images) def test_show_passes_through_to_client(self): fixture = self._make_fixture(name='image1', is_public=True) image_id = self.service.create(self.context, fixture)['id'] image_meta = self.service.show(self.context, image_id) expected = { 'id': image_id, 'name': 'image1', 'is_public': True, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {}, 'owner': None, } self.assertEqual(image_meta, expected) def test_show_raises_when_no_authtoken_in_the_context(self): fixture = self._make_fixture(name='image1', is_public=False, properties={'one': 'two'}) image_id = self.service.create(self.context, fixture)['id'] self.context.auth_token = False self.assertRaises(exception.ImageNotFound, self.service.show, self.context, image_id) def test_detail_passes_through_to_client(self): fixture = self._make_fixture(name='image10', is_public=True) image_id = self.service.create(self.context, fixture)['id'] image_metas = self.service.detail(self.context) expected = [ { 'id': image_id, 'name': 'image10', 'is_public': True, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {}, 'owner': None, }, ] self.assertEqual(image_metas, expected) def test_show_makes_datetimes(self): fixture = self._make_datetime_fixture() image_id = self.service.create(self.context, fixture)['id'] image_meta = self.service.show(self.context, image_id) self.assertEqual(image_meta['created_at'], self.NOW_DATETIME) self.assertEqual(image_meta['updated_at'], self.NOW_DATETIME) def test_detail_makes_datetimes(self): fixture = self._make_datetime_fixture() self.service.create(self.context, fixture) image_meta = self.service.detail(self.context)[0] self.assertEqual(image_meta['created_at'], self.NOW_DATETIME) self.assertEqual(image_meta['updated_at'], self.NOW_DATETIME) def test_download_with_retries(self): tries = [0] class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that fails the first time, then succeeds.""" def get(self, image_id): if tries[0] == 0: tries[0] = 1 raise glanceclient.exc.ServiceUnavailable('') else: return {} client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter writer = NullWriter() # When retries are disabled, we should get an exception self.flags(glance_num_retries=0) self.assertRaises(exception.GlanceConnectionFailed, service.download, self.context, image_id, writer) # Now lets enable retries. No exception should happen now. tries = [0] self.flags(glance_num_retries=1) service.download(self.context, image_id, writer) def test_client_forbidden_converts_to_imagenotauthed(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a Forbidden exception.""" def get(self, image_id): raise glanceclient.exc.Forbidden(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter writer = NullWriter() self.assertRaises(exception.ImageNotAuthorized, service.download, self.context, image_id, writer) def test_client_httpforbidden_converts_to_imagenotauthed(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a HTTPForbidden exception.""" def get(self, image_id): raise glanceclient.exc.HTTPForbidden(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter writer = NullWriter() self.assertRaises(exception.ImageNotAuthorized, service.download, self.context, image_id, writer) def test_client_notfound_converts_to_imagenotfound(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a NotFound exception.""" def get(self, image_id): raise glanceclient.exc.NotFound(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter writer = NullWriter() self.assertRaises(exception.ImageNotFound, service.download, self.context, image_id, writer) def test_client_httpnotfound_converts_to_imagenotfound(self): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that raises a HTTPNotFound exception.""" def get(self, image_id): raise glanceclient.exc.HTTPNotFound(image_id) client = MyGlanceStubClient() service = self._create_image_service(client) image_id = 1 # doesn't matter writer = NullWriter() self.assertRaises(exception.ImageNotFound, service.download, self.context, image_id, writer) def test_glance_client_image_id(self): fixture = self._make_fixture(name='test image') image_id = self.service.create(self.context, fixture)['id'] (service, same_id) = glance.get_remote_image_service(self.context, image_id) self.assertEqual(same_id, image_id) def test_glance_client_image_ref(self): fixture = self._make_fixture(name='test image') image_id = self.service.create(self.context, fixture)['id'] image_url = 'http://something-less-likely/%s' % image_id (service, same_id) = glance.get_remote_image_service(self.context, image_url) self.assertEqual(same_id, image_id) self.assertEqual(service._client.netloc, 'something-less-likely') for ipv6_url in ('[::1]', '::1', '[::1]:444'): image_url = 'http://%s/%s' % (ipv6_url, image_id) (service, same_id) = glance.get_remote_image_service(self.context, image_url) self.assertEqual(same_id, image_id) self.assertEqual(service._client.netloc, ipv6_url) def test_extracting_missing_attributes(self): """Verify behavior from glance objects that are missing attributes This fakes the image class and is missing the checksum and name attribute as the client would return if they're not set in the database. Regression test for bug #1308058. """ class MyFakeGlanceImage(glance_stubs.FakeImage): def __init__(self, metadata): IMAGE_ATTRIBUTES = ['size', 'disk_format', 'owner', 'container_format', 'id', 'created_at', 'updated_at', 'deleted', 'status', 'min_disk', 'min_ram', 'is_public'] raw = dict.fromkeys(IMAGE_ATTRIBUTES) raw.update(metadata) self.__dict__['raw'] = raw metadata = { 'id': 1, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, } image = MyFakeGlanceImage(metadata) actual = glance._extract_attributes(image) expected = { 'id': 1, 'name': None, 'is_public': None, 'size': None, 'min_disk': None, 'min_ram': None, 'disk_format': None, 'container_format': None, 'checksum': None, 'created_at': self.NOW_DATETIME, 'updated_at': self.NOW_DATETIME, 'deleted_at': None, 'deleted': None, 'status': None, 'properties': {}, 'owner': None, } self.assertEqual(actual, expected) class TestGlanceClientVersion(test.TestCase): """Tests the version of the glance client generated.""" @mock.patch('cinder.image.glance.glanceclient.Client') def test_glance_version_by_flag(self, _mockglanceclient): """Test glance version set by flag is honoured.""" glance.GlanceClientWrapper('fake', 'fake_host', 9292) self.assertEqual('1', _mockglanceclient.call_args[0][0]) self.flags(glance_api_version=2) glance.GlanceClientWrapper('fake', 'fake_host', 9292) self.assertEqual('2', _mockglanceclient.call_args[0][0]) CONF.reset() @mock.patch('cinder.image.glance.glanceclient.Client') def test_glance_version_by_arg(self, _mockglanceclient): """Test glance version set by arg to GlanceClientWrapper""" glance.GlanceClientWrapper('fake', 'fake_host', 9292, version=1) self.assertEqual('1', _mockglanceclient.call_args[0][0]) glance.GlanceClientWrapper('fake', 'fake_host', 9292, version=2) self.assertEqual('2', _mockglanceclient.call_args[0][0]) def _create_failing_glance_client(info): class MyGlanceStubClient(glance_stubs.StubGlanceClient): """A client that fails the first time, then succeeds.""" def get(self, image_id): info['num_calls'] += 1 if info['num_calls'] == 1: raise glanceclient.exc.ServiceUnavailable('') return {} return MyGlanceStubClient() class TestGlanceImageServiceClient(test.TestCase): def setUp(self): super(TestGlanceImageServiceClient, self).setUp() self.context = context.RequestContext('fake', 'fake', auth_token=True) self.stubs.Set(glance.time, 'sleep', lambda s: None) def test_create_glance_client(self): self.flags(auth_strategy='keystone') self.flags(glance_request_timeout=60) class MyGlanceStubClient(object): def __init__(inst, version, *args, **kwargs): self.assertEqual('1', version) self.assertEqual("http://fake_host:9292", args[0]) self.assertEqual(True, kwargs['token']) self.assertEqual(60, kwargs['timeout']) self.stubs.Set(glance.glanceclient, 'Client', MyGlanceStubClient) client = glance._create_glance_client(self.context, 'fake_host:9292', False) self.assertIsInstance(client, MyGlanceStubClient) def test_create_glance_client_auth_strategy_is_not_keystone(self): self.flags(auth_strategy='noauth') self.flags(glance_request_timeout=60) class MyGlanceStubClient(object): def __init__(inst, version, *args, **kwargs): self.assertEqual('1', version) self.assertEqual('http://fake_host:9292', args[0]) self.assertNotIn('token', kwargs) self.assertEqual(60, kwargs['timeout']) self.stubs.Set(glance.glanceclient, 'Client', MyGlanceStubClient) client = glance._create_glance_client(self.context, 'fake_host:9292', False) self.assertIsInstance(client, MyGlanceStubClient) def test_create_glance_client_glance_request_default_timeout(self): self.flags(auth_strategy='keystone') self.flags(glance_request_timeout=None) class MyGlanceStubClient(object): def __init__(inst, version, *args, **kwargs): self.assertEqual("1", version) self.assertEqual("http://fake_host:9292", args[0]) self.assertEqual(True, kwargs['token']) self.assertNotIn('timeout', kwargs) self.stubs.Set(glance.glanceclient, 'Client', MyGlanceStubClient) client = glance._create_glance_client(self.context, 'fake_host:9292', False) self.assertIsInstance(client, MyGlanceStubClient) def tearDown(self): self.stubs.UnsetAll() super(TestGlanceImageServiceClient, self).tearDown() cinder-2014.1.5/cinder/tests/test_coraid.py0000664000567000056700000007563512540642606021655 0ustar jenkinsjenkins00000000000000 # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. import math import mox from oslo.config import cfg from cinder.brick.initiator import connector from cinder import exception from cinder.image import image_utils from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging from cinder import test from cinder import units from cinder import utils from cinder.volume import configuration as conf from cinder.volume.drivers import coraid from cinder.volume import volume_types CONF = cfg.CONF LOG = logging.getLogger(__name__) def to_coraid_kb(gb): return math.ceil(float(gb) * units.GiB / 1000) def coraid_volume_size(gb): return '{0}K'.format(to_coraid_kb(gb)) fake_esm_ipaddress = "192.168.0.1" fake_esm_username = "darmok" fake_esm_group = "tanagra" fake_esm_group_id = 1 fake_esm_password = "12345678" fake_coraid_repository_key = 'repository_key' fake_volume_name = "volume-12345678-1234-1234-1234-1234567890ab" fake_clone_name = "volume-ffffffff-1234-1234-1234-1234567890ab" fake_volume_size = 10 fake_repository_name = "A-B:C:D" fake_pool_name = "FakePool" fake_aoetarget = 4081 fake_shelf = 16 fake_lun = 241 fake_str_aoetarget = str(fake_aoetarget) fake_lun_addr = {"shelf": fake_shelf, "lun": fake_lun} fake_volume_type = {'id': 1} fake_volume = {"id": fake_volume_name, "name": fake_volume_name, "size": fake_volume_size, "volume_type": fake_volume_type} fake_clone_volume = {"name": fake_clone_name, "size": fake_volume_size, "volume_type": fake_volume_type} fake_big_clone_volume = {"name": fake_clone_name, "size": fake_volume_size + 1, "volume_type": fake_volume_type} fake_volume_info = {"pool": fake_pool_name, "repo": fake_repository_name, "vsxidx": fake_aoetarget, "index": fake_lun, "shelf": fake_shelf} fake_lun_info = {"shelf": fake_shelf, "lun": fake_lun} fake_snapshot_name = "snapshot-12345678-8888-8888-1234-1234567890ab" fake_snapshot_id = "12345678-8888-8888-1234-1234567890ab" fake_volume_id = "12345678-1234-1234-1234-1234567890ab" fake_snapshot = {"id": fake_snapshot_id, "name": fake_snapshot_name, "volume_id": fake_volume_id, "volume_name": fake_volume_name, "volume_size": int(fake_volume_size) - 1, "volume": fake_volume} fake_configure_data = [{"addr": "cms", "data": "FAKE"}] fake_esm_fetch = [[ {"command": "super_fake_command"}, {"reply": [ {"lv": {"containingPool": fake_pool_name, "lunIndex": fake_aoetarget, "name": fake_volume_name, "lvStatus": {"exportedLun": {"lun": fake_lun, "shelf": fake_shelf}} }, "repoName": fake_repository_name}]}]] fake_esm_fetch_no_volume = [[ {"command": "super_fake_command"}, {"reply": []}]] fake_esm_success = {"category": "provider", "tracking": False, "configState": "completedSuccessfully", "heldPending": False, "metaCROp": "noAction", "message": None} fake_group_fullpath = "admin group:%s" % (fake_esm_group) fake_group_id = 4 fake_login_reply = {"values": [ {"fullPath": fake_group_fullpath, "groupId": fake_group_id}], "message": "", "state": "adminSucceed", "metaCROp": "noAction"} fake_group_fail_fullpath = "fail group:%s" % (fake_esm_group) fake_group_fail_id = 5 fake_login_reply_group_fail = {"values": [ {"fullPath": fake_group_fail_fullpath, "groupId": fake_group_fail_id}], "message": "", "state": "adminSucceed", "metaCROp": "noAction"} def compare(a, b): if type(a) != type(b): return False if type(a) == list or type(a) == tuple: if len(a) != len(b): return False return all(map(lambda t: compare(t[0], t[1]), zip(a, b))) elif type(a) == dict: if len(a) != len(b): return False for k, v in a.items(): if not compare(v, b[k]): return False return True else: return a == b def pack_data(request): request['data'] = jsonutils.dumps(request['data']) class FakeRpcBadRequest(Exception): pass class FakeRpcIsNotCalled(Exception): def __init__(self, handle, url_params, data): self.handle = handle self.url_params = url_params self.data = data def __str__(self): return 'Fake Rpc handle for {0}/{1}/{2} not found'.format( self.handle, self.url_params, self.data) class FakeRpcHandle(object): def __init__(self, handle, url_params, data, result): self.handle = handle self.url_params = url_params self.data = data self.result = result self._is_called = False def set_called(self): self._is_called = True def __call__(self, handle, url_params, data, allow_empty_response=False): if handle != self.handle: raise FakeRpcBadRequest( 'Unexpected handle name {0}. Expected {1}.' .format(handle, self.handle)) if not compare(url_params, self.url_params): raise FakeRpcBadRequest('Unexpected url params: {0} / {1}' .format(url_params, self.url_params)) if not compare(data, self.data): raise FakeRpcBadRequest('Unexpected data: {0}/{1}' .format(data, self.data)) if callable(self.result): return self.result() else: return self.result class FakeRpc(object): def __init__(self): self._handles = [] def handle(self, handle, url_params, data, result): self._handles.append(FakeRpcHandle(handle, url_params, data, result)) def __call__(self, handle_name, url_params, data, allow_empty_response=False): for handle in self._handles: if (handle.handle == handle_name and compare(handle.url_params, url_params) and compare(handle.data, handle.data)): handle.set_called() return handle(handle_name, url_params, data, allow_empty_response) raise FakeRpcIsNotCalled(handle_name, url_params, data) class CoraidDriverTestCase(test.TestCase): def setUp(self): super(CoraidDriverTestCase, self).setUp() self.mox = mox.Mox() configuration = mox.MockObject(conf.Configuration) configuration.append_config_values(mox.IgnoreArg()) configuration.coraid_esm_address = fake_esm_ipaddress configuration.coraid_user = fake_esm_username configuration.coraid_group = fake_esm_group configuration.coraid_password = fake_esm_password configuration.volume_name_template = "volume-%s" configuration.snapshot_name_template = "snapshot-%s" configuration.coraid_repository_key = fake_coraid_repository_key configuration.use_multipath_for_image_xfer = False configuration.num_volume_device_scan_tries = 3 configuration.volume_dd_blocksize = '1M' self.fake_rpc = FakeRpc() self.stubs.Set(coraid.CoraidRESTClient, 'rpc', self.fake_rpc) self.driver = coraid.CoraidDriver(configuration=configuration) self.driver.do_setup({}) def tearDown(self): self.mox.UnsetStubs() super(CoraidDriverTestCase, self).tearDown() def mock_volume_types(self, repositories=[]): if not repositories: repositories = [fake_repository_name] self.mox.StubOutWithMock(volume_types, 'get_volume_type_extra_specs') for repository in repositories: (volume_types .get_volume_type_extra_specs(fake_volume_type['id'], fake_coraid_repository_key) .AndReturn(' {0}'.format(repository))) class CoraidDriverLoginSuccessTestCase(CoraidDriverTestCase): def setUp(self): super(CoraidDriverLoginSuccessTestCase, self).setUp() login_results = {'state': 'adminSucceed', 'values': [ {'fullPath': 'admin group:{0}'.format(fake_esm_group), 'groupId': fake_esm_group_id }]} self.fake_rpc.handle('admin', {'op': 'login', 'username': fake_esm_username, 'password': fake_esm_password}, 'Login', login_results) self.fake_rpc.handle('admin', {'op': 'setRbacGroup', 'groupId': fake_esm_group_id}, 'Group', {'state': 'adminSucceed'}) class CoraidDriverApplianceTestCase(CoraidDriverLoginSuccessTestCase): def test_resize_volume(self): new_volume_size = int(fake_volume_size) + 1 fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_volume_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) reply = {'configState': 'completedSuccessfully'} resize_volume_request = {'addr': 'cms', 'data': { 'lvName': fake_volume_name, 'newLvName': fake_volume_name + '-resize', 'size': coraid_volume_size(new_volume_size), 'repoName': fake_repository_name}, 'op': 'orchStrLunMods', 'args': 'resize'} pack_data(resize_volume_request) self.fake_rpc.handle('configure', {}, [resize_volume_request], reply) real_reply = self.driver.appliance.resize_volume(fake_volume_name, new_volume_size) self.assertEqual(reply['configState'], real_reply['configState']) class CoraidDriverIntegrationalTestCase(CoraidDriverLoginSuccessTestCase): def setUp(self): super(CoraidDriverIntegrationalTestCase, self).setUp() self.appliance = self.driver.appliance # NOTE(nsobolevsky) prevent re-creation esm appliance self.stubs.Set(coraid.CoraidDriver, 'appliance', self.appliance) def test_create_volume(self): self.mock_volume_types() create_volume_request = {'addr': 'cms', 'data': { 'servers': [], 'size': coraid_volume_size(fake_volume_size), 'repoName': fake_repository_name, 'lvName': fake_volume_name}, 'op': 'orchStrLun', 'args': 'add'} pack_data(create_volume_request) self.fake_rpc.handle('configure', {}, [create_volume_request], {'configState': 'completedSuccessfully', 'firstParam': 'fake_first_param'}) self.mox.ReplayAll() self.driver.create_volume(fake_volume) self.mox.VerifyAll() def test_delete_volume(self): delete_volume_request = {'addr': 'cms', 'data': { 'repoName': fake_repository_name, 'lvName': fake_volume_name}, 'op': 'orchStrLun/verified', 'args': 'delete'} pack_data(delete_volume_request) self.fake_rpc.handle('configure', {}, [delete_volume_request], {'configState': 'completedSuccessfully'}) self.fake_rpc.handle('fetch', {'orchStrRepo': '', 'shelf': 'cms', 'lv': fake_volume_name}, None, fake_esm_fetch) self.mox.ReplayAll() self.driver.delete_volume(fake_volume) self.mox.VerifyAll() def test_ping_ok(self): self.fake_rpc.handle('fetch', {}, None, '') self.mox.ReplayAll() self.driver.appliance.ping() self.mox.VerifyAll() def test_ping_failed(self): def rpc(handle, url_params, data, allow_empty_response=True): raise test.TestingException("Some exception") self.stubs.Set(self.driver.appliance, 'rpc', rpc) self.mox.ReplayAll() self.assertRaises(exception.CoraidESMNotAvailable, self.driver.appliance.ping) self.mox.VerifyAll() def test_delete_not_existing_lun(self): delete_volume_request = {'addr': 'cms', 'data': { 'repoName': fake_repository_name, 'lvName': fake_volume_name}, 'op': 'orchStrLun/verified', 'args': 'delete'} pack_data(delete_volume_request) self.fake_rpc.handle('configure', {}, [delete_volume_request], {'configState': 'completedSuccessfully'}) self.fake_rpc.handle('fetch', {'orchStrRepo': '', 'shelf': 'cms', 'lv': fake_volume_name}, None, fake_esm_fetch_no_volume) self.mox.ReplayAll() self.assertRaises( exception.VolumeNotFound, self.driver.appliance.delete_lun, fake_volume['name']) self.mox.VerifyAll() def test_delete_not_existing_volumeappliance_is_ok(self): def delete_lun(volume_name): raise exception.VolumeNotFound(volume_id=fake_volume['name']) self.stubs.Set(self.driver.appliance, 'delete_lun', delete_lun) def ping(): pass self.stubs.Set(self.driver.appliance, 'ping', ping) self.mox.ReplayAll() self.driver.delete_volume(fake_volume) self.mox.VerifyAll() def test_delete_not_existing_volume_sleepingappliance(self): def delete_lun(volume_name): raise exception.VolumeNotFound(volume_id=fake_volume['name']) self.stubs.Set(self.driver.appliance, 'delete_lun', delete_lun) def ping(): raise exception.CoraidESMNotAvailable(reason="Any reason") self.stubs.Set(self.driver.appliance, 'ping', ping) self.driver.appliance.ping = ping self.mox.ReplayAll() self.assertRaises(exception.CoraidESMNotAvailable, self.driver.delete_volume, fake_volume) self.mox.VerifyAll() def test_create_snapshot(self): fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_volume_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) create_snapshot_request = {'addr': 'cms', 'data': { 'repoName': fake_repository_name, 'lvName': fake_volume_name, 'newLvName': fake_snapshot_name}, 'op': 'orchStrLunMods', 'args': 'addClSnap'} pack_data(create_snapshot_request) self.fake_rpc.handle('configure', {}, [create_snapshot_request], {'configState': 'completedSuccessfully'}) self.mox.ReplayAll() self.driver.create_snapshot(fake_snapshot) self.mox.VerifyAll() def test_delete_snapshot(self): fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_snapshot_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) delete_snapshot_request = {'addr': 'cms', 'data': { 'repoName': fake_repository_name, 'lvName': fake_snapshot_name}, 'op': 'orchStrLunMods', 'args': 'delClSnap'} pack_data(delete_snapshot_request) self.fake_rpc.handle('configure', {}, [delete_snapshot_request], {'configState': 'completedSuccessfully'}) self.mox.ReplayAll() self.driver.delete_snapshot(fake_snapshot) self.mox.VerifyAll() def test_create_volume_from_snapshot(self): self.mock_volume_types() self.mox.StubOutWithMock(self.driver.appliance, 'resize_volume') self.driver.appliance.resize_volume(fake_volume_name, fake_volume['size'])\ .AndReturn(None) fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_snapshot_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) create_clone_request = {'addr': 'cms', 'data': { 'lvName': fake_snapshot_name, 'repoName': fake_repository_name, 'newLvName': fake_volume_name, 'newRepoName': fake_repository_name}, 'op': 'orchStrLunMods', 'args': 'addClone'} pack_data(create_clone_request) self.fake_rpc.handle('configure', {}, [create_clone_request], {'configState': 'completedSuccessfully'}) self.mox.ReplayAll() self.driver.create_volume_from_snapshot(fake_volume, fake_snapshot) self.mox.VerifyAll() def test_initialize_connection(self): fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_volume_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) self.mox.ReplayAll() connection = self.driver.initialize_connection(fake_volume, {}) self.mox.VerifyAll() self.assertEqual(connection['driver_volume_type'], 'aoe') self.assertEqual(connection['data']['target_shelf'], fake_shelf) self.assertEqual(connection['data']['target_lun'], fake_lun) def test_get_repository_capabilities(self): reply = [[{}, {'reply': [ {'name': 'repo1', 'profile': {'fullName': 'Bronze-Bronze:Profile1'}}, {'name': 'repo2', 'profile': {'fullName': 'Bronze-Bronze:Profile2'}}]}]] self.fake_rpc.handle('fetch', {'orchStrRepo': ''}, None, reply) self.mox.ReplayAll() capabilities = self.driver.get_volume_stats(refresh=True) self.mox.VerifyAll() self.assertEqual( capabilities[fake_coraid_repository_key], 'Bronze-Bronze:Profile1:repo1 Bronze-Bronze:Profile2:repo2') def test_create_cloned_volume(self): self.mock_volume_types([fake_repository_name]) fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_volume_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) shelf_lun = '{0}.{1}'.format(fake_shelf, fake_lun) create_clone_request = {'addr': 'cms', 'data': { 'shelfLun': shelf_lun, 'lvName': fake_volume_name, 'repoName': fake_repository_name, 'newLvName': fake_clone_name, 'newRepoName': fake_repository_name}, 'op': 'orchStrLunMods', 'args': 'addClone'} pack_data(create_clone_request) self.fake_rpc.handle('configure', {}, [create_clone_request], {'configState': 'completedSuccessfully'}) self.mox.ReplayAll() self.driver.create_cloned_volume(fake_clone_volume, fake_volume) self.mox.VerifyAll() def test_create_cloned_volume_with_resize(self): self.mock_volume_types([fake_repository_name]) self.mox.StubOutWithMock(self.driver.appliance, 'resize_volume') self.driver.appliance.resize_volume(fake_big_clone_volume['name'], fake_big_clone_volume['size'])\ .AndReturn(None) fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_volume_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) shelf_lun = '{0}.{1}'.format(fake_shelf, fake_lun) create_clone_request = {'addr': 'cms', 'data': { 'shelfLun': shelf_lun, 'lvName': fake_volume_name, 'repoName': fake_repository_name, 'newLvName': fake_clone_name, 'newRepoName': fake_repository_name}, 'op': 'orchStrLunMods', 'args': 'addClone'} pack_data(create_clone_request) self.fake_rpc.handle('configure', {}, [create_clone_request], {'configState': 'completedSuccessfully'}) self.mox.ReplayAll() self.driver.create_cloned_volume(fake_big_clone_volume, fake_volume) self.mox.VerifyAll() def test_create_cloned_volume_in_different_repository(self): self.mock_volume_types([fake_repository_name + '_another']) fetch_request = {'shelf': 'cms', 'orchStrRepo': '', 'lv': fake_volume_name} self.fake_rpc.handle('fetch', fetch_request, None, fake_esm_fetch) self.mox.ReplayAll() self.assertRaises( exception.CoraidException, self.driver.create_cloned_volume, fake_clone_volume, fake_volume) self.mox.VerifyAll() def test_extend_volume(self): self.mox.StubOutWithMock(self.driver.appliance, 'resize_volume') self.driver.appliance.resize_volume(fake_volume_name, 10)\ .AndReturn(None) self.mox.ReplayAll() self.driver.extend_volume(fake_volume, 10) self.mox.VerifyAll() class AutoReloginCoraidTestCase(test.TestCase): def setUp(self): super(AutoReloginCoraidTestCase, self).setUp() self.mox = mox.Mox() self.rest_client = coraid.CoraidRESTClient('https://fake') self.appliance = coraid.CoraidAppliance(self.rest_client, 'fake_username', 'fake_password', 'fake_group') def tearDown(self): self.mox.UnsetStubs() super(AutoReloginCoraidTestCase, self).tearDown() def _test_auto_relogin_fail(self, state): self.mox.StubOutWithMock(self.rest_client, 'rpc') self.rest_client.rpc('fake_handle', {}, None, False).\ AndReturn({'state': state, 'metaCROp': 'reboot'}) self.rest_client.rpc('fake_handle', {}, None, False).\ AndReturn({'state': state, 'metaCROp': 'reboot'}) self.rest_client.rpc('fake_handle', {}, None, False).\ AndReturn({'state': state, 'metaCROp': 'reboot'}) self.mox.StubOutWithMock(self.appliance, '_ensure_session') self.appliance._ensure_session().AndReturn(None) self.mox.StubOutWithMock(self.appliance, '_relogin') self.appliance._relogin().AndReturn(None) self.appliance._relogin().AndReturn(None) self.mox.ReplayAll() self.assertRaises(exception.CoraidESMReloginFailed, self.appliance.rpc, 'fake_handle', {}, None, False) self.mox.VerifyAll() def test_auto_relogin_fail_admin(self): self._test_auto_relogin_fail('GeneralAdminFailure') def test_auto_relogin_fail_inactivity(self): self._test_auto_relogin_fail('passwordInactivityTimeout') def test_auto_relogin_fail_absolute(self): self._test_auto_relogin_fail('passwordAbsoluteTimeout') def test_auto_relogin_success(self): self.mox.StubOutWithMock(self.rest_client, 'rpc') self.rest_client.rpc('fake_handle', {}, None, False).\ AndReturn({'state': 'GeneralAdminFailure', 'metaCROp': 'reboot'}) self.rest_client.rpc('fake_handle', {}, None, False).\ AndReturn({'state': 'ok'}) self.mox.StubOutWithMock(self.appliance, '_ensure_session') self.appliance._ensure_session().AndReturn(None) self.mox.StubOutWithMock(self.appliance, '_relogin') self.appliance._relogin().AndReturn(None) self.mox.ReplayAll() reply = self.appliance.rpc('fake_handle', {}, None, False) self.mox.VerifyAll() self.assertEqual(reply['state'], 'ok') class CoraidDriverImageTestCases(CoraidDriverTestCase): def setUp(self): super(CoraidDriverImageTestCases, self).setUp() self.fake_dev_path = '/dev/ether/fake_dev' self.fake_connection = {'driver_volume_type': 'aoe', 'data': {'target_shelf': fake_shelf, 'target_lun': fake_lun}} self.fake_volume_info = { 'shelf': self.fake_connection['data']['target_shelf'], 'lun': self.fake_connection['data']['target_lun']} self.mox.StubOutWithMock(self.driver, 'initialize_connection') self.driver.initialize_connection(fake_volume, {})\ .AndReturn(self.fake_connection) self.mox.StubOutWithMock(self.driver, 'terminate_connection') self.driver.terminate_connection(fake_volume, mox.IgnoreArg(), force=False).AndReturn(None) root_helper = 'sudo cinder-rootwrap /etc/cinder/rootwrap.conf' self.mox.StubOutWithMock(connector, 'get_connector_properties') connector.get_connector_properties(root_helper, CONF.my_ip).\ AndReturn({}) self.mox.StubOutWithMock(utils, 'brick_get_connector') aoe_initiator = self.mox.CreateMockAnything() utils.brick_get_connector('aoe', device_scan_attempts=3, use_multipath=False, conn=mox.IgnoreArg()).\ AndReturn(aoe_initiator) aoe_initiator\ .connect_volume(self.fake_connection['data'])\ .AndReturn({'path': self.fake_dev_path}) aoe_initiator.check_valid_device(self.fake_dev_path)\ .AndReturn(True) aoe_initiator.disconnect_volume( {'target_shelf': self.fake_volume_info['shelf'], 'target_lun': self.fake_volume_info['lun']}, mox.IgnoreArg()) def test_copy_volume_to_image(self): fake_image_service = 'fake-image-service' fake_image_meta = 'fake-image-meta' self.mox.StubOutWithMock(image_utils, 'upload_volume') image_utils.upload_volume({}, fake_image_service, fake_image_meta, self.fake_dev_path) self.mox.ReplayAll() self.driver.copy_volume_to_image({}, fake_volume, fake_image_service, fake_image_meta) self.mox.VerifyAll() def test_copy_image_to_volume(self): fake_image_service = 'fake-image-service' fake_image_id = 'fake-image-id;' self.mox.StubOutWithMock(image_utils, 'fetch_to_raw') image_utils.fetch_to_raw({}, fake_image_service, fake_image_id, self.fake_dev_path, mox.IgnoreArg(), size=fake_volume_size) self.mox.ReplayAll() self.driver.copy_image_to_volume({}, fake_volume, fake_image_service, fake_image_id) self.mox.VerifyAll() class CoraidResetConnectionTestCase(CoraidDriverTestCase): def test_create_new_appliance_for_every_request(self): self.mox.StubOutWithMock(coraid, 'CoraidRESTClient') self.mox.StubOutWithMock(coraid, 'CoraidAppliance') coraid.CoraidRESTClient(mox.IgnoreArg()) coraid.CoraidRESTClient(mox.IgnoreArg()) coraid.CoraidAppliance(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn('fake_app1') coraid.CoraidAppliance(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn('fake_app2') self.mox.ReplayAll() self.assertEqual(self.driver.appliance, 'fake_app1') self.assertEqual(self.driver.appliance, 'fake_app2') self.mox.VerifyAll() cinder-2014.1.5/cinder/tests/glance/0000775000567000056700000000000012540643114020207 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/glance/stubs.py0000664000567000056700000000702012540642606021725 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, Inc. # # 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. import glanceclient.exc NOW_GLANCE_FORMAT = "2010-10-11T10:30:22" class StubGlanceClient(object): def __init__(self, images=None): self._images = [] _images = images or [] map(lambda image: self.create(**image), _images) #NOTE(bcwaldon): HACK to get client.images.* to work self.images = lambda: None for fn in ('list', 'get', 'data', 'create', 'update', 'delete'): setattr(self.images, fn, getattr(self, fn)) #TODO(bcwaldon): implement filters def list(self, filters=None, marker=None, limit=30): if marker is None: index = 0 else: for index, image in enumerate(self._images): if image.id == str(marker): index += 1 break else: raise glanceclient.exc.BadRequest('Marker not found') return self._images[index:index + limit] def get(self, image_id): for image in self._images: if image.id == str(image_id): return image raise glanceclient.exc.NotFound(image_id) def data(self, image_id): self.get(image_id) return [] def create(self, **metadata): metadata['created_at'] = NOW_GLANCE_FORMAT metadata['updated_at'] = NOW_GLANCE_FORMAT self._images.append(FakeImage(metadata)) try: image_id = str(metadata['id']) except KeyError: # auto-generate an id if one wasn't provided image_id = str(len(self._images)) self._images[-1].id = image_id return self._images[-1] def update(self, image_id, **metadata): for i, image in enumerate(self._images): if image.id == str(image_id): for k, v in metadata.items(): setattr(self._images[i], k, v) return self._images[i] raise glanceclient.exc.NotFound(image_id) def delete(self, image_id): for i, image in enumerate(self._images): if image.id == image_id: del self._images[i] return raise glanceclient.exc.NotFound(image_id) class FakeImage(object): def __init__(self, metadata): IMAGE_ATTRIBUTES = ['size', 'disk_format', 'owner', 'container_format', 'checksum', 'id', 'name', 'created_at', 'updated_at', 'deleted', 'status', 'min_disk', 'min_ram', 'is_public'] raw = dict.fromkeys(IMAGE_ATTRIBUTES) raw.update(metadata) self.__dict__['raw'] = raw def __getattr__(self, key): try: return self.__dict__['raw'][key] except KeyError: raise AttributeError(key) def __setattr__(self, key, value): try: self.__dict__['raw'][key] = value except KeyError: raise AttributeError(key) cinder-2014.1.5/cinder/tests/glance/__init__.py0000664000567000056700000000127012540642606022325 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, Inc. # # 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. """ :mod:`glance` -- Stubs for Glance ================================= """ cinder-2014.1.5/cinder/tests/test_backup.py0000664000567000056700000006454312540642606021655 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Tests for Backup code. """ import mock import tempfile from oslo.config import cfg from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import test CONF = cfg.CONF LOG = logging.getLogger(__name__) class FakeBackupException(Exception): pass class BackupTestCase(test.TestCase): """Test Case for backups.""" def setUp(self): super(BackupTestCase, self).setUp() vol_tmpdir = tempfile.mkdtemp() self.flags(volumes_dir=vol_tmpdir) self.backup_mgr = \ importutils.import_object(CONF.backup_manager) self.backup_mgr.host = 'testhost' self.ctxt = context.get_admin_context() self.backup_mgr.driver.set_initialized() def tearDown(self): super(BackupTestCase, self).tearDown() def _create_backup_db_entry(self, volume_id=1, display_name='test_backup', display_description='this is a test backup', container='volumebackups', status='creating', size=1, object_count=0, project_id='fake'): """Create a backup entry in the DB. Return the entry ID """ backup = {} backup['volume_id'] = volume_id backup['user_id'] = 'fake' backup['project_id'] = project_id backup['host'] = 'testhost' backup['availability_zone'] = '1' backup['display_name'] = display_name backup['display_description'] = display_description backup['container'] = container backup['status'] = status backup['fail_reason'] = '' backup['service'] = CONF.backup_driver backup['size'] = size backup['object_count'] = object_count return db.backup_create(self.ctxt, backup)['id'] def _create_volume_db_entry(self, display_name='test_volume', display_description='this is a test volume', status='backing-up', size=1): """Create a volume entry in the DB. Return the entry ID """ vol = {} vol['size'] = size vol['host'] = 'testhost' vol['user_id'] = 'fake' vol['project_id'] = 'fake' vol['status'] = status vol['display_name'] = display_name vol['display_description'] = display_description vol['attach_status'] = 'detached' return db.volume_create(self.ctxt, vol)['id'] def _create_exported_record_entry(self, vol_size=1): """Create backup metadata export entry.""" vol_id = self._create_volume_db_entry(status='available', size=vol_size) backup_id = self._create_backup_db_entry(status='available', volume_id=vol_id) export = self.backup_mgr.export_record(self.ctxt, backup_id) return export def _create_export_record_db_entry(self, volume_id='0000', status='creating', project_id='fake'): """Create a backup entry in the DB. Return the entry ID """ backup = {} backup['volume_id'] = volume_id backup['user_id'] = 'fake' backup['project_id'] = project_id backup['status'] = status return db.backup_create(self.ctxt, backup)['id'] def test_init_host(self): """Make sure stuck volumes and backups are reset to correct states when backup_manager.init_host() is called """ vol1_id = self._create_volume_db_entry(status='backing-up') vol2_id = self._create_volume_db_entry(status='restoring-backup') backup1_id = self._create_backup_db_entry(status='creating') backup2_id = self._create_backup_db_entry(status='restoring') backup3_id = self._create_backup_db_entry(status='deleting') self.backup_mgr.init_host() vol1 = db.volume_get(self.ctxt, vol1_id) self.assertEqual(vol1['status'], 'available') vol2 = db.volume_get(self.ctxt, vol2_id) self.assertEqual(vol2['status'], 'error_restoring') backup1 = db.backup_get(self.ctxt, backup1_id) self.assertEqual(backup1['status'], 'error') backup2 = db.backup_get(self.ctxt, backup2_id) self.assertEqual(backup2['status'], 'available') self.assertRaises(exception.BackupNotFound, db.backup_get, self.ctxt, backup3_id) def test_create_backup_with_bad_volume_status(self): """Test error handling when creating a backup from a volume with a bad status """ vol_id = self._create_volume_db_entry(status='available', size=1) backup_id = self._create_backup_db_entry(volume_id=vol_id) self.assertRaises(exception.InvalidVolume, self.backup_mgr.create_backup, self.ctxt, backup_id) def test_create_backup_with_bad_backup_status(self): """Test error handling when creating a backup with a backup with a bad status """ vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='available', volume_id=vol_id) self.assertRaises(exception.InvalidBackup, self.backup_mgr.create_backup, self.ctxt, backup_id) @mock.patch('%s.%s' % (CONF.volume_driver, 'backup_volume')) def test_create_backup_with_error(self, _mock_volume_backup): """Test error handling when error occurs during backup creation.""" vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(volume_id=vol_id) _mock_volume_backup.side_effect = FakeBackupException('fake') self.assertRaises(FakeBackupException, self.backup_mgr.create_backup, self.ctxt, backup_id) vol = db.volume_get(self.ctxt, vol_id) self.assertEqual(vol['status'], 'available') backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'error') self.assertTrue(_mock_volume_backup.called) @mock.patch('%s.%s' % (CONF.volume_driver, 'backup_volume')) def test_create_backup(self, _mock_volume_backup): """Test normal backup creation.""" vol_size = 1 vol_id = self._create_volume_db_entry(size=vol_size) backup_id = self._create_backup_db_entry(volume_id=vol_id) self.backup_mgr.create_backup(self.ctxt, backup_id) vol = db.volume_get(self.ctxt, vol_id) self.assertEqual(vol['status'], 'available') backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'available') self.assertEqual(backup['size'], vol_size) self.assertTrue(_mock_volume_backup.called) def test_restore_backup_with_bad_volume_status(self): """Test error handling when restoring a backup to a volume with a bad status. """ vol_id = self._create_volume_db_entry(status='available', size=1) backup_id = self._create_backup_db_entry(volume_id=vol_id) self.assertRaises(exception.InvalidVolume, self.backup_mgr.restore_backup, self.ctxt, backup_id, vol_id) backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'available') def test_restore_backup_with_bad_backup_status(self): """Test error handling when restoring a backup with a backup with a bad status. """ vol_id = self._create_volume_db_entry(status='restoring-backup', size=1) backup_id = self._create_backup_db_entry(status='available', volume_id=vol_id) self.assertRaises(exception.InvalidBackup, self.backup_mgr.restore_backup, self.ctxt, backup_id, vol_id) vol = db.volume_get(self.ctxt, vol_id) self.assertEqual(vol['status'], 'error') backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'error') @mock.patch('%s.%s' % (CONF.volume_driver, 'restore_backup')) def test_restore_backup_with_driver_error(self, _mock_volume_restore): """Test error handling when an error occurs during backup restore.""" vol_id = self._create_volume_db_entry(status='restoring-backup', size=1) backup_id = self._create_backup_db_entry(status='restoring', volume_id=vol_id) _mock_volume_restore.side_effect = FakeBackupException('fake') self.assertRaises(FakeBackupException, self.backup_mgr.restore_backup, self.ctxt, backup_id, vol_id) vol = db.volume_get(self.ctxt, vol_id) self.assertEqual(vol['status'], 'error_restoring') backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'available') self.assertTrue(_mock_volume_restore.called) def test_restore_backup_with_bad_service(self): """Test error handling when attempting a restore of a backup with a different service to that used to create the backup. """ vol_id = self._create_volume_db_entry(status='restoring-backup', size=1) backup_id = self._create_backup_db_entry(status='restoring', volume_id=vol_id) service = 'cinder.tests.backup.bad_service' db.backup_update(self.ctxt, backup_id, {'service': service}) self.assertRaises(exception.InvalidBackup, self.backup_mgr.restore_backup, self.ctxt, backup_id, vol_id) vol = db.volume_get(self.ctxt, vol_id) self.assertEqual(vol['status'], 'error') backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'available') @mock.patch('%s.%s' % (CONF.volume_driver, 'restore_backup')) def test_restore_backup(self, _mock_volume_restore): """Test normal backup restoration.""" vol_size = 1 vol_id = self._create_volume_db_entry(status='restoring-backup', size=vol_size) backup_id = self._create_backup_db_entry(status='restoring', volume_id=vol_id) self.backup_mgr.restore_backup(self.ctxt, backup_id, vol_id) vol = db.volume_get(self.ctxt, vol_id) self.assertEqual(vol['status'], 'available') backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'available') self.assertTrue(_mock_volume_restore.called) def test_delete_backup_with_bad_backup_status(self): """Test error handling when deleting a backup with a backup with a bad status. """ vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='available', volume_id=vol_id) self.assertRaises(exception.InvalidBackup, self.backup_mgr.delete_backup, self.ctxt, backup_id) backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'error') def test_delete_backup_with_error(self): """Test error handling when an error occurs during backup deletion.""" vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='deleting', display_name='fail_on_delete', volume_id=vol_id) self.assertRaises(IOError, self.backup_mgr.delete_backup, self.ctxt, backup_id) backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'error') def test_delete_backup_with_bad_service(self): """Test error handling when attempting a delete of a backup with a different service to that used to create the backup. """ vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='deleting', volume_id=vol_id) service = 'cinder.tests.backup.bad_service' db.backup_update(self.ctxt, backup_id, {'service': service}) self.assertRaises(exception.InvalidBackup, self.backup_mgr.delete_backup, self.ctxt, backup_id) backup = db.backup_get(self.ctxt, backup_id) self.assertEqual(backup['status'], 'error') def test_delete_backup_with_no_service(self): """Test error handling when attempting a delete of a backup with no service defined for that backup, relates to bug #1162908 """ vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='deleting', volume_id=vol_id) db.backup_update(self.ctxt, backup_id, {'service': None}) self.backup_mgr.delete_backup(self.ctxt, backup_id) def test_delete_backup(self): """Test normal backup deletion.""" vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='deleting', volume_id=vol_id) self.backup_mgr.delete_backup(self.ctxt, backup_id) self.assertRaises(exception.BackupNotFound, db.backup_get, self.ctxt, backup_id) ctxt_read_deleted = context.get_admin_context('yes') backup = db.backup_get(ctxt_read_deleted, backup_id) self.assertEqual(backup.deleted, True) self.assertGreaterEqual(timeutils.utcnow(), backup.deleted_at) self.assertEqual(backup.status, 'deleted') def test_list_backup(self): backups = db.backup_get_all_by_project(self.ctxt, 'project1') self.assertEqual(len(backups), 0) b1 = self._create_backup_db_entry() b2 = self._create_backup_db_entry(project_id='project1') backups = db.backup_get_all_by_project(self.ctxt, 'project1') self.assertEqual(len(backups), 1) self.assertEqual(backups[0].id, b2) def test_backup_get_all_by_project_with_deleted(self): """Test deleted backups don't show up in backup_get_all_by_project. Unless context.read_deleted is 'yes'. """ backups = db.backup_get_all_by_project(self.ctxt, 'fake') self.assertEqual(len(backups), 0) backup_id_keep = self._create_backup_db_entry() backup_id = self._create_backup_db_entry() db.backup_destroy(self.ctxt, backup_id) backups = db.backup_get_all_by_project(self.ctxt, 'fake') self.assertEqual(len(backups), 1) self.assertEqual(backups[0].id, backup_id_keep) ctxt_read_deleted = context.get_admin_context('yes') backups = db.backup_get_all_by_project(ctxt_read_deleted, 'fake') self.assertEqual(len(backups), 2) def test_backup_get_all_by_host_with_deleted(self): """Test deleted backups don't show up in backup_get_all_by_project. Unless context.read_deleted is 'yes' """ backups = db.backup_get_all_by_host(self.ctxt, 'testhost') self.assertEqual(len(backups), 0) backup_id_keep = self._create_backup_db_entry() backup_id = self._create_backup_db_entry() db.backup_destroy(self.ctxt, backup_id) backups = db.backup_get_all_by_host(self.ctxt, 'testhost') self.assertEqual(len(backups), 1) self.assertEqual(backups[0].id, backup_id_keep) ctxt_read_deleted = context.get_admin_context('yes') backups = db.backup_get_all_by_host(ctxt_read_deleted, 'testhost') self.assertEqual(len(backups), 2) def test_backup_manager_driver_name(self): """"Test mapping between backup services and backup drivers.""" old_setting = CONF.backup_driver setattr(cfg.CONF, 'backup_driver', "cinder.backup.services.swift") backup_mgr = \ importutils.import_object(CONF.backup_manager) self.assertEqual('cinder.backup.drivers.swift', backup_mgr.driver_name) setattr(cfg.CONF, 'backup_driver', old_setting) def test_export_record_with_bad_service(self): """Test error handling when attempting an export of a backup record with a different service to that used to create the backup. """ vol_id = self._create_volume_db_entry(size=1) backup_id = self._create_backup_db_entry(status='available', volume_id=vol_id) service = 'cinder.tests.backup.bad_service' db.backup_update(self.ctxt, backup_id, {'service': service}) self.assertRaises(exception.InvalidBackup, self.backup_mgr.export_record, self.ctxt, backup_id) def test_export_record_with_bad_backup_status(self): """Test error handling when exporting a backup record with a backup with a bad status. """ vol_id = self._create_volume_db_entry(status='available', size=1) backup_id = self._create_backup_db_entry(status='error', volume_id=vol_id) self.assertRaises(exception.InvalidBackup, self.backup_mgr.export_record, self.ctxt, backup_id) def test_export_record(self): """Test normal backup record export.""" vol_size = 1 vol_id = self._create_volume_db_entry(status='available', size=vol_size) backup_id = self._create_backup_db_entry(status='available', volume_id=vol_id) export = self.backup_mgr.export_record(self.ctxt, backup_id) self.assertEqual(export['backup_service'], CONF.backup_driver) self.assertTrue('backup_url' in export) def test_import_record_with_verify_not_implemented(self): """Test normal backup record import. Test the case when import succeeds for the case that the driver does not support verify. """ vol_size = 1 export = self._create_exported_record_entry(vol_size=vol_size) imported_record = self._create_export_record_db_entry() backup_hosts = [] backup_driver = self.backup_mgr.service.get_backup_driver(self.ctxt) _mock_backup_verify_class = ('%s.%s.%s' % (backup_driver.__module__, backup_driver.__class__.__name__, 'verify')) with mock.patch(_mock_backup_verify_class) as _mock_record_verify: _mock_record_verify.side_effect = NotImplementedError() self.backup_mgr.import_record(self.ctxt, imported_record, export['backup_service'], export['backup_url'], backup_hosts) backup = db.backup_get(self.ctxt, imported_record) self.assertEqual(backup['status'], 'available') self.assertEqual(backup['size'], vol_size) def test_import_record_with_verify(self): """Test normal backup record import. Test the case when import succeeds for the case that the driver implements verify. """ vol_size = 1 export = self._create_exported_record_entry(vol_size=vol_size) imported_record = self._create_export_record_db_entry() backup_hosts = [] backup_driver = self.backup_mgr.service.get_backup_driver(self.ctxt) _mock_backup_verify_class = ('%s.%s.%s' % (backup_driver.__module__, backup_driver.__class__.__name__, 'verify')) with mock.patch(_mock_backup_verify_class) as _mock_record_verify: self.backup_mgr.import_record(self.ctxt, imported_record, export['backup_service'], export['backup_url'], backup_hosts) backup = db.backup_get(self.ctxt, imported_record) self.assertEqual(backup['status'], 'available') self.assertEqual(backup['size'], vol_size) def test_import_record_with_bad_service(self): """Test error handling when attempting an import of a backup record with a different service to that used to create the backup. """ export = self._create_exported_record_entry() export['backup_service'] = 'cinder.tests.backup.bad_service' imported_record = self._create_export_record_db_entry() #Test the case where the additional hosts list is empty backup_hosts = [] self.assertRaises(exception.ServiceNotFound, self.backup_mgr.import_record, self.ctxt, imported_record, export['backup_service'], export['backup_url'], backup_hosts) #Test that the import backup keeps calling other hosts to find a #suitable host for the backup service backup_hosts = ['fake1', 'fake2'] BackupAPI_import = 'cinder.backup.rpcapi.BackupAPI.import_record' with mock.patch(BackupAPI_import) as _mock_backup_import: self.backup_mgr.import_record(self.ctxt, imported_record, export['backup_service'], export['backup_url'], backup_hosts) self.assertTrue(_mock_backup_import.called) def test_import_record_with_invalid_backup(self): """Test error handling when attempting an import of a backup record where the backup driver returns an exception. """ export = self._create_exported_record_entry() backup_driver = self.backup_mgr.service.get_backup_driver(self.ctxt) _mock_record_import_class = ('%s.%s.%s' % (backup_driver.__module__, backup_driver.__class__.__name__, 'import_record')) imported_record = self._create_export_record_db_entry() backup_hosts = [] with mock.patch(_mock_record_import_class) as _mock_record_import: _mock_record_import.side_effect = FakeBackupException('fake') self.assertRaises(exception.InvalidBackup, self.backup_mgr.import_record, self.ctxt, imported_record, export['backup_service'], export['backup_url'], backup_hosts) self.assertTrue(_mock_record_import.called) backup = db.backup_get(self.ctxt, imported_record) self.assertEqual(backup['status'], 'error') def test_import_record_with_verify_invalid_backup(self): """Test error handling when attempting an import of a backup record where the backup driver returns an exception. """ vol_size = 1 export = self._create_exported_record_entry(vol_size=vol_size) imported_record = self._create_export_record_db_entry() backup_hosts = [] backup_driver = self.backup_mgr.service.get_backup_driver(self.ctxt) _mock_backup_verify_class = ('%s.%s.%s' % (backup_driver.__module__, backup_driver.__class__.__name__, 'verify')) with mock.patch(_mock_backup_verify_class) as _mock_record_verify: _mock_record_verify.side_effect = \ exception.InvalidBackup(reason='fake') self.assertRaises(exception.InvalidBackup, self.backup_mgr.import_record, self.ctxt, imported_record, export['backup_service'], export['backup_url'], backup_hosts) self.assertTrue(_mock_record_verify.called) backup = db.backup_get(self.ctxt, imported_record) self.assertEqual(backup['status'], 'error') cinder-2014.1.5/cinder/tests/test_backup_swift.py0000664000567000056700000001527512540642606023067 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Tests for Backup swift code. """ import bz2 import hashlib import os import tempfile import zlib from swiftclient import client as swift from cinder.backup.drivers.swift import SwiftBackupDriver from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests.backup.fake_swift_client import FakeSwiftClient LOG = logging.getLogger(__name__) def fake_md5(arg): class result(object): def hexdigest(self): return 'fake-md5-sum' ret = result() return ret class BackupSwiftTestCase(test.TestCase): """Test Case for swift.""" def _create_volume_db_entry(self): vol = {'id': '1234-5678-1234-8888', 'size': 1, 'status': 'available'} return db.volume_create(self.ctxt, vol)['id'] def _create_backup_db_entry(self, container='test-container'): backup = {'id': 123, 'size': 1, 'container': container, 'volume_id': '1234-5678-1234-8888'} return db.backup_create(self.ctxt, backup)['id'] def setUp(self): super(BackupSwiftTestCase, self).setUp() self.ctxt = context.get_admin_context() self.stubs.Set(swift, 'Connection', FakeSwiftClient.Connection) self.stubs.Set(hashlib, 'md5', fake_md5) self._create_volume_db_entry() self.volume_file = tempfile.NamedTemporaryFile() for i in xrange(0, 128): self.volume_file.write(os.urandom(1024)) def tearDown(self): self.volume_file.close() super(BackupSwiftTestCase, self).tearDown() def test_backup_uncompressed(self): self._create_backup_db_entry() self.flags(backup_compression_algorithm='none') service = SwiftBackupDriver(self.ctxt) self.volume_file.seek(0) backup = db.backup_get(self.ctxt, 123) service.backup(backup, self.volume_file) def test_backup_bz2(self): self._create_backup_db_entry() self.flags(backup_compression_algorithm='bz2') service = SwiftBackupDriver(self.ctxt) self.volume_file.seek(0) backup = db.backup_get(self.ctxt, 123) service.backup(backup, self.volume_file) def test_backup_zlib(self): self._create_backup_db_entry() self.flags(backup_compression_algorithm='zlib') service = SwiftBackupDriver(self.ctxt) self.volume_file.seek(0) backup = db.backup_get(self.ctxt, 123) service.backup(backup, self.volume_file) def test_backup_default_container(self): self._create_backup_db_entry(container=None) service = SwiftBackupDriver(self.ctxt) self.volume_file.seek(0) backup = db.backup_get(self.ctxt, 123) service.backup(backup, self.volume_file) backup = db.backup_get(self.ctxt, 123) self.assertEqual(backup['container'], 'volumebackups') def test_backup_custom_container(self): container_name = 'fake99' self._create_backup_db_entry(container=container_name) service = SwiftBackupDriver(self.ctxt) self.volume_file.seek(0) backup = db.backup_get(self.ctxt, 123) service.backup(backup, self.volume_file) backup = db.backup_get(self.ctxt, 123) self.assertEqual(backup['container'], container_name) def test_create_backup_put_object_wraps_socket_error(self): container_name = 'socket_error_on_put' self._create_backup_db_entry(container=container_name) service = SwiftBackupDriver(self.ctxt) self.volume_file.seek(0) backup = db.backup_get(self.ctxt, 123) self.assertRaises(exception.SwiftConnectionFailed, service.backup, backup, self.volume_file) def test_restore(self): self._create_backup_db_entry() service = SwiftBackupDriver(self.ctxt) with tempfile.NamedTemporaryFile() as volume_file: backup = db.backup_get(self.ctxt, 123) service.restore(backup, '1234-5678-1234-8888', volume_file) def test_restore_wraps_socket_error(self): container_name = 'socket_error_on_get' self._create_backup_db_entry(container=container_name) service = SwiftBackupDriver(self.ctxt) with tempfile.NamedTemporaryFile() as volume_file: backup = db.backup_get(self.ctxt, 123) self.assertRaises(exception.SwiftConnectionFailed, service.restore, backup, '1234-5678-1234-8888', volume_file) def test_restore_unsupported_version(self): container_name = 'unsupported_version' self._create_backup_db_entry(container=container_name) service = SwiftBackupDriver(self.ctxt) with tempfile.NamedTemporaryFile() as volume_file: backup = db.backup_get(self.ctxt, 123) self.assertRaises(exception.InvalidBackup, service.restore, backup, '1234-5678-1234-8888', volume_file) def test_delete(self): self._create_backup_db_entry() service = SwiftBackupDriver(self.ctxt) backup = db.backup_get(self.ctxt, 123) service.delete(backup) def test_delete_wraps_socket_error(self): container_name = 'socket_error_on_delete' self._create_backup_db_entry(container=container_name) service = SwiftBackupDriver(self.ctxt) backup = db.backup_get(self.ctxt, 123) self.assertRaises(exception.SwiftConnectionFailed, service.delete, backup) def test_get_compressor(self): service = SwiftBackupDriver(self.ctxt) compressor = service._get_compressor('None') self.assertIsNone(compressor) compressor = service._get_compressor('zlib') self.assertEqual(compressor, zlib) compressor = service._get_compressor('bz2') self.assertEqual(compressor, bz2) self.assertRaises(ValueError, service._get_compressor, 'fake') cinder-2014.1.5/cinder/tests/test_emc_vnxdirect.py0000664000567000056700000007075112540642606023240 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 - 2014 EMC Corporation, Inc. # All Rights Reserved. # # 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. import os import mock from cinder import exception from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.emc.emc_cli_iscsi import EMCCLIISCSIDriver from cinder.volume.drivers.emc.emc_vnx_cli import EMCVnxCli from cinder.volume import volume_types class EMCVNXCLIDriverTestData(): test_volume = { 'name': 'vol1', 'size': 1, 'volume_name': 'vol1', 'id': '1', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'test volume', 'volume_type_id': None} test_volfromsnap = { 'name': 'volfromsnap', 'size': 1, 'volume_name': 'volfromsnap', 'id': '10', 'provider_auth': None, 'project_id': 'project', 'display_name': 'volfromsnap', 'display_description': 'test volume', 'volume_type_id': None} test_volfromsnap_e = { 'name': 'volfromsnap_e', 'size': 1, 'volume_name': 'volfromsnap_e', 'id': '20', 'provider_auth': None, 'project_id': 'project', 'display_name': 'volfromsnap_e', 'display_description': 'test volume', 'volume_type_id': None} test_failed_volume = { 'name': 'failed_vol1', 'size': 1, 'volume_name': 'failed_vol1', 'id': '4', 'provider_auth': None, 'project_id': 'project', 'display_name': 'failed_vol', 'display_description': 'test failed volume', 'volume_type_id': None} test_snapshot = { 'name': 'snapshot1', 'size': 1, 'id': '4444', 'volume_name': 'vol-vol1', 'volume_size': 1, 'project_id': 'project'} test_failed_snapshot = { 'name': 'failed_snapshot', 'size': 1, 'id': '5555', 'volume_name': 'vol-vol1', 'volume_size': 1, 'project_id': 'project'} test_clone = { 'name': 'clone1', 'size': 1, 'id': '20', 'volume_name': 'clone1', 'provider_auth': None, 'project_id': 'project', 'display_name': 'clone1', 'display_description': 'volume created from snapshot', 'volume_type_id': None} test_clone_e = { 'name': 'clone1_e', 'size': 1, 'id': '28', 'volume_name': 'clone1_e', 'provider_auth': None, 'project_id': 'project', 'display_name': 'clone1_e', 'display_description': 'volume created from snapshot', 'volume_type_id': None} test_clone_src = { 'name': 'clone1src', 'size': 1, 'id': '22', 'volume_name': 'clone1src', 'provider_auth': None, 'project_id': 'project', 'display_name': 'clone1src', 'display_description': 'volume created from snapshot', 'volume_type_id': None} connector = { 'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'wwpns': ["123456789012345", "123456789054321"], 'wwnns': ["223456789012345", "223456789054321"], 'host': 'fakehost'} class EMCVNXCLIDriverISCSITestCase(test.TestCase): def _fake_cli_executor(self, *cmd, **kwargv): # mock cli if cmd == ("storagepool", "-list", "-name", "unit_test_pool", "-state"): return None, 0 elif cmd == ('storagepool', '-list', '-name', 'unit_test_pool', '-userCap', '-availableCap'): pool_details = "test\ntest\ntest\ntotal capacity:10000\n" + \ "test\nfree capacity:1000\ntest\ntest" return pool_details, 0 elif cmd == ('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'vol1'): return None, 0 elif cmd == ('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'failed_vol1'): return None, 1023 elif cmd == ('lun', '-create', '-type', 'Thin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'vol1'): return None, 0 elif cmd == ('lun', '-list', '-name', 'vol1'): return " 10\nReady", 0 elif cmd == ('lun', '-destroy', '-name', 'vol1', '-forceDetach', '-o'): return "Lun deleted successfully", 0 elif cmd == ('lun', '-destroy', '-name', 'failed_vol1', '-forceDetach', '-o'): return "Lun deleted successfully", 1023 elif cmd == ('lun', '-list', '-name', 'vol-vol1'): return " 16\n", 0 elif cmd == ('snap', '-create', '-res', '16', '-name', 'snapshot1', '-allowReadWrite', 'yes'): return "Create Snap successfully", 0 elif cmd == ('snap', '-create', '-res', '16', '-name', 'failed_snapshot', '-allowReadWrite', 'yes'): return "Create Snap failed", 1023 elif cmd == ('snap', '-destroy', '-id', 'snapshot1', '-o'): return "Delete Snap successfully", 0 elif cmd == ('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'volfromsnapdest'): return "create temp volume successfully", 0 elif cmd == ('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'volfromsnap_edest'): return "create temp volume successfully", 0 elif cmd == ('lun', '-create', '-type', 'Snap', '-primaryLunName', 'vol-vol1', '-name', 'volfromsnap'): return "create mount point successfully", 0 elif cmd == ('lun', '-create', '-type', 'Snap', '-primaryLunName', 'vol-vol1', '-name', 'volfromsnap_e'): return "create mount point successfully", 0 elif cmd == ('lun', '-attach', '-name', 'volfromsnap', '-snapName', 'snapshot1'): return None, 0 elif cmd == ('lun', '-attach', '-name', 'volfromsnap_e', '-snapName', 'snapshot1'): return None, 0 elif cmd == ('lun', '-list', '-name', 'volfromsnap'): return " 10\n", 0 elif cmd == ('lun', '-list', '-name', 'volfromsnapdest'): return " 101\n", 0 elif cmd == ('lun', '-list', '-name', 'volfromsnap_e'): return " 20\n", 0 elif cmd == ('lun', '-list', '-name', 'volfromsnap_edest'): return " 201\n", 0 elif cmd == ('migrate', '-start', '-source', '10', '-dest', '101', '-rate', 'ASAP', '-o'): return None, 0 elif cmd == ('migrate', '-start', '-source', '20', '-dest', '201', '-rate', 'ASAP', '-o'): return None, 0 elif cmd == ('lun', '-list', '-name', 'volfromsnap', '-attachedSnapshot'): return "\n test \n :N/A", 0 elif cmd == ('lun', '-list', '-name', 'volfromsnap_e', '-attachedSnapshot'): return "\n test \n :N", 0 elif cmd == ('snap', '-create', '-res', '22', '-name', 'clone1src-temp-snapshot', '-allowReadWrite', 'yes'): return "Create Snap successfully", 0 elif cmd == ('lun', '-list', '-name', 'clone1src'): return " 22\n", 0 elif cmd == ('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'clone1dest'): return "create temp volume successfully", 0 elif cmd == ('lun', '-create', '-type', 'Snap', '-primaryLunName', 'clone1src', '-name', 'clone1'): return "create mount point successfully", 0 elif cmd == ('lun', '-attach', '-name', 'clone1', '-snapName', 'clone1src-temp-snapshot'): return 'create temp snap successfully', 0 elif cmd == ('lun', '-list', '-name', 'clone1'): return " 30\n", 0 elif cmd == ('lun', '-list', '-name', 'clone1dest'): return " 301\n", 0 elif cmd == ('migrate', '-start', '-source', '30', '-dest', '301', '-rate', 'ASAP', '-o'): return None, 0 elif cmd == ('lun', '-list', '-name', 'clone1', '-attachedSnapshot'): return "\n test \n :N/A", 0 elif cmd == ('snap', '-destroy', '-id', 'clone1src-temp-snapshot', '-o'): return None, 0 elif cmd == ('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'clone1_edest'): return "create temp volume successfully", 0 elif cmd == ('lun', '-create', '-type', 'Snap', '-primaryLunName', 'clone1src', '-name', 'clone1_e'): return "create mount point successfully", 0 elif cmd == ('lun', '-attach', '-name', 'clone1_e', '-snapName', 'clone1src-temp-snapshot'): return None, 0 elif cmd == ('lun', '-list', '-name', 'clone1_e'): return " 40\n", 0 elif cmd == ('lun', '-list', '-name', 'clone1_edest'): return " 401\n", 0 elif cmd == ('migrate', '-start', '-source', '40', '-dest', '401', '-rate', 'ASAP', '-o'): return None, 0 elif cmd == ('lun', '-list', '-name', 'clone1_e', '-attachedSnapshot'): return "\n test \n :N", 0 elif cmd == ('lun', '-expand', '-name', 'vol1', '-capacity', 2, '-sq', 'gb', '-o', '-ignoreThresholds'): return "Expand volume successfully", 0 elif cmd == ('lun', '-expand', '-name', 'failed_vol1', '-capacity', 2, '-sq', 'gb', '-o', '-ignoreThresholds'): return "Expand volume failed because it has snap", 97 elif cmd == ('lun', '-expand', '-name', 'failed_vol1', '-capacity', 3, '-sq', 'gb', '-o', '-ignoreThresholds'): return "Expand volume failed", 1023 elif cmd == ('storagegroup', '-list', '-gname', 'fakehost'): return '\nStorage Group Name: fakehost' + \ '\nStorage Group UID: 78:47:C4:F2:CA:' + \ '\n\nHLU/ALU Pairs:\n\n HLU Number ' + \ 'ALU Number\n ---------- ----------\n' + \ ' 10 64\nShareable: YES\n', 0 elif cmd == ('lun', '-list', '-l', '10', '-owner'): return '\n\nCurrent Owner: SP A', 0 elif cmd == ('storagegroup', '-addhlu', '-o', '-gname', 'fakehost', '-hlu', 1, '-alu', '10'): return None, 0 elif cmd == ('connection', '-getport', '-sp', 'A'): return 'SP: A\nPort ID: 5\nPort WWN: iqn.1992-04.' + \ 'com.emc:cx.fnm00124000215.a5\niSCSI Alias: 0215.a5\n', 0 else: self.assertTrue(False) def setUp(self): # backup back_os_path_exists = os.path.exists self.addCleanup(self._restore, back_os_path_exists) super(EMCVNXCLIDriverISCSITestCase, self).setUp() self.configuration = conf.Configuration(None) self.configuration.append_config_values = mock.Mock(return_value=0) self.configuration.naviseccli_path = '/opt/Navisphere/bin/naviseccli' self.configuration.san_ip = '10.0.0.1' self.configuration.storage_vnx_pool_name = 'unit_test_pool' self.configuration.san_login = 'sysadmin' self.configuration.san_password = 'sysadmin' self.configuration.default_timeout = 0 self.testData = EMCVNXCLIDriverTestData() self.navisecclicmd = '/opt/Navisphere/bin/naviseccli ' + \ '-address 10.0.0.1 -user sysadmin -password sysadmin -scope 0 ' os.path.exists = mock.Mock(return_value=1) EMCVnxCli._cli_execute = mock.Mock(side_effect=self._fake_cli_executor) self.driver = EMCCLIISCSIDriver(configuration=self.configuration) self.driver.cli.wait_interval = 0 def _restore(self, back_os_path_exists): # recover os.path.exists = back_os_path_exists def test_create_destroy_volume_withoutExtraSpec(self): # case self.driver.create_volume(self.testData.test_volume) self.driver.delete_volume(self.testData.test_volume) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'vol1'), mock.call('lun', '-list', '-name', 'vol1'), mock.call('lun', '-destroy', '-name', 'vol1', '-forceDetach', '-o')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_destroy_volume_withExtraSpec(self): # mock extra_specs = {'storage:provisioning': 'Thin'} volume_types.get = mock.Mock(return_value=extra_specs) # case self.driver.create_volume(self.testData.test_volume) self.driver.delete_volume(self.testData.test_volume) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'vol1'), mock.call('lun', '-list', '-name', 'vol1'), mock.call('lun', '-destroy', '-name', 'vol1', '-forceDetach', '-o')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_get_volume_stats(self): # mock self.configuration.safe_get = mock.Mock(return_value=0) # case rc = self.driver.get_volume_stats(True) stats = {'volume_backend_name': 'EMCCLIISCSIDriver', 'free_capacity_gb': 1000.0, 'driver_version': '02.00.00', 'total_capacity_gb': 10000.0, 'reserved_percentage': 0, 'vendor_name': 'EMC', 'storage_protocol': 'iSCSI'} self.assertEqual(rc, stats) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-userCap', '-availableCap')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_destroy_volume_snapshot(self): # case self.driver.create_snapshot(self.testData.test_snapshot) self.driver.delete_snapshot(self.testData.test_snapshot) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-list', '-name', 'vol-vol1'), mock.call('snap', '-create', '-res', '16', '-name', 'snapshot1', '-allowReadWrite', 'yes'), mock.call('snap', '-destroy', '-id', 'snapshot1', '-o')] EMCVnxCli._cli_execute.assert_has_calls(expected) @mock.patch.object( EMCCLIISCSIDriver, '_do_iscsi_discovery', return_value=['10.0.0.3:3260,1 ' 'iqn.1992-04.com.emc:cx.apm00123907237.a8', '10.0.0.4:3260,2 ' 'iqn.1992-04.com.emc:cx.apm00123907237.b8']) def test_initialize_connection(self, _mock_iscsi_discovery): # case rc = self.driver.initialize_connection( self.testData.test_volume, self.testData.connector) connect_info = {'driver_volume_type': 'iscsi', 'data': {'target_lun': -1, 'volume_id': '1', 'target_iqn': 'iqn.1992-04.com.emc:' + 'cx.apm00123907237.b8', 'target_discovered': True, 'target_portal': '10.0.0.4:3260'}} self.assertEqual(rc, connect_info) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('storagegroup', '-list', '-gname', 'fakehost'), mock.call('lun', '-list', '-name', 'vol1'), mock.call('lun', '-list', '-name', 'vol1'), mock.call('storagegroup', '-list', '-gname', 'fakehost'), mock.call('lun', '-list', '-l', '10', '-owner'), mock.call('storagegroup', '-addhlu', '-o', '-gname', 'fakehost', '-hlu', 1, '-alu', '10'), mock.call('lun', '-list', '-name', 'vol1'), mock.call('storagegroup', '-list', '-gname', 'fakehost'), mock.call('lun', '-list', '-l', '10', '-owner'), mock.call('connection', '-getport', '-sp', 'A')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_terminate_connection(self): # case self.driver.terminate_connection(self.testData.test_volume, self.testData.connector) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('storagegroup', '-list', '-gname', 'fakehost'), mock.call('lun', '-list', '-name', 'vol1'), mock.call('storagegroup', '-list', '-gname', 'fakehost'), mock.call('lun', '-list', '-l', '10', '-owner')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_volume_failed(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, self.testData.test_failed_volume) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'failed_vol1')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_volume_snapshot_failed(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, self.testData.test_failed_snapshot) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-list', '-name', 'vol-vol1'), mock.call('snap', '-create', '-res', '16', '-name', 'failed_snapshot', '-allowReadWrite', 'yes')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_volume_from_snapshot(self): # case self.driver.create_volume_from_snapshot(self.testData.test_volfromsnap, self.testData.test_snapshot) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'volfromsnapdest'), mock.call('lun', '-create', '-type', 'Snap', '-primaryLunName', 'vol-vol1', '-name', 'volfromsnap'), mock.call('lun', '-attach', '-name', 'volfromsnap', '-snapName', 'snapshot1'), mock.call('lun', '-list', '-name', 'volfromsnap'), mock.call('lun', '-list', '-name', 'volfromsnapdest'), mock.call('migrate', '-start', '-source', '10', '-dest', '101', '-rate', 'ASAP', '-o'), mock.call('lun', '-list', '-name', 'volfromsnap', '-attachedSnapshot')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_volume_from_snapshot_sync_failed(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.testData.test_volfromsnap_e, self.testData.test_snapshot) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'volfromsnap_edest'), mock.call('lun', '-create', '-type', 'Snap', '-primaryLunName', 'vol-vol1', '-name', 'volfromsnap_e'), mock.call('lun', '-attach', '-name', 'volfromsnap_e', '-snapName', 'snapshot1'), mock.call('lun', '-list', '-name', 'volfromsnap_e'), mock.call('lun', '-list', '-name', 'volfromsnap_edest'), mock.call('migrate', '-start', '-source', '20', '-dest', '201', '-rate', 'ASAP', '-o'), mock.call('lun', '-list', '-name', 'volfromsnap_e', '-attachedSnapshot')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_cloned_volume(self): # case self.driver.create_cloned_volume(self.testData.test_clone, self.testData.test_clone_src) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-list', '-name', 'clone1src'), mock.call('snap', '-create', '-res', '22', '-name', 'clone1src-temp-snapshot', '-allowReadWrite', 'yes'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'clone1dest'), mock.call('lun', '-create', '-type', 'Snap', '-primaryLunName', 'clone1src', '-name', 'clone1'), mock.call('lun', '-attach', '-name', 'clone1', '-snapName', 'clone1src-temp-snapshot'), mock.call('lun', '-list', '-name', 'clone1'), mock.call('lun', '-list', '-name', 'clone1dest'), mock.call('migrate', '-start', '-source', '30', '-dest', '301', '-rate', 'ASAP', '-o'), mock.call('lun', '-list', '-name', 'clone1', '-attachedSnapshot'), mock.call('snap', '-destroy', '-id', 'clone1src-temp-snapshot', '-o')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_volume_clone_sync_failed(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, self.testData.test_clone_e, self.testData.test_clone_src) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-list', '-name', 'clone1src'), mock.call('snap', '-create', '-res', '22', '-name', 'clone1src-temp-snapshot', '-allowReadWrite', 'yes'), mock.call('lun', '-create', '-type', 'NonThin', '-capacity', 1, '-sq', 'gb', '-poolName', 'unit_test_pool', '-name', 'clone1_edest'), mock.call('lun', '-create', '-type', 'Snap', '-primaryLunName', 'clone1src', '-name', 'clone1_e'), mock.call('lun', '-attach', '-name', 'clone1_e', '-snapName', 'clone1src-temp-snapshot'), mock.call('lun', '-list', '-name', 'clone1_e'), mock.call('lun', '-list', '-name', 'clone1_edest'), mock.call('migrate', '-start', '-source', '40', '-dest', '401', '-rate', 'ASAP', '-o'), mock.call('lun', '-list', '-name', 'clone1_e', '-attachedSnapshot')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_delete_volume_failed(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_volume, self.testData.test_failed_volume) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-destroy', '-name', 'failed_vol1', '-forceDetach', '-o')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_extend_volume(self): # case self.driver.extend_volume(self.testData.test_volume, 2) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-expand', '-name', 'vol1', '-capacity', 2, '-sq', 'gb', '-o', '-ignoreThresholds')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_extend_volume_has_snapshot(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, self.testData.test_failed_volume, 2) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-expand', '-name', 'failed_vol1', '-capacity', 2, '-sq', 'gb', '-o', '-ignoreThresholds')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_extend_volume_failed(self): # case self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, self.testData.test_failed_volume, 3) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-expand', '-name', 'failed_vol1', '-capacity', 3, '-sq', 'gb', '-o', '-ignoreThresholds')] EMCVnxCli._cli_execute.assert_has_calls(expected) def test_create_remove_export(self): # case self.driver.create_export(None, self.testData.test_volume) self.driver.remove_export(None, self.testData.test_volume) expected = [mock.call('storagepool', '-list', '-name', 'unit_test_pool', '-state'), mock.call('lun', '-list', '-name', 'vol1')] EMCVnxCli._cli_execute.assert_has_calls(expected) cinder-2014.1.5/cinder/tests/test_volume_configuration.py0000664000567000056700000000427212540642606024637 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Rackspace Hosting # All Rights Reserved. # # 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. """Tests for the configuration wrapper in volume drivers.""" from oslo.config import cfg from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration LOG = logging.getLogger(__name__) volume_opts = [ cfg.StrOpt('str_opt', default='STR_OPT'), cfg.BoolOpt('bool_opt', default=False) ] more_volume_opts = [ cfg.IntOpt('int_opt', default=1), ] CONF = cfg.CONF CONF.register_opts(volume_opts) CONF.register_opts(more_volume_opts) class VolumeConfigurationTest(test.TestCase): def setUp(self): super(VolumeConfigurationTest, self).setUp() def tearDown(self): super(VolumeConfigurationTest, self).tearDown() def test_group_grafts_opts(self): c = configuration.Configuration(volume_opts, config_group='foo') self.assertEqual(c.str_opt, CONF.foo.str_opt) self.assertEqual(c.bool_opt, CONF.foo.bool_opt) def test_opts_no_group(self): c = configuration.Configuration(volume_opts) self.assertEqual(c.str_opt, CONF.str_opt) self.assertEqual(c.bool_opt, CONF.bool_opt) def test_grafting_multiple_opts(self): c = configuration.Configuration(volume_opts, config_group='foo') c.append_config_values(more_volume_opts) self.assertEqual(c.str_opt, CONF.foo.str_opt) self.assertEqual(c.bool_opt, CONF.foo.bool_opt) self.assertEqual(c.int_opt, CONF.foo.int_opt) def test_safe_get(self): c = configuration.Configuration(volume_opts, config_group='foo') self.assertIsNone(c.safe_get('none_opt')) cinder-2014.1.5/cinder/tests/test_vmware_api.py0000664000567000056700000002244512540642606022535 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 VMware, Inc. # All Rights Reserved. # # 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. """ Unit tests for session management and API invocation classes. """ from eventlet import greenthread import mock from cinder import test from cinder.volume.drivers.vmware import api from cinder.volume.drivers.vmware import error_util class RetryTest(test.TestCase): """Tests for retry decorator class.""" def test_retry(self): result = "RESULT" @api.Retry() def func(*args, **kwargs): return result self.assertEqual(result, func()) def func2(*args, **kwargs): return result retry = api.Retry() self.assertEqual(result, retry(func2)()) self.assertTrue(retry._retry_count == 0) def test_retry_with_expected_exceptions(self): result = "RESULT" responses = [error_util.SessionOverLoadException(None), error_util.SessionOverLoadException(None), result] def func(*args, **kwargs): response = responses.pop(0) if isinstance(response, Exception): raise response return response sleep_time_incr = 0.01 retry_count = 2 retry = api.Retry(10, sleep_time_incr, 10, (error_util.SessionOverLoadException,)) self.assertEqual(result, retry(func)()) self.assertTrue(retry._retry_count == retry_count) self.assertEqual(retry_count * sleep_time_incr, retry._sleep_time) def test_retry_with_max_retries(self): responses = [error_util.SessionOverLoadException(None), error_util.SessionOverLoadException(None), error_util.SessionOverLoadException(None)] def func(*args, **kwargs): response = responses.pop(0) if isinstance(response, Exception): raise response return response retry = api.Retry(2, 0, 0, (error_util.SessionOverLoadException,)) self.assertRaises(error_util.SessionOverLoadException, retry(func)) self.assertTrue(retry._retry_count == 2) def test_retry_with_unexpected_exception(self): def func(*args, **kwargs): raise error_util.VimException(None) retry = api.Retry() self.assertRaises(error_util.VimException, retry(func)) self.assertTrue(retry._retry_count == 0) class VMwareAPISessionTest(test.TestCase): """Tests for VMwareAPISession.""" SERVER_IP = '10.1.2.3' USERNAME = 'admin' PASSWORD = 'password' def setUp(self): super(VMwareAPISessionTest, self).setUp() patcher = mock.patch('cinder.volume.drivers.vmware.vim.Vim') self.addCleanup(patcher.stop) self.VimMock = patcher.start() self.VimMock.side_effect = lambda *args, **kw: mock.Mock() def _create_api_session(self, _create_session, retry_count=10, task_poll_interval=1): return api.VMwareAPISession(VMwareAPISessionTest.SERVER_IP, VMwareAPISessionTest.USERNAME, VMwareAPISessionTest.PASSWORD, retry_count, task_poll_interval, 'https', _create_session) def test_create_session(self): session = mock.Mock() session.key = "12345" api_session = self._create_api_session(False) vim_obj = api_session.vim vim_obj.Login.return_value = session pbm_client = mock.Mock() api_session._pbm = pbm_client api_session.create_session() session_manager = vim_obj.service_content.sessionManager vim_obj.Login.assert_called_once_with( session_manager, userName=VMwareAPISessionTest.USERNAME, password=VMwareAPISessionTest.PASSWORD) self.assertFalse(vim_obj.TerminateSession.called) self.assertEqual(session.key, api_session._session_id) pbm_client.set_cookie.assert_called_once_with() def test_create_session_with_existing_session(self): old_session_key = '12345' new_session_key = '67890' session = mock.Mock() session.key = new_session_key api_session = self._create_api_session(False) api_session._session_id = old_session_key vim_obj = api_session.vim vim_obj.Login.return_value = session api_session.create_session() session_manager = vim_obj.service_content.sessionManager vim_obj.Login.assert_called_once_with( session_manager, userName=VMwareAPISessionTest.USERNAME, password=VMwareAPISessionTest.PASSWORD) vim_obj.TerminateSession.assert_called_once_with( session_manager, sessionId=[old_session_key]) self.assertEqual(new_session_key, api_session._session_id) def test_invoke_api(self): api_session = self._create_api_session(True) response = mock.Mock() def api(*args, **kwargs): return response module = mock.Mock() module.api = api ret = api_session.invoke_api(module, 'api') self.assertEqual(response, ret) def test_invoke_api_with_expected_exception(self): api_session = self._create_api_session(True) ret = mock.Mock() responses = [error_util.VimConnectionException(None), ret] def api(*args, **kwargs): response = responses.pop(0) if isinstance(response, Exception): raise response return response module = mock.Mock() module.api = api with mock.patch.object(greenthread, 'sleep'): self.assertEqual(ret, api_session.invoke_api(module, 'api')) def test_invoke_api_with_vim_fault_exception(self): api_session = self._create_api_session(True) def api(*args, **kwargs): raise error_util.VimFaultException([], "error") module = mock.Mock() module.api = api self.assertRaises(error_util.VimFaultException, lambda: api_session.invoke_api(module, 'api')) def test_invoke_api_with_empty_response(self): api_session = self._create_api_session(True) vim_obj = api_session.vim vim_obj.SessionIsActive.return_value = True def api(*args, **kwargs): raise error_util.VimFaultException( [error_util.NOT_AUTHENTICATED], "error") module = mock.Mock() module.api = api ret = api_session.invoke_api(module, 'api') self.assertEqual([], ret) vim_obj.SessionIsActive.assert_called_once_with( vim_obj.service_content.sessionManager, sessionID=api_session._session_id, userName=api_session._session_username) def test_invoke_api_with_stale_session(self): api_session = self._create_api_session(True) api_session.create_session = mock.Mock() vim_obj = api_session.vim vim_obj.SessionIsActive.return_value = False result = mock.Mock() responses = [error_util.VimFaultException( [error_util.NOT_AUTHENTICATED], "error"), result] def api(*args, **kwargs): response = responses.pop(0) if isinstance(response, Exception): raise response return response module = mock.Mock() module.api = api ret = api_session.invoke_api(module, 'api') self.assertEqual(result, ret) vim_obj.SessionIsActive.assert_called_once_with( vim_obj.service_content.sessionManager, sessionID=api_session._session_id, userName=api_session._session_username) api_session.create_session.assert_called_once_with() def test_invoke_api_with_session_is_active_error(self): api_session = self._create_api_session(True) api_session.create_session = mock.Mock() vim_obj = api_session.vim vim_obj.SessionIsActive.side_effect = error_util.VimFaultException( None, None) result = mock.Mock() responses = [error_util.VimFaultException( [error_util.NOT_AUTHENTICATED], "error"), result] def api(*args, **kwargs): response = responses.pop(0) if isinstance(response, Exception): raise response return response module = mock.Mock() module.api = api ret = api_session.invoke_api(module, 'api') self.assertEqual(result, ret) vim_obj.SessionIsActive.assert_called_once_with( vim_obj.service_content.sessionManager, sessionID=api_session._session_id, userName=api_session._session_username) api_session.create_session.assert_called_once_with() cinder-2014.1.5/cinder/tests/test_rbd.py0000664000567000056700000012044012540642606021144 0ustar jenkinsjenkins00000000000000 # Copyright 2012 Josh Durgin # Copyright 2013 Canonical Ltd. # All Rights Reserved. # # 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. import mock import os import tempfile from cinder import db from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import test from cinder.tests.image import fake as fake_image from cinder.tests.test_volume import DriverTestCase from cinder import units from cinder.volume import configuration as conf import cinder.volume.drivers.rbd as driver from cinder.volume.flows.manager import create_volume LOG = logging.getLogger(__name__) # This is used to collect raised exceptions so that tests may check what was # raised. # NOTE: this must be initialised in test setUp(). RAISED_EXCEPTIONS = [] class MockException(Exception): def __init__(self, *args, **kwargs): RAISED_EXCEPTIONS.append(self.__class__) class MockImageNotFoundException(MockException): """Used as mock for rbd.ImageNotFound.""" class MockImageBusyException(MockException): """Used as mock for rbd.ImageBusy.""" def common_mocks(f): """Decorator to set mocks common to all tests. The point of doing these mocks here is so that we don't accidentally set mocks that can't/dont't get unset. """ def _common_inner_inner1(inst, *args, **kwargs): @mock.patch('cinder.volume.drivers.rbd.RBDVolumeProxy') @mock.patch('cinder.volume.drivers.rbd.RADOSClient') @mock.patch('cinder.backup.drivers.ceph.rbd') @mock.patch('cinder.backup.drivers.ceph.rados') def _common_inner_inner2(mock_rados, mock_rbd, mock_client, mock_proxy): inst.mock_rbd = mock_rbd inst.mock_rados = mock_rados inst.mock_client = mock_client inst.mock_proxy = mock_proxy inst.mock_rados.Rados = mock.Mock inst.mock_rados.Rados.ioctx = mock.Mock() inst.mock_rbd.RBD = mock.Mock inst.mock_rbd.Image = mock.Mock inst.mock_rbd.Image.close = mock.Mock() inst.mock_rbd.RBD.Error = Exception inst.mock_rados.Error = Exception inst.mock_rbd.ImageBusy = MockImageBusyException inst.mock_rbd.ImageNotFound = MockImageNotFoundException inst.driver.rbd = inst.mock_rbd inst.driver.rados = inst.mock_rados return f(inst, *args, **kwargs) return _common_inner_inner2() return _common_inner_inner1 CEPH_MON_DUMP = """dumped monmap epoch 1 { "epoch": 1, "fsid": "33630410-6d93-4d66-8e42-3b953cf194aa", "modified": "2013-05-22 17:44:56.343618", "created": "2013-05-22 17:44:56.343618", "mons": [ { "rank": 0, "name": "a", "addr": "[::1]:6789\/0"}, { "rank": 1, "name": "b", "addr": "[::1]:6790\/0"}, { "rank": 2, "name": "c", "addr": "[::1]:6791\/0"}, { "rank": 3, "name": "d", "addr": "127.0.0.1:6792\/0"}, { "rank": 4, "name": "e", "addr": "example.com:6791\/0"}], "quorum": [ 0, 1, 2]} """ class TestUtil(test.TestCase): def test_ascii_str(self): self.assertIsNone(driver.ascii_str(None)) self.assertEqual('foo', driver.ascii_str('foo')) self.assertEqual('foo', driver.ascii_str(u'foo')) self.assertRaises(UnicodeEncodeError, driver.ascii_str, 'foo' + unichr(300)) class RBDTestCase(test.TestCase): def setUp(self): global RAISED_EXCEPTIONS RAISED_EXCEPTIONS = [] super(RBDTestCase, self).setUp() self.cfg = mock.Mock(spec=conf.Configuration) self.cfg.volume_tmp_dir = None self.cfg.rbd_pool = 'rbd' self.cfg.rbd_ceph_conf = None self.cfg.rbd_secret_uuid = None self.cfg.rbd_user = None self.cfg.volume_dd_blocksize = '1M' mock_exec = mock.Mock() mock_exec.return_value = ('', '') self.driver = driver.RBDDriver(execute=mock_exec, configuration=self.cfg) self.driver.set_initialized() self.volume_name = u'volume-00000001' self.snapshot_name = u'snapshot-00000001' self.volume_size = 1 self.volume = dict(name=self.volume_name, size=self.volume_size) self.snapshot = dict(volume_name=self.volume_name, name=self.snapshot_name) def tearDown(self): super(RBDTestCase, self).tearDown() @common_mocks def test_create_volume(self): client = self.mock_client.return_value client.__enter__.return_value = client with mock.patch.object(self.driver, '_supports_layering') as \ mock_supports_layering: mock_supports_layering.return_value = True self.mock_rbd.RBD.create = mock.Mock() self.driver.create_volume(self.volume) args = [client.ioctx, str(self.volume_name), self.volume_size * units.GiB] kwargs = {'old_format': False, 'features': self.mock_rbd.RBD_FEATURE_LAYERING} self.mock_rbd.RBD.create.assert_called_once_with(*args, **kwargs) client.__enter__.assert_called_once() client.__exit__.assert_called_once() mock_supports_layering.assert_called_once() @common_mocks def test_create_volume_no_layering(self): client = self.mock_client.return_value client.__enter__.return_value = client with mock.patch.object(self.driver, '_supports_layering') as \ mock_supports_layering: mock_supports_layering.return_value = False self.mock_rbd.RBD.create = mock.Mock() self.driver.create_volume(self.volume) args = [client.ioctx, str(self.volume_name), self.volume_size * units.GiB] kwargs = {'old_format': True, 'features': 0} self.mock_rbd.RBD.create.assert_called_once_with(*args, **kwargs) client.__enter__.assert_called_once() client.__exit__.assert_called_once() mock_supports_layering.assert_called_once() @common_mocks def test_delete_backup_snaps(self): self.driver.rbd.Image.remove_snap = mock.Mock() with mock.patch.object(self.driver, '_get_backup_snaps') as \ mock_get_backup_snaps: mock_get_backup_snaps.return_value = [{'name': 'snap1'}] rbd_image = self.driver.rbd.Image() self.driver._delete_backup_snaps(rbd_image) mock_get_backup_snaps.assert_called_once_with(rbd_image) self.assertTrue(self.driver.rbd.Image.remove_snap.called) @common_mocks def test_delete_volume(self): client = self.mock_client.return_value self.driver.rbd.Image.list_snaps = mock.Mock() self.driver.rbd.Image.list_snaps.return_value = [] self.driver.rbd.Image.close = mock.Mock() self.driver.rbd.Image.remove = mock.Mock() self.driver.rbd.Image.unprotect_snap = mock.Mock() with mock.patch.object(self.driver, '_get_clone_info') as \ mock_get_clone_info: with mock.patch.object(self.driver, '_delete_backup_snaps') as \ mock_delete_backup_snaps: mock_get_clone_info.return_value = (None, None, None) self.driver.delete_volume(self.volume) mock_get_clone_info.assert_called_once() self.driver.rbd.Image.list_snaps.assert_called_once() client.__enter__.assert_called_once() client.__exit__.assert_called_once() mock_delete_backup_snaps.assert_called_once() self.assertFalse(self.driver.rbd.Image.unprotect_snap.called) self.driver.rbd.RBD.remove.assert_called_once() @common_mocks def delete_volume_not_found(self): self.mock_rbd.Image.side_effect = self.mock_rbd.ImageNotFound self.assertIsNone(self.driver.delete_volume(self.volume)) self.mock_rbd.Image.assert_called_once() # Make sure the exception was raised self.assertEqual(RAISED_EXCEPTIONS, [self.mock_rbd.ImageNotFound]) @common_mocks def test_delete_busy_volume(self): self.mock_rbd.Image.list_snaps = mock.Mock() self.mock_rbd.Image.list_snaps.return_value = [] self.mock_rbd.Image.unprotect_snap = mock.Mock() self.mock_rbd.RBD.remove = mock.Mock() self.mock_rbd.RBD.remove.side_effect = self.mock_rbd.ImageBusy with mock.patch.object(self.driver, '_get_clone_info') as \ mock_get_clone_info: mock_get_clone_info.return_value = (None, None, None) with mock.patch.object(self.driver, '_delete_backup_snaps') as \ mock_delete_backup_snaps: with mock.patch.object(driver, 'RADOSClient') as \ mock_rados_client: self.assertRaises(exception.VolumeIsBusy, self.driver.delete_volume, self.volume) mock_get_clone_info.assert_called_once() self.mock_rbd.Image.list_snaps.assert_called_once() mock_rados_client.assert_called_once() mock_delete_backup_snaps.assert_called_once() self.assertFalse(self.mock_rbd.Image.unprotect_snap.called) self.mock_rbd.RBD.remove.assert_called_once() # Make sure the exception was raised self.assertEqual(RAISED_EXCEPTIONS, [self.mock_rbd.ImageBusy]) @common_mocks def test_delete_volume_not_found(self): self.mock_rbd.Image.list_snaps = mock.Mock() self.mock_rbd.Image.list_snaps.return_value = [] self.mock_rbd.Image.unprotect_snap = mock.Mock() self.mock_rbd.RBD.remove = mock.Mock() self.mock_rbd.RBD.remove.side_effect = self.mock_rbd.ImageNotFound with mock.patch.object(self.driver, '_get_clone_info') as \ mock_get_clone_info: mock_get_clone_info.return_value = (None, None, None) with mock.patch.object(self.driver, '_delete_backup_snaps') as \ mock_delete_backup_snaps: with mock.patch.object(driver, 'RADOSClient') as \ mock_rados_client: self.assertIsNone(self.driver.delete_volume(self.volume)) mock_get_clone_info.assert_called_once() self.mock_rbd.Image.list_snaps.assert_called_once() mock_rados_client.assert_called_once() mock_delete_backup_snaps.assert_called_once() self.assertFalse(self.mock_rbd.Image.unprotect_snap.called) # Make sure the exception was raised self.assertEqual(RAISED_EXCEPTIONS, [self.mock_rbd.ImageNotFound]) @common_mocks def test_create_snapshot(self): proxy = self.mock_proxy.return_value proxy.__enter__.return_value = proxy self.driver.create_snapshot(self.snapshot) args = [str(self.snapshot_name)] proxy.create_snap.assert_called_with(*args) proxy.protect_snap.assert_called_with(*args) @common_mocks def test_delete_snapshot(self): proxy = self.mock_proxy.return_value proxy.__enter__.return_value = proxy self.driver.delete_snapshot(self.snapshot) args = [str(self.snapshot_name)] proxy.remove_snap.assert_called_with(*args) proxy.unprotect_snap.assert_called_with(*args) @common_mocks def test_get_clone_info(self): volume = self.mock_rbd.Image() volume.set_snap = mock.Mock() volume.parent_info = mock.Mock() parent_info = ('a', 'b', '%s.clone_snap' % (self.volume_name)) volume.parent_info.return_value = parent_info info = self.driver._get_clone_info(volume, self.volume_name) self.assertEqual(info, parent_info) self.assertFalse(volume.set_snap.called) volume.parent_info.assert_called_once() @common_mocks def test_get_clone_info_w_snap(self): volume = self.mock_rbd.Image() volume.set_snap = mock.Mock() volume.parent_info = mock.Mock() parent_info = ('a', 'b', '%s.clone_snap' % (self.volume_name)) volume.parent_info.return_value = parent_info snapshot = self.mock_rbd.ImageSnapshot() info = self.driver._get_clone_info(volume, self.volume_name, snap=snapshot) self.assertEqual(info, parent_info) volume.set_snap.assert_called_once() self.assertEqual(volume.set_snap.call_count, 2) volume.parent_info.assert_called_once() @common_mocks def test_get_clone_info_w_exception(self): volume = self.mock_rbd.Image() volume.set_snap = mock.Mock() volume.parent_info = mock.Mock() volume.parent_info.side_effect = self.mock_rbd.ImageNotFound snapshot = self.mock_rbd.ImageSnapshot() info = self.driver._get_clone_info(volume, self.volume_name, snap=snapshot) self.assertEqual(info, (None, None, None)) volume.set_snap.assert_called_once() self.assertEqual(volume.set_snap.call_count, 2) volume.parent_info.assert_called_once() # Make sure the exception was raised self.assertEqual(RAISED_EXCEPTIONS, [self.mock_rbd.ImageNotFound]) @common_mocks def test_get_clone_info_deleted_volume(self): volume = self.mock_rbd.Image() volume.set_snap = mock.Mock() volume.parent_info = mock.Mock() parent_info = ('a', 'b', '%s.clone_snap' % (self.volume_name)) volume.parent_info.return_value = parent_info info = self.driver._get_clone_info(volume, "%s.deleted" % (self.volume_name)) self.assertEqual(info, parent_info) self.assertFalse(volume.set_snap.called) volume.parent_info.assert_called_once() @common_mocks def test_create_cloned_volume(self): src_name = u'volume-00000001' dst_name = u'volume-00000002' self.cfg.rbd_max_clone_depth = 2 self.mock_rbd.RBD.clone = mock.Mock() with mock.patch.object(self.driver, '_get_clone_depth') as \ mock_get_clone_depth: # Try with no flatten required mock_get_clone_depth.return_value = 1 self.mock_rbd.Image.create_snap = mock.Mock() self.mock_rbd.Image.protect_snap = mock.Mock() self.mock_rbd.Image.close = mock.Mock() self.driver.create_cloned_volume(dict(name=dst_name), dict(name=src_name)) self.mock_rbd.Image.create_snap.assert_called_once() self.mock_rbd.Image.protect_snap.assert_called_once() self.mock_rbd.RBD.clone.assert_called_once() self.mock_rbd.Image.close.assert_called_once() self.assertTrue(mock_get_clone_depth.called) @common_mocks def test_create_cloned_volume_w_flatten(self): src_name = u'volume-00000001' dst_name = u'volume-00000002' self.cfg.rbd_max_clone_depth = 1 self.mock_rbd.RBD.clone = mock.Mock() self.mock_rbd.RBD.clone.side_effect = self.mock_rbd.RBD.Error with mock.patch.object(self.driver, '_get_clone_depth') as \ mock_get_clone_depth: # Try with no flatten required mock_get_clone_depth.return_value = 1 self.mock_rbd.Image.create_snap = mock.Mock() self.mock_rbd.Image.protect_snap = mock.Mock() self.mock_rbd.Image.unprotect_snap = mock.Mock() self.mock_rbd.Image.remove_snap = mock.Mock() self.mock_rbd.Image.close = mock.Mock() self.assertRaises(self.mock_rbd.RBD.Error, self.driver.create_cloned_volume, dict(name=dst_name), dict(name=src_name)) self.mock_rbd.Image.create_snap.assert_called_once() self.mock_rbd.Image.protect_snap.assert_called_once() self.mock_rbd.RBD.clone.assert_called_once() self.mock_rbd.Image.unprotect_snap.assert_called_once() self.mock_rbd.Image.remove_snap.assert_called_once() self.mock_rbd.Image.close.assert_called_once() self.assertTrue(mock_get_clone_depth.called) @common_mocks def test_create_cloned_volume_w_clone_exception(self): src_name = u'volume-00000001' dst_name = u'volume-00000002' self.cfg.rbd_max_clone_depth = 2 self.mock_rbd.RBD.clone = mock.Mock() self.mock_rbd.RBD.clone.side_effect = self.mock_rbd.RBD.Error with mock.patch.object(self.driver, '_get_clone_depth') as \ mock_get_clone_depth: # Try with no flatten required mock_get_clone_depth.return_value = 1 self.mock_rbd.Image.create_snap = mock.Mock() self.mock_rbd.Image.protect_snap = mock.Mock() self.mock_rbd.Image.unprotect_snap = mock.Mock() self.mock_rbd.Image.remove_snap = mock.Mock() self.mock_rbd.Image.close = mock.Mock() self.assertRaises(self.mock_rbd.RBD.Error, self.driver.create_cloned_volume, dict(name=dst_name), dict(name=src_name)) self.mock_rbd.Image.create_snap.assert_called_once() self.mock_rbd.Image.protect_snap.assert_called_once() self.mock_rbd.RBD.clone.assert_called_once() self.mock_rbd.Image.unprotect_snap.assert_called_once() self.mock_rbd.Image.remove_snap.assert_called_once() self.mock_rbd.Image.close.assert_called_once() @common_mocks def test_good_locations(self): locations = ['rbd://fsid/pool/image/snap', 'rbd://%2F/%2F/%2F/%2F', ] map(self.driver._parse_location, locations) @common_mocks def test_bad_locations(self): locations = ['rbd://image', 'http://path/to/somewhere/else', 'rbd://image/extra', 'rbd://image/', 'rbd://fsid/pool/image/', 'rbd://fsid/pool/image/snap/', 'rbd://///', ] for loc in locations: self.assertRaises(exception.ImageUnacceptable, self.driver._parse_location, loc) self.assertFalse( self.driver._is_cloneable(loc, {'disk_format': 'raw'})) @common_mocks def test_cloneable(self): with mock.patch.object(self.driver, '_get_fsid') as mock_get_fsid: mock_get_fsid.return_value = 'abc' location = 'rbd://abc/pool/image/snap' info = {'disk_format': 'raw'} self.assertTrue(self.driver._is_cloneable(location, info)) self.assertTrue(mock_get_fsid.called) @common_mocks def test_uncloneable_different_fsid(self): with mock.patch.object(self.driver, '_get_fsid') as mock_get_fsid: mock_get_fsid.return_value = 'abc' location = 'rbd://def/pool/image/snap' self.assertFalse( self.driver._is_cloneable(location, {'disk_format': 'raw'})) self.assertTrue(mock_get_fsid.called) @common_mocks def test_uncloneable_unreadable(self): with mock.patch.object(self.driver, '_get_fsid') as mock_get_fsid: mock_get_fsid.return_value = 'abc' location = 'rbd://abc/pool/image/snap' self.mock_proxy.side_effect = self.mock_rbd.Error args = [location, {'disk_format': 'raw'}] self.assertFalse(self.driver._is_cloneable(*args)) self.mock_proxy.assert_called_once() self.assertTrue(mock_get_fsid.called) @common_mocks def test_uncloneable_bad_format(self): with mock.patch.object(self.driver, '_get_fsid') as mock_get_fsid: mock_get_fsid.return_value = 'abc' location = 'rbd://abc/pool/image/snap' formats = ['qcow2', 'vmdk', 'vdi'] for f in formats: self.assertFalse( self.driver._is_cloneable(location, {'disk_format': f})) self.assertTrue(mock_get_fsid.called) def _copy_image(self): with mock.patch.object(tempfile, 'NamedTemporaryFile'): with mock.patch.object(os.path, 'exists') as mock_exists: mock_exists.return_value = True with mock.patch.object(image_utils, 'fetch_to_raw'): with mock.patch.object(self.driver, 'delete_volume'): with mock.patch.object(self.driver, '_resize'): mock_image_service = mock.MagicMock() args = [None, {'name': 'test', 'size': 1}, mock_image_service, None] self.driver.copy_image_to_volume(*args) @common_mocks def test_copy_image_no_volume_tmp(self): self.cfg.volume_tmp_dir = None self._copy_image() @common_mocks def test_copy_image_volume_tmp(self): self.cfg.volume_tmp_dir = '/var/run/cinder/tmp' self._copy_image() @common_mocks def test_update_volume_stats(self): client = self.mock_client.return_value client.__enter__.return_value = client client.cluster = mock.Mock() client.cluster.get_cluster_stats = mock.Mock() client.cluster.get_cluster_stats.return_value = {'kb': 1024 ** 3, 'kb_avail': 1024 ** 2} self.driver.configuration.safe_get = mock.Mock() self.driver.configuration.safe_get.return_value = 'RBD' expected = dict( volume_backend_name='RBD', vendor_name='Open Source', driver_version=self.driver.VERSION, storage_protocol='ceph', total_capacity_gb=1024, free_capacity_gb=1, reserved_percentage=0) actual = self.driver.get_volume_stats(True) client.cluster.get_cluster_stats.assert_called_once() self.assertDictMatch(expected, actual) @common_mocks def test_update_volume_stats_error(self): client = self.mock_client.return_value client.__enter__.return_value = client client.cluster = mock.Mock() client.cluster.get_cluster_stats = mock.Mock() client.cluster.get_cluster_stats.side_effect = Exception self.driver.configuration.safe_get = mock.Mock() self.driver.configuration.safe_get.return_value = 'RBD' expected = dict(volume_backend_name='RBD', vendor_name='Open Source', driver_version=self.driver.VERSION, storage_protocol='ceph', total_capacity_gb='unknown', free_capacity_gb='unknown', reserved_percentage=0) actual = self.driver.get_volume_stats(True) client.cluster.get_cluster_stats.assert_called_once() self.assertDictMatch(expected, actual) @common_mocks def test_get_mon_addrs(self): with mock.patch.object(self.driver, '_execute') as mock_execute: mock_execute.return_value = (CEPH_MON_DUMP, '') hosts = ['::1', '::1', '::1', '127.0.0.1', 'example.com'] ports = ['6789', '6790', '6791', '6792', '6791'] self.assertEqual((hosts, ports), self.driver._get_mon_addrs()) @common_mocks def test_initialize_connection(self): hosts = ['::1', '::1', '::1', '127.0.0.1', 'example.com'] ports = ['6789', '6790', '6791', '6792', '6791'] with mock.patch.object(self.driver, '_get_mon_addrs') as \ mock_get_mon_addrs: mock_get_mon_addrs.return_value = (hosts, ports) expected = { 'driver_volume_type': 'rbd', 'data': { 'name': '%s/%s' % (self.cfg.rbd_pool, self.volume_name), 'hosts': hosts, 'ports': ports, 'auth_enabled': False, 'auth_username': None, 'secret_type': 'ceph', 'secret_uuid': None, } } volume = dict(name=self.volume_name) actual = self.driver.initialize_connection(volume, None) self.assertDictMatch(expected, actual) self.assertTrue(mock_get_mon_addrs.called) @common_mocks def test_clone(self): src_pool = u'images' src_image = u'image-name' src_snap = u'snapshot-name' client_stack = [] def mock__enter__(inst): def _inner(): client_stack.append(inst) return inst return _inner client = self.mock_client.return_value # capture both rados client used to perform the clone client.__enter__.side_effect = mock__enter__(client) self.mock_rbd.RBD.clone = mock.Mock() self.driver._clone(self.volume, src_pool, src_image, src_snap) args = [client_stack[0].ioctx, str(src_image), str(src_snap), client_stack[1].ioctx, str(self.volume_name)] kwargs = {'features': self.mock_rbd.RBD_FEATURE_LAYERING} self.mock_rbd.RBD.clone.assert_called_once_with(*args, **kwargs) self.assertEqual(client.__enter__.call_count, 2) @common_mocks def test_extend_volume(self): fake_size = '20' fake_vol = {'project_id': 'testprjid', 'name': self.volume_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'} self.mox.StubOutWithMock(self.driver, '_resize') size = int(fake_size) * units.GiB self.driver._resize(fake_vol, size=size) self.mox.ReplayAll() self.driver.extend_volume(fake_vol, fake_size) self.mox.VerifyAll() @common_mocks def test_rbd_volume_proxy_init(self): snap = u'snapshot-name' client = self.mock_client.return_value client.__enter__.return_value = client with mock.patch.object(self.driver, '_connect_to_rados') as \ mock_connect_from_rados: with mock.patch.object(self.driver, '_disconnect_from_rados') as \ mock_disconnect_from_rados: mock_connect_from_rados.return_value = (None, None) mock_disconnect_from_rados.return_value = (None, None) with driver.RBDVolumeProxy(self.driver, self.volume_name): mock_connect_from_rados.assert_called_once() self.assertFalse(mock_disconnect_from_rados.called) mock_disconnect_from_rados.assert_called_once() mock_connect_from_rados.reset_mock() mock_disconnect_from_rados.reset_mock() with driver.RBDVolumeProxy(self.driver, self.volume_name, snapshot=snap): mock_connect_from_rados.assert_called_once() self.assertFalse(mock_disconnect_from_rados.called) mock_disconnect_from_rados.assert_called_once() @common_mocks def test_connect_to_rados(self): # Default self.cfg.rados_connect_timeout = -1 self.mock_rados.Rados.connect = mock.Mock() self.mock_rados.Rados.shutdown = mock.Mock() self.mock_rados.Rados.open_ioctx = mock.Mock() self.mock_rados.Rados.open_ioctx.return_value = \ self.mock_rados.Rados.ioctx # default configured pool ret = self.driver._connect_to_rados() self.assertTrue(self.mock_rados.Rados.connect.called) self.assertTrue(self.mock_rados.Rados.open_ioctx.called) self.assertIsInstance(ret[0], self.mock_rados.Rados) self.assertEqual(ret[1], self.mock_rados.Rados.ioctx) self.mock_rados.Rados.open_ioctx.assert_called_with(self.cfg.rbd_pool) # different pool ret = self.driver._connect_to_rados('alt_pool') self.assertTrue(self.mock_rados.Rados.connect.called) self.assertTrue(self.mock_rados.Rados.open_ioctx.called) self.assertIsInstance(ret[0], self.mock_rados.Rados) self.assertEqual(ret[1], self.mock_rados.Rados.ioctx) self.mock_rados.Rados.open_ioctx.assert_called_with('alt_pool') # With timeout self.cfg.rados_connect_timeout = 1 self.mock_rados.Rados.connect.reset_mock() self.driver._connect_to_rados() self.mock_rados.Rados.connect.assert_called_once_with(timeout=1) # error self.mock_rados.Rados.open_ioctx.reset_mock() self.mock_rados.Rados.shutdown.reset_mock() self.mock_rados.Rados.open_ioctx.side_effect = self.mock_rados.Error self.assertRaises(self.mock_rados.Error, self.driver._connect_to_rados) self.mock_rados.Rados.open_ioctx.assert_called_once() self.mock_rados.Rados.shutdown.assert_called_once() class RBDImageIOWrapperTestCase(test.TestCase): def setUp(self): super(RBDImageIOWrapperTestCase, self).setUp() self.meta = mock.Mock() self.meta.user = 'mock_user' self.meta.conf = 'mock_conf' self.meta.pool = 'mock_pool' self.meta.image = mock.Mock() self.meta.image.read = mock.Mock() self.meta.image.write = mock.Mock() self.meta.image.size = mock.Mock() self.mock_rbd_wrapper = driver.RBDImageIOWrapper(self.meta) self.data_length = 1024 self.full_data = 'abcd' * 256 def tearDown(self): super(RBDImageIOWrapperTestCase, self).tearDown() def test_init(self): self.assertEqual(self.mock_rbd_wrapper._rbd_meta, self.meta) self.assertEqual(self.mock_rbd_wrapper._offset, 0) def test_inc_offset(self): self.mock_rbd_wrapper._inc_offset(10) self.mock_rbd_wrapper._inc_offset(10) self.assertEqual(self.mock_rbd_wrapper._offset, 20) def test_rbd_image(self): self.assertEqual(self.mock_rbd_wrapper.rbd_image, self.meta.image) def test_rbd_user(self): self.assertEqual(self.mock_rbd_wrapper.rbd_user, self.meta.user) def test_rbd_pool(self): self.assertEqual(self.mock_rbd_wrapper.rbd_conf, self.meta.conf) def test_rbd_conf(self): self.assertEqual(self.mock_rbd_wrapper.rbd_pool, self.meta.pool) def test_read(self): def mock_read(offset, length): return self.full_data[offset:length] self.meta.image.read.side_effect = mock_read self.meta.image.size.return_value = self.data_length data = self.mock_rbd_wrapper.read() self.assertEqual(data, self.full_data) data = self.mock_rbd_wrapper.read() self.assertEqual(data, '') self.mock_rbd_wrapper.seek(0) data = self.mock_rbd_wrapper.read() self.assertEqual(data, self.full_data) self.mock_rbd_wrapper.seek(0) data = self.mock_rbd_wrapper.read(10) self.assertEqual(data, self.full_data[:10]) def test_write(self): self.mock_rbd_wrapper.write(self.full_data) self.assertEqual(self.mock_rbd_wrapper._offset, 1024) def test_seekable(self): self.assertTrue(self.mock_rbd_wrapper.seekable) def test_seek(self): self.assertEqual(self.mock_rbd_wrapper._offset, 0) self.mock_rbd_wrapper.seek(10) self.assertEqual(self.mock_rbd_wrapper._offset, 10) self.mock_rbd_wrapper.seek(10) self.assertEqual(self.mock_rbd_wrapper._offset, 10) self.mock_rbd_wrapper.seek(10, 1) self.assertEqual(self.mock_rbd_wrapper._offset, 20) self.mock_rbd_wrapper.seek(0) self.mock_rbd_wrapper.write(self.full_data) self.meta.image.size.return_value = self.data_length self.mock_rbd_wrapper.seek(0) self.assertEqual(self.mock_rbd_wrapper._offset, 0) self.mock_rbd_wrapper.seek(10, 2) self.assertEqual(self.mock_rbd_wrapper._offset, self.data_length + 10) self.mock_rbd_wrapper.seek(-10, 2) self.assertEqual(self.mock_rbd_wrapper._offset, self.data_length - 10) # test exceptions. self.assertRaises(IOError, self.mock_rbd_wrapper.seek, 0, 3) self.assertRaises(IOError, self.mock_rbd_wrapper.seek, -1) # offset should not have been changed by any of the previous # operations. self.assertEqual(self.mock_rbd_wrapper._offset, self.data_length - 10) def test_tell(self): self.assertEqual(self.mock_rbd_wrapper.tell(), 0) self.mock_rbd_wrapper._inc_offset(10) self.assertEqual(self.mock_rbd_wrapper.tell(), 10) def test_flush(self): with mock.patch.object(driver, 'LOG') as mock_logger: self.meta.image.flush = mock.Mock() self.mock_rbd_wrapper.flush() self.meta.image.flush.assert_called_once() self.meta.image.flush.reset_mock() # this should be caught and logged silently. self.meta.image.flush.side_effect = AttributeError self.mock_rbd_wrapper.flush() self.meta.image.flush.assert_called_once() msg = _("flush() not supported in this version of librbd") mock_logger.warning.assert_called_with(msg) def test_fileno(self): self.assertRaises(IOError, self.mock_rbd_wrapper.fileno) def test_close(self): self.mock_rbd_wrapper.close() class ManagedRBDTestCase(DriverTestCase): driver_name = "cinder.volume.drivers.rbd.RBDDriver" def setUp(self): super(ManagedRBDTestCase, self).setUp() # TODO(dosaboy): need to remove dependency on mox stubs here once # image.fake has been converted to mock. fake_image.stub_out_image_service(self.stubs) self.volume.driver.set_initialized() self.volume.stats = {'allocated_capacity_gb': 0} self.called = [] def _create_volume_from_image(self, expected_status, raw=False, clone_error=False): """Try to clone a volume from an image, and check the status afterwards. NOTE: if clone_error is True we force the image type to raw otherwise clone_image is not called """ volume_id = 1 # See tests.image.fake for image types. if raw: image_id = '155d900f-4e14-4e4c-a73d-069cbf4541e6' else: image_id = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' # creating volume testdata db.volume_create(self.context, {'id': volume_id, 'updated_at': timeutils.utcnow(), 'display_description': 'Test Desc', 'size': 20, 'status': 'creating', 'instance_uuid': None, 'host': 'dummy'}) try: if not clone_error: self.volume.create_volume(self.context, volume_id, image_id=image_id) else: self.assertRaises(exception.CinderException, self.volume.create_volume, self.context, volume_id, image_id=image_id) volume = db.volume_get(self.context, volume_id) self.assertEqual(volume['status'], expected_status) finally: # cleanup db.volume_destroy(self.context, volume_id) def test_create_vol_from_image_status_available(self): """Clone raw image then verify volume is in available state.""" def _mock_clone_image(volume, image_location, image_id, image_meta): return {'provider_location': None}, True with mock.patch.object(self.volume.driver, 'clone_image') as \ mock_clone_image: mock_clone_image.side_effect = _mock_clone_image with mock.patch.object(self.volume.driver, 'create_volume') as \ mock_create: with mock.patch.object(create_volume.CreateVolumeFromSpecTask, '_copy_image_to_volume') as mock_copy: self._create_volume_from_image('available', raw=True) self.assertFalse(mock_copy.called) mock_clone_image.assert_called_once() self.assertFalse(mock_create.called) def test_create_vol_from_non_raw_image_status_available(self): """Clone non-raw image then verify volume is in available state.""" def _mock_clone_image(volume, image_location, image_id, image_meta): return {'provider_location': None}, False with mock.patch.object(self.volume.driver, 'clone_image') as \ mock_clone_image: mock_clone_image.side_effect = _mock_clone_image with mock.patch.object(self.volume.driver, 'create_volume') as \ mock_create: with mock.patch.object(create_volume.CreateVolumeFromSpecTask, '_copy_image_to_volume') as mock_copy: self._create_volume_from_image('available', raw=False) mock_copy.assert_called_once() mock_clone_image.assert_called_once() mock_create.assert_called_once() def test_create_vol_from_image_status_error(self): """Fail to clone raw image then verify volume is in error state.""" with mock.patch.object(self.volume.driver, 'clone_image') as \ mock_clone_image: mock_clone_image.side_effect = exception.CinderException with mock.patch.object(self.volume.driver, 'create_volume') as \ mock_create: with mock.patch.object(create_volume.CreateVolumeFromSpecTask, '_copy_image_to_volume') as mock_copy: self._create_volume_from_image('error', raw=True, clone_error=True) self.assertFalse(mock_copy.called) mock_clone_image.assert_called_once() self.assertFalse(self.volume.driver.create_volume.called) def test_clone_failure(self): driver = self.volume.driver with mock.patch.object(driver, '_is_cloneable', lambda *args: False): image_loc = (mock.Mock(), mock.Mock()) actual = driver.clone_image(mock.Mock(), image_loc, mock.Mock(), {}) self.assertEqual(({}, False), actual) self.assertEqual(({}, False), driver.clone_image(object(), None, None, {})) def test_clone_success(self): expected = ({'provider_location': None}, True) driver = self.volume.driver with mock.patch.object(self.volume.driver, '_is_cloneable') as \ mock_is_cloneable: mock_is_cloneable.return_value = True with mock.patch.object(self.volume.driver, '_clone') as \ mock_clone: with mock.patch.object(self.volume.driver, '_resize') as \ mock_resize: image_loc = ('rbd://fee/fi/fo/fum', None) actual = driver.clone_image({'name': 'vol1'}, image_loc, 'id.foo', {'disk_format': 'raw'}) self.assertEqual(expected, actual) mock_clone.assert_called_once() mock_resize.assert_called_once() cinder-2014.1.5/cinder/tests/windows/0000775000567000056700000000000012540643114020450 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/windows/__init__.py0000664000567000056700000000000012540642606022554 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/windows/db_fakes.py0000664000567000056700000000273312540642606022572 0ustar jenkinsjenkins00000000000000# Copyright 2012 Pedro Navarro Perez # # 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. """ Stubouts, mocks and fixtures for windows volume test suite """ def get_fake_volume_info(): return {'name': 'volume_name', 'size': 1, 'provider_location': 'iqn.2010-10.org.openstack:' + 'volume_name', 'id': 1, 'provider_auth': None} def get_fake_volume_info_cloned(): return {'name': 'volume_name_cloned', 'size': 1, 'provider_location': 'iqn.2010-10.org.openstack:' + 'volume_name_cloned', 'id': 1, 'provider_auth': None} def get_fake_image_meta(): return {'id': '10958016-e196-42e3-9e7f-5d8927ae3099' } def get_fake_snapshot_info(): return {'name': 'snapshot_name', 'volume_name': 'volume_name', } def get_fake_connector_info(): return {'initiator': 'iqn.2010-10.org.openstack:' + 'volume_name', } cinder-2014.1.5/cinder/tests/test_utils.py0000664000567000056700000011112312540642606021533 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # # 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. import datetime import hashlib import os import socket import tempfile import uuid import mock from oslo.config import cfg import paramiko import six import cinder from cinder.brick.initiator import connector from cinder.brick.initiator import linuxfc from cinder import exception from cinder.openstack.common import processutils as putils from cinder.openstack.common import timeutils from cinder import test from cinder import utils CONF = cfg.CONF def _get_local_mock_open(fake_data='abcd efgh'): mock_context_manager = mock.Mock() mock_context_manager.__enter__ = mock.Mock( return_value=six.StringIO(fake_data)) mock_context_manager.__exit__ = mock.Mock(return_value=False) return mock_context_manager class ExecuteTestCase(test.TestCase): def test_retry_on_failure(self): fd, tmpfilename = tempfile.mkstemp() _, tmpfilename2 = tempfile.mkstemp() try: fp = os.fdopen(fd, 'w+') fp.write('''#!/bin/sh # If stdin fails to get passed during one of the runs, make a note. if ! grep -q foo then echo 'failure' > "$1" fi # If stdin has failed to get passed during this or a previous run, exit early. if grep failure "$1" then exit 1 fi runs="$(cat $1)" if [ -z "$runs" ] then runs=0 fi runs=$(($runs + 1)) echo $runs > "$1" exit 1 ''') fp.close() os.chmod(tmpfilename, 0o755) self.assertRaises(putils.ProcessExecutionError, utils.execute, tmpfilename, tmpfilename2, attempts=10, process_input='foo', delay_on_retry=False) fp = open(tmpfilename2, 'r+') runs = fp.read() fp.close() self.assertNotEqual(runs.strip(), 'failure', 'stdin did not ' 'always get passed ' 'correctly') runs = int(runs.strip()) self.assertEqual(runs, 10, 'Ran %d times instead of 10.' % (runs,)) finally: os.unlink(tmpfilename) os.unlink(tmpfilename2) def test_unknown_kwargs_raises_error(self): self.assertRaises(putils.UnknownArgumentError, utils.execute, '/usr/bin/env', 'true', this_is_not_a_valid_kwarg=True) def test_check_exit_code_boolean(self): utils.execute('/usr/bin/env', 'false', check_exit_code=False) self.assertRaises(putils.ProcessExecutionError, utils.execute, '/usr/bin/env', 'false', check_exit_code=True) def test_no_retry_on_success(self): fd, tmpfilename = tempfile.mkstemp() _, tmpfilename2 = tempfile.mkstemp() try: fp = os.fdopen(fd, 'w+') fp.write('''#!/bin/sh # If we've already run, bail out. grep -q foo "$1" && exit 1 # Mark that we've run before. echo foo > "$1" # Check that stdin gets passed correctly. grep foo ''') fp.close() os.chmod(tmpfilename, 0o755) utils.execute(tmpfilename, tmpfilename2, process_input='foo', attempts=2) finally: os.unlink(tmpfilename) os.unlink(tmpfilename2) class GetFromPathTestCase(test.TestCase): def test_tolerates_nones(self): f = utils.get_from_path input = [] self.assertEqual([], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [None] self.assertEqual([], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': None}] self.assertEqual([], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': None}}] self.assertEqual([{'b': None}], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': {'c': None}}}] self.assertEqual([{'b': {'c': None}}], f(input, "a")) self.assertEqual([{'c': None}], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': {'c': None}}}, {'a': None}] self.assertEqual([{'b': {'c': None}}], f(input, "a")) self.assertEqual([{'c': None}], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': {'c': None}}}, {'a': {'b': None}}] self.assertEqual([{'b': {'c': None}}, {'b': None}], f(input, "a")) self.assertEqual([{'c': None}], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) def test_does_select(self): f = utils.get_from_path input = [{'a': 'a_1'}] self.assertEqual(['a_1'], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': 'b_1'}}] self.assertEqual([{'b': 'b_1'}], f(input, "a")) self.assertEqual(['b_1'], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': {'c': 'c_1'}}}] self.assertEqual([{'b': {'c': 'c_1'}}], f(input, "a")) self.assertEqual([{'c': 'c_1'}], f(input, "a/b")) self.assertEqual(['c_1'], f(input, "a/b/c")) input = [{'a': {'b': {'c': 'c_1'}}}, {'a': None}] self.assertEqual([{'b': {'c': 'c_1'}}], f(input, "a")) self.assertEqual([{'c': 'c_1'}], f(input, "a/b")) self.assertEqual(['c_1'], f(input, "a/b/c")) input = [{'a': {'b': {'c': 'c_1'}}}, {'a': {'b': None}}] self.assertEqual([{'b': {'c': 'c_1'}}, {'b': None}], f(input, "a")) self.assertEqual([{'c': 'c_1'}], f(input, "a/b")) self.assertEqual(['c_1'], f(input, "a/b/c")) input = [{'a': {'b': {'c': 'c_1'}}}, {'a': {'b': {'c': 'c_2'}}}] self.assertEqual([{'b': {'c': 'c_1'}}, {'b': {'c': 'c_2'}}], f(input, "a")) self.assertEqual([{'c': 'c_1'}, {'c': 'c_2'}], f(input, "a/b")) self.assertEqual(['c_1', 'c_2'], f(input, "a/b/c")) self.assertEqual([], f(input, "a/b/c/d")) self.assertEqual([], f(input, "c/a/b/d")) self.assertEqual([], f(input, "i/r/t")) def test_flattens_lists(self): f = utils.get_from_path input = [{'a': [1, 2, 3]}] self.assertEqual([1, 2, 3], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': [1, 2, 3]}}] self.assertEqual([{'b': [1, 2, 3]}], f(input, "a")) self.assertEqual([1, 2, 3], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': {'b': [1, 2, 3]}}, {'a': {'b': [4, 5, 6]}}] self.assertEqual([1, 2, 3, 4, 5, 6], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': [{'b': [1, 2, 3]}, {'b': [4, 5, 6]}]}] self.assertEqual([1, 2, 3, 4, 5, 6], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = [{'a': [1, 2, {'b': 'b_1'}]}] self.assertEqual([1, 2, {'b': 'b_1'}], f(input, "a")) self.assertEqual(['b_1'], f(input, "a/b")) def test_bad_xpath(self): f = utils.get_from_path self.assertRaises(exception.Error, f, [], None) self.assertRaises(exception.Error, f, [], "") self.assertRaises(exception.Error, f, [], "/") self.assertRaises(exception.Error, f, [], "/a") self.assertRaises(exception.Error, f, [], "/a/") self.assertRaises(exception.Error, f, [], "//") self.assertRaises(exception.Error, f, [], "//a") self.assertRaises(exception.Error, f, [], "a//a") self.assertRaises(exception.Error, f, [], "a//a/") self.assertRaises(exception.Error, f, [], "a/a/") def test_real_failure1(self): # Real world failure case... # We weren't coping when the input was a Dictionary instead of a List # This led to test_accepts_dictionaries f = utils.get_from_path inst = {'fixed_ip': {'floating_ips': [{'address': '1.2.3.4'}], 'address': '192.168.0.3'}, 'hostname': ''} private_ips = f(inst, 'fixed_ip/address') public_ips = f(inst, 'fixed_ip/floating_ips/address') self.assertEqual(['192.168.0.3'], private_ips) self.assertEqual(['1.2.3.4'], public_ips) def test_accepts_dictionaries(self): f = utils.get_from_path input = {'a': [1, 2, 3]} self.assertEqual([1, 2, 3], f(input, "a")) self.assertEqual([], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = {'a': {'b': [1, 2, 3]}} self.assertEqual([{'b': [1, 2, 3]}], f(input, "a")) self.assertEqual([1, 2, 3], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = {'a': [{'b': [1, 2, 3]}, {'b': [4, 5, 6]}]} self.assertEqual([1, 2, 3, 4, 5, 6], f(input, "a/b")) self.assertEqual([], f(input, "a/b/c")) input = {'a': [1, 2, {'b': 'b_1'}]} self.assertEqual([1, 2, {'b': 'b_1'}], f(input, "a")) self.assertEqual(['b_1'], f(input, "a/b")) class GenericUtilsTestCase(test.TestCase): @mock.patch('os.path.exists', return_value=True) def test_find_config(self, mock_exists): path = '/etc/cinder/cinder.conf' cfgpath = utils.find_config(path) self.assertEqual(path, cfgpath) mock_exists.return_value = False self.assertRaises(exception.ConfigNotFound, utils.find_config, path) def test_as_int(self): test_obj_int = '2' test_obj_float = '2.2' for obj in [test_obj_int, test_obj_float]: self.assertEqual(2, utils.as_int(obj)) obj = 'not_a_number' self.assertEqual(obj, utils.as_int(obj)) self.assertRaises(TypeError, utils.as_int, obj, quiet=False) def test_check_exclusive_options(self): utils.check_exclusive_options() utils.check_exclusive_options(something=None, pretty_keys=True, unit_test=True) self.assertRaises(exception.InvalidInput, utils.check_exclusive_options, test=True, unit=False, pretty_keys=True) self.assertRaises(exception.InvalidInput, utils.check_exclusive_options, test=True, unit=False, pretty_keys=False) def test_require_driver_intialized(self): driver = mock.Mock() driver.initialized = True utils.require_driver_initialized(driver) driver.initialized = False self.assertRaises(exception.DriverNotInitialized, utils.require_driver_initialized, driver) def test_hostname_unicode_sanitization(self): hostname = u"\u7684.test.example.com" self.assertEqual("test.example.com", utils.sanitize_hostname(hostname)) def test_hostname_sanitize_periods(self): hostname = "....test.example.com..." self.assertEqual("test.example.com", utils.sanitize_hostname(hostname)) def test_hostname_sanitize_dashes(self): hostname = "----test.example.com---" self.assertEqual("test.example.com", utils.sanitize_hostname(hostname)) def test_hostname_sanitize_characters(self): hostname = "(#@&$!(@*--#&91)(__=+--test-host.example!!.com-0+" self.assertEqual("91----test-host.example.com-0", utils.sanitize_hostname(hostname)) def test_hostname_translate(self): hostname = "<}\x1fh\x10e\x08l\x02l\x05o\x12!{>" self.assertEqual("hello", utils.sanitize_hostname(hostname)) def test_generate_glance_url(self): generated_url = utils.generate_glance_url() actual_url = "http://%s:%d" % (CONF.glance_host, CONF.glance_port) self.assertEqual(generated_url, actual_url) @mock.patch('__builtin__.open') @mock.patch('os.path.getmtime', return_value=1) def test_read_cached_file(self, mock_mtime, mock_open): fake_file = "/this/is/a/fake" cache_data = {"data": 1123, "mtime": 2} mock_open.return_value = _get_local_mock_open() data = utils.read_cached_file(fake_file, cache_data) self.assertEqual(cache_data["data"], data) mock_open.assert_called_once_with(fake_file) @mock.patch('__builtin__.open') @mock.patch('os.path.getmtime', return_value=1) def test_read_modified_cached_file(self, mock_mtime, mock_open): fake_data = 'lorem ipsum' fake_file = "/this/is/a/fake" mock_open.return_value = _get_local_mock_open(fake_data) cache_data = {"data": 'original data', "mtime": 2} mock_reload = mock.Mock() data = utils.read_cached_file(fake_file, cache_data, reload_func=mock_reload) self.assertEqual(data, fake_data) mock_reload.assert_called_once_with(fake_data) mock_open.assert_called_once_with(fake_file) def test_generate_password(self): password = utils.generate_password() self.assertTrue([c for c in password if c in '0123456789']) self.assertTrue([c for c in password if c in 'abcdefghijklmnopqrstuvwxyz']) self.assertTrue([c for c in password if c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ']) def test_read_file_as_root(self): def fake_execute(*args, **kwargs): if args[1] == 'bad': raise putils.ProcessExecutionError return 'fakecontents', None self.stubs.Set(utils, 'execute', fake_execute) contents = utils.read_file_as_root('good') self.assertEqual(contents, 'fakecontents') self.assertRaises(exception.FileNotFound, utils.read_file_as_root, 'bad') def test_temporary_chown(self): def fake_execute(*args, **kwargs): if args[0] == 'chown': fake_execute.uid = args[1] self.stubs.Set(utils, 'execute', fake_execute) with tempfile.NamedTemporaryFile() as f: with utils.temporary_chown(f.name, owner_uid=2): self.assertEqual(fake_execute.uid, 2) self.assertEqual(fake_execute.uid, os.getuid()) @mock.patch('cinder.openstack.common.timeutils.utcnow') def test_service_is_up(self, mock_utcnow): fts_func = datetime.datetime.fromtimestamp fake_now = 1000 down_time = 5 self.flags(service_down_time=down_time) mock_utcnow.return_value = fts_func(fake_now) # Up (equal) service = {'updated_at': fts_func(fake_now - down_time), 'created_at': fts_func(fake_now - down_time)} result = utils.service_is_up(service) self.assertTrue(result) # Up service = {'updated_at': fts_func(fake_now - down_time + 1), 'created_at': fts_func(fake_now - down_time + 1)} result = utils.service_is_up(service) self.assertTrue(result) # Down service = {'updated_at': fts_func(fake_now - down_time - 1), 'created_at': fts_func(fake_now - down_time - 1)} result = utils.service_is_up(service) self.assertFalse(result) def test_safe_parse_xml(self): normal_body = ('' 'heythere') def killer_body(): return ((""" ]> %(d)s """) % { 'a': 'A' * 10, 'b': '&a;' * 10, 'c': '&b;' * 10, 'd': '&c;' * 9999, }).strip() dom = utils.safe_minidom_parse_string(normal_body) # Some versions of minidom inject extra newlines so we ignore them result = str(dom.toxml()).replace('\n', '') self.assertEqual(normal_body, result) self.assertRaises(ValueError, utils.safe_minidom_parse_string, killer_body()) def test_xhtml_escape(self): self.assertEqual('"foo"', utils.xhtml_escape('"foo"')) self.assertEqual(''foo'', utils.xhtml_escape("'foo'")) def test_hash_file(self): data = 'Mary had a little lamb, its fleece as white as snow' flo = six.StringIO(data) h1 = utils.hash_file(flo) h2 = hashlib.sha1(data).hexdigest() self.assertEqual(h1, h2) def test_check_ssh_injection(self): cmd_list = ['ssh', '-D', 'my_name@name_of_remote_computer'] self.assertIsNone(utils.check_ssh_injection(cmd_list)) cmd_list = ['echo', '"quoted arg with space"'] self.assertIsNone(utils.check_ssh_injection(cmd_list)) cmd_list = ['echo', "'quoted arg with space'"] self.assertIsNone(utils.check_ssh_injection(cmd_list)) def test_check_ssh_injection_on_error(self): with_unquoted_space = ['ssh', 'my_name@ name_of_remote_computer'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, with_unquoted_space) with_danger_char = ['||', 'my_name@name_of_remote_computer'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, with_danger_char) with_special = ['cmd', 'virus;ls'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, with_special) quoted_with_unescaped = ['cmd', '"arg\"withunescaped"'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, quoted_with_unescaped) bad_before_quotes = ['cmd', 'virus;"quoted argument"'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, bad_before_quotes) bad_after_quotes = ['echo', '"quoted argument";rm -rf'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, bad_after_quotes) bad_within_quotes = ['echo', "'quoted argument `rm -rf`'"] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, bad_within_quotes) with_multiple_quotes = ['echo', '"quoted";virus;"quoted"'] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, with_multiple_quotes) with_multiple_quotes = ['echo', '"quoted";virus;\'quoted\''] self.assertRaises(exception.SSHInjectionThreat, utils.check_ssh_injection, with_multiple_quotes) @mock.patch('paramiko.SSHClient') def test_create_channel(self, mock_client): test_width = 600 test_height = 800 mock_channel = mock.Mock() mock_client.invoke_shell.return_value = mock_channel utils.create_channel(mock_client, test_width, test_height) mock_client.invoke_shell.assert_called_once() mock_channel.resize_pty.assert_called_once_with(test_width, test_height) @mock.patch('os.stat') def test_get_file_mode(self, mock_stat): class stat_result: st_mode = 0o777 st_gid = 33333 test_file = '/var/tmp/made_up_file' mock_stat.return_value = stat_result mode = utils.get_file_mode(test_file) self.assertEqual(mode, 0o777) mock_stat.assert_called_once_with(test_file) @mock.patch('os.stat') def test_get_file_gid(self, mock_stat): class stat_result: st_mode = 0o777 st_gid = 33333 test_file = '/var/tmp/made_up_file' mock_stat.return_value = stat_result gid = utils.get_file_gid(test_file) self.assertEqual(gid, 33333) mock_stat.assert_called_once_with(test_file) class MonkeyPatchTestCase(test.TestCase): """Unit test for utils.monkey_patch().""" def setUp(self): super(MonkeyPatchTestCase, self).setUp() self.example_package = 'cinder.tests.monkey_patch_example.' self.flags( monkey_patch=True, monkey_patch_modules=[self.example_package + 'example_a' + ':' + self.example_package + 'example_decorator']) def test_monkey_patch(self): utils.monkey_patch() cinder.tests.monkey_patch_example.CALLED_FUNCTION = [] from cinder.tests.monkey_patch_example import example_a from cinder.tests.monkey_patch_example import example_b self.assertEqual('Example function', example_a.example_function_a()) exampleA = example_a.ExampleClassA() exampleA.example_method() ret_a = exampleA.example_method_add(3, 5) self.assertEqual(ret_a, 8) self.assertEqual('Example function', example_b.example_function_b()) exampleB = example_b.ExampleClassB() exampleB.example_method() ret_b = exampleB.example_method_add(3, 5) self.assertEqual(ret_b, 8) package_a = self.example_package + 'example_a.' self.assertTrue(package_a + 'example_function_a' in cinder.tests.monkey_patch_example.CALLED_FUNCTION) self.assertTrue(package_a + 'ExampleClassA.example_method' in cinder.tests.monkey_patch_example.CALLED_FUNCTION) self.assertTrue(package_a + 'ExampleClassA.example_method_add' in cinder.tests.monkey_patch_example.CALLED_FUNCTION) package_b = self.example_package + 'example_b.' self.assertFalse(package_b + 'example_function_b' in cinder.tests.monkey_patch_example.CALLED_FUNCTION) self.assertFalse(package_b + 'ExampleClassB.example_method' in cinder.tests.monkey_patch_example.CALLED_FUNCTION) self.assertFalse(package_b + 'ExampleClassB.example_method_add' in cinder.tests.monkey_patch_example.CALLED_FUNCTION) class AuditPeriodTest(test.TestCase): def setUp(self): super(AuditPeriodTest, self).setUp() #a fairly random time to test with test_time = datetime.datetime(second=23, minute=12, hour=8, day=5, month=3, year=2012) patcher = mock.patch.object(timeutils, 'utcnow') self.addCleanup(patcher.stop) self.mock_utcnow = patcher.start() self.mock_utcnow.return_value = test_time def test_hour(self): begin, end = utils.last_completed_audit_period(unit='hour') self.assertEqual(begin, datetime.datetime(hour=7, day=5, month=3, year=2012)) self.assertEqual(end, datetime.datetime(hour=8, day=5, month=3, year=2012)) def test_hour_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='hour@10') self.assertEqual(begin, datetime.datetime(minute=10, hour=7, day=5, month=3, year=2012)) self.assertEqual(end, datetime.datetime(minute=10, hour=8, day=5, month=3, year=2012)) def test_hour_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='hour@30') self.assertEqual(begin, datetime.datetime(minute=30, hour=6, day=5, month=3, year=2012)) self.assertEqual(end, datetime.datetime(minute=30, hour=7, day=5, month=3, year=2012)) def test_day(self): begin, end = utils.last_completed_audit_period(unit='day') self.assertEqual(begin, datetime.datetime(day=4, month=3, year=2012)) self.assertEqual(end, datetime.datetime(day=5, month=3, year=2012)) def test_day_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='day@6') self.assertEqual(begin, datetime.datetime(hour=6, day=4, month=3, year=2012)) self.assertEqual(end, datetime.datetime(hour=6, day=5, month=3, year=2012)) def test_day_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='day@10') self.assertEqual(begin, datetime.datetime(hour=10, day=3, month=3, year=2012)) self.assertEqual(end, datetime.datetime(hour=10, day=4, month=3, year=2012)) def test_month(self): begin, end = utils.last_completed_audit_period(unit='month') self.assertEqual(begin, datetime.datetime(day=1, month=2, year=2012)) self.assertEqual(end, datetime.datetime(day=1, month=3, year=2012)) def test_month_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='month@2') self.assertEqual(begin, datetime.datetime(day=2, month=2, year=2012)) self.assertEqual(end, datetime.datetime(day=2, month=3, year=2012)) def test_month_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='month@15') self.assertEqual(begin, datetime.datetime(day=15, month=1, year=2012)) self.assertEqual(end, datetime.datetime(day=15, month=2, year=2012)) def test_year(self): begin, end = utils.last_completed_audit_period(unit='year') self.assertEqual(begin, datetime.datetime(day=1, month=1, year=2011)) self.assertEqual(end, datetime.datetime(day=1, month=1, year=2012)) def test_year_with_offset_before_current(self): begin, end = utils.last_completed_audit_period(unit='year@2') self.assertEqual(begin, datetime.datetime(day=1, month=2, year=2011)) self.assertEqual(end, datetime.datetime(day=1, month=2, year=2012)) def test_year_with_offset_after_current(self): begin, end = utils.last_completed_audit_period(unit='year@6') self.assertEqual(begin, datetime.datetime(day=1, month=6, year=2010)) self.assertEqual(end, datetime.datetime(day=1, month=6, year=2011)) class FakeSSHClient(object): def __init__(self): self.id = uuid.uuid4() self.transport = FakeTransport() def set_missing_host_key_policy(self, policy): pass def connect(self, ip, port=22, username=None, password=None, pkey=None, timeout=10): pass def get_transport(self): return self.transport def close(self): pass def __call__(self, *args, **kwargs): pass class FakeSock(object): def settimeout(self, timeout): pass class FakeTransport(object): def __init__(self): self.active = True self.sock = FakeSock() def set_keepalive(self, timeout): pass def is_active(self): return self.active class SSHPoolTestCase(test.TestCase): """Unit test for SSH Connection Pool.""" @mock.patch('paramiko.RSAKey.from_private_key_file') @mock.patch('paramiko.SSHClient') def test_single_ssh_connect(self, mock_sshclient, mock_pkey): mock_sshclient.return_value = FakeSSHClient() # create with password sshpool = utils.SSHPool("127.0.0.1", 22, 10, "test", password="test", min_size=1, max_size=1) with sshpool.item() as ssh: first_id = ssh.id with sshpool.item() as ssh: second_id = ssh.id self.assertEqual(first_id, second_id) mock_sshclient.connect.assert_called_once() # create with private key sshpool = utils.SSHPool("127.0.0.1", 22, 10, "test", privatekey="test", min_size=1, max_size=1) mock_sshclient.connect.assert_called_once() # attempt to create with no password or private key self.assertRaises(paramiko.SSHException, utils.SSHPool, "127.0.0.1", 22, 10, "test", min_size=1, max_size=1) @mock.patch('paramiko.SSHClient') def test_closed_reopend_ssh_connections(self, mock_sshclient): mock_sshclient.return_value = eval('FakeSSHClient')() sshpool = utils.SSHPool("127.0.0.1", 22, 10, "test", password="test", min_size=1, max_size=4) with sshpool.item() as ssh: mock_sshclient.reset_mock() first_id = ssh.id with sshpool.item() as ssh: second_id = ssh.id ssh.get_transport().active = False sshpool.remove(ssh) self.assertEqual(first_id, second_id) # create a new client mock_sshclient.return_value = FakeSSHClient() with sshpool.item() as ssh: third_id = ssh.id self.assertNotEqual(first_id, third_id) class BrickUtils(test.TestCase): """Unit test to test the brick utility wrapper functions. """ def test_brick_get_connector_properties(self): self.mox.StubOutWithMock(socket, 'gethostname') socket.gethostname().AndReturn('fakehost') self.mox.StubOutWithMock(connector.ISCSIConnector, 'get_initiator') connector.ISCSIConnector.get_initiator().AndReturn('fakeinitiator') self.mox.StubOutWithMock(linuxfc.LinuxFibreChannel, 'get_fc_wwpns') linuxfc.LinuxFibreChannel.get_fc_wwpns().AndReturn(None) self.mox.StubOutWithMock(linuxfc.LinuxFibreChannel, 'get_fc_wwnns') linuxfc.LinuxFibreChannel.get_fc_wwnns().AndReturn(None) props = {'initiator': 'fakeinitiator', 'host': 'fakehost', 'ip': CONF.my_ip, } self.mox.ReplayAll() props_actual = utils.brick_get_connector_properties() self.assertEqual(props, props_actual) self.mox.VerifyAll() def test_brick_get_connector(self): root_helper = utils.get_root_helper() self.mox.StubOutClassWithMocks(connector, 'ISCSIConnector') connector.ISCSIConnector(execute=putils.execute, driver=None, root_helper=root_helper, use_multipath=False, device_scan_attempts=3) self.mox.StubOutClassWithMocks(connector, 'FibreChannelConnector') connector.FibreChannelConnector(execute=putils.execute, driver=None, root_helper=root_helper, use_multipath=False, device_scan_attempts=3) self.mox.StubOutClassWithMocks(connector, 'AoEConnector') connector.AoEConnector(execute=putils.execute, driver=None, root_helper=root_helper, device_scan_attempts=3) self.mox.StubOutClassWithMocks(connector, 'LocalConnector') connector.LocalConnector(execute=putils.execute, driver=None, root_helper=root_helper, device_scan_attempts=3) self.mox.ReplayAll() utils.brick_get_connector('iscsi') utils.brick_get_connector('fibre_channel') utils.brick_get_connector('aoe') utils.brick_get_connector('local') self.mox.VerifyAll() class StringLengthTestCase(test.TestCase): def test_check_string_length(self): self.assertIsNone(utils.check_string_length( 'test', 'name', max_length=255)) self.assertRaises(exception.InvalidInput, utils.check_string_length, 11, 'name', max_length=255) self.assertRaises(exception.InvalidInput, utils.check_string_length, '', 'name', min_length=1) self.assertRaises(exception.InvalidInput, utils.check_string_length, 'a' * 256, 'name', max_length=255) cinder-2014.1.5/cinder/tests/brick/0000775000567000056700000000000012540643114020050 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/brick/test_brick_connector.py0000664000567000056700000006533612540642606024647 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. import os.path import string import time import mox from cinder.brick import exception from cinder.brick.initiator import connector from cinder.brick.initiator import host_driver from cinder.openstack.common import log as logging from cinder.openstack.common import loopingcall from cinder.openstack.common import processutils as putils from cinder import test LOG = logging.getLogger(__name__) class ConnectorTestCase(test.TestCase): def setUp(self): super(ConnectorTestCase, self).setUp() self.cmds = [] self.stubs.Set(os.path, 'exists', lambda x: True) def fake_execute(self, *cmd, **kwargs): self.cmds.append(string.join(cmd)) return "", None def test_connect_volume(self): self.connector = connector.InitiatorConnector(None) self.assertRaises(NotImplementedError, self.connector.connect_volume, None) def test_disconnect_volume(self): self.connector = connector.InitiatorConnector(None) self.assertRaises(NotImplementedError, self.connector.disconnect_volume, None, None) def test_factory(self): obj = connector.InitiatorConnector.factory('iscsi', None) self.assertEqual(obj.__class__.__name__, "ISCSIConnector") obj = connector.InitiatorConnector.factory('fibre_channel', None) self.assertEqual(obj.__class__.__name__, "FibreChannelConnector") obj = connector.InitiatorConnector.factory('aoe', None) self.assertEqual(obj.__class__.__name__, "AoEConnector") obj = connector.InitiatorConnector.factory( 'nfs', None, nfs_mount_point_base='/mnt/test') self.assertEqual(obj.__class__.__name__, "RemoteFsConnector") obj = connector.InitiatorConnector.factory( 'glusterfs', None, glusterfs_mount_point_base='/mnt/test') self.assertEqual(obj.__class__.__name__, "RemoteFsConnector") obj = connector.InitiatorConnector.factory('local', None) self.assertEqual(obj.__class__.__name__, "LocalConnector") self.assertRaises(ValueError, connector.InitiatorConnector.factory, "bogus", None) def test_check_valid_device_with_wrong_path(self): self.connector = connector.InitiatorConnector(None) self.stubs.Set(self.connector, '_execute', lambda *args, **kwargs: ("", None)) self.assertFalse(self.connector.check_valid_device('/d0v')) def test_check_valid_device(self): self.connector = connector.InitiatorConnector(None) self.stubs.Set(self.connector, '_execute', lambda *args, **kwargs: ("", "")) self.assertTrue(self.connector.check_valid_device('/dev')) def test_check_valid_device_with_cmd_error(self): def raise_except(*args, **kwargs): raise putils.ProcessExecutionError self.connector = connector.InitiatorConnector(None) self.stubs.Set(self.connector, '_execute', raise_except) self.assertFalse(self.connector.check_valid_device('/dev')) class HostDriverTestCase(test.TestCase): def setUp(self): super(HostDriverTestCase, self).setUp() self.stubs.Set(os.path, 'isdir', lambda x: True) self.devlist = ['device1', 'device2'] self.stubs.Set(os, 'listdir', lambda x: self.devlist) def test_host_driver(self): expected = ['/dev/disk/by-path/' + dev for dev in self.devlist] driver = host_driver.HostDriver() actual = driver.get_all_block_devices() self.assertEqual(expected, actual) class ISCSIConnectorTestCase(ConnectorTestCase): def setUp(self): super(ISCSIConnectorTestCase, self).setUp() self.connector = connector.ISCSIConnector( None, execute=self.fake_execute, use_multipath=False) self.stubs.Set(self.connector._linuxscsi, 'get_name_from_path', lambda x: "/dev/sdb") def tearDown(self): super(ISCSIConnectorTestCase, self).tearDown() def iscsi_connection(self, volume, location, iqn): return { 'driver_volume_type': 'iscsi', 'data': { 'volume_id': volume['id'], 'target_portal': location, 'target_iqn': iqn, 'target_lun': 1, } } def test_get_initiator(self): def initiator_no_file(*args, **kwargs): raise putils.ProcessExecutionError('No file') def initiator_get_text(*arg, **kwargs): text = ('## DO NOT EDIT OR REMOVE THIS FILE!\n' '## If you remove this file, the iSCSI daemon ' 'will not start.\n' '## If you change the InitiatorName, existing ' 'access control lists\n' '## may reject this initiator. The InitiatorName must ' 'be unique\n' '## for each iSCSI initiator. Do NOT duplicate iSCSI ' 'InitiatorNames.\n' 'InitiatorName=iqn.1234-56.foo.bar:01:23456789abc') return text, None self.stubs.Set(self.connector, '_execute', initiator_no_file) initiator = self.connector.get_initiator() self.assertIsNone(initiator) self.stubs.Set(self.connector, '_execute', initiator_get_text) initiator = self.connector.get_initiator() self.assertEqual(initiator, 'iqn.1234-56.foo.bar:01:23456789abc') @test.testtools.skipUnless(os.path.exists('/dev/disk/by-path'), 'Test requires /dev/disk/by-path') def test_connect_volume(self): self.stubs.Set(os.path, 'exists', lambda x: True) location = '10.0.2.15:3260' name = 'volume-00000001' iqn = 'iqn.2010-10.org.openstack:%s' % name vol = {'id': 1, 'name': name} connection_info = self.iscsi_connection(vol, location, iqn) device = self.connector.connect_volume(connection_info['data']) dev_str = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-1' % (location, iqn) self.assertEqual(device['type'], 'block') self.assertEqual(device['path'], dev_str) self.connector.disconnect_volume(connection_info['data'], device) expected_commands = [('iscsiadm -m node -T %s -p %s' % (iqn, location)), ('iscsiadm -m session'), ('iscsiadm -m node -T %s -p %s --login' % (iqn, location)), ('iscsiadm -m node -T %s -p %s --op update' ' -n node.startup -v automatic' % (iqn, location)), ('iscsiadm -m node --rescan'), ('iscsiadm -m session --rescan'), ('blockdev --flushbufs /dev/sdb'), ('tee -a /sys/block/sdb/device/delete'), ('iscsiadm -m node -T %s -p %s --op update' ' -n node.startup -v manual' % (iqn, location)), ('iscsiadm -m node -T %s -p %s --logout' % (iqn, location)), ('iscsiadm -m node -T %s -p %s --op delete' % (iqn, location)), ] LOG.debug("self.cmds = %s" % self.cmds) LOG.debug("expected = %s" % expected_commands) self.assertEqual(expected_commands, self.cmds) def test_connect_volume_with_multipath(self): location = '10.0.2.15:3260' name = 'volume-00000001' iqn = 'iqn.2010-10.org.openstack:%s' % name vol = {'id': 1, 'name': name} connection_properties = self.iscsi_connection(vol, location, iqn) self.connector_with_multipath =\ connector.ISCSIConnector(None, use_multipath=True) self.stubs.Set(self.connector_with_multipath, '_run_iscsiadm_bare', lambda *args, **kwargs: "%s %s" % (location, iqn)) self.stubs.Set(self.connector_with_multipath, '_get_target_portals_from_iscsiadm_output', lambda x: [[location, iqn]]) self.stubs.Set(self.connector_with_multipath, '_connect_to_iscsi_portal', lambda x: None) self.stubs.Set(self.connector_with_multipath, '_rescan_iscsi', lambda: None) self.stubs.Set(self.connector_with_multipath, '_rescan_multipath', lambda: None) self.stubs.Set(self.connector_with_multipath, '_get_multipath_device_name', lambda x: 'iqn.2010-10.org.openstack:%s' % name) self.stubs.Set(os.path, 'exists', lambda x: True) result = self.connector_with_multipath.connect_volume( connection_properties['data']) expected_result = {'path': 'iqn.2010-10.org.openstack:volume-00000001', 'type': 'block'} self.assertEqual(result, expected_result) def test_connect_volume_with_not_found_device(self): self.stubs.Set(os.path, 'exists', lambda x: False) self.stubs.Set(time, 'sleep', lambda x: None) location = '10.0.2.15:3260' name = 'volume-00000001' iqn = 'iqn.2010-10.org.openstack:%s' % name vol = {'id': 1, 'name': name} connection_info = self.iscsi_connection(vol, location, iqn) self.assertRaises(exception.VolumeDeviceNotFound, self.connector.connect_volume, connection_info['data']) def test_get_target_portals_from_iscsiadm_output(self): connector = self.connector test_output = '''10.15.84.19:3260 iqn.1992-08.com.netapp:sn.33615311 10.15.85.19:3260 iqn.1992-08.com.netapp:sn.33615311''' res = connector._get_target_portals_from_iscsiadm_output(test_output) ip_iqn1 = ['10.15.84.19:3260', 'iqn.1992-08.com.netapp:sn.33615311'] ip_iqn2 = ['10.15.85.19:3260', 'iqn.1992-08.com.netapp:sn.33615311'] expected = [ip_iqn1, ip_iqn2] self.assertEqual(expected, res) def test_get_multipath_device_name(self): self.stubs.Set(os.path, 'realpath', lambda x: None) multipath_return_string = [('mpath2 (20017380006c00036)' 'dm-7 IBM,2810XIV')] self.stubs.Set(self.connector, '_run_multipath', lambda *args, **kwargs: multipath_return_string) expected = '/dev/mapper/mpath2' self.assertEqual(expected, self.connector. _get_multipath_device_name('/dev/md-1')) def test_get_iscsi_devices(self): paths = [('ip-10.0.0.1:3260-iscsi-iqn.2013-01.ro.' 'com.netapp:node.netapp02-lun-0')] self.stubs.Set(os, 'walk', lambda x: [(['.'], ['by-path'], paths)]) self.assertEqual(self.connector._get_iscsi_devices(), paths) def test_get_iscsi_devices_with_empty_dir(self): self.stubs.Set(os, 'walk', lambda x: []) self.assertEqual(self.connector._get_iscsi_devices(), []) def test_get_multipath_iqn(self): paths = [('ip-10.0.0.1:3260-iscsi-iqn.2013-01.ro.' 'com.netapp:node.netapp02-lun-0')] self.stubs.Set(os.path, 'realpath', lambda x: '/dev/disk/by-path/%s' % paths[0]) self.stubs.Set(self.connector, '_get_iscsi_devices', lambda: paths) self.stubs.Set(self.connector, '_get_multipath_device_name', lambda x: paths[0]) self.assertEqual(self.connector._get_multipath_iqn(paths[0]), 'iqn.2013-01.ro.com.netapp:node.netapp02') def test_disconnect_volume_multipath_iscsi(self): result = [] def fake_disconnect_from_iscsi_portal(properties): result.append(properties) iqn1 = 'iqn.2013-01.ro.com.netapp:node.netapp01' iqn2 = 'iqn.2013-01.ro.com.netapp:node.netapp02' iqns = [iqn1, iqn2] portal = '10.0.0.1:3260' dev = ('ip-%s-iscsi-%s-lun-0' % (portal, iqn1)) self.stubs.Set(self.connector, '_get_target_portals_from_iscsiadm_output', lambda x: [[portal, iqn1]]) self.stubs.Set(self.connector, '_rescan_iscsi', lambda: None) self.stubs.Set(self.connector, '_rescan_multipath', lambda: None) self.stubs.Set(self.connector.driver, 'get_all_block_devices', lambda: [dev, '/dev/mapper/md-1']) self.stubs.Set(self.connector, '_get_multipath_device_name', lambda x: '/dev/mapper/md-3') self.stubs.Set(self.connector, '_get_multipath_iqn', lambda x: iqns.pop()) self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal', fake_disconnect_from_iscsi_portal) fake_property = {'target_portal': portal, 'target_iqn': iqn1} self.connector._disconnect_volume_multipath_iscsi(fake_property, 'fake/multipath') # Target in use by other mp devices, don't disconnect self.assertEqual([], result) def test_disconnect_volume_multipath_iscsi_without_other_mp_devices(self): result = [] def fake_disconnect_from_iscsi_portal(properties): result.append(properties) portal = '10.0.2.15:3260' name = 'volume-00000001' iqn = 'iqn.2010-10.org.openstack:%s' % name self.stubs.Set(self.connector, '_get_target_portals_from_iscsiadm_output', lambda x: [[portal, iqn]]) self.stubs.Set(self.connector, '_rescan_iscsi', lambda: None) self.stubs.Set(self.connector, '_rescan_multipath', lambda: None) self.stubs.Set(self.connector.driver, 'get_all_block_devices', lambda: []) self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal', fake_disconnect_from_iscsi_portal) fake_property = {'target_portal': portal, 'target_iqn': iqn} self.connector._disconnect_volume_multipath_iscsi(fake_property, 'fake/multipath') # Target not in use by other mp devices, disconnect self.assertEqual([fake_property], result) class FibreChannelConnectorTestCase(ConnectorTestCase): def setUp(self): super(FibreChannelConnectorTestCase, self).setUp() self.connector = connector.FibreChannelConnector( None, execute=self.fake_execute, use_multipath=False) self.assertIsNotNone(self.connector) self.assertIsNotNone(self.connector._linuxfc) self.assertIsNotNone(self.connector._linuxscsi) def fake_get_fc_hbas(self): return [{'ClassDevice': 'host1', 'ClassDevicePath': '/sys/devices/pci0000:00/0000:00:03.0' '/0000:05:00.2/host1/fc_host/host1', 'dev_loss_tmo': '30', 'fabric_name': '0x1000000533f55566', 'issue_lip': '', 'max_npiv_vports': '255', 'maxframe_size': '2048 bytes', 'node_name': '0x200010604b019419', 'npiv_vports_inuse': '0', 'port_id': '0x680409', 'port_name': '0x100010604b019419', 'port_state': 'Online', 'port_type': 'NPort (fabric via point-to-point)', 'speed': '10 Gbit', 'supported_classes': 'Class 3', 'supported_speeds': '10 Gbit', 'symbolic_name': 'Emulex 554M FV4.0.493.0 DV8.3.27', 'tgtid_bind_type': 'wwpn (World Wide Port Name)', 'uevent': None, 'vport_create': '', 'vport_delete': ''}] def fake_get_fc_hbas_info(self): hbas = self.fake_get_fc_hbas() info = [{'port_name': hbas[0]['port_name'].replace('0x', ''), 'node_name': hbas[0]['node_name'].replace('0x', ''), 'host_device': hbas[0]['ClassDevice'], 'device_path': hbas[0]['ClassDevicePath']}] return info def fibrechan_connection(self, volume, location, wwn): return {'driver_volume_type': 'fibrechan', 'data': { 'volume_id': volume['id'], 'target_portal': location, 'target_wwn': wwn, 'target_lun': 1, }} def test_connect_volume(self): self.stubs.Set(self.connector._linuxfc, "get_fc_hbas", self.fake_get_fc_hbas) self.stubs.Set(self.connector._linuxfc, "get_fc_hbas_info", self.fake_get_fc_hbas_info) self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(os.path, 'realpath', lambda x: '/dev/sdb') multipath_devname = '/dev/md-1' devices = {"device": multipath_devname, "id": "1234567890", "devices": [{'device': '/dev/sdb', 'address': '1:0:0:1', 'host': 1, 'channel': 0, 'id': 0, 'lun': 1}]} self.stubs.Set(self.connector._linuxscsi, 'find_multipath_device', lambda x: devices) self.stubs.Set(self.connector._linuxscsi, 'remove_scsi_device', lambda x: None) self.stubs.Set(self.connector._linuxscsi, 'get_device_info', lambda x: devices['devices'][0]) location = '10.0.2.15:3260' name = 'volume-00000001' vol = {'id': 1, 'name': name} # Should work for string, unicode, and list wwns = ['1234567890123456', unicode('1234567890123456'), ['1234567890123456', '1234567890123457']] for wwn in wwns: connection_info = self.fibrechan_connection(vol, location, wwn) dev_info = self.connector.connect_volume(connection_info['data']) exp_wwn = wwn[0] if isinstance(wwn, list) else wwn dev_str = ('/dev/disk/by-path/pci-0000:05:00.2-fc-0x%s-lun-1' % exp_wwn) self.assertEqual(dev_info['type'], 'block') self.assertEqual(dev_info['path'], dev_str) self.connector.disconnect_volume(connection_info['data'], dev_info) expected_commands = [] self.assertEqual(expected_commands, self.cmds) # Should not work for anything other than string, unicode, and list connection_info = self.fibrechan_connection(vol, location, 123) self.assertRaises(exception.NoFibreChannelHostsFound, self.connector.connect_volume, connection_info['data']) self.stubs.Set(self.connector._linuxfc, 'get_fc_hbas', lambda: []) self.stubs.Set(self.connector._linuxfc, 'get_fc_hbas_info', lambda: []) self.assertRaises(exception.NoFibreChannelHostsFound, self.connector.connect_volume, connection_info['data']) class FakeFixedIntervalLoopingCall(object): def __init__(self, f=None, *args, **kw): self.args = args self.kw = kw self.f = f self._stop = False def stop(self): self._stop = True def wait(self): return self def start(self, interval, initial_delay=None): while not self._stop: try: self.f(*self.args, **self.kw) except loopingcall.LoopingCallDone: return self except Exception: LOG.exception(_('in fixed duration looping call')) raise class AoEConnectorTestCase(ConnectorTestCase): """Test cases for AoE initiator class.""" def setUp(self): super(AoEConnectorTestCase, self).setUp() self.mox = mox.Mox() self.connector = connector.AoEConnector('sudo') self.connection_properties = {'target_shelf': 'fake_shelf', 'target_lun': 'fake_lun'} self.stubs.Set(loopingcall, 'FixedIntervalLoopingCall', FakeFixedIntervalLoopingCall) def tearDown(self): self.mox.VerifyAll() self.mox.UnsetStubs() super(AoEConnectorTestCase, self).tearDown() def _mock_path_exists(self, aoe_path, mock_values=[]): self.mox.StubOutWithMock(os.path, 'exists') for value in mock_values: os.path.exists(aoe_path).AndReturn(value) def test_connect_volume(self): """Ensure that if path exist aoe-revaliadte was called.""" aoe_device, aoe_path = self.connector._get_aoe_info( self.connection_properties) self._mock_path_exists(aoe_path, [True, True]) self.mox.StubOutWithMock(self.connector, '_execute') self.connector._execute('aoe-revalidate', aoe_device, run_as_root=True, root_helper='sudo', check_exit_code=0).AndReturn(("", "")) self.mox.ReplayAll() self.connector.connect_volume(self.connection_properties) def test_connect_volume_without_path(self): """Ensure that if path doesn't exist aoe-discovery was called.""" aoe_device, aoe_path = self.connector._get_aoe_info( self.connection_properties) expected_info = { 'type': 'block', 'device': aoe_device, 'path': aoe_path, } self._mock_path_exists(aoe_path, [False, True]) self.mox.StubOutWithMock(self.connector, '_execute') self.connector._execute('aoe-discover', run_as_root=True, root_helper='sudo', check_exit_code=0).AndReturn(("", "")) self.mox.ReplayAll() volume_info = self.connector.connect_volume( self.connection_properties) self.assertDictMatch(volume_info, expected_info) def test_connect_volume_could_not_discover_path(self): aoe_device, aoe_path = self.connector._get_aoe_info( self.connection_properties) number_of_calls = 4 self._mock_path_exists(aoe_path, [False] * (number_of_calls + 1)) self.mox.StubOutWithMock(self.connector, '_execute') for i in xrange(number_of_calls): self.connector._execute('aoe-discover', run_as_root=True, root_helper='sudo', check_exit_code=0).AndReturn(("", "")) self.mox.ReplayAll() self.assertRaises(exception.VolumeDeviceNotFound, self.connector.connect_volume, self.connection_properties) def test_disconnect_volume(self): """Ensure that if path exist aoe-revaliadte was called.""" aoe_device, aoe_path = self.connector._get_aoe_info( self.connection_properties) self._mock_path_exists(aoe_path, [True]) self.mox.StubOutWithMock(self.connector, '_execute') self.connector._execute('aoe-flush', aoe_device, run_as_root=True, root_helper='sudo', check_exit_code=0).AndReturn(("", "")) self.mox.ReplayAll() self.connector.disconnect_volume(self.connection_properties, {}) class RemoteFsConnectorTestCase(ConnectorTestCase): """Test cases for Remote FS initiator class.""" TEST_DEV = '172.18.194.100:/var/nfs' TEST_PATH = '/mnt/test/df0808229363aad55c27da50c38d6328' def setUp(self): super(RemoteFsConnectorTestCase, self).setUp() self.mox = mox.Mox() self.connection_properties = { 'export': self.TEST_DEV, 'name': '9c592d52-ce47-4263-8c21-4ecf3c029cdb'} self.connector = connector.RemoteFsConnector( 'nfs', root_helper='sudo', nfs_mount_point_base='/mnt/test', nfs_mount_options='vers=3') def tearDown(self): self.mox.VerifyAll() self.mox.UnsetStubs() super(RemoteFsConnectorTestCase, self).tearDown() def test_connect_volume(self): """Test the basic connect volume case.""" client = self.connector._remotefsclient self.mox.StubOutWithMock(client, '_execute') client._execute('mount', check_exit_code=0).AndReturn(("", "")) client._execute('mkdir', '-p', self.TEST_PATH, check_exit_code=0).AndReturn(("", "")) client._execute('mount', '-t', 'nfs', '-o', 'vers=3', self.TEST_DEV, self.TEST_PATH, root_helper='sudo', run_as_root=True, check_exit_code=0).AndReturn(("", "")) self.mox.ReplayAll() self.connector.connect_volume(self.connection_properties) def test_disconnect_volume(self): """Nothing should happen here -- make sure it doesn't blow up.""" self.connector.disconnect_volume(self.connection_properties, {}) class LocalConnectorTestCase(test.TestCase): def setUp(self): super(LocalConnectorTestCase, self).setUp() self.connection_properties = {'name': 'foo', 'device_path': '/tmp/bar'} def test_connect_volume(self): self.connector = connector.LocalConnector(None) cprops = self.connection_properties dev_info = self.connector.connect_volume(cprops) self.assertEqual(dev_info['type'], 'local') self.assertEqual(dev_info['path'], cprops['device_path']) def test_connect_volume_with_invalid_connection_data(self): self.connector = connector.LocalConnector(None) cprops = {} self.assertRaises(ValueError, self.connector.connect_volume, cprops) cinder-2014.1.5/cinder/tests/brick/fake_lvm.py0000664000567000056700000000403212540642606022212 0ustar jenkinsjenkins00000000000000# 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. from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class FakeBrickLVM(object): """Logs and records calls, for unit tests.""" def __init__(self, vg_name, create, pv_list, vtype, execute=None): super(FakeBrickLVM, self).__init__() self.vg_size = '5.00' self.vg_free_space = '5.00' self.vg_name = vg_name def supports_thin_provisioning(): return False def get_all_volumes(vg_name=None): if vg_name is not None: return [vg_name] return ['cinder-volumes', 'fake-vg-1'] def get_volumes(self): return ['fake-volume'] def get_volume(self, name): return ['name'] def get_all_physical_volumes(vg_name=None): return [] def get_physical_volumes(self): return [] def get_all_volume_groups(vg_name=None): return ['cinder-volumes', 'fake-vg'] def update_volume_group_info(self): pass def create_thin_pool(self, name=None, size_str=0): pass def create_volume(self, name, size_str, lv_type='default', mirror_count=0): pass def create_lv_snapshot(self, name, source_lv_name, lv_type='default'): pass def delete(self, name): pass def revert(self, snapshot_name): pass def lv_has_snapshot(self, name): return False def activate_lv(self, lv, is_snapshot=False): pass def rename_volume(self, lv_name, new_name): pass cinder-2014.1.5/cinder/tests/brick/test_brick_exception.py0000664000567000056700000000436012540642606024641 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from cinder.brick import exception from cinder import test class BrickExceptionTestCase(test.TestCase): def test_default_error_msg(self): class FakeBrickException(exception.BrickException): message = "default message" exc = FakeBrickException() self.assertEqual(unicode(exc), 'default message') def test_error_msg(self): self.assertEqual(unicode(exception.BrickException('test')), 'test') def test_default_error_msg_with_kwargs(self): class FakeBrickException(exception.BrickException): message = "default message: %(code)s" exc = FakeBrickException(code=500) self.assertEqual(unicode(exc), 'default message: 500') def test_error_msg_exception_with_kwargs(self): # NOTE(dprince): disable format errors for this test self.flags(fatal_exception_format_errors=False) class FakeBrickException(exception.BrickException): message = "default message: %(mispelled_code)s" exc = FakeBrickException(code=500) self.assertEqual(unicode(exc), 'default message: %(mispelled_code)s') def test_default_error_code(self): class FakeBrickException(exception.BrickException): code = 404 exc = FakeBrickException() self.assertEqual(exc.kwargs['code'], 404) def test_error_code_from_kwarg(self): class FakeBrickException(exception.BrickException): code = 500 exc = FakeBrickException(code=404) self.assertEqual(exc.kwargs['code'], 404) cinder-2014.1.5/cinder/tests/brick/__init__.py0000664000567000056700000000000012540642606022154 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/brick/test_brick_linuxscsi.py0000664000567000056700000002061012540642606024660 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. import os.path import string from cinder.brick.initiator import linuxscsi from cinder.openstack.common import log as logging from cinder import test LOG = logging.getLogger(__name__) class LinuxSCSITestCase(test.TestCase): def setUp(self): super(LinuxSCSITestCase, self).setUp() self.cmds = [] self.stubs.Set(os.path, 'realpath', lambda x: '/dev/sdc') self.linuxscsi = linuxscsi.LinuxSCSI(None, execute=self.fake_execute) def fake_execute(self, *cmd, **kwargs): self.cmds.append(string.join(cmd)) return "", None def test_echo_scsi_command(self): self.linuxscsi.echo_scsi_command("/some/path", "1") expected_commands = ['tee -a /some/path'] self.assertEqual(expected_commands, self.cmds) def test_get_name_from_path(self): device_name = "/dev/sdc" self.stubs.Set(os.path, 'realpath', lambda x: device_name) disk_path = ("/dev/disk/by-path/ip-10.10.220.253:3260-" "iscsi-iqn.2000-05.com.3pardata:21810002ac00383d-lun-0") name = self.linuxscsi.get_name_from_path(disk_path) self.assertEqual(name, device_name) self.stubs.Set(os.path, 'realpath', lambda x: "bogus") name = self.linuxscsi.get_name_from_path(disk_path) self.assertIsNone(name) def test_remove_scsi_device(self): self.stubs.Set(os.path, "exists", lambda x: False) self.linuxscsi.remove_scsi_device("/dev/sdc") expected_commands = [] self.assertEqual(expected_commands, self.cmds) self.stubs.Set(os.path, "exists", lambda x: True) self.linuxscsi.remove_scsi_device("/dev/sdc") expected_commands = [ ('blockdev --flushbufs /dev/sdc'), ('tee -a /sys/block/sdc/device/delete')] self.assertEqual(expected_commands, self.cmds) def test_flush_multipath_device(self): self.linuxscsi.flush_multipath_device('/dev/dm-9') expected_commands = [('multipath -f /dev/dm-9')] self.assertEqual(expected_commands, self.cmds) def test_flush_multipath_devices(self): self.linuxscsi.flush_multipath_devices() expected_commands = [('multipath -F')] self.assertEqual(expected_commands, self.cmds) def test_remove_multipath_device(self): def fake_find_multipath_device(device): devices = [{'device': '/dev/sde', 'host': 0, 'channel': 0, 'id': 0, 'lun': 1}, {'device': '/dev/sdf', 'host': 2, 'channel': 0, 'id': 0, 'lun': 1}, ] info = {"device": "dm-3", "id": "350002ac20398383d", "devices": devices} return info self.stubs.Set(os.path, "exists", lambda x: True) self.stubs.Set(self.linuxscsi, 'find_multipath_device', fake_find_multipath_device) self.linuxscsi.remove_multipath_device('/dev/dm-3') expected_commands = [ ('blockdev --flushbufs /dev/sde'), ('tee -a /sys/block/sde/device/delete'), ('blockdev --flushbufs /dev/sdf'), ('tee -a /sys/block/sdf/device/delete'), ('multipath -f 350002ac20398383d'), ] self.assertEqual(expected_commands, self.cmds) def test_find_multipath_device_3par(self): def fake_execute(*cmd, **kwargs): out = ("mpath6 (350002ac20398383d) dm-3 3PARdata,VV\n" "size=2.0G features='0' hwhandler='0' wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" " |- 0:0:0:1 sde 8:64 active undef running\n" " `- 2:0:0:1 sdf 8:80 active undef running\n" ) return out, None def fake_execute2(*cmd, **kwargs): out = ("350002ac20398383d dm-3 3PARdata,VV\n" "size=2.0G features='0' hwhandler='0' wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" " |- 0:0:0:1 sde 8:64 active undef running\n" " `- 2:0:0:1 sdf 8:80 active undef running\n" ) return out, None self.stubs.Set(self.linuxscsi, '_execute', fake_execute) info = self.linuxscsi.find_multipath_device('/dev/sde') LOG.error("info = %s" % info) self.assertEqual("/dev/dm-3", info["device"]) self.assertEqual("/dev/sde", info['devices'][0]['device']) self.assertEqual("0", info['devices'][0]['host']) self.assertEqual("0", info['devices'][0]['id']) self.assertEqual("0", info['devices'][0]['channel']) self.assertEqual("1", info['devices'][0]['lun']) self.assertEqual("/dev/sdf", info['devices'][1]['device']) self.assertEqual("2", info['devices'][1]['host']) self.assertEqual("0", info['devices'][1]['id']) self.assertEqual("0", info['devices'][1]['channel']) self.assertEqual("1", info['devices'][1]['lun']) def test_find_multipath_device_svc(self): def fake_execute(*cmd, **kwargs): out = ("36005076da00638089c000000000004d5 dm-2 IBM,2145\n" "size=954M features='1 queue_if_no_path' hwhandler='0'" " wp=rw\n" "|-+- policy='round-robin 0' prio=-1 status=active\n" "| |- 6:0:2:0 sde 8:64 active undef running\n" "| `- 6:0:4:0 sdg 8:96 active undef running\n" "`-+- policy='round-robin 0' prio=-1 status=enabled\n" " |- 6:0:3:0 sdf 8:80 active undef running\n" " `- 6:0:5:0 sdh 8:112 active undef running\n" ) return out, None self.stubs.Set(self.linuxscsi, '_execute', fake_execute) info = self.linuxscsi.find_multipath_device('/dev/sde') LOG.error("info = %s" % info) self.assertEqual("/dev/dm-2", info["device"]) self.assertEqual("/dev/sde", info['devices'][0]['device']) self.assertEqual("6", info['devices'][0]['host']) self.assertEqual("0", info['devices'][0]['channel']) self.assertEqual("2", info['devices'][0]['id']) self.assertEqual("0", info['devices'][0]['lun']) self.assertEqual("/dev/sdf", info['devices'][2]['device']) self.assertEqual("6", info['devices'][2]['host']) self.assertEqual("0", info['devices'][2]['channel']) self.assertEqual("3", info['devices'][2]['id']) self.assertEqual("0", info['devices'][2]['lun']) def test_find_multipath_device_ds8000(self): def fake_execute(*cmd, **kwargs): out = ("36005076303ffc48e0000000000000101 dm-2 IBM,2107900\n" "size=1.0G features='1 queue_if_no_path' hwhandler='0'" " wp=rw\n" "`-+- policy='round-robin 0' prio=-1 status=active\n" " |- 6:0:2:0 sdd 8:64 active undef running\n" " `- 6:1:0:3 sdc 8:32 active undef running\n" ) return out, None self.stubs.Set(self.linuxscsi, '_execute', fake_execute) info = self.linuxscsi.find_multipath_device('/dev/sdd') LOG.error("info = %s" % info) self.assertEqual("/dev/dm-2", info["device"]) self.assertEqual("/dev/sdd", info['devices'][0]['device']) self.assertEqual("6", info['devices'][0]['host']) self.assertEqual("0", info['devices'][0]['channel']) self.assertEqual("2", info['devices'][0]['id']) self.assertEqual("0", info['devices'][0]['lun']) self.assertEqual("/dev/sdc", info['devices'][1]['device']) self.assertEqual("6", info['devices'][1]['host']) self.assertEqual("1", info['devices'][1]['channel']) self.assertEqual("0", info['devices'][1]['id']) self.assertEqual("3", info['devices'][1]['lun']) cinder-2014.1.5/cinder/tests/brick/test_brick_remotefs.py0000664000567000056700000001566112540642606024475 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 OpenStack Foundation # All Rights Reserved # # 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. import mock import mox from cinder.brick import exception from cinder.brick.remotefs import remotefs from cinder.openstack.common import log as logging from cinder import test LOG = logging.getLogger(__name__) class BrickRemoteFsTestCase(test.TestCase): TEST_EXPORT = '1.2.3.4/export1' TEST_MNT_BASE = '/mnt/test' TEST_HASH = '4d664fd43b6ff86d80a4ea969c07b3b9' TEST_MNT_POINT = TEST_MNT_BASE + '/' + TEST_HASH def setUp(self): super(BrickRemoteFsTestCase, self).setUp() self._mox = mox.Mox() self._nfsclient = remotefs.RemoteFsClient( 'nfs', 'sudo', nfs_mount_point_base=self.TEST_MNT_BASE) self.addCleanup(self._mox.UnsetStubs) def test_get_hash_str(self): """_get_hash_str should calculation correct value.""" self.assertEqual(self.TEST_HASH, self._nfsclient._get_hash_str(self.TEST_EXPORT)) def test_get_mount_point(self): mnt_point = self._nfsclient.get_mount_point(self.TEST_EXPORT) self.assertEqual(mnt_point, self.TEST_MNT_POINT) def test_mount_nfs_should_mount_correctly(self): mox = self._mox client = self._nfsclient mox.StubOutWithMock(client, '_execute') client._execute('mount', check_exit_code=0).AndReturn(("", "")) client._execute('mkdir', '-p', self.TEST_MNT_POINT, check_exit_code=0).AndReturn(("", "")) client._execute('mount', '-t', 'nfs', '-o', 'vers=4,minorversion=1', self.TEST_EXPORT, self.TEST_MNT_POINT, root_helper='sudo', run_as_root=True, check_exit_code=0).AndReturn(("", "")) mox.ReplayAll() client.mount(self.TEST_EXPORT) mox.VerifyAll() def test_mount_nfs_with_specific_vers(self): opts = ['vers=2,nointr', 'nfsvers=3,lock', 'nolock,v2', 'v4.0'] for opt in opts: client = remotefs.RemoteFsClient( 'nfs', 'sudo', nfs_mount_point_base=self.TEST_MNT_BASE, nfs_mount_options=opt) client._read_mounts = mock.Mock(return_value=[]) client._execute = mock.Mock(return_value=True) client.mount(self.TEST_EXPORT) client._execute.assert_any_call('mkdir', '-p', self.TEST_MNT_POINT, check_exit_code=0) client._execute.assert_any_call('mount', '-t', 'nfs', '-o', opt, self.TEST_EXPORT, self.TEST_MNT_POINT, root_helper='sudo', run_as_root=True, check_exit_code=0) def test_mount_nfs_with_fallback_no_vers(self): def execute(*args, **kwargs): if 'mkdir' in args: return True elif 'mount' in args: if 'lock,nointr,vers=4,minorversion=1' in args: raise Exception() else: return True else: self.fail(_("Unexpected call to _execute.")) opts = 'lock,nointr' client = remotefs.RemoteFsClient( 'nfs', 'sudo', nfs_mount_point_base=self.TEST_MNT_BASE, nfs_mount_options=opts) client._read_mounts = mock.Mock(return_value=[]) client._execute = mock.Mock(wraps=execute) client.mount(self.TEST_EXPORT) client._execute.assert_any_call('mkdir', '-p', self.TEST_MNT_POINT, check_exit_code=0) client._execute.assert_any_call('mount', '-t', 'nfs', '-o', 'lock,nointr,vers=4,minorversion=1', self.TEST_EXPORT, self.TEST_MNT_POINT, root_helper='sudo', run_as_root=True, check_exit_code=0) client._execute.assert_any_call('mount', '-t', 'nfs', '-o', 'lock,nointr', self.TEST_EXPORT, self.TEST_MNT_POINT, root_helper='sudo', run_as_root=True, check_exit_code=0) def test_mount_nfs_with_fallback_all_fail(self): def execute(*args, **kwargs): if 'mkdir' in args: return True else: raise Exception(_("mount failed.")) opts = 'lock,nointr' client = remotefs.RemoteFsClient( 'nfs', 'sudo', nfs_mount_point_base=self.TEST_MNT_BASE, nfs_mount_options=opts) client._read_mounts = mock.Mock(return_value=[]) client._execute = mock.Mock(wraps=execute) self.assertRaises(exception.BrickException, client.mount, self.TEST_EXPORT) def test_mount_nfs_should_not_remount(self): mox = self._mox client = self._nfsclient line = "%s on %s type nfs (rw)\n" % (self.TEST_EXPORT, self.TEST_MNT_POINT) mox.StubOutWithMock(client, '_execute') client._execute('mount', check_exit_code=0).AndReturn((line, "")) mox.ReplayAll() client.mount(self.TEST_EXPORT) mox.VerifyAll() def test_nfs_mount_options(self): opts = 'test_nfs_mount_options' client = remotefs.RemoteFsClient( 'nfs', 'sudo', nfs_mount_point_base=self.TEST_MNT_BASE, nfs_mount_options=opts) self.assertEqual(opts, client._mount_options) def test_nfs_mount_point_base(self): base = '/mnt/test/nfs/mount/point/base' client = remotefs.RemoteFsClient('nfs', 'sudo', nfs_mount_point_base=base) self.assertEqual(base, client._mount_base) def test_glusterfs_mount_point_base(self): base = '/mnt/test/glusterfs/mount/point/base' client = remotefs.RemoteFsClient('glusterfs', 'sudo', glusterfs_mount_point_base=base) self.assertEqual(base, client._mount_base) cinder-2014.1.5/cinder/tests/brick/test_brick_linuxfc.py0000664000567000056700000001512012540642606024307 0ustar jenkinsjenkins00000000000000# (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # # 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. import os.path import string from cinder.brick.initiator import linuxfc from cinder.openstack.common import log as logging from cinder import test LOG = logging.getLogger(__name__) class LinuxFCTestCase(test.TestCase): def setUp(self): super(LinuxFCTestCase, self).setUp() self.cmds = [] self.stubs.Set(os.path, 'exists', lambda x: True) self.lfc = linuxfc.LinuxFibreChannel(None, execute=self.fake_execute) def fake_execute(self, *cmd, **kwargs): self.cmds.append(string.join(cmd)) return "", None def test_rescan_hosts(self): hbas = [{'host_device': 'foo'}, {'host_device': 'bar'}, ] self.lfc.rescan_hosts(hbas) expected_commands = ['tee -a /sys/class/scsi_host/foo/scan', 'tee -a /sys/class/scsi_host/bar/scan'] self.assertEqual(expected_commands, self.cmds) def test_get_fc_hbas_fail(self): def fake_exec1(a, b, c, d, run_as_root=True, root_helper='sudo'): raise OSError def fake_exec2(a, b, c, d, run_as_root=True, root_helper='sudo'): return None, 'None found' self.stubs.Set(self.lfc, "_execute", fake_exec1) hbas = self.lfc.get_fc_hbas() self.assertEqual(0, len(hbas)) self.stubs.Set(self.lfc, "_execute", fake_exec2) hbas = self.lfc.get_fc_hbas() self.assertEqual(0, len(hbas)) def test_get_fc_hbas(self): def fake_exec(a, b, c, d, run_as_root=True, root_helper='sudo'): return SYSTOOL_FC, None self.stubs.Set(self.lfc, "_execute", fake_exec) hbas = self.lfc.get_fc_hbas() self.assertEqual(2, len(hbas)) hba1 = hbas[0] self.assertEqual(hba1["ClassDevice"], "host0") hba2 = hbas[1] self.assertEqual(hba2["ClassDevice"], "host2") def test_get_fc_hbas_info(self): def fake_exec(a, b, c, d, run_as_root=True, root_helper='sudo'): return SYSTOOL_FC, None self.stubs.Set(self.lfc, "_execute", fake_exec) hbas_info = self.lfc.get_fc_hbas_info() expected_info = [{'device_path': '/sys/devices/pci0000:20/' '0000:20:03.0/0000:21:00.0/' 'host0/fc_host/host0', 'host_device': 'host0', 'node_name': '50014380242b9751', 'port_name': '50014380242b9750'}, {'device_path': '/sys/devices/pci0000:20/' '0000:20:03.0/0000:21:00.1/' 'host2/fc_host/host2', 'host_device': 'host2', 'node_name': '50014380242b9753', 'port_name': '50014380242b9752'}, ] self.assertEqual(expected_info, hbas_info) def test_get_fc_wwpns(self): def fake_exec(a, b, c, d, run_as_root=True, root_helper='sudo'): return SYSTOOL_FC, None self.stubs.Set(self.lfc, "_execute", fake_exec) wwpns = self.lfc.get_fc_wwpns() expected_wwpns = ['50014380242b9750', '50014380242b9752'] self.assertEqual(expected_wwpns, wwpns) def test_get_fc_wwnns(self): def fake_exec(a, b, c, d, run_as_root=True, root_helper='sudo'): return SYSTOOL_FC, None self.stubs.Set(self.lfc, "_execute", fake_exec) wwnns = self.lfc.get_fc_wwpns() expected_wwnns = ['50014380242b9750', '50014380242b9752'] self.assertEqual(expected_wwnns, wwnns) SYSTOOL_FC = """ Class = "fc_host" Class Device = "host0" Class Device path = "/sys/devices/pci0000:20/0000:20:03.0/\ 0000:21:00.0/host0/fc_host/host0" dev_loss_tmo = "16" fabric_name = "0x100000051ea338b9" issue_lip = max_npiv_vports = "0" node_name = "0x50014380242b9751" npiv_vports_inuse = "0" port_id = "0x960d0d" port_name = "0x50014380242b9750" port_state = "Online" port_type = "NPort (fabric via point-to-point)" speed = "8 Gbit" supported_classes = "Class 3" supported_speeds = "1 Gbit, 2 Gbit, 4 Gbit, 8 Gbit" symbolic_name = "QMH2572 FW:v4.04.04 DVR:v8.03.07.12-k" system_hostname = "" tgtid_bind_type = "wwpn (World Wide Port Name)" uevent = vport_create = vport_delete = Device = "host0" Device path = "/sys/devices/pci0000:20/0000:20:03.0/0000:21:00.0/host0" edc = optrom_ctl = reset = uevent = "DEVTYPE=scsi_host" Class Device = "host2" Class Device path = "/sys/devices/pci0000:20/0000:20:03.0/\ 0000:21:00.1/host2/fc_host/host2" dev_loss_tmo = "16" fabric_name = "0x100000051ea33b79" issue_lip = max_npiv_vports = "0" node_name = "0x50014380242b9753" npiv_vports_inuse = "0" port_id = "0x970e09" port_name = "0x50014380242b9752" port_state = "Online" port_type = "NPort (fabric via point-to-point)" speed = "8 Gbit" supported_classes = "Class 3" supported_speeds = "1 Gbit, 2 Gbit, 4 Gbit, 8 Gbit" symbolic_name = "QMH2572 FW:v4.04.04 DVR:v8.03.07.12-k" system_hostname = "" tgtid_bind_type = "wwpn (World Wide Port Name)" uevent = vport_create = vport_delete = Device = "host2" Device path = "/sys/devices/pci0000:20/0000:20:03.0/0000:21:00.1/host2" edc = optrom_ctl = reset = uevent = "DEVTYPE=scsi_host" """ cinder-2014.1.5/cinder/tests/brick/test_brick_lvm.py0000664000567000056700000002452312540642606023444 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. import mox from cinder.brick import exception from cinder.brick.local_dev import lvm as brick from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import test from cinder.volume import configuration as conf LOG = logging.getLogger(__name__) def create_configuration(): configuration = mox.MockObject(conf.Configuration) configuration.append_config_values(mox.IgnoreArg()) return configuration class BrickLvmTestCase(test.TestCase): def setUp(self): self._mox = mox.Mox() self.configuration = mox.MockObject(conf.Configuration) self.configuration.volume_group_name = 'fake-vg' super(BrickLvmTestCase, self).setUp() #Stub processutils.execute for static methods self.stubs.Set(processutils, 'execute', self.fake_execute) self.vg = brick.LVM(self.configuration.volume_group_name, 'sudo', False, None, 'default', self.fake_execute) def failed_fake_execute(obj, *cmd, **kwargs): return ("\n", "fake-error") def fake_pretend_lvm_version(obj, *cmd, **kwargs): return (" LVM version: 2.03.00 (2012-03-06)\n", "") def fake_old_lvm_version(obj, *cmd, **kwargs): # Does not support thin prov or snap activation return (" LVM version: 2.02.65(2) (2012-03-06)\n", "") def fake_customised_lvm_version(obj, *cmd, **kwargs): return (" LVM version: 2.02.100(2)-RHEL6 (2013-09-12)\n", "") def fake_execute(obj, *cmd, **kwargs): cmd_string = ', '.join(cmd) data = "\n" if ('env, LC_ALL=C, vgs, --noheadings, --unit=g, -o, name' == cmd_string): data = " fake-vg\n" data += " some-other-vg\n" elif ('env, LC_ALL=C, vgs, --noheadings, -o, name, fake-vg' == cmd_string): data = " fake-vg\n" elif 'env, LC_ALL=C, vgs, --version' in cmd_string: data = " LVM version: 2.02.95(2) (2012-03-06)\n" elif ('env, LC_ALL=C, vgs, --noheadings, -o uuid, fake-vg' in cmd_string): data = " kVxztV-dKpG-Rz7E-xtKY-jeju-QsYU-SLG6Z1\n" elif 'env, LC_ALL=C, vgs, --noheadings, --unit=g, ' \ '-o, name,size,free,lv_count,uuid, ' \ '--separator, :, --nosuffix' in cmd_string: data = " fake-vg:10.00:10.00:0:"\ "kVxztV-dKpG-Rz7E-xtKY-jeju-QsYU-SLG6Z1\n" if 'fake-vg' in cmd_string: return (data, "") data += " fake-vg-2:10.00:10.00:0:"\ "lWyauW-dKpG-Rz7E-xtKY-jeju-QsYU-SLG7Z2\n" data += " fake-vg-3:10.00:10.00:0:"\ "mXzbuX-dKpG-Rz7E-xtKY-jeju-QsYU-SLG8Z3\n" elif ('env, LC_ALL=C, lvs, --noheadings, ' '--unit=g, -o, vg_name,name,size' in cmd_string): data = " fake-vg fake-1 1.00g\n" data += " fake-vg fake-2 1.00g\n" elif ('env, LC_ALL=C, lvdisplay, --noheading, -C, -o, Attr' in cmd_string): if 'test-volumes' in cmd_string: data = ' wi-a-' else: data = ' owi-a-' elif 'env, LC_ALL=C, pvs, --noheadings' in cmd_string: data = " fake-vg:/dev/sda:10.00:1.00\n" data += " fake-vg:/dev/sdb:10.00:1.00\n" data += " fake-vg:/dev/sdc:10.00:8.99\n" data += " fake-vg-2:/dev/sdd:10.00:9.99\n" elif 'env, LC_ALL=C, lvs, --noheadings, --unit=g' \ ', -o, size,data_percent, --separator, :' in cmd_string: data = " 9:12\n" elif 'lvcreate, -T, -L, ' in cmd_string: pass elif 'lvcreate, -T, -V, ' in cmd_string: pass elif 'lvcreate, --name, ' in cmd_string: pass else: raise AssertionError('unexpected command called: %s' % cmd_string) return (data, "") def test_create_lv_snapshot(self): self.assertEqual(self.vg.create_lv_snapshot('snapshot-1', 'fake-1'), None) self._mox.StubOutWithMock(self.vg, 'get_volume') self.vg.get_volume('fake-non-existent').AndReturn(None) self._mox.ReplayAll() try: self.vg.create_lv_snapshot('snapshot-1', 'fake-non-existent') except exception.VolumeDeviceNotFound as e: self.assertEqual(e.kwargs['device'], 'fake-non-existent') else: self.fail("Exception not raised") def test_vg_exists(self): self.assertEqual(self.vg._vg_exists(), True) def test_get_vg_uuid(self): self.assertEqual(self.vg._get_vg_uuid()[0], 'kVxztV-dKpG-Rz7E-xtKY-jeju-QsYU-SLG6Z1') def test_get_all_volumes(self): out = self.vg.get_volumes() self.assertEqual(out[0]['name'], 'fake-1') self.assertEqual(out[0]['size'], '1.00g') self.assertEqual(out[0]['vg'], 'fake-vg') def test_get_volume(self): self.assertEqual(self.vg.get_volume('fake-1')['name'], 'fake-1') def test_get_all_physical_volumes(self): # Filtered VG version pvs = self.vg.get_all_physical_volumes('sudo', 'fake-vg') self.assertEqual(len(pvs), 3) # Non-Filtered, all VG's pvs = self.vg.get_all_physical_volumes('sudo') self.assertEqual(len(pvs), 4) def test_get_physical_volumes(self): pvs = self.vg.get_physical_volumes() self.assertEqual(len(pvs), 3) def test_get_volume_groups(self): self.assertEqual(len(self.vg.get_all_volume_groups('sudo')), 3) self.assertEqual(len(self.vg.get_all_volume_groups('sudo', 'fake-vg')), 1) def test_thin_support(self): # lvm.supports_thin() is a static method and doesn't # use the self._executor fake we pass in on init # so we need to stub processutils.execute appropriately self.stubs.Set(processutils, 'execute', self.fake_execute) self.assertTrue(self.vg.supports_thin_provisioning('sudo')) self.stubs.Set(processutils, 'execute', self.fake_pretend_lvm_version) self.assertTrue(self.vg.supports_thin_provisioning('sudo')) self.stubs.Set(processutils, 'execute', self.fake_old_lvm_version) self.assertFalse(self.vg.supports_thin_provisioning('sudo')) self.stubs.Set(processutils, 'execute', self.fake_customised_lvm_version) self.assertTrue(self.vg.supports_thin_provisioning('sudo')) def test_snapshot_lv_activate_support(self): self.vg._supports_snapshot_lv_activation = None self.stubs.Set(processutils, 'execute', self.fake_execute) self.assertTrue(self.vg.supports_snapshot_lv_activation) self.vg._supports_snapshot_lv_activation = None self.stubs.Set(processutils, 'execute', self.fake_old_lvm_version) self.assertFalse(self.vg.supports_snapshot_lv_activation) self.vg._supports_snapshot_lv_activation = None def test_lvchange_ignskipact_support_yes(self): """Tests if lvchange -K is available via a lvm2 version check.""" self.vg._supports_lvchange_ignoreskipactivation = None self.stubs.Set(processutils, 'execute', self.fake_pretend_lvm_version) self.assertTrue(self.vg.supports_lvchange_ignoreskipactivation) self.vg._supports_lvchange_ignoreskipactivation = None self.stubs.Set(processutils, 'execute', self.fake_old_lvm_version) self.assertFalse(self.vg.supports_lvchange_ignoreskipactivation) self.vg._supports_lvchange_ignoreskipactivation = None def test_thin_pool_creation(self): # The size of fake-vg volume group is 10g, so the calculated thin # pool size should be 9.5g (95% of 10g). self.assertEqual("9.5g", self.vg.create_thin_pool()) # Passing a size parameter should result in a thin pool of that exact # size. for size in ("1g", "1.2g", "1.75g"): self.assertEqual(size, self.vg.create_thin_pool(size_str=size)) def test_thin_pool_free_space(self): # The size of fake-vg-pool is 9g and the allocated data sums up to # 12% so the calculated free space should be 7.92 self.assertEqual(float("7.92"), self.vg._get_thin_pool_free_space("fake-vg", "fake-vg-pool")) def test_volume_create_after_thin_creation(self): """Test self.vg.vg_thin_pool is set to pool_name See bug #1220286 for more info. """ vg_name = "vg-name" pool_name = vg_name + "-pool" pool_path = "%s/%s" % (vg_name, pool_name) def executor(obj, *cmd, **kwargs): self.assertEqual(pool_path, cmd[-1]) self.vg._executor = executor self.vg.create_thin_pool(pool_name, "1G") self.vg.create_volume("test", "1G", lv_type='thin') self.assertEqual(self.vg.vg_thin_pool, pool_name) def test_lv_has_snapshot(self): self.assertTrue(self.vg.lv_has_snapshot('fake-vg')) self.assertFalse(self.vg.lv_has_snapshot('test-volumes')) def test_activate_lv(self): self._mox.StubOutWithMock(self.vg, '_execute') self.vg._supports_lvchange_ignoreskipactivation = True self.vg._execute('lvchange', '-a', 'y', '--yes', '-K', 'fake-vg/my-lv', root_helper='sudo', run_as_root=True) self._mox.ReplayAll() self.vg.activate_lv('my-lv') self._mox.VerifyAll() def test_get_mirrored_available_capacity(self): self.assertEqual(self.vg.vg_mirror_free_space(1), 2.0) cinder-2014.1.5/cinder/tests/api/0000775000567000056700000000000012540643114017527 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/test_extensions.py0000664000567000056700000001346712540642606023357 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import iso8601 from lxml import etree from oslo.config import cfg import webob from cinder.api.v1 import router from cinder.api import xmlutil from cinder.openstack.common import jsonutils from cinder import test NS = "{http://docs.openstack.org/common/api/v1.0}" CONF = cfg.CONF class ExtensionTestCase(test.TestCase): def setUp(self): super(ExtensionTestCase, self).setUp() ext_list = CONF.osapi_volume_extension[:] fox = ('cinder.tests.api.extensions.foxinsocks.Foxinsocks') if fox not in ext_list: ext_list.append(fox) self.flags(osapi_volume_extension=ext_list) class ExtensionControllerTest(ExtensionTestCase): def setUp(self): super(ExtensionControllerTest, self).setUp() self.ext_list = ["TypesManage", "TypesExtraSpecs", ] self.ext_list.sort() def test_list_extensions_json(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions") response = request.get_response(app) self.assertEqual(200, response.status_int) # Make sure we have all the extensions, extra extensions being OK. data = jsonutils.loads(response.body) names = [str(x['name']) for x in data['extensions'] if str(x['name']) in self.ext_list] names.sort() self.assertEqual(names, self.ext_list) # Ensure all the timestamps are valid according to iso8601 for ext in data['extensions']: iso8601.parse_date(ext['updated']) # Make sure that at least Fox in Sox is correct. (fox_ext, ) = [ x for x in data['extensions'] if x['alias'] == 'FOXNSOX'] self.assertEqual( fox_ext, {'namespace': 'http://www.fox.in.socks/api/ext/pie/v1.0', 'name': 'Fox In Socks', 'updated': '2011-01-22T13:25:27-06:00', 'description': 'The Fox In Socks Extension.', 'alias': 'FOXNSOX', 'links': []}, ) for ext in data['extensions']: url = '/fake/extensions/%s' % ext['alias'] request = webob.Request.blank(url) response = request.get_response(app) output = jsonutils.loads(response.body) self.assertEqual(output['extension']['alias'], ext['alias']) def test_get_extension_json(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions/FOXNSOX") response = request.get_response(app) self.assertEqual(200, response.status_int) data = jsonutils.loads(response.body) self.assertEqual( data['extension'], {"namespace": "http://www.fox.in.socks/api/ext/pie/v1.0", "name": "Fox In Socks", "updated": "2011-01-22T13:25:27-06:00", "description": "The Fox In Socks Extension.", "alias": "FOXNSOX", "links": []}) def test_get_non_existing_extension_json(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions/4") response = request.get_response(app) self.assertEqual(404, response.status_int) def test_list_extensions_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) root = etree.XML(response.body) self.assertEqual(root.tag.split('extensions')[0], NS) # Make sure we have all the extensions, extras extensions being OK. exts = root.findall('{0}extension'.format(NS)) self.assertGreaterEqual(len(exts), len(self.ext_list)) # Make sure that at least Fox in Sox is correct. (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX'] self.assertEqual(fox_ext.get('name'), 'Fox In Socks') self.assertEqual( fox_ext.get('namespace'), 'http://www.fox.in.socks/api/ext/pie/v1.0') self.assertEqual(fox_ext.get('updated'), '2011-01-22T13:25:27-06:00') self.assertEqual( fox_ext.findtext('{0}description'.format(NS)), 'The Fox In Socks Extension.') xmlutil.validate_schema(root, 'extensions') def test_get_extension_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions/FOXNSOX") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) xml = response.body root = etree.XML(xml) self.assertEqual(root.tag.split('extension')[0], NS) self.assertEqual(root.get('alias'), 'FOXNSOX') self.assertEqual(root.get('name'), 'Fox In Socks') self.assertEqual( root.get('namespace'), 'http://www.fox.in.socks/api/ext/pie/v1.0') self.assertEqual(root.get('updated'), '2011-01-22T13:25:27-06:00') self.assertEqual( root.findtext('{0}description'.format(NS)), 'The Fox In Socks Extension.') xmlutil.validate_schema(root, 'extension') cinder-2014.1.5/cinder/tests/api/middleware/0000775000567000056700000000000012540643114021644 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/middleware/test_auth.py0000664000567000056700000000612612540642606024230 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # 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. import webob import cinder.api.middleware.auth from cinder.openstack.common.middleware import request_id from cinder import test class TestCinderKeystoneContextMiddleware(test.TestCase): def setUp(self): super(TestCinderKeystoneContextMiddleware, self).setUp() @webob.dec.wsgify() def fake_app(req): self.context = req.environ['cinder.context'] return webob.Response() self.context = None self.middleware = (cinder.api.middleware.auth .CinderKeystoneContext(fake_app)) self.request = webob.Request.blank('/') self.request.headers['X_TENANT_ID'] = 'testtenantid' self.request.headers['X_AUTH_TOKEN'] = 'testauthtoken' def test_no_user_or_user_id(self): response = self.request.get_response(self.middleware) self.assertEqual(response.status, '401 Unauthorized') def test_user_only(self): self.request.headers['X_USER'] = 'testuser' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.user_id, 'testuser') def test_user_id_only(self): self.request.headers['X_USER_ID'] = 'testuserid' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.user_id, 'testuserid') def test_user_id_trumps_user(self): self.request.headers['X_USER_ID'] = 'testuserid' self.request.headers['X_USER'] = 'testuser' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.user_id, 'testuserid') def test_tenant_id_name(self): self.request.headers['X_USER_ID'] = 'testuserid' self.request.headers['X_TENANT_NAME'] = 'testtenantname' response = self.request.get_response(self.middleware) self.assertEqual(response.status, '200 OK') self.assertEqual(self.context.project_id, 'testtenantid') self.assertEqual(self.context.project_name, 'testtenantname') def test_request_id_extracted_from_env(self): req_id = 'dummy-request-id' self.request.headers['X_PROJECT_ID'] = 'testtenantid' self.request.headers['X_USER_ID'] = 'testuserid' self.request.environ[request_id.ENV_REQUEST_ID] = req_id self.request.get_response(self.middleware) self.assertEqual(req_id, self.context.request_id) cinder-2014.1.5/cinder/tests/api/middleware/__init__.py0000664000567000056700000000000012540642606023750 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/middleware/test_sizelimit.py0000664000567000056700000000656312540642606025305 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 OpenStack Foundation # # 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. from oslo.config import cfg import six import webob from cinder.api.middleware import sizelimit from cinder import test CONF = cfg.CONF MAX_REQUEST_BODY_SIZE = CONF.osapi_max_request_body_size class TestLimitingReader(test.TestCase): def test_limiting_reader(self): BYTES = 1024 bytes_read = 0 data = six.StringIO("*" * BYTES) for chunk in sizelimit.LimitingReader(data, BYTES): bytes_read += len(chunk) self.assertEqual(bytes_read, BYTES) bytes_read = 0 data = six.StringIO("*" * BYTES) reader = sizelimit.LimitingReader(data, BYTES) byte = reader.read(1) while len(byte) != 0: bytes_read += 1 byte = reader.read(1) self.assertEqual(bytes_read, BYTES) def test_limiting_reader_fails(self): BYTES = 1024 def _consume_all_iter(): bytes_read = 0 data = six.StringIO("*" * BYTES) for chunk in sizelimit.LimitingReader(data, BYTES - 1): bytes_read += len(chunk) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, _consume_all_iter) def _consume_all_read(): bytes_read = 0 data = six.StringIO("*" * BYTES) reader = sizelimit.LimitingReader(data, BYTES - 1) byte = reader.read(1) while len(byte) != 0: bytes_read += 1 byte = reader.read(1) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, _consume_all_read) class TestRequestBodySizeLimiter(test.TestCase): def setUp(self): super(TestRequestBodySizeLimiter, self).setUp() @webob.dec.wsgify() def fake_app(req): return webob.Response(req.body) self.middleware = sizelimit.RequestBodySizeLimiter(fake_app) self.request = webob.Request.blank('/', method='POST') def test_content_length_acceptable(self): self.request.headers['Content-Length'] = MAX_REQUEST_BODY_SIZE self.request.body = "0" * MAX_REQUEST_BODY_SIZE response = self.request.get_response(self.middleware) self.assertEqual(response.status_int, 200) def test_content_length_too_large(self): self.request.headers['Content-Length'] = MAX_REQUEST_BODY_SIZE + 1 self.request.body = "0" * (MAX_REQUEST_BODY_SIZE + 1) response = self.request.get_response(self.middleware) self.assertEqual(response.status_int, 413) def test_request_too_large_no_content_length(self): self.request.body = "0" * (MAX_REQUEST_BODY_SIZE + 1) self.request.headers['Content-Length'] = None response = self.request.get_response(self.middleware) self.assertEqual(response.status_int, 413) cinder-2014.1.5/cinder/tests/api/middleware/test_faults.py0000664000567000056700000002303012540642606024556 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. from xml.dom import minidom import gettext import mock import webob.dec import webob.exc from cinder.api import common from cinder.api.openstack import wsgi from cinder import exception from cinder.openstack.common import gettextutils from cinder.openstack.common import jsonutils from cinder import test class TestFaults(test.TestCase): """Tests covering `cinder.api.openstack.faults:Fault` class.""" def _prepare_xml(self, xml_string): """Remove characters from string which hinder XML equality testing.""" xml_string = xml_string.replace(" ", "") xml_string = xml_string.replace("\n", "") xml_string = xml_string.replace("\t", "") return xml_string def test_400_fault_json(self): """Test fault serialized to JSON via file-extension and/or header.""" requests = [ webob.Request.blank('/.json'), webob.Request.blank('/', headers={"Accept": "application/json"}), ] for request in requests: fault = wsgi.Fault(webob.exc.HTTPBadRequest(explanation='scram')) response = request.get_response(fault) expected = { "badRequest": { "message": "scram", "code": 400, }, } actual = jsonutils.loads(response.body) self.assertEqual(response.content_type, "application/json") self.assertEqual(expected, actual) def test_413_fault_json(self): """Test fault serialized to JSON via file-extension and/or header.""" requests = [ webob.Request.blank('/.json'), webob.Request.blank('/', headers={"Accept": "application/json"}), ] for request in requests: exc = webob.exc.HTTPRequestEntityTooLarge fault = wsgi.Fault(exc(explanation='sorry', headers={'Retry-After': 4})) response = request.get_response(fault) expected = { "overLimit": { "message": "sorry", "code": 413, "retryAfter": 4, }, } actual = jsonutils.loads(response.body) self.assertEqual(response.content_type, "application/json") self.assertEqual(expected, actual) def test_raise(self): """Ensure the ability to raise :class:`Fault` in WSGI-ified methods.""" @webob.dec.wsgify def raiser(req): raise wsgi.Fault(webob.exc.HTTPNotFound(explanation='whut?')) req = webob.Request.blank('/.xml') resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/xml") self.assertEqual(resp.status_int, 404) self.assertIn('whut?', resp.body) def test_raise_403(self): """Ensure the ability to raise :class:`Fault` in WSGI-ified methods.""" @webob.dec.wsgify def raiser(req): raise wsgi.Fault(webob.exc.HTTPForbidden(explanation='whut?')) req = webob.Request.blank('/.xml') resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/xml") self.assertEqual(resp.status_int, 403) self.assertNotIn('resizeNotAllowed', resp.body) self.assertIn('forbidden', resp.body) def test_raise_http_with_localized_explanation(self): params = ('blah', ) expl = gettextutils.Message("String with params: %s" % params, 'test') def _mock_translation(msg, locale): return "Mensaje traducido" self.stubs.Set(gettextutils, "translate", _mock_translation) @webob.dec.wsgify def raiser(req): raise wsgi.Fault(webob.exc.HTTPNotFound(explanation=expl)) req = webob.Request.blank('/.xml') resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/xml") self.assertEqual(resp.status_int, 404) self.assertIn(("Mensaje traducido"), resp.body) self.stubs.UnsetAll() @mock.patch('cinder.openstack.common.gettextutils.gettext.translation') def test_raise_invalid_with_localized_explanation(self, mock_translation): msg_template = gettextutils.Message("Invalid input: %(reason)s", "") reason = gettextutils.Message("Value is invalid", "") class MockESTranslations(gettext.GNUTranslations): def ugettext(self, msgid): if "Invalid input" in msgid: return "Entrada invalida: %(reason)s" elif "Value is invalid" in msgid: return "El valor es invalido" return msgid def translation(domain, localedir=None, languages=None, fallback=None): return MockESTranslations() mock_translation.side_effect = translation @webob.dec.wsgify def raiser(req): class MyInvalidInput(exception.InvalidInput): message = msg_template ex = MyInvalidInput(reason=reason) raise wsgi.Fault(exception.ConvertedException(code=ex.code, explanation=ex.msg)) req = webob.Request.blank("/.json") resp = req.get_response(raiser) self.assertEqual(resp.content_type, "application/json") self.assertEqual(resp.status_int, 400) # This response was comprised of Message objects from two different # exceptions, here we are testing that both got translated self.assertIn("Entrada invalida: El valor es invalido", resp.body) def test_fault_has_status_int(self): """Ensure the status_int is set correctly on faults.""" fault = wsgi.Fault(webob.exc.HTTPBadRequest(explanation='what?')) self.assertEqual(fault.status_int, 400) def test_xml_serializer(self): """Ensure that a v1.1 request responds with a v1 xmlns.""" request = webob.Request.blank('/v1', headers={"Accept": "application/xml"}) fault = wsgi.Fault(webob.exc.HTTPBadRequest(explanation='scram')) response = request.get_response(fault) self.assertIn(common.XML_NS_V1, response.body) self.assertEqual(response.content_type, "application/xml") self.assertEqual(response.status_int, 400) class FaultsXMLSerializationTestV11(test.TestCase): """Tests covering `cinder.api.openstack.faults:Fault` class.""" def _prepare_xml(self, xml_string): xml_string = xml_string.replace(" ", "") xml_string = xml_string.replace("\n", "") xml_string = xml_string.replace("\t", "") return xml_string def test_400_fault(self): metadata = {'attributes': {"badRequest": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V1) fixture = { "badRequest": { "message": "scram", "code": 400, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" scram """) % common.XML_NS_V1) self.assertEqual(expected.toxml(), actual.toxml()) def test_413_fault(self): metadata = {'attributes': {"overLimit": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V1) fixture = { "overLimit": { "message": "sorry", "code": 413, "retryAfter": 4, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" sorry 4 """) % common.XML_NS_V1) self.assertEqual(expected.toxml(), actual.toxml()) def test_404_fault(self): metadata = {'attributes': {"itemNotFound": 'code'}} serializer = wsgi.XMLDictSerializer(metadata=metadata, xmlns=common.XML_NS_V1) fixture = { "itemNotFound": { "message": "sorry", "code": 404, }, } output = serializer.serialize(fixture) actual = minidom.parseString(self._prepare_xml(output)) expected = minidom.parseString(self._prepare_xml(""" sorry """) % common.XML_NS_V1) self.assertEqual(expected.toxml(), actual.toxml()) cinder-2014.1.5/cinder/tests/api/test_router.py0000664000567000056700000002311412540642606022466 0ustar jenkinsjenkins00000000000000# Copyright 2011 Denali Systems, Inc. # All Rights Reserved. # # 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. from cinder.api.openstack import wsgi from cinder.api.v1 import router from cinder.api.v1 import snapshots from cinder.api.v1 import volumes from cinder.api import versions from cinder.openstack.common import log as logging from cinder import test from cinder.tests.api import fakes LOG = logging.getLogger(__name__) class FakeController(object): def __init__(self, ext_mgr=None): self.ext_mgr = ext_mgr def index(self, req): obj_type = req.path.split("/")[3] return {obj_type: []} def detail(self, req): obj_type = req.path.split("/")[3] return {obj_type: []} def create_resource(ext_mgr): return wsgi.Resource(FakeController(ext_mgr)) class VolumeRouterTestCase(test.TestCase): def setUp(self): super(VolumeRouterTestCase, self).setUp() # NOTE(vish): versions is just returning text so, no need to stub. self.stubs.Set(snapshots, 'create_resource', create_resource) self.stubs.Set(volumes, 'create_resource', create_resource) self.app = router.APIRouter() def test_versions(self): req = fakes.HTTPRequest.blank('') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(302, response.status_int) req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(200, response.status_int) def test_versions_action_args_index(self): request_environment = {'PATH_INFO': '/'} resource = versions.Versions() result = resource.get_action_args(request_environment) self.assertEqual(result['action'], 'index') def test_versions_action_args_multi(self): request_environment = {'PATH_INFO': '/fake/path'} resource = versions.Versions() result = resource.get_action_args(request_environment) self.assertEqual(result['action'], 'multi') def test_versions_get_most_recent_update(self): res = versions.AtomSerializer() fake_date_updated = [ {"updated": '2012-01-04T11:33:21Z'}, {"updated": '2012-11-21T11:33:21Z'} ] result = res._get_most_recent_update(fake_date_updated) self.assertEqual('2012-11-21T11:33:21Z', result) def test_versions_create_version_entry(self): res = versions.AtomSerializer() vers = { "id": "v2.0", "status": "CURRENT", "updated": "2012-11-21T11:33:21Z", "links": [ { "rel": "describedby", "type": "application/pdf", "href": "http://jorgew.github.com/block-storage-api/" "content/os-block-storage-1.0.pdf", }, ], } fake_result = { 'id': 'http://jorgew.github.com/block-storage-api/' 'content/os-block-storage-1.0.pdf', 'title': 'Version v2.0', 'updated': '2012-11-21T11:33:21Z', 'link': { 'href': 'http://jorgew.github.com/block-storage-api/' 'content/os-block-storage-1.0.pdf', 'type': 'application/pdf', 'rel': 'describedby' }, 'content': 'Version v2.0 CURRENT (2012-11-21T11:33:21Z)' } result_function = res._create_version_entry(vers) result = {} for subElement in result_function: if subElement.text: result[subElement.tag] = subElement.text else: result[subElement.tag] = subElement.attrib self.assertEqual(result, fake_result) def test_versions_create_feed(self): res = versions.AtomSerializer() vers = [ { "id": "v2.0", "status": "CURRENT", "updated": "2012-11-21T11:33:21Z", "links": [ { "rel": "describedby", "type": "application/pdf", "href": "http://jorgew.github.com/block-storage-api/" "content/os-block-storage-1.0.pdf", }, ], }, { "id": "v1.0", "status": "CURRENT", "updated": "2012-01-04T11:33:21Z", "links": [ { "rel": "describedby", "type": "application/vnd.sun.wadl+xml", "href": "http://docs.rackspacecloud.com/" "servers/api/v1.1/application.wadl", }, ], } ] result = res._create_feed(vers, "fake_feed_title", "http://jorgew.github.com/block-storage-api/" "content/os-block-storage-1.0.pdf") fake_data = { 'id': 'http://jorgew.github.com/block-storage-api/' 'content/os-block-storage-1.0.pdf', 'title': 'fake_feed_title', 'updated': '2012-11-21T11:33:21Z', } data = {} for subElement in result: if subElement.text: data[subElement.tag] = subElement.text self.assertEqual(data, fake_data) def test_versions_multi(self): req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' resource = versions.Versions() result = resource.dispatch(resource.multi, req, {}) ids = [v['id'] for v in result['choices']] self.assertEqual(set(ids), set(['v1.0', 'v2.0'])) def test_versions_multi_disable_v1(self): self.flags(enable_v1_api=False) req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' resource = versions.Versions() result = resource.dispatch(resource.multi, req, {}) ids = [v['id'] for v in result['choices']] self.assertEqual(set(ids), set(['v2.0'])) def test_versions_multi_disable_v2(self): self.flags(enable_v2_api=False) req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' resource = versions.Versions() result = resource.dispatch(resource.multi, req, {}) ids = [v['id'] for v in result['choices']] self.assertEqual(set(ids), set(['v1.0'])) def test_versions_index(self): req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' resource = versions.Versions() result = resource.dispatch(resource.index, req, {}) ids = [v['id'] for v in result['versions']] self.assertEqual(set(ids), set(['v1.0', 'v2.0'])) def test_versions_index_disable_v1(self): self.flags(enable_v1_api=False) req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' resource = versions.Versions() result = resource.dispatch(resource.index, req, {}) ids = [v['id'] for v in result['versions']] self.assertEqual(set(ids), set(['v2.0'])) def test_versions_index_disable_v2(self): self.flags(enable_v2_api=False) req = fakes.HTTPRequest.blank('/') req.method = 'GET' req.content_type = 'application/json' resource = versions.Versions() result = resource.dispatch(resource.index, req, {}) ids = [v['id'] for v in result['versions']] self.assertEqual(set(ids), set(['v1.0'])) def test_volumes(self): req = fakes.HTTPRequest.blank('/fakeproject/volumes') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(200, response.status_int) def test_volumes_detail(self): req = fakes.HTTPRequest.blank('/fakeproject/volumes/detail') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(200, response.status_int) def test_types(self): req = fakes.HTTPRequest.blank('/fakeproject/types') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(200, response.status_int) def test_snapshots(self): req = fakes.HTTPRequest.blank('/fakeproject/snapshots') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(200, response.status_int) def test_snapshots_detail(self): req = fakes.HTTPRequest.blank('/fakeproject/snapshots/detail') req.method = 'GET' req.content_type = 'application/json' response = req.get_response(self.app) self.assertEqual(200, response.status_int) cinder-2014.1.5/cinder/tests/api/fakes.py0000664000567000056700000001234112540642606021200 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. import uuid import routes import webob import webob.dec import webob.request from cinder.api.middleware import auth from cinder.api.middleware import fault from cinder.api.openstack import wsgi as os_wsgi from cinder.api import urlmap from cinder.api.v2 import limits from cinder.api.v2 import router from cinder.api import versions from cinder import context from cinder import exception as exc from cinder.openstack.common import timeutils from cinder import wsgi FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' FAKE_UUIDS = {} class Context(object): pass class FakeRouter(wsgi.Router): def __init__(self, ext_mgr=None): pass @webob.dec.wsgify def __call__(self, req): res = webob.Response() res.status = '200' res.headers['X-Test-Success'] = 'True' return res @webob.dec.wsgify def fake_wsgi(self, req): return self.application def wsgi_app(inner_app_v2=None, fake_auth=True, fake_auth_context=None, use_no_auth=False, ext_mgr=None): if not inner_app_v2: inner_app_v2 = router.APIRouter(ext_mgr) if fake_auth: if fake_auth_context is not None: ctxt = fake_auth_context else: ctxt = context.RequestContext('fake', 'fake', auth_token=True) api_v2 = fault.FaultWrapper(auth.InjectContext(ctxt, inner_app_v2)) elif use_no_auth: api_v2 = fault.FaultWrapper(auth.NoAuthMiddleware( limits.RateLimitingMiddleware(inner_app_v2))) else: api_v2 = fault.FaultWrapper(auth.AuthMiddleware( limits.RateLimitingMiddleware(inner_app_v2))) mapper = urlmap.URLMap() mapper['/v2'] = api_v2 mapper['/'] = fault.FaultWrapper(versions.Versions()) return mapper def stub_out_key_pair_funcs(stubs, have_key_pair=True): def key_pair(context, user_id): return [dict(name='key', public_key='public_key')] def one_key_pair(context, user_id, name): if name == 'key': return dict(name='key', public_key='public_key') else: raise exc.KeypairNotFound(user_id=user_id, name=name) def no_key_pair(context, user_id): return [] class FakeToken(object): id_count = 0 def __getitem__(self, key): return getattr(self, key) def __init__(self, **kwargs): FakeToken.id_count += 1 self.id = FakeToken.id_count for k, v in kwargs.iteritems(): setattr(self, k, v) class FakeRequestContext(context.RequestContext): def __init__(self, *args, **kwargs): kwargs['auth_token'] = kwargs.get('auth_token', 'fake_auth_token') return super(FakeRequestContext, self).__init__(*args, **kwargs) class HTTPRequest(webob.Request): @classmethod def blank(cls, *args, **kwargs): if args != None: if args[0].find('v1') == 0: kwargs['base_url'] = 'http://localhost/v1' else: kwargs['base_url'] = 'http://localhost/v2' use_admin_context = kwargs.pop('use_admin_context', False) out = os_wsgi.Request.blank(*args, **kwargs) out.environ['cinder.context'] = FakeRequestContext( 'fake_user', 'fakeproject', is_admin=use_admin_context) return out class TestRouter(wsgi.Router): def __init__(self, controller): mapper = routes.Mapper() mapper.resource("test", "tests", controller=os_wsgi.Resource(controller)) super(TestRouter, self).__init__(mapper) class FakeAuthDatabase(object): data = {} @staticmethod def auth_token_get(context, token_hash): return FakeAuthDatabase.data.get(token_hash, None) @staticmethod def auth_token_create(context, token): fake_token = FakeToken(created_at=timeutils.utcnow(), **token) FakeAuthDatabase.data[fake_token.token_hash] = fake_token FakeAuthDatabase.data['id_%i' % fake_token.id] = fake_token return fake_token @staticmethod def auth_token_destroy(context, token_id): token = FakeAuthDatabase.data.get('id_%i' % token_id) if token and token.token_hash in FakeAuthDatabase.data: del FakeAuthDatabase.data[token.token_hash] del FakeAuthDatabase.data['id_%i' % token_id] class FakeRateLimiter(object): def __init__(self, application): self.application = application @webob.dec.wsgify def __call__(self, req): return self.application def get_fake_uuid(token=0): if token not in FAKE_UUIDS: FAKE_UUIDS[token] = str(uuid.uuid4()) return FAKE_UUIDS[token] cinder-2014.1.5/cinder/tests/api/openstack/0000775000567000056700000000000012540643114021516 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/openstack/test_wsgi.py0000664000567000056700000010114312540642606024105 0ustar jenkinsjenkins00000000000000# 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. import inspect import webob from cinder.api.openstack import wsgi from cinder import exception from cinder import test from cinder.tests.api import fakes class RequestTest(test.TestCase): def test_content_type_missing(self): request = wsgi.Request.blank('/tests/123', method='POST') request.body = "" self.assertIsNone(request.get_content_type()) def test_content_type_unsupported(self): request = wsgi.Request.blank('/tests/123', method='POST') request.headers["Content-Type"] = "text/html" request.body = "asdf
" self.assertRaises(exception.InvalidContentType, request.get_content_type) def test_content_type_with_charset(self): request = wsgi.Request.blank('/tests/123') request.headers["Content-Type"] = "application/json; charset=UTF-8" result = request.get_content_type() self.assertEqual(result, "application/json") def test_content_type_from_accept(self): for content_type in ('application/xml', 'application/vnd.openstack.volume+xml', 'application/json', 'application/vnd.openstack.volume+json'): request = wsgi.Request.blank('/tests/123') request.headers["Accept"] = content_type result = request.best_match_content_type() self.assertEqual(result, content_type) def test_content_type_from_accept_best(self): request = wsgi.Request.blank('/tests/123') request.headers["Accept"] = "application/xml, application/json" result = request.best_match_content_type() self.assertEqual(result, "application/json") request = wsgi.Request.blank('/tests/123') request.headers["Accept"] = ("application/json; q=0.3, " "application/xml; q=0.9") result = request.best_match_content_type() self.assertEqual(result, "application/xml") def test_content_type_from_query_extension(self): request = wsgi.Request.blank('/tests/123.xml') result = request.best_match_content_type() self.assertEqual(result, "application/xml") request = wsgi.Request.blank('/tests/123.json') result = request.best_match_content_type() self.assertEqual(result, "application/json") request = wsgi.Request.blank('/tests/123.invalid') result = request.best_match_content_type() self.assertEqual(result, "application/json") def test_content_type_accept_and_query_extension(self): request = wsgi.Request.blank('/tests/123.xml') request.headers["Accept"] = "application/json" result = request.best_match_content_type() self.assertEqual(result, "application/xml") def test_content_type_accept_default(self): request = wsgi.Request.blank('/tests/123.unsupported') request.headers["Accept"] = "application/unsupported1" result = request.best_match_content_type() self.assertEqual(result, "application/json") def test_best_match_language(self): # Test that we are actually invoking language negotiation by webob request = wsgi.Request.blank('/') accepted = 'unknown-lang' request.headers = {'Accept-Language': accepted} def fake_best_match(self, offers, default_match=None): # Match would return None, if requested lang is not found return None self.stubs.SmartSet(request.accept_language, 'best_match', fake_best_match) self.assertIsNone(request.best_match_language()) # If accept-language is not included or empty, match should be None request.headers = {'Accept-Language': ''} self.assertIsNone(request.best_match_language()) request.headers.pop('Accept-Language') self.assertIsNone(request.best_match_language()) def test_cache_and_retrieve_resources(self): request = wsgi.Request.blank('/foo') # Test that trying to retrieve a cached object on # an empty cache fails gracefully self.assertIsNone(request.cached_resource()) self.assertIsNone(request.cached_resource_by_id('r-0')) resources = [] for x in xrange(3): resources.append({'id': 'r-%s' % x}) # Cache an empty list of resources using the default name request.cache_resource([]) self.assertEqual({}, request.cached_resource()) self.assertIsNone(request.cached_resource('r-0')) # Cache some resources request.cache_resource(resources[:2]) # Cache one resource request.cache_resource(resources[2]) # Cache a different resource name other_resource = {'id': 'o-0'} request.cache_resource(other_resource, name='other-resource') self.assertEqual(resources[0], request.cached_resource_by_id('r-0')) self.assertEqual(resources[1], request.cached_resource_by_id('r-1')) self.assertEqual(resources[2], request.cached_resource_by_id('r-2')) self.assertIsNone(request.cached_resource_by_id('r-3')) self.assertEqual({'r-0': resources[0], 'r-1': resources[1], 'r-2': resources[2]}, request.cached_resource()) self.assertEqual(other_resource, request.cached_resource_by_id('o-0', name='other-resource')) class ActionDispatcherTest(test.TestCase): def test_dispatch(self): serializer = wsgi.ActionDispatcher() serializer.create = lambda x: 'pants' self.assertEqual(serializer.dispatch({}, action='create'), 'pants') def test_dispatch_action_None(self): serializer = wsgi.ActionDispatcher() serializer.create = lambda x: 'pants' serializer.default = lambda x: 'trousers' self.assertEqual(serializer.dispatch({}, action=None), 'trousers') def test_dispatch_default(self): serializer = wsgi.ActionDispatcher() serializer.create = lambda x: 'pants' serializer.default = lambda x: 'trousers' self.assertEqual(serializer.dispatch({}, action='update'), 'trousers') class DictSerializerTest(test.TestCase): def test_dispatch_default(self): serializer = wsgi.DictSerializer() self.assertEqual(serializer.serialize({}, 'update'), '') class XMLDictSerializerTest(test.TestCase): def test_xml(self): input_dict = dict(servers=dict(a=(2, 3))) expected_xml = '(2,3)' serializer = wsgi.XMLDictSerializer(xmlns="asdf") result = serializer.serialize(input_dict) result = result.replace('\n', '').replace(' ', '') self.assertEqual(result, expected_xml) class JSONDictSerializerTest(test.TestCase): def test_json(self): input_dict = dict(servers=dict(a=(2, 3))) expected_json = '{"servers":{"a":[2,3]}}' serializer = wsgi.JSONDictSerializer() result = serializer.serialize(input_dict) result = result.replace('\n', '').replace(' ', '') self.assertEqual(result, expected_json) class TextDeserializerTest(test.TestCase): def test_dispatch_default(self): deserializer = wsgi.TextDeserializer() self.assertEqual(deserializer.deserialize({}, 'update'), {}) class JSONDeserializerTest(test.TestCase): def test_json(self): data = """{"a": { "a1": "1", "a2": "2", "bs": ["1", "2", "3", {"c": {"c1": "1"}}], "d": {"e": "1"}, "f": "1"}}""" as_dict = { 'body': { 'a': { 'a1': '1', 'a2': '2', 'bs': ['1', '2', '3', {'c': {'c1': '1'}}], 'd': {'e': '1'}, 'f': '1', }, }, } deserializer = wsgi.JSONDeserializer() self.assertEqual(deserializer.deserialize(data), as_dict) class XMLDeserializerTest(test.TestCase): def test_xml(self): xml = """ 123 1 1 """.strip() as_dict = { 'body': { 'a': { 'a1': '1', 'a2': '2', 'bs': ['1', '2', '3', {'c': {'c1': '1'}}], 'd': {'e': '1'}, 'f': '1', }, }, } metadata = {'plurals': {'bs': 'b', 'ts': 't'}} deserializer = wsgi.XMLDeserializer(metadata=metadata) self.assertEqual(deserializer.deserialize(xml), as_dict) def test_xml_empty(self): xml = """""" as_dict = {"body": {"a": {}}} deserializer = wsgi.XMLDeserializer() self.assertEqual(deserializer.deserialize(xml), as_dict) class MetadataXMLDeserializerTest(test.TestCase): def test_xml_meta_parsing_special_character(self): """Test that when a SaxParser splits a string containing special characters into multiple childNodes there are no issues extracting the text. """ meta_xml_str = """ value&3 value2 value1 """.strip() meta_expected = {'key1': 'value1', 'key2': 'value2', 'key3': 'value&3'} meta_deserializer = wsgi.MetadataXMLDeserializer() document = wsgi.utils.safe_minidom_parse_string(meta_xml_str) root_node = document.childNodes[0] meta_extracted = meta_deserializer.extract_metadata(root_node) self.assertEqual(meta_expected, meta_extracted) class ResourceTest(test.TestCase): def test_resource_call(self): class Controller(object): def index(self, req): return 'off' req = webob.Request.blank('/tests') app = fakes.TestRouter(Controller()) response = req.get_response(app) self.assertEqual(response.body, 'off') self.assertEqual(response.status_int, 200) def test_resource_not_authorized(self): class Controller(object): def index(self, req): raise exception.NotAuthorized() req = webob.Request.blank('/tests') app = fakes.TestRouter(Controller()) response = req.get_response(app) self.assertEqual(response.status_int, 403) def test_dispatch(self): class Controller(object): def index(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'index', None, '') actual = resource.dispatch(method, None, {'pants': 'off'}) expected = 'off' self.assertEqual(actual, expected) def test_get_method_undefined_controller_action(self): class Controller(object): def index(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) self.assertRaises(AttributeError, resource.get_method, None, 'create', None, '') def test_get_method_action_json(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'action', 'application/json', '{"fooAction": true}') self.assertEqual(controller._action_foo, method) def test_get_method_action_xml(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'action', 'application/xml', 'true') self.assertEqual(controller._action_foo, method) def test_get_method_action_bad_body(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) self.assertRaises(exception.MalformedRequestBody, resource.get_method, None, 'action', 'application/json', '{}') def test_get_method_unknown_controller_action(self): class Controller(wsgi.Controller): @wsgi.action('fooAction') def _action_foo(self, req, id, body): return body controller = Controller() resource = wsgi.Resource(controller) self.assertRaises(KeyError, resource.get_method, None, 'action', 'application/json', '{"barAction": true}') def test_get_method_action_method(self): class Controller(): def action(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) method, extensions = resource.get_method(None, 'action', 'application/xml', 'true= len(vols): return vols return vols[:limit] self.stubs.Set(db, 'volume_get_all', stub_volume_get_all) for key, fn in zip(api_keys, fns): req = fakes.HTTPRequest.blank('/v2/%s?all_tenants=1' % key, use_admin_context=True) res_dict = fn(req) self.assertEqual(len(res_dict['volumes']), CONF.osapi_max_limit) volumes_links = res_dict['volumes_links'] _verify_links(volumes_links, key) # Number of volumes less then max, do not include def stub_volume_get_all2(context, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): vols = [stubs.stub_volume(i) for i in xrange(100)] if limit == None or limit >= len(vols): return vols return vols[:limit] self.stubs.Set(db, 'volume_get_all', stub_volume_get_all2) for key, fn in zip(api_keys, fns): req = fakes.HTTPRequest.blank('/v2/%s?all_tenants=1' % key, use_admin_context=True) res_dict = fn(req) self.assertEqual(len(res_dict['volumes']), 100) self.assertFalse('volumes_links' in res_dict) # Number of volumes more then the max, include next link def stub_volume_get_all3(context, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): vols = [stubs.stub_volume(i) for i in xrange(CONF.osapi_max_limit + 100)] if limit == None or limit >= len(vols): return vols return vols[:limit] self.stubs.Set(db, 'volume_get_all', stub_volume_get_all3) for key, fn in zip(api_keys, fns): req = fakes.HTTPRequest.blank('/v2/%s?all_tenants=1' % key, use_admin_context=True) res_dict = fn(req) self.assertEqual(len(res_dict['volumes']), CONF.osapi_max_limit) volumes_links = res_dict['volumes_links'] _verify_links(volumes_links, key) # Pass a limit that is greater then the max and the total number of # volumes, ensure only the maximum is returned and that the next # link is present for key, fn in zip(api_keys, fns): req = fakes.HTTPRequest.blank('/v2/%s?all_tenants=1&limit=%d' % (key, CONF.osapi_max_limit * 2), use_admin_context=True) res_dict = fn(req) self.assertEqual(len(res_dict['volumes']), CONF.osapi_max_limit) volumes_links = res_dict['volumes_links'] _verify_links(volumes_links, key) def test_volume_list_default_filters(self): """Tests that the default filters from volume.api.API.get_all are set. 1. 'no_migration_status'=True for non-admins and get_all_by_project is invoked. 2. 'no_migration_status' is not included for admins. 3. When 'all_tenants' is not specified, then it is removed and get_all_by_project is invoked for admins. 3. When 'all_tenants' is specified, then it is removed and get_all is invoked for admins. """ # Non-admin, project function should be called with no_migration_status def stub_volume_get_all_by_project(context, project_id, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): self.assertEqual(filters['no_migration_targets'], True) self.assertFalse('all_tenants' in filters) return [stubs.stub_volume(1, display_name='vol1')] def stub_volume_get_all(context, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): return [] self.stubs.Set(db, 'volume_get_all_by_project', stub_volume_get_all_by_project) self.stubs.Set(db, 'volume_get_all', stub_volume_get_all) # all_tenants does not matter for non-admin for params in ['', '?all_tenants=1']: req = fakes.HTTPRequest.blank('/v2/volumes%s' % params) resp = self.controller.index(req) self.assertEqual(len(resp['volumes']), 1) self.assertEqual(resp['volumes'][0]['name'], 'vol1') # Admin, all_tenants is not set, project function should be called # without no_migration_status def stub_volume_get_all_by_project2(context, project_id, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): self.assertFalse('no_migration_targets' in filters) return [stubs.stub_volume(1, display_name='vol2')] def stub_volume_get_all2(context, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): return [] self.stubs.Set(db, 'volume_get_all_by_project', stub_volume_get_all_by_project2) self.stubs.Set(db, 'volume_get_all', stub_volume_get_all2) req = fakes.HTTPRequest.blank('/v2/volumes', use_admin_context=True) resp = self.controller.index(req) self.assertEqual(len(resp['volumes']), 1) self.assertEqual(resp['volumes'][0]['name'], 'vol2') # Admin, all_tenants is set, get_all function should be called # without no_migration_status def stub_volume_get_all_by_project3(context, project_id, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): return [] def stub_volume_get_all3(context, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): self.assertFalse('no_migration_targets' in filters) self.assertFalse('all_tenants' in filters) return [stubs.stub_volume(1, display_name='vol3')] self.stubs.Set(db, 'volume_get_all_by_project', stub_volume_get_all_by_project3) self.stubs.Set(db, 'volume_get_all', stub_volume_get_all3) req = fakes.HTTPRequest.blank('/v2/volumes?all_tenants=1', use_admin_context=True) resp = self.controller.index(req) self.assertEqual(len(resp['volumes']), 1) self.assertEqual(resp['volumes'][0]['name'], 'vol3') def test_volume_show(self): self.stubs.Set(volume_api.API, 'get', stubs.stub_volume_get) req = fakes.HTTPRequest.blank('/v2/volumes/1') res_dict = self.controller.show(req, '1') expected = { 'volume': { 'status': 'fakestatus', 'description': 'displaydesc', 'encrypted': False, 'availability_zone': 'fakeaz', 'bootable': 'false', 'name': 'displayname', 'attachments': [ { 'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1' } ], 'user_id': 'fakeuser', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'attached_mode': 'rw', 'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1, 'links': [ { 'href': 'http://localhost/v2/fakeproject/volumes/1', 'rel': 'self' }, { 'href': 'http://localhost/fakeproject/volumes/1', 'rel': 'bookmark' } ], } } self.assertEqual(res_dict, expected) # Finally test that we cached the returned volume self.assertIsNotNone(req.cached_resource_by_id('1')) def test_volume_show_no_attachments(self): def stub_volume_get(self, context, volume_id, **kwargs): return stubs.stub_volume(volume_id, attach_status='detached') self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v2/volumes/1') res_dict = self.controller.show(req, '1') expected = { 'volume': { 'status': 'fakestatus', 'description': 'displaydesc', 'encrypted': False, 'availability_zone': 'fakeaz', 'bootable': 'false', 'name': 'displayname', 'attachments': [], 'user_id': 'fakeuser', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1, 'links': [ { 'href': 'http://localhost/v2/fakeproject/volumes/1', 'rel': 'self' }, { 'href': 'http://localhost/fakeproject/volumes/1', 'rel': 'bookmark' } ], } } self.assertEqual(res_dict, expected) def test_volume_show_no_volume(self): self.stubs.Set(volume_api.API, "get", stubs.stub_volume_get_notfound) req = fakes.HTTPRequest.blank('/v2/volumes/1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 1) # Finally test that nothing was cached self.assertIsNone(req.cached_resource_by_id('1')) def test_volume_show_with_admin_metadata(self): volume = stubs.stub_volume("1") del volume['name'] del volume['volume_type'] del volume['volume_type_id'] volume['metadata'] = {'key': 'value'} db.volume_create(context.get_admin_context(), volume) db.volume_admin_metadata_update(context.get_admin_context(), "1", {"readonly": "True", "invisible_key": "invisible_value"}, False) req = fakes.HTTPRequest.blank('/v2/volumes/1') admin_ctx = context.RequestContext('admin', 'fakeproject', True) req.environ['cinder.context'] = admin_ctx res_dict = self.controller.show(req, '1') expected = { 'volume': { 'status': 'fakestatus', 'description': 'displaydesc', 'encrypted': False, 'availability_zone': 'fakeaz', 'bootable': 'false', 'name': 'displayname', 'attachments': [ { 'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1' } ], 'user_id': 'fakeuser', 'volume_type': None, 'snapshot_id': None, 'source_volid': None, 'metadata': {'key': 'value', 'readonly': 'True'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1, 'links': [ { 'href': 'http://localhost/v2/fakeproject/volumes/1', 'rel': 'self' }, { 'href': 'http://localhost/fakeproject/volumes/1', 'rel': 'bookmark' } ], } } self.assertEqual(res_dict, expected) def test_volume_show_with_encrypted_volume(self): def stub_volume_get(self, context, volume_id, **kwargs): return stubs.stub_volume(volume_id, encryption_key_id='fake_id') self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v2/volumes/1') res_dict = self.controller.show(req, 1) self.assertEqual(res_dict['volume']['encrypted'], True) def test_volume_show_with_unencrypted_volume(self): def stub_volume_get(self, context, volume_id, **kwargs): return stubs.stub_volume(volume_id, encryption_key_id=None) self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v2/volumes/1') res_dict = self.controller.show(req, 1) self.assertEqual(res_dict['volume']['encrypted'], False) def test_volume_delete(self): self.stubs.Set(volume_api.API, 'get', stubs.stub_volume_get) req = fakes.HTTPRequest.blank('/v2/volumes/1') resp = self.controller.delete(req, 1) self.assertEqual(resp.status_int, 202) def test_volume_delete_attached(self): def stub_volume_attached(self, context, volume, force=False): raise exception.VolumeAttached(volume_id=volume['id']) self.stubs.Set(volume_api.API, "delete", stub_volume_attached) self.stubs.Set(volume_api.API, 'get', stubs.stub_volume_get) req = fakes.HTTPRequest.blank('/v2/volumes/1') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, 1) def test_volume_delete_no_volume(self): self.stubs.Set(volume_api.API, "get", stubs.stub_volume_get_notfound) req = fakes.HTTPRequest.blank('/v2/volumes/1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1) def test_admin_list_volumes_limited_to_project(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) req = fakes.HTTPRequest.blank('/v2/fake/volumes', use_admin_context=True) res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(1, len(res['volumes'])) def test_admin_list_volumes_all_tenants(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) req = fakes.HTTPRequest.blank('/v2/fake/volumes?all_tenants=1', use_admin_context=True) res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(3, len(res['volumes'])) def test_all_tenants_non_admin_gets_all_tenants(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) self.stubs.Set(volume_api.API, 'get', stubs.stub_volume_get) req = fakes.HTTPRequest.blank('/v2/fake/volumes?all_tenants=1') res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(1, len(res['volumes'])) def test_non_admin_get_by_project(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) self.stubs.Set(volume_api.API, 'get', stubs.stub_volume_get) req = fakes.HTTPRequest.blank('/v2/fake/volumes') res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(1, len(res['volumes'])) def _create_volume_bad_request(self, body): req = fakes.HTTPRequest.blank('/v2/fake/volumes') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_create_no_body(self): self._create_volume_bad_request(body=None) def test_create_missing_volume(self): body = {'foo': {'a': 'b'}} self._create_volume_bad_request(body=body) def test_create_malformed_entity(self): body = {'volume': 'string'} self._create_volume_bad_request(body=body) def test_add_visible_admin_metadata_visible_key_only(self): admin_metadata = [{"key": "invisible_key", "value": "invisible_value"}, {"key": "readonly", "value": "visible"}, {"key": "attached_mode", "value": "visible"}] metadata = [{"key": "key", "value": "value"}] volume = dict(volume_admin_metadata=admin_metadata, volume_metadata=metadata) utils.add_visible_admin_metadata(volume) self.assertEqual(volume['volume_metadata'], [{"key": "key", "value": "value"}, {"key": "readonly", "value": "visible"}, {"key": "attached_mode", "value": "visible"}]) admin_metadata = {"invisible_key": "invisible_value", "readonly": "visible", "attached_mode": "visible"} metadata = {"key": "value"} volume = dict(admin_metadata=admin_metadata, metadata=metadata) utils.add_visible_admin_metadata(volume) self.assertEqual(volume['metadata'], {'key': 'value', 'attached_mode': 'visible', 'readonly': 'visible'}) class VolumeSerializerTest(test.TestCase): def _verify_volume_attachment(self, attach, tree): for attr in ('id', 'volume_id', 'server_id', 'device'): self.assertEqual(str(attach[attr]), tree.get(attr)) def _verify_volume(self, vol, tree): self.assertEqual(tree.tag, NS + 'volume') for attr in ('id', 'status', 'size', 'availability_zone', 'created_at', 'name', 'description', 'volume_type', 'bootable', 'snapshot_id', 'source_volid'): self.assertEqual(str(vol[attr]), tree.get(attr)) for child in tree: self.assertIn(child.tag, (NS + 'attachments', NS + 'metadata')) if child.tag == 'attachments': self.assertEqual(1, len(child)) self.assertEqual('attachment', child[0].tag) self._verify_volume_attachment(vol['attachments'][0], child[0]) elif child.tag == 'metadata': not_seen = set(vol['metadata'].keys()) for gr_child in child: self.assertIn(gr_child.get("key"), not_seen) self.assertEqual(str(vol['metadata'][gr_child.get("key")]), gr_child.text) not_seen.remove(gr_child.get('key')) self.assertEqual(0, len(not_seen)) def test_volume_show_create_serializer(self): serializer = volumes.VolumeTemplate() raw_volume = dict( id='vol_id', status='vol_status', size=1024, availability_zone='vol_availability', bootable=False, created_at=datetime.datetime.now(), attachments=[ dict( id='vol_id', volume_id='vol_id', server_id='instance_uuid', device='/foo' ) ], name='vol_name', description='vol_desc', volume_type='vol_type', snapshot_id='snap_id', source_volid='source_volid', metadata=dict( foo='bar', baz='quux', ), ) text = serializer.serialize(dict(volume=raw_volume)) tree = etree.fromstring(text) self._verify_volume(raw_volume, tree) def test_volume_index_detail_serializer(self): serializer = volumes.VolumesTemplate() raw_volumes = [ dict( id='vol1_id', status='vol1_status', size=1024, availability_zone='vol1_availability', bootable=True, created_at=datetime.datetime.now(), attachments=[ dict( id='vol1_id', volume_id='vol1_id', server_id='instance_uuid', device='/foo1' ) ], name='vol1_name', description='vol1_desc', volume_type='vol1_type', snapshot_id='snap1_id', source_volid=None, metadata=dict(foo='vol1_foo', bar='vol1_bar', ), ), dict( id='vol2_id', status='vol2_status', size=1024, availability_zone='vol2_availability', bootable=False, created_at=datetime.datetime.now(), attachments=[dict(id='vol2_id', volume_id='vol2_id', server_id='instance_uuid', device='/foo2')], name='vol2_name', description='vol2_desc', volume_type='vol2_type', snapshot_id='snap2_id', source_volid=None, metadata=dict(foo='vol2_foo', bar='vol2_bar', ), )] text = serializer.serialize(dict(volumes=raw_volumes)) tree = etree.fromstring(text) self.assertEqual(NS + 'volumes', tree.tag) self.assertEqual(len(raw_volumes), len(tree)) for idx, child in enumerate(tree): self._verify_volume(raw_volumes[idx], child) class TestVolumeCreateRequestXMLDeserializer(test.TestCase): def setUp(self): super(TestVolumeCreateRequestXMLDeserializer, self).setUp() self.deserializer = volumes.CreateDeserializer() def test_minimal_volume(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", }, } self.assertEqual(request['body'], expected) def test_name(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", }, } self.assertEqual(request['body'], expected) def test_description(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", "description": "description", }, } self.assertEqual(request['body'], expected) def test_volume_type(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "name": "Volume-xml", "size": "1", "name": "Volume-xml", "description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", }, } self.assertEqual(request['body'], expected) def test_availability_zone(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", "description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", "availability_zone": "us-east1", }, } self.assertEqual(request['body'], expected) def test_metadata(self): self_request = """ work""" request = self.deserializer.deserialize(self_request) expected = { "volume": { "name": "Volume-xml", "size": "1", "metadata": { "Type": "work", }, }, } self.assertEqual(request['body'], expected) def test_full_volume(self): self_request = """ work""" request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", "description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", "availability_zone": "us-east1", "metadata": { "Type": "work", }, }, } self.assertEqual(request['body'], expected) def test_imageref(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", "description": "description", "imageRef": "4a90189d-d702-4c7c-87fc-6608c554d737", }, } self.assertEqual(expected, request['body']) def test_snapshot_id(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", "description": "description", "snapshot_id": "4a90189d-d702-4c7c-87fc-6608c554d737", }, } self.assertEqual(expected, request['body']) def test_source_volid(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "name": "Volume-xml", "description": "description", "source_volid": "4a90189d-d702-4c7c-87fc-6608c554d737", }, } self.assertEqual(expected, request['body']) cinder-2014.1.5/cinder/tests/api/v2/test_snapshot_metadata.py0000664000567000056700000005131212540642606025175 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import uuid from oslo.config import cfg import webob from cinder.api import extensions from cinder.api.v2 import snapshot_metadata from cinder.api.v2 import snapshots import cinder.db from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes CONF = cfg.CONF def return_create_snapshot_metadata_max(context, snapshot_id, metadata, delete): return stub_max_snapshot_metadata() def return_create_snapshot_metadata(context, snapshot_id, metadata, delete): return stub_snapshot_metadata() def return_create_snapshot_metadata_insensitive(context, snapshot_id, metadata, delete): return stub_snapshot_metadata_insensitive() def return_new_snapshot_metadata(context, snapshot_id, metadata, delete): return stub_new_snapshot_metadata() def return_snapshot_metadata(context, snapshot_id): if not isinstance(snapshot_id, str) or not len(snapshot_id) == 36: msg = 'id %s must be a uuid in return snapshot metadata' % snapshot_id raise Exception(msg) return stub_snapshot_metadata() def return_empty_snapshot_metadata(context, snapshot_id): return {} def return_empty_container_metadata(context, snapshot_id, metadata, delete): return {} def delete_snapshot_metadata(context, snapshot_id, key): pass def stub_snapshot_metadata(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", } return metadata def stub_snapshot_metadata_insensitive(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4", } return metadata def stub_new_snapshot_metadata(): metadata = { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', } return metadata def stub_max_snapshot_metadata(): metadata = {"metadata": {}} for num in range(CONF.quota_metadata_items): metadata['metadata']['key%i' % num] = "blah" return metadata def return_snapshot(context, snapshot_id): return {'id': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'status': 'available', 'metadata': {}} def return_volume(context, volume_id): return {'id': 'fake-vol-id', 'size': 100, 'name': 'fake', 'host': 'fake-host', 'status': 'available', 'encryption_key_id': None, 'volume_type_id': None, 'migration_status': None, 'metadata': {}, 'project_id': context.project_id} def return_snapshot_nonexistent(context, snapshot_id): raise exception.SnapshotNotFound('bogus test message') def fake_update_snapshot_metadata(self, context, snapshot, diff): pass class SnapshotMetaDataTest(test.TestCase): def setUp(self): super(SnapshotMetaDataTest, self).setUp() self.volume_api = cinder.volume.api.API() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(cinder.db, 'volume_get', return_volume) self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot) self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_metadata) self.stubs.Set(self.volume_api, 'update_snapshot_metadata', fake_update_snapshot_metadata) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.snapshot_controller = snapshots.SnapshotsController(self.ext_mgr) self.controller = snapshot_metadata.Controller() self.req_id = str(uuid.uuid4()) self.url = '/v2/fake/snapshots/%s/metadata' % self.req_id snap = {"volume_size": 100, "volume_id": "fake-vol-id", "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1", "host": "fake-host", "metadata": {}} body = {"snapshot": snap} req = fakes.HTTPRequest.blank('/v2/snapshots') self.snapshot_controller.create(req, body) def test_index(self): req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = { 'metadata': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', }, } self.assertEqual(expected, res_dict) def test_index_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.url) def test_index_no_data(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = {'metadata': {}} self.assertEqual(expected, res_dict) def test_show(self): req = fakes.HTTPRequest.blank(self.url + '/key2') res_dict = self.controller.show(req, self.req_id, 'key2') expected = {'meta': {'key2': 'value2'}} self.assertEqual(expected, res_dict) def test_show_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key2') def test_show_meta_not_found(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key6') def test_delete(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_delete', delete_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key2') req.method = 'DELETE' res = self.controller.delete(req, self.req_id, 'key2') self.assertEqual(200, res.status_int) def test_delete_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key1') def test_delete_meta_not_found(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key6') def test_create(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank('/v2/snapshot_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(body, res_dict) def test_create_with_keys_in_uppercase_and_lowercase(self): # if the keys in uppercase_and_lowercase, should return the one # which server added self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata_insensitive) req = fakes.HTTPRequest.blank('/v2/snapshot_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "KEY1": "value1", "key2": "value2", "KEY2": "value2", "key3": "value3", "KEY4": "value4"}} expected = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_create_empty_body(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, None) def test_create_item_empty_key(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_item_key_too_long(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank('/v2/snapshot_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key9": "value9"}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.req_id, body) def test_update_all(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_new_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_with_keys_in_uppercase_and_lowercase(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_create_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_new_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = { 'metadata': { 'key10': 'value10', 'KEY10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_update_all_empty_container(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_empty_container_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': {}} req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_malformed_container(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'meta': {}} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_malformed_data(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': ['asdf']} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = {'metadata': {'key10': 'value10'}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update_all, req, '100', body) def test_update_item(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res_dict = self.controller.update(req, self.req_id, 'key1', body) expected = {'meta': {'key1': 'value1'}} self.assertEqual(expected, res_dict) def test_update_item_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank( '/v2/fake/snapshots/asdf/metadata/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', None) def test_update_item_empty_key(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, '', body) def test_update_item_key_too_long(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, ("a" * 260), body) def test_update_item_value_too_long(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": ("a" * 260)}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, "key1", body) def test_update_item_too_many_keys(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1", "key2": "value2"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/bad') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'bad', body) def test_invalid_metadata_items_on_create(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, data) cinder-2014.1.5/cinder/tests/api/v2/test_limits.py0000664000567000056700000007776012540642606023016 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests dealing with HTTP rate-limiting. """ import httplib from lxml import etree import six import webob from xml.dom import minidom from cinder.api.v2 import limits from cinder.api import views from cinder.api import xmlutil import cinder.context from cinder.openstack.common import jsonutils from cinder import test TEST_LIMITS = [ limits.Limit("GET", "/delayed", "^/delayed", 1, limits.PER_MINUTE), limits.Limit("POST", "*", ".*", 7, limits.PER_MINUTE), limits.Limit("POST", "/volumes", "^/volumes", 3, limits.PER_MINUTE), limits.Limit("PUT", "*", "", 10, limits.PER_MINUTE), limits.Limit("PUT", "/volumes", "^/volumes", 5, limits.PER_MINUTE), ] NS = { 'atom': 'http://www.w3.org/2005/Atom', 'ns': 'http://docs.openstack.org/common/api/v1.0', } class BaseLimitTestSuite(test.TestCase): """Base test suite which provides relevant stubs and time abstraction.""" def setUp(self): super(BaseLimitTestSuite, self).setUp() self.time = 0.0 self.stubs.Set(limits.Limit, "_get_time", self._get_time) self.absolute_limits = {} def stub_get_project_quotas(context, project_id, usages=True): return dict((k, dict(limit=v)) for k, v in self.absolute_limits.items()) self.stubs.Set(cinder.quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) def _get_time(self): """Return the "time" according to this test suite.""" return self.time class LimitsControllerTest(BaseLimitTestSuite): """Tests for `limits.LimitsController` class.""" def setUp(self): """Run before each test.""" super(LimitsControllerTest, self).setUp() self.controller = limits.create_resource() def _get_index_request(self, accept_header="application/json"): """Helper to set routing arguments.""" request = webob.Request.blank("/") request.accept = accept_header request.environ["wsgiorg.routing_args"] = (None, { "action": "index", "controller": "", }) context = cinder.context.RequestContext('testuser', 'testproject') request.environ["cinder.context"] = context return request def _populate_limits(self, request): """Put limit info into a request.""" _limits = [ limits.Limit("GET", "*", ".*", 10, 60).display(), limits.Limit("POST", "*", ".*", 5, 60 * 60).display(), limits.Limit("GET", "changes-since*", "changes-since", 5, 60).display(), ] request.environ["cinder.limits"] = _limits return request def test_empty_index_json(self): """Test getting empty limit details in JSON.""" request = self._get_index_request() response = request.get_response(self.controller) expected = { "limits": { "rate": [], "absolute": {}, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def test_index_json(self): """Test getting limit details in JSON.""" request = self._get_index_request() request = self._populate_limits(request) self.absolute_limits = { 'gigabytes': 512, 'volumes': 5, } response = request.get_response(self.controller) expected = { "limits": { "rate": [ { "regex": ".*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, { "verb": "POST", "next-available": "1970-01-01T00:00:00Z", "unit": "HOUR", "value": 5, "remaining": 5, }, ], }, { "regex": "changes-since", "uri": "changes-since*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 5, "remaining": 5, }, ], }, ], "absolute": {"maxTotalVolumeGigabytes": 512, "maxTotalVolumes": 5, }, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def _populate_limits_diff_regex(self, request): """Put limit info into a request.""" _limits = [ limits.Limit("GET", "*", ".*", 10, 60).display(), limits.Limit("GET", "*", "*.*", 10, 60).display(), ] request.environ["cinder.limits"] = _limits return request def test_index_diff_regex(self): """Test getting limit details in JSON.""" request = self._get_index_request() request = self._populate_limits_diff_regex(request) response = request.get_response(self.controller) expected = { "limits": { "rate": [ { "regex": ".*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, ], }, { "regex": "*.*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, ], }, ], "absolute": {}, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def _test_index_absolute_limits_json(self, expected): request = self._get_index_request() response = request.get_response(self.controller) body = jsonutils.loads(response.body) self.assertEqual(expected, body['limits']['absolute']) def test_index_ignores_extra_absolute_limits_json(self): self.absolute_limits = {'unknown_limit': 9001} self._test_index_absolute_limits_json({}) class TestLimiter(limits.Limiter): pass class LimitMiddlewareTest(BaseLimitTestSuite): """Tests for the `limits.RateLimitingMiddleware` class.""" @webob.dec.wsgify def _empty_app(self, request): """Do-nothing WSGI app.""" pass def setUp(self): """Prepare middleware for use through fake WSGI app.""" super(LimitMiddlewareTest, self).setUp() _limits = '(GET, *, .*, 1, MINUTE)' self.app = limits.RateLimitingMiddleware(self._empty_app, _limits, "%s.TestLimiter" % self.__class__.__module__) def test_limit_class(self): """Test that middleware selected correct limiter class.""" assert isinstance(self.app._limiter, TestLimiter) def test_good_request(self): """Test successful GET request through middleware.""" request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) def test_limited_request_json(self): """Test a rate-limited (413) GET request through middleware.""" request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(response.status_int, 413) self.assertIn('Retry-After', response.headers) retry_after = int(response.headers['Retry-After']) self.assertAlmostEqual(retry_after, 60, 1) body = jsonutils.loads(response.body) expected = "Only 1 GET request(s) can be made to * every minute." value = body["overLimitFault"]["details"].strip() self.assertEqual(value, expected) def test_limited_request_xml(self): """Test a rate-limited (413) response as XML.""" request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) request = webob.Request.blank("/") request.accept = "application/xml" response = request.get_response(self.app) self.assertEqual(response.status_int, 413) root = minidom.parseString(response.body).childNodes[0] expected = "Only 1 GET request(s) can be made to * every minute." details = root.getElementsByTagName("details") self.assertEqual(details.length, 1) value = details.item(0).firstChild.data.strip() self.assertEqual(value, expected) class LimitTest(BaseLimitTestSuite): """Tests for the `limits.Limit` class.""" def test_GET_no_delay(self): """Test a limit handles 1 GET per second.""" limit = limits.Limit("GET", "*", ".*", 1, 1) delay = limit("GET", "/anything") self.assertIsNone(delay) self.assertEqual(0, limit.next_request) self.assertEqual(0, limit.last_request) def test_GET_delay(self): """Test two calls to 1 GET per second limit.""" limit = limits.Limit("GET", "*", ".*", 1, 1) delay = limit("GET", "/anything") self.assertIsNone(delay) delay = limit("GET", "/anything") self.assertEqual(1, delay) self.assertEqual(1, limit.next_request) self.assertEqual(0, limit.last_request) self.time += 4 delay = limit("GET", "/anything") self.assertIsNone(delay) self.assertEqual(4, limit.next_request) self.assertEqual(4, limit.last_request) class ParseLimitsTest(BaseLimitTestSuite): """Tests for the default limits parser in the `limits.Limiter` class.""" def test_invalid(self): """Test that parse_limits() handles invalid input correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, ';;;;;') def test_bad_rule(self): """Test that parse_limits() handles bad rules correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, 'GET, *, .*, 20, minute') def test_missing_arg(self): """Test that parse_limits() handles missing args correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, 20)') def test_bad_value(self): """Test that parse_limits() handles bad values correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, foo, minute)') def test_bad_unit(self): """Test that parse_limits() handles bad units correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, 20, lightyears)') def test_multiple_rules(self): """Test that parse_limits() handles multiple rules correctly.""" try: l = limits.Limiter.parse_limits('(get, *, .*, 20, minute);' '(PUT, /foo*, /foo.*, 10, hour);' '(POST, /bar*, /bar.*, 5, second);' '(Say, /derp*, /derp.*, 1, day)') except ValueError as e: assert False, str(e) # Make sure the number of returned limits are correct self.assertEqual(len(l), 4) # Check all the verbs... expected = ['GET', 'PUT', 'POST', 'SAY'] self.assertEqual([t.verb for t in l], expected) # ...the URIs... expected = ['*', '/foo*', '/bar*', '/derp*'] self.assertEqual([t.uri for t in l], expected) # ...the regexes... expected = ['.*', '/foo.*', '/bar.*', '/derp.*'] self.assertEqual([t.regex for t in l], expected) # ...the values... expected = [20, 10, 5, 1] self.assertEqual([t.value for t in l], expected) # ...and the units... expected = [limits.PER_MINUTE, limits.PER_HOUR, limits.PER_SECOND, limits.PER_DAY] self.assertEqual([t.unit for t in l], expected) class LimiterTest(BaseLimitTestSuite): """Tests for the in-memory `limits.Limiter` class.""" def setUp(self): """Run before each test.""" super(LimiterTest, self).setUp() userlimits = {'limits.user3': '', 'limits.user0': '(get, *, .*, 4, minute);' '(put, *, .*, 2, minute)'} self.limiter = limits.Limiter(TEST_LIMITS, **userlimits) def _check(self, num, verb, url, username=None): """Check and yield results from checks.""" for x in xrange(num): yield self.limiter.check_for_delay(verb, url, username)[0] def _check_sum(self, num, verb, url, username=None): """Check and sum results from checks.""" results = self._check(num, verb, url, username) return sum(item for item in results if item) def test_no_delay_GET(self): """Ensure no delay on a single call for a limit verb we didn't set.""" delay = self.limiter.check_for_delay("GET", "/anything") self.assertEqual(delay, (None, None)) def test_no_delay_PUT(self): """Ensure no delay on a single call for a known limit.""" delay = self.limiter.check_for_delay("PUT", "/anything") self.assertEqual(delay, (None, None)) def test_delay_PUT(self): """Test delay on 11th PUT request. Ensure the 11th PUT will result in a delay of 6.0 seconds until the next request will be granced. """ expected = [None] * 10 + [6.0] results = list(self._check(11, "PUT", "/anything")) self.assertEqual(expected, results) def test_delay_POST(self): """Test delay on 8th POST request. Ensure the 8th POST will result in a delay of 6.0 seconds until the next request will be granced. """ expected = [None] * 7 results = list(self._check(7, "POST", "/anything")) self.assertEqual(expected, results) expected = 60.0 / 7.0 results = self._check_sum(1, "POST", "/anything") self.assertAlmostEqual(expected, results, 8) def test_delay_GET(self): """Ensure the 11th GET will result in NO delay.""" expected = [None] * 11 results = list(self._check(11, "GET", "/anything")) self.assertEqual(expected, results) expected = [None] * 4 + [15.0] results = list(self._check(5, "GET", "/foo", "user0")) self.assertEqual(expected, results) def test_delay_PUT_volumes(self): """Test delay on /volumes. Ensure PUT on /volumes limits at 5 requests, and PUT elsewhere is still OK after 5 requests...but then after 11 total requests, PUT limiting kicks in. """ # First 6 requests on PUT /volumes expected = [None] * 5 + [12.0] results = list(self._check(6, "PUT", "/volumes")) self.assertEqual(expected, results) # Next 5 request on PUT /anything expected = [None] * 4 + [6.0] results = list(self._check(5, "PUT", "/anything")) self.assertEqual(expected, results) def test_delay_PUT_wait(self): """Test limit is lifted again. Ensure after hitting the limit and then waiting for the correct amount of time, the limit will be lifted. """ expected = [None] * 10 + [6.0] results = list(self._check(11, "PUT", "/anything")) self.assertEqual(expected, results) # Advance time self.time += 6.0 expected = [None, 6.0] results = list(self._check(2, "PUT", "/anything")) self.assertEqual(expected, results) def test_multiple_delays(self): """Ensure multiple requests still get a delay.""" expected = [None] * 10 + [6.0] * 10 results = list(self._check(20, "PUT", "/anything")) self.assertEqual(expected, results) self.time += 1.0 expected = [5.0] * 10 results = list(self._check(10, "PUT", "/anything")) self.assertEqual(expected, results) expected = [None] * 2 + [30.0] * 8 results = list(self._check(10, "PUT", "/anything", "user0")) self.assertEqual(expected, results) def test_user_limit(self): """Test user-specific limits.""" self.assertEqual(self.limiter.levels['user3'], []) self.assertEqual(len(self.limiter.levels['user0']), 2) def test_multiple_users(self): """Tests involving multiple users.""" # User0 expected = [None] * 2 + [30.0] * 8 results = list(self._check(10, "PUT", "/anything", "user0")) self.assertEqual(expected, results) # User1 expected = [None] * 10 + [6.0] * 10 results = list(self._check(20, "PUT", "/anything", "user1")) self.assertEqual(expected, results) # User2 expected = [None] * 10 + [6.0] * 5 results = list(self._check(15, "PUT", "/anything", "user2")) self.assertEqual(expected, results) # User3 expected = [None] * 20 results = list(self._check(20, "PUT", "/anything", "user3")) self.assertEqual(expected, results) self.time += 1.0 # User1 again expected = [5.0] * 10 results = list(self._check(10, "PUT", "/anything", "user1")) self.assertEqual(expected, results) self.time += 1.0 # User1 again expected = [4.0] * 5 results = list(self._check(5, "PUT", "/anything", "user2")) self.assertEqual(expected, results) # User0 again expected = [28.0] results = list(self._check(1, "PUT", "/anything", "user0")) self.assertEqual(expected, results) self.time += 28.0 expected = [None, 30.0] results = list(self._check(2, "PUT", "/anything", "user0")) self.assertEqual(expected, results) class WsgiLimiterTest(BaseLimitTestSuite): """Tests for `limits.WsgiLimiter` class.""" def setUp(self): """Run before each test.""" super(WsgiLimiterTest, self).setUp() self.app = limits.WsgiLimiter(TEST_LIMITS) def _request_data(self, verb, path): """Get data describing a limit request verb/path.""" return jsonutils.dumps({"verb": verb, "path": path}) def _request(self, verb, url, username=None): """Make sure that POSTing to the given url causes the given username to perform the given action. Make the internal rate limiter return delay and make sure that the WSGI app returns the correct response. """ if username: request = webob.Request.blank("/%s" % username) else: request = webob.Request.blank("/") request.method = "POST" request.body = self._request_data(verb, url) response = request.get_response(self.app) if "X-Wait-Seconds" in response.headers: self.assertEqual(response.status_int, 403) return response.headers["X-Wait-Seconds"] self.assertEqual(response.status_int, 204) def test_invalid_methods(self): """Only POSTs should work.""" for method in ["GET", "PUT", "DELETE", "HEAD", "OPTIONS"]: request = webob.Request.blank("/", method=method) response = request.get_response(self.app) self.assertEqual(response.status_int, 405) def test_good_url(self): delay = self._request("GET", "/something") self.assertIsNone(delay) def test_escaping(self): delay = self._request("GET", "/something/jump%20up") self.assertIsNone(delay) def test_response_to_delays(self): delay = self._request("GET", "/delayed") self.assertIsNone(delay) delay = self._request("GET", "/delayed") self.assertEqual(delay, '60.00') def test_response_to_delays_usernames(self): delay = self._request("GET", "/delayed", "user1") self.assertIsNone(delay) delay = self._request("GET", "/delayed", "user2") self.assertIsNone(delay) delay = self._request("GET", "/delayed", "user1") self.assertEqual(delay, '60.00') delay = self._request("GET", "/delayed", "user2") self.assertEqual(delay, '60.00') class FakeHttplibSocket(object): """Fake `httplib.HTTPResponse` replacement.""" def __init__(self, response_string): """Initialize new `FakeHttplibSocket`.""" self._buffer = six.StringIO(response_string) def makefile(self, _mode, _other): """Returns the socket's internal buffer.""" return self._buffer class FakeHttplibConnection(object): """Fake `httplib.HTTPConnection`.""" def __init__(self, app, host): """Initialize `FakeHttplibConnection`.""" self.app = app self.host = host def request(self, method, path, body="", headers=None): """Fake request handler. Requests made via this connection actually get translated and routed into our WSGI app, we then wait for the response and turn it back into an `httplib.HTTPResponse`. """ if not headers: headers = {} req = webob.Request.blank(path) req.method = method req.headers = headers req.host = self.host req.body = body resp = str(req.get_response(self.app)) resp = "HTTP/1.0 %s" % resp sock = FakeHttplibSocket(resp) self.http_response = httplib.HTTPResponse(sock) self.http_response.begin() def getresponse(self): """Return our generated response from the request.""" return self.http_response def wire_HTTPConnection_to_WSGI(host, app): """Monkeypatches HTTPConnection so that if you try to connect to host, you are instead routed straight to the given WSGI app. After calling this method, when any code calls httplib.HTTPConnection(host) the connection object will be a fake. Its requests will be sent directly to the given WSGI app rather than through a socket. Code connecting to hosts other than host will not be affected. This method may be called multiple times to map different hosts to different apps. This method returns the original HTTPConnection object, so that the caller can restore the default HTTPConnection interface (for all hosts). """ class HTTPConnectionDecorator(object): """Wraps the real HTTPConnection class so that when you instantiate the class you might instead get a fake instance. """ def __init__(self, wrapped): self.wrapped = wrapped def __call__(self, connection_host, *args, **kwargs): if connection_host == host: return FakeHttplibConnection(app, host) else: return self.wrapped(connection_host, *args, **kwargs) oldHTTPConnection = httplib.HTTPConnection httplib.HTTPConnection = HTTPConnectionDecorator(httplib.HTTPConnection) return oldHTTPConnection class WsgiLimiterProxyTest(BaseLimitTestSuite): """Tests for the `limits.WsgiLimiterProxy` class.""" def setUp(self): """setUp() for WsgiLimiterProxyTest. Do some nifty HTTP/WSGI magic which allows for WSGI to be called directly by something like the `httplib` library. """ super(WsgiLimiterProxyTest, self).setUp() self.app = limits.WsgiLimiter(TEST_LIMITS) oldHTTPConnection = ( wire_HTTPConnection_to_WSGI("169.254.0.1:80", self.app)) self.proxy = limits.WsgiLimiterProxy("169.254.0.1:80") self.addCleanup(self._restore, oldHTTPConnection) def _restore(self, oldHTTPConnection): # restore original HTTPConnection object httplib.HTTPConnection = oldHTTPConnection def test_200(self): """Successful request test.""" delay = self.proxy.check_for_delay("GET", "/anything") self.assertEqual(delay, (None, None)) def test_403(self): """Forbidden request test.""" delay = self.proxy.check_for_delay("GET", "/delayed") self.assertEqual(delay, (None, None)) delay, error = self.proxy.check_for_delay("GET", "/delayed") error = error.strip() expected = ("60.00", "403 Forbidden\n\nOnly 1 GET request(s) can be " "made to /delayed every minute.") self.assertEqual((delay, error), expected) class LimitsViewBuilderTest(test.TestCase): def setUp(self): super(LimitsViewBuilderTest, self).setUp() self.view_builder = views.limits.ViewBuilder() self.rate_limits = [{"URI": "*", "regex": ".*", "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "resetTime": 1311272226}, {"URI": "*/volumes", "regex": "^/volumes", "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "resetTime": 1311272226}] self.absolute_limits = {"metadata_items": 1, "injected_files": 5, "injected_file_content_bytes": 5} def test_build_limits(self): tdate = "2011-07-21T18:17:06Z" expected_limits = { "limits": {"rate": [{"uri": "*", "regex": ".*", "limit": [{"value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": tdate}]}, {"uri": "*/volumes", "regex": "^/volumes", "limit": [{"value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": tdate}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 5}}} output = self.view_builder.build(self.rate_limits, self.absolute_limits) self.assertDictMatch(output, expected_limits) def test_build_limits_empty_limits(self): expected_limits = {"limits": {"rate": [], "absolute": {}}} abs_limits = {} rate_limits = [] output = self.view_builder.build(rate_limits, abs_limits) self.assertDictMatch(output, expected_limits) class LimitsXMLSerializationTest(test.TestCase): def test_xml_declaration(self): serializer = limits.LimitsTemplate() fixture = {"limits": { "rate": [], "absolute": {}}} output = serializer.serialize(fixture) has_dec = output.startswith("") self.assertTrue(has_dec) def test_index(self): tdate = "2011-12-15T22:42:45Z" serializer = limits.LimitsTemplate() fixture = {"limits": {"rate": [{"uri": "*", "regex": ".*", "limit": [{"value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": tdate}]}, {"uri": "*/servers", "regex": "^/servers", "limit": [{"value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": tdate}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 4) for limit in absolutes: name = limit.get('name') value = limit.get('value') self.assertEqual(value, str(fixture['limits']['absolute'][name])) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 2) for i, rate in enumerate(rates): for key in ['uri', 'regex']: self.assertEqual(rate.get(key), str(fixture['limits']['rate'][i][key])) rate_limits = rate.xpath('ns:limit', namespaces=NS) self.assertEqual(len(rate_limits), 1) for j, limit in enumerate(rate_limits): for key in ['verb', 'value', 'remaining', 'unit', 'next-available']: self.assertEqual( limit.get(key), str(fixture['limits']['rate'][i]['limit'][j][key])) def test_index_no_limits(self): serializer = limits.LimitsTemplate() fixture = {"limits": { "rate": [], "absolute": {}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 0) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 0) cinder-2014.1.5/cinder/tests/api/v2/test_volume_metadata.py0000664000567000056700000004737212540642606024660 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation. # All Rights Reserved. # # 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. import uuid from oslo.config import cfg import webob from cinder.api import extensions from cinder.api.v2 import volume_metadata from cinder.api.v2 import volumes from cinder import db from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs from cinder.volume import api as volume_api CONF = cfg.CONF def return_create_volume_metadata_max(context, volume_id, metadata, delete): return stub_max_volume_metadata() def return_create_volume_metadata(context, volume_id, metadata, delete): return stub_volume_metadata() def return_new_volume_metadata(context, volume_id, metadata, delete): return stub_new_volume_metadata() def return_create_volume_metadata_insensitive(context, snapshot_id, metadata, delete): return stub_volume_metadata_insensitive() def return_volume_metadata(context, volume_id): if not isinstance(volume_id, str) or not len(volume_id) == 36: msg = 'id %s must be a uuid in return volume metadata' % volume_id raise Exception(msg) return stub_volume_metadata() def return_empty_volume_metadata(context, volume_id): return {} def return_empty_container_metadata(context, volume_id, metadata, delete): return {} def delete_volume_metadata(context, volume_id, key): pass def stub_volume_metadata(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", } return metadata def stub_new_volume_metadata(): metadata = { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', } return metadata def stub_volume_metadata_insensitive(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4", } return metadata def stub_max_volume_metadata(): metadata = {"metadata": {}} for num in range(CONF.quota_metadata_items): metadata['metadata']['key%i' % num] = "blah" return metadata def return_volume(context, volume_id): return {'id': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'metadata': {}, 'project_id': context.project_id} def return_volume_nonexistent(context, volume_id): raise exception.VolumeNotFound('bogus test message') def fake_update_volume_metadata(self, context, volume, diff): pass class volumeMetaDataTest(test.TestCase): def setUp(self): super(volumeMetaDataTest, self).setUp() self.volume_api = volume_api.API() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(db, 'volume_get', return_volume) self.stubs.Set(db, 'volume_metadata_get', return_volume_metadata) self.stubs.Set(db, 'service_get_all_by_topic', stubs.stub_service_get_all_by_topic) self.stubs.Set(self.volume_api, 'update_volume_metadata', fake_update_volume_metadata) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.volume_controller = volumes.VolumeController(self.ext_mgr) self.controller = volume_metadata.Controller() self.req_id = str(uuid.uuid4()) self.url = '/v2/fake/volumes/%s/metadata' % self.req_id vol = {"size": 100, "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1", "metadata": {}} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v2/volumes') self.volume_controller.create(req, body) def test_index(self): req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = { 'metadata': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', }, } self.assertEqual(expected, res_dict) def test_index_nonexistent_volume(self): self.stubs.Set(db, 'volume_metadata_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.url) def test_index_no_data(self): self.stubs.Set(db, 'volume_metadata_get', return_empty_volume_metadata) req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = {'metadata': {}} self.assertEqual(expected, res_dict) def test_show(self): req = fakes.HTTPRequest.blank(self.url + '/key2') res_dict = self.controller.show(req, self.req_id, 'key2') expected = {'meta': {'key2': 'value2'}} self.assertEqual(expected, res_dict) def test_show_nonexistent_volume(self): self.stubs.Set(db, 'volume_metadata_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key2') def test_show_meta_not_found(self): self.stubs.Set(db, 'volume_metadata_get', return_empty_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key6') def test_delete(self): self.stubs.Set(db, 'volume_metadata_get', return_volume_metadata) self.stubs.Set(db, 'volume_metadata_delete', delete_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key2') req.method = 'DELETE' res = self.controller.delete(req, self.req_id, 'key2') self.assertEqual(200, res.status_int) def test_delete_nonexistent_volume(self): self.stubs.Set(db, 'volume_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key1') def test_delete_meta_not_found(self): self.stubs.Set(db, 'volume_metadata_get', return_empty_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key6') def test_create(self): self.stubs.Set(db, 'volume_metadata_get', return_empty_volume_metadata) self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank('/v2/volume_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3", }} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(body, res_dict) def test_create_with_keys_in_uppercase_and_lowercase(self): # if the keys in uppercase_and_lowercase, should return the one # which server added self.stubs.Set(db, 'volume_metadata_get', return_empty_volume_metadata) self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata_insensitive) req = fakes.HTTPRequest.blank('/v2/volume_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "KEY1": "value1", "key2": "value2", "KEY2": "value2", "key3": "value3", "KEY4": "value4"}} expected = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_create_empty_body(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, None) def test_create_item_empty_key(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_item_key_too_long(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_nonexistent_volume(self): self.stubs.Set(db, 'volume_get', return_volume_nonexistent) self.stubs.Set(db, 'volume_metadata_get', return_volume_metadata) self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank('/v2/volume_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key9": "value9"}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.req_id, body) def test_update_all(self): self.stubs.Set(db, 'volume_metadata_update', return_new_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_with_keys_in_uppercase_and_lowercase(self): self.stubs.Set(db, 'volume_metadata_get', return_create_volume_metadata) self.stubs.Set(db, 'volume_metadata_update', return_new_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = { 'metadata': { 'key10': 'value10', 'KEY10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_update_all_empty_container(self): self.stubs.Set(db, 'volume_metadata_update', return_empty_container_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': {}} req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_malformed_container(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'meta': {}} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_malformed_data(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': ['asdf']} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_nonexistent_volume(self): self.stubs.Set(db, 'volume_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = {'metadata': {'key10': 'value10'}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update_all, req, '100', body) def test_update_item(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res_dict = self.controller.update(req, self.req_id, 'key1', body) expected = {'meta': {'key1': 'value1'}} self.assertEqual(expected, res_dict) def test_update_item_nonexistent_volume(self): self.stubs.Set(db, 'volume_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank('/v2/fake/volumes/asdf/metadata/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', None) def test_update_item_empty_key(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, '', body) def test_update_item_key_too_long(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, ("a" * 260), body) def test_update_item_value_too_long(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": ("a" * 260)}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, "key1", body) def test_update_item_too_many_keys(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1", "key2": "value2"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/bad') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'bad', body) def test_invalid_metadata_items_on_create(self): self.stubs.Set(db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, data) cinder-2014.1.5/cinder/tests/api/v2/test_types.py0000664000567000056700000001542312540642606022645 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # aLL Rights Reserved. # # 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. from lxml import etree import webob from cinder.api.v2 import types from cinder.api.views import types as views_types from cinder import exception from cinder.openstack.common import timeutils from cinder import test from cinder.tests.api import fakes from cinder.volume import volume_types def stub_volume_type(id): specs = { "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5" } return dict( id=id, name='vol_type_%s' % str(id), extra_specs=specs, ) def return_volume_types_get_all_types(context): return dict( vol_type_1=stub_volume_type(1), vol_type_2=stub_volume_type(2), vol_type_3=stub_volume_type(3) ) def return_empty_volume_types_get_all_types(context): return {} def return_volume_types_get_volume_type(context, id): if id == "777": raise exception.VolumeTypeNotFound(volume_type_id=id) return stub_volume_type(int(id)) def return_volume_types_get_by_name(context, name): if name == "777": raise exception.VolumeTypeNotFoundByName(volume_type_name=name) return stub_volume_type(int(name.split("_")[2])) class VolumeTypesApiTest(test.TestCase): def setUp(self): super(VolumeTypesApiTest, self).setUp() self.controller = types.VolumeTypesController() def test_volume_types_index(self): self.stubs.Set(volume_types, 'get_all_types', return_volume_types_get_all_types) req = fakes.HTTPRequest.blank('/v2/fake/types') res_dict = self.controller.index(req) self.assertEqual(3, len(res_dict['volume_types'])) expected_names = ['vol_type_1', 'vol_type_2', 'vol_type_3'] actual_names = map(lambda e: e['name'], res_dict['volume_types']) self.assertEqual(set(actual_names), set(expected_names)) for entry in res_dict['volume_types']: self.assertEqual('value1', entry['extra_specs']['key1']) def test_volume_types_index_no_data(self): self.stubs.Set(volume_types, 'get_all_types', return_empty_volume_types_get_all_types) req = fakes.HTTPRequest.blank('/v2/fake/types') res_dict = self.controller.index(req) self.assertEqual(0, len(res_dict['volume_types'])) def test_volume_types_show(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) req = fakes.HTTPRequest.blank('/v2/fake/types/1') res_dict = self.controller.show(req, 1) self.assertEqual(1, len(res_dict)) self.assertEqual('1', res_dict['volume_type']['id']) self.assertEqual('vol_type_1', res_dict['volume_type']['name']) def test_volume_types_show_not_found(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) req = fakes.HTTPRequest.blank('/v2/fake/types/777') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, '777') def test_view_builder_show(self): view_builder = views_types.ViewBuilder() now = timeutils.isotime() raw_volume_type = dict( name='new_type', deleted=False, created_at=now, updated_at=now, extra_specs={}, deleted_at=None, id=42, ) request = fakes.HTTPRequest.blank("/v2") output = view_builder.show(request, raw_volume_type) self.assertIn('volume_type', output) expected_volume_type = dict( name='new_type', extra_specs={}, id=42, ) self.assertDictMatch(output['volume_type'], expected_volume_type) def test_view_builder_list(self): view_builder = views_types.ViewBuilder() now = timeutils.isotime() raw_volume_types = [] for i in range(0, 10): raw_volume_types.append( dict( name='new_type', deleted=False, created_at=now, updated_at=now, extra_specs={}, deleted_at=None, id=42 + i ) ) request = fakes.HTTPRequest.blank("/v2") output = view_builder.index(request, raw_volume_types) self.assertIn('volume_types', output) for i in range(0, 10): expected_volume_type = dict( name='new_type', extra_specs={}, id=42 + i ) self.assertDictMatch(output['volume_types'][i], expected_volume_type) class VolumeTypesSerializerTest(test.TestCase): def _verify_volume_type(self, vtype, tree): self.assertEqual('volume_type', tree.tag) self.assertEqual(vtype['name'], tree.get('name')) self.assertEqual(str(vtype['id']), tree.get('id')) self.assertEqual(1, len(tree)) extra_specs = tree[0] self.assertEqual('extra_specs', extra_specs.tag) seen = set(vtype['extra_specs'].keys()) for child in extra_specs: self.assertIn(child.tag, seen) self.assertEqual(vtype['extra_specs'][child.tag], child.text) seen.remove(child.tag) self.assertEqual(len(seen), 0) def test_index_serializer(self): serializer = types.VolumeTypesTemplate() # Just getting some input data vtypes = return_volume_types_get_all_types(None) text = serializer.serialize({'volume_types': vtypes.values()}) tree = etree.fromstring(text) self.assertEqual('volume_types', tree.tag) self.assertEqual(len(vtypes), len(tree)) for child in tree: name = child.get('name') self.assertIn(name, vtypes) self._verify_volume_type(vtypes[name], child) def test_voltype_serializer(self): serializer = types.VolumeTypeTemplate() vtype = stub_volume_type(1) text = serializer.serialize(dict(volume_type=vtype)) tree = etree.fromstring(text) self._verify_volume_type(vtype, tree) cinder-2014.1.5/cinder/tests/api/v2/__init__.py0000664000567000056700000000000012540642606022162 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/v2/test_snapshots.py0000664000567000056700000004253212540642606023524 0ustar jenkinsjenkins00000000000000# Copyright 2011 Denali Systems, Inc. # All Rights Reserved. # # 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. import datetime from lxml import etree import webob from cinder.api.v2 import snapshots from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs from cinder import volume LOG = logging.getLogger(__name__) UUID = '00000000-0000-0000-0000-000000000001' INVALID_UUID = '00000000-0000-0000-0000-000000000002' def _get_default_snapshot_param(): return { 'id': UUID, 'volume_id': 12, 'status': 'available', 'volume_size': 100, 'created_at': None, 'display_name': 'Default name', 'display_description': 'Default description', } def stub_snapshot_create(self, context, volume_id, name, description, metadata): snapshot = _get_default_snapshot_param() snapshot['volume_id'] = volume_id snapshot['display_name'] = name snapshot['display_description'] = description snapshot['metadata'] = metadata return snapshot def stub_snapshot_delete(self, context, snapshot): if snapshot['id'] != UUID: raise exception.NotFound def stub_snapshot_get(self, context, snapshot_id): if snapshot_id != UUID: raise exception.NotFound param = _get_default_snapshot_param() return param def stub_snapshot_get_all(self, context, search_opts=None): param = _get_default_snapshot_param() return [param] class SnapshotApiTest(test.TestCase): def setUp(self): super(SnapshotApiTest, self).setUp() self.controller = snapshots.SnapshotsController() self.stubs.Set(db, 'snapshot_get_all_by_project', stubs.stub_snapshot_get_all_by_project) self.stubs.Set(db, 'snapshot_get_all', stubs.stub_snapshot_get_all) def test_snapshot_create(self): self.stubs.Set(volume.api.API, "create_snapshot", stub_snapshot_create) self.stubs.Set(volume.api.API, 'get', stubs.stub_volume_get) snapshot_name = 'Snapshot Test Name' snapshot_description = 'Snapshot Test Desc' snapshot = { "volume_id": '12', "force": False, "name": snapshot_name, "description": snapshot_description } body = dict(snapshot=snapshot) req = fakes.HTTPRequest.blank('/v2/snapshots') resp_dict = self.controller.create(req, body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['name'], snapshot_name) self.assertEqual(resp_dict['snapshot']['description'], snapshot_description) def test_snapshot_create_force(self): self.stubs.Set(volume.api.API, "create_snapshot_force", stub_snapshot_create) self.stubs.Set(volume.api.API, 'get', stubs.stub_volume_get) snapshot_name = 'Snapshot Test Name' snapshot_description = 'Snapshot Test Desc' snapshot = { "volume_id": '12', "force": True, "name": snapshot_name, "description": snapshot_description } body = dict(snapshot=snapshot) req = fakes.HTTPRequest.blank('/v2/snapshots') resp_dict = self.controller.create(req, body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['name'], snapshot_name) self.assertEqual(resp_dict['snapshot']['description'], snapshot_description) snapshot = { "volume_id": "12", "force": "**&&^^%%$$##@@", "name": "Snapshot Test Name", "description": "Snapshot Test Desc" } body = dict(snapshot=snapshot) req = fakes.HTTPRequest.blank('/v2/snapshots') self.assertRaises(exception.InvalidParameterValue, self.controller.create, req, body) def test_snapshot_create_without_volume_id(self): snapshot_name = 'Snapshot Test Name' snapshot_description = 'Snapshot Test Desc' body = { "snapshot": { "force": True, "name": snapshot_name, "description": snapshot_description } } req = fakes.HTTPRequest.blank('/v2/snapshots') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_snapshot_update(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) self.stubs.Set(volume.api.API, "update_snapshot", stubs.stub_snapshot_update) updates = { "name": "Updated Test Name", } body = {"snapshot": updates} req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % UUID) res_dict = self.controller.update(req, UUID, body) expected = { 'snapshot': { 'id': UUID, 'volume_id': 12, 'status': 'available', 'size': 100, 'created_at': None, 'name': 'Updated Test Name', 'description': 'Default description', 'metadata': {}, } } self.assertEqual(expected, res_dict) def test_snapshot_update_missing_body(self): body = {} req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % UUID) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, UUID, body) def test_snapshot_update_invalid_body(self): body = {'name': 'missing top level snapshot key'} req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % UUID) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, UUID, body) def test_snapshot_update_not_found(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) updates = { "name": "Updated Test Name", } body = {"snapshot": updates} req = fakes.HTTPRequest.blank('/v2/snapshots/not-the-uuid') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, 'not-the-uuid', body) def test_snapshot_delete(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) self.stubs.Set(volume.api.API, "delete_snapshot", stub_snapshot_delete) snapshot_id = UUID req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % snapshot_id) resp = self.controller.delete(req, snapshot_id) self.assertEqual(resp.status_int, 202) def test_snapshot_delete_invalid_id(self): self.stubs.Set(volume.api.API, "delete_snapshot", stub_snapshot_delete) snapshot_id = INVALID_UUID req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % snapshot_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, snapshot_id) def test_snapshot_show(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % UUID) resp_dict = self.controller.show(req, UUID) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['id'], UUID) def test_snapshot_show_invalid_id(self): snapshot_id = INVALID_UUID req = fakes.HTTPRequest.blank('/v2/snapshots/%s' % snapshot_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, snapshot_id) def test_snapshot_detail(self): self.stubs.Set(volume.api.API, "get_all_snapshots", stub_snapshot_get_all) req = fakes.HTTPRequest.blank('/v2/snapshots/detail') resp_dict = self.controller.detail(req) self.assertIn('snapshots', resp_dict) resp_snapshots = resp_dict['snapshots'] self.assertEqual(len(resp_snapshots), 1) resp_snapshot = resp_snapshots.pop() self.assertEqual(resp_snapshot['id'], UUID) def test_snapshot_list_by_status(self): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, display_name='backup1', status='available'), stubs.stub_snapshot(2, display_name='backup2', status='available'), stubs.stub_snapshot(3, display_name='backup3', status='creating'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) # no status filter req = fakes.HTTPRequest.blank('/v2/snapshots') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 3) # single match req = fakes.HTTPRequest.blank('/v2/snapshots?status=creating') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['status'], 'creating') # multiple match req = fakes.HTTPRequest.blank('/v2/snapshots?status=available') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 2) for snapshot in resp['snapshots']: self.assertEqual(snapshot['status'], 'available') # no match req = fakes.HTTPRequest.blank('/v2/snapshots?status=error') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 0) def test_snapshot_list_by_volume(self): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, volume_id='vol1', status='creating'), stubs.stub_snapshot(2, volume_id='vol1', status='available'), stubs.stub_snapshot(3, volume_id='vol2', status='available'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) # single match req = fakes.HTTPRequest.blank('/v2/snapshots?volume_id=vol2') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['volume_id'], 'vol2') # multiple match req = fakes.HTTPRequest.blank('/v2/snapshots?volume_id=vol1') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 2) for snapshot in resp['snapshots']: self.assertEqual(snapshot['volume_id'], 'vol1') # multiple filters req = fakes.HTTPRequest.blank('/v2/snapshots?volume_id=vol1' '&status=available') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['volume_id'], 'vol1') self.assertEqual(resp['snapshots'][0]['status'], 'available') def test_snapshot_list_by_name(self): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, display_name='backup1'), stubs.stub_snapshot(2, display_name='backup2'), stubs.stub_snapshot(3, display_name='backup3'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) # no name filter req = fakes.HTTPRequest.blank('/v2/snapshots') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 3) # filter by one name req = fakes.HTTPRequest.blank('/v2/snapshots?name=backup2') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['name'], 'backup2') # filter no match req = fakes.HTTPRequest.blank('/v2/snapshots?name=backup4') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 0) def test_admin_list_snapshots_limited_to_project(self): req = fakes.HTTPRequest.blank('/v2/fake/snapshots', use_admin_context=True) res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) def test_list_snapshots_with_limit_and_offset(self): def list_snapshots_with_limit_and_offset(is_admin): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, display_name='backup1'), stubs.stub_snapshot(2, display_name='backup2'), stubs.stub_snapshot(3, display_name='backup3'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) req = fakes.HTTPRequest.blank('/v2/fake/snapshots?limit=1\ &offset=1', use_admin_context=is_admin) res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) self.assertEqual(2, res['snapshots'][0]['id']) #admin case list_snapshots_with_limit_and_offset(is_admin=True) #non_admin case list_snapshots_with_limit_and_offset(is_admin=False) def test_admin_list_snapshots_all_tenants(self): req = fakes.HTTPRequest.blank('/v2/fake/snapshots?all_tenants=1', use_admin_context=True) res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(3, len(res['snapshots'])) def test_all_tenants_non_admin_gets_all_tenants(self): req = fakes.HTTPRequest.blank('/v2/fake/snapshots?all_tenants=1') res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) def test_non_admin_get_by_project(self): req = fakes.HTTPRequest.blank('/v2/fake/snapshots') res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) def _create_snapshot_bad_body(self, body): req = fakes.HTTPRequest.blank('/v2/fake/snapshots') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_create_no_body(self): self._create_snapshot_bad_body(body=None) def test_create_missing_snapshot(self): body = {'foo': {'a': 'b'}} self._create_snapshot_bad_body(body=body) def test_create_malformed_entity(self): body = {'snapshot': 'string'} self._create_snapshot_bad_body(body=body) class SnapshotSerializerTest(test.TestCase): def _verify_snapshot(self, snap, tree): self.assertEqual(tree.tag, 'snapshot') for attr in ('id', 'status', 'size', 'created_at', 'name', 'description', 'volume_id'): self.assertEqual(str(snap[attr]), tree.get(attr)) def test_snapshot_show_create_serializer(self): serializer = snapshots.SnapshotTemplate() raw_snapshot = dict( id='snap_id', status='snap_status', size=1024, created_at=datetime.datetime.now(), name='snap_name', description='snap_desc', display_description='snap_desc', volume_id='vol_id', ) text = serializer.serialize(dict(snapshot=raw_snapshot)) tree = etree.fromstring(text) self._verify_snapshot(raw_snapshot, tree) def test_snapshot_index_detail_serializer(self): serializer = snapshots.SnapshotsTemplate() raw_snapshots = [ dict( id='snap1_id', status='snap1_status', size=1024, created_at=datetime.datetime.now(), name='snap1_name', description='snap1_desc', volume_id='vol1_id', ), dict( id='snap2_id', status='snap2_status', size=1024, created_at=datetime.datetime.now(), name='snap2_name', description='snap2_desc', volume_id='vol2_id', ) ] text = serializer.serialize(dict(snapshots=raw_snapshots)) tree = etree.fromstring(text) self.assertEqual('snapshots', tree.tag) self.assertEqual(len(raw_snapshots), len(tree)) for idx, child in enumerate(tree): self._verify_snapshot(raw_snapshots[idx], child) cinder-2014.1.5/cinder/tests/api/v1/0000775000567000056700000000000012540643114020055 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/v1/stubs.py0000664000567000056700000000775512540642606021612 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. import datetime from cinder import exception as exc FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' FAKE_UUIDS = {} def stub_volume(id, **kwargs): volume = { 'id': id, 'user_id': 'fakeuser', 'project_id': 'fakeproject', 'host': 'fakehost', 'size': 1, 'availability_zone': 'fakeaz', 'instance_uuid': 'fakeuuid', 'attached_host': None, 'mountpoint': '/', 'attached_mode': 'rw', 'status': 'fakestatus', 'migration_status': None, 'attach_status': 'attached', 'bootable': 'false', 'name': 'vol name', 'display_name': 'displayname', 'display_description': 'displaydesc', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'snapshot_id': None, 'source_volid': None, 'volume_type_id': '3e196c20-3c06-11e2-81c1-0800200c9a66', 'volume_metadata': [], 'volume_type': {'name': 'vol_type_name'}, 'readonly': 'False'} volume.update(kwargs) return volume def stub_volume_create(self, context, size, name, description, snapshot, **param): vol = stub_volume('1') vol['size'] = size vol['display_name'] = name vol['display_description'] = description vol['source_volid'] = None try: vol['snapshot_id'] = snapshot['id'] except (KeyError, TypeError): vol['snapshot_id'] = None vol['availability_zone'] = param.get('availability_zone', 'fakeaz') return vol def stub_volume_create_from_image(self, context, size, name, description, snapshot, volume_type, metadata, availability_zone): vol = stub_volume('1') vol['status'] = 'creating' vol['size'] = size vol['display_name'] = name vol['display_description'] = description vol['availability_zone'] = 'cinder' return vol def stub_volume_update(self, context, *args, **param): pass def stub_volume_delete(self, context, *args, **param): pass def stub_volume_get(self, context, volume_id): return stub_volume(volume_id) def stub_volume_get_notfound(self, context, volume_id): raise exc.NotFound def stub_volume_get_all(context, search_opts=None): return [stub_volume(100, project_id='fake'), stub_volume(101, project_id='superfake'), stub_volume(102, project_id='superduperfake')] def stub_volume_get_all_by_project(self, context, search_opts=None): return [stub_volume_get(self, context, '1')] def stub_snapshot(id, **kwargs): snapshot = {'id': id, 'volume_id': 12, 'status': 'available', 'volume_size': 100, 'created_at': None, 'display_name': 'Default name', 'display_description': 'Default description', 'project_id': 'fake'} snapshot.update(kwargs) return snapshot def stub_snapshot_get_all(self): return [stub_snapshot(100, project_id='fake'), stub_snapshot(101, project_id='superfake'), stub_snapshot(102, project_id='superduperfake')] def stub_snapshot_get_all_by_project(self, context): return [stub_snapshot(1)] def stub_snapshot_update(self, context, *args, **param): pass def stub_service_get_all_by_topic(context, topic): return [{'availability_zone': "zone1:host1", "disabled": 0}] cinder-2014.1.5/cinder/tests/api/v1/test_volumes.py0000664000567000056700000013550412540642606023175 0ustar jenkinsjenkins00000000000000# Copyright 2013 Josh Durgin # All Rights Reserved. # # 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. import datetime from lxml import etree from oslo.config import cfg import webob from cinder.api import extensions from cinder.api.v1 import volumes from cinder import context from cinder import db from cinder import exception from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs from cinder.tests import fake_notifier from cinder.tests.image import fake as fake_image from cinder import utils from cinder.volume import api as volume_api NS = '{http://docs.openstack.org/volume/api/v1}' TEST_SNAPSHOT_UUID = '00000000-0000-0000-0000-000000000001' CONF = cfg.CONF def stub_snapshot_get(self, context, snapshot_id): if snapshot_id != TEST_SNAPSHOT_UUID: raise exception.NotFound return {'id': snapshot_id, 'volume_id': 12, 'status': 'available', 'volume_size': 100, 'created_at': None, 'display_name': 'Default name', 'display_description': 'Default description', } class VolumeApiTest(test.TestCase): def setUp(self): super(VolumeApiTest, self).setUp() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} fake_image.stub_out_image_service(self.stubs) self.controller = volumes.VolumeController(self.ext_mgr) self.flags(host='fake', notification_driver=[fake_notifier.__name__]) self.stubs.Set(db, 'volume_get_all', stubs.stub_volume_get_all) self.stubs.Set(db, 'service_get_all_by_topic', stubs.stub_service_get_all_by_topic) self.stubs.Set(volume_api.API, 'delete', stubs.stub_volume_delete) def tearDown(self): super(VolumeApiTest, self).tearDown() fake_notifier.reset() def test_volume_create(self): self.stubs.Set(volume_api.API, 'get', stubs.stub_volume_get) self.stubs.Set(volume_api.API, "create", stubs.stub_volume_create) vol = {"size": 100, "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1"} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') res_dict = self.controller.create(req, body) expected = {'volume': {'status': 'fakestatus', 'display_description': 'Volume Test Desc', 'availability_zone': 'zone1:host1', 'display_name': 'Volume Test Name', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 100, 'encrypted': False}} self.assertEqual(res_dict, expected) def test_volume_create_with_type(self): vol_type = CONF.default_volume_type db.volume_type_create(context.get_admin_context(), dict(name=vol_type, extra_specs={})) db_vol_type = db.volume_type_get_by_name(context.get_admin_context(), vol_type) vol = {"size": 100, "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1", "volume_type": "FakeTypeName"} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') # Raise 404 when type name isn't valid self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, body) # Use correct volume type name vol.update(dict(volume_type=CONF.default_volume_type)) body.update(dict(volume=vol)) res_dict = self.controller.create(req, body) volume_id = res_dict['volume']['id'] self.assertEqual(len(res_dict), 1) self.assertEqual(res_dict['volume']['volume_type'], db_vol_type['name']) # Use correct volume type id vol.update(dict(volume_type=db_vol_type['id'])) body.update(dict(volume=vol)) res_dict = self.controller.create(req, body) volume_id = res_dict['volume']['id'] self.assertEqual(len(res_dict), 1) self.assertEqual(res_dict['volume']['volume_type'], db_vol_type['name']) def test_volume_creation_fails_with_bad_size(self): vol = {"size": '', "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1"} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') self.assertRaises(exception.InvalidInput, self.controller.create, req, body) def test_volume_creation_fails_with_bad_availability_zone(self): vol = {"size": '1', "name": "Volume Test Name", "description": "Volume Test Desc", "availability_zone": "zonen:hostn"} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v2/volumes') self.assertRaises(exception.InvalidInput, self.controller.create, req, body) def test_volume_create_with_image_id(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) self.stubs.Set(volume_api.API, "create", stubs.stub_volume_create) self.ext_mgr.extensions = {'os-image-create': 'fake'} test_id = "c905cedb-7281-47e4-8a62-f26bc5fc4c77" vol = {"size": '1', "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "nova", "imageRef": test_id} expected = {'volume': {'status': 'fakestatus', 'display_description': 'Volume Test Desc', 'availability_zone': 'nova', 'display_name': 'Volume Test Name', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'vol_type_name', 'image_id': test_id, 'snapshot_id': None, 'source_volid': None, 'metadata': {}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': '1'}} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') res_dict = self.controller.create(req, body) self.assertEqual(res_dict, expected) def test_volume_create_with_image_id_is_integer(self): self.stubs.Set(volume_api.API, "create", stubs.stub_volume_create) self.ext_mgr.extensions = {'os-image-create': 'fake'} vol = {"size": '1', "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "cinder", "imageRef": 1234} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_volume_create_with_image_id_not_uuid_format(self): self.stubs.Set(volume_api.API, "create", stubs.stub_volume_create) self.ext_mgr.extensions = {'os-image-create': 'fake'} vol = {"size": '1', "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "cinder", "imageRef": '12345'} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_volume_update(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) self.stubs.Set(volume_api.API, "update", stubs.stub_volume_update) updates = { "display_name": "Updated Test Name", } body = {"volume": updates} req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) res_dict = self.controller.update(req, '1', body) expected = {'volume': { 'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'Updated Test Name', 'encrypted': False, 'attachments': [{ 'id': '1', 'volume_id': '1', 'server_id': 'fakeuuid', 'host_name': None, 'device': '/' }], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'attached_mode': 'rw', 'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}} self.assertEqual(res_dict, expected) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) def test_volume_update_metadata(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) self.stubs.Set(volume_api.API, "update", stubs.stub_volume_update) updates = { "metadata": {"qos_max_iops": 2000} } body = {"volume": updates} req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) res_dict = self.controller.update(req, '1', body) expected = {'volume': { 'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{ 'id': '1', 'volume_id': '1', 'server_id': 'fakeuuid', 'host_name': None, 'device': '/' }], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {"qos_max_iops": 2000, "readonly": "False", "attached_mode": "rw"}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1 }} self.assertEqual(res_dict, expected) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) def test_volume_update_with_admin_metadata(self): self.stubs.Set(volume_api.API, "update", stubs.stub_volume_update) volume = stubs.stub_volume("1") del volume['name'] del volume['volume_type'] del volume['volume_type_id'] volume['metadata'] = {'key': 'value'} db.volume_create(context.get_admin_context(), volume) db.volume_admin_metadata_update(context.get_admin_context(), "1", {"readonly": "True", "invisible_key": "invisible_value"}, False) updates = { "display_name": "Updated Test Name", } body = {"volume": updates} req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) admin_ctx = context.RequestContext('admin', 'fakeproject', True) req.environ['cinder.context'] = admin_ctx res_dict = self.controller.update(req, '1', body) expected = {'volume': { 'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'Updated Test Name', 'encrypted': False, 'attachments': [{ 'id': '1', 'volume_id': '1', 'server_id': 'fakeuuid', 'host_name': None, 'device': '/' }], 'bootable': 'false', 'volume_type': 'None', 'snapshot_id': None, 'source_volid': None, 'metadata': {'key': 'value', 'readonly': 'True'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}} self.assertEqual(res_dict, expected) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) def test_update_empty_body(self): body = {} req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, '1', body) def test_update_invalid_body(self): body = {'display_name': 'missing top level volume key'} req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, '1', body) def test_update_not_found(self): self.stubs.Set(volume_api.API, "get", stubs.stub_volume_get_notfound) updates = { "display_name": "Updated Test Name", } body = {"volume": updates} req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, '1', body) def test_volume_list(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) self.stubs.Set(volume_api.API, 'get_all', stubs.stub_volume_get_all_by_project) req = fakes.HTTPRequest.blank('/v1/volumes') res_dict = self.controller.index(req) expected = {'volumes': [{'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'attached_mode': 'rw', 'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}]} self.assertEqual(res_dict, expected) # Finally test that we cached the returned volumes self.assertEqual(1, len(req.cached_resource())) def test_volume_list_with_admin_metadata(self): volume = stubs.stub_volume("1") del volume['name'] del volume['volume_type'] del volume['volume_type_id'] volume['metadata'] = {'key': 'value'} db.volume_create(context.get_admin_context(), volume) db.volume_admin_metadata_update(context.get_admin_context(), "1", {"readonly": "True", "invisible_key": "invisible_value"}, False) req = fakes.HTTPRequest.blank('/v1/volumes') admin_ctx = context.RequestContext('admin', 'fakeproject', True) req.environ['cinder.context'] = admin_ctx res_dict = self.controller.index(req) expected = {'volumes': [{'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'None', 'snapshot_id': None, 'source_volid': None, 'metadata': {'key': 'value', 'readonly': 'True'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}]} self.assertEqual(res_dict, expected) def test_volume_list_detail(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) self.stubs.Set(volume_api.API, 'get_all', stubs.stub_volume_get_all_by_project) req = fakes.HTTPRequest.blank('/v1/volumes/detail') res_dict = self.controller.index(req) expected = {'volumes': [{'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'attached_mode': 'rw', 'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}]} self.assertEqual(res_dict, expected) # Finally test that we cached the returned volumes self.assertEqual(1, len(req.cached_resource())) def test_volume_list_detail_with_admin_metadata(self): volume = stubs.stub_volume("1") del volume['name'] del volume['volume_type'] del volume['volume_type_id'] volume['metadata'] = {'key': 'value'} db.volume_create(context.get_admin_context(), volume) db.volume_admin_metadata_update(context.get_admin_context(), "1", {"readonly": "True", "invisible_key": "invisible_value"}, False) req = fakes.HTTPRequest.blank('/v1/volumes/detail') admin_ctx = context.RequestContext('admin', 'fakeproject', True) req.environ['cinder.context'] = admin_ctx res_dict = self.controller.index(req) expected = {'volumes': [{'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'None', 'snapshot_id': None, 'source_volid': None, 'metadata': {'key': 'value', 'readonly': 'True'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}]} self.assertEqual(res_dict, expected) def test_volume_show(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) req = fakes.HTTPRequest.blank('/v1/volumes/1') res_dict = self.controller.show(req, '1') expected = {'volume': {'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'attached_mode': 'rw', 'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}} self.assertEqual(res_dict, expected) # Finally test that we cached the returned volume self.assertIsNotNone(req.cached_resource_by_id('1')) def test_volume_show_no_attachments(self): def stub_volume_get(self, context, volume_id, **kwargs): return stubs.stub_volume(volume_id, attach_status='detached') self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v1/volumes/1') res_dict = self.controller.show(req, '1') expected = {'volume': {'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [], 'bootable': 'false', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}} self.assertEqual(res_dict, expected) def test_volume_show_bootable(self): def stub_volume_get(self, context, volume_id, **kwargs): return (stubs.stub_volume(volume_id, volume_glance_metadata=dict(foo='bar'))) self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v1/volumes/1') res_dict = self.controller.show(req, '1') expected = {'volume': {'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'true', 'volume_type': 'vol_type_name', 'snapshot_id': None, 'source_volid': None, 'metadata': {'attached_mode': 'rw', 'readonly': 'False'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}} self.assertEqual(res_dict, expected) def test_volume_show_no_volume(self): self.stubs.Set(volume_api.API, "get", stubs.stub_volume_get_notfound) req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 1) # Finally test that we did not cache anything self.assertIsNone(req.cached_resource_by_id('1')) def test_volume_detail_limit_offset(self): def volume_detail_limit_offset(is_admin): def stub_volume_get_all_by_project(context, project_id, marker, limit, sort_key, sort_dir, filters=None, viewable_admin_meta=False): return [ stubs.stub_volume(1, display_name='vol1'), stubs.stub_volume(2, display_name='vol2'), ] self.stubs.Set(db, 'volume_get_all_by_project', stub_volume_get_all_by_project) self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) req = fakes.HTTPRequest.blank('/v1/volumes/detail?limit=2\ &offset=1', use_admin_context=is_admin) res_dict = self.controller.index(req) volumes = res_dict['volumes'] self.assertEqual(len(volumes), 1) self.assertEqual(volumes[0]['id'], 2) #admin case volume_detail_limit_offset(is_admin=True) #non_admin case volume_detail_limit_offset(is_admin=False) def test_volume_show_with_admin_metadata(self): volume = stubs.stub_volume("1") del volume['name'] del volume['volume_type'] del volume['volume_type_id'] volume['metadata'] = {'key': 'value'} db.volume_create(context.get_admin_context(), volume) db.volume_admin_metadata_update(context.get_admin_context(), "1", {"readonly": "True", "invisible_key": "invisible_value"}, False) req = fakes.HTTPRequest.blank('/v1/volumes/1') admin_ctx = context.RequestContext('admin', 'fakeproject', True) req.environ['cinder.context'] = admin_ctx res_dict = self.controller.show(req, '1') expected = {'volume': {'status': 'fakestatus', 'display_description': 'displaydesc', 'availability_zone': 'fakeaz', 'display_name': 'displayname', 'encrypted': False, 'attachments': [{'device': '/', 'server_id': 'fakeuuid', 'host_name': None, 'id': '1', 'volume_id': '1'}], 'bootable': 'false', 'volume_type': 'None', 'snapshot_id': None, 'source_volid': None, 'metadata': {'key': 'value', 'readonly': 'True'}, 'id': '1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'size': 1}} self.assertEqual(res_dict, expected) def test_volume_show_with_encrypted_volume(self): def stub_volume_get(self, context, volume_id, **kwargs): return stubs.stub_volume(volume_id, encryption_key_id='fake_id') self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v1/volumes/1') res_dict = self.controller.show(req, 1) self.assertEqual(res_dict['volume']['encrypted'], True) def test_volume_show_with_unencrypted_volume(self): def stub_volume_get(self, context, volume_id, **kwargs): return stubs.stub_volume(volume_id, encryption_key_id=None) self.stubs.Set(volume_api.API, 'get', stub_volume_get) req = fakes.HTTPRequest.blank('/v1/volumes/1') res_dict = self.controller.show(req, 1) self.assertEqual(res_dict['volume']['encrypted'], False) def test_volume_delete(self): self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) req = fakes.HTTPRequest.blank('/v1/volumes/1') resp = self.controller.delete(req, 1) self.assertEqual(resp.status_int, 202) def test_volume_delete_no_volume(self): self.stubs.Set(volume_api.API, "get", stubs.stub_volume_get_notfound) req = fakes.HTTPRequest.blank('/v1/volumes/1') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1) def test_admin_list_volumes_limited_to_project(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) req = fakes.HTTPRequest.blank('/v1/fake/volumes', use_admin_context=True) res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(1, len(res['volumes'])) def test_admin_list_volumes_all_tenants(self): req = fakes.HTTPRequest.blank('/v1/fake/volumes?all_tenants=1', use_admin_context=True) res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(3, len(res['volumes'])) def test_all_tenants_non_admin_gets_all_tenants(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) req = fakes.HTTPRequest.blank('/v1/fake/volumes?all_tenants=1') res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(1, len(res['volumes'])) def test_non_admin_get_by_project(self): self.stubs.Set(db, 'volume_get_all_by_project', stubs.stub_volume_get_all_by_project) self.stubs.Set(db, 'volume_get', stubs.stub_volume_get_db) req = fakes.HTTPRequest.blank('/v1/fake/volumes') res = self.controller.index(req) self.assertIn('volumes', res) self.assertEqual(1, len(res['volumes'])) def test_add_visible_admin_metadata_visible_key_only(self): admin_metadata = [{"key": "invisible_key", "value": "invisible_value"}, {"key": "readonly", "value": "visible"}, {"key": "attached_mode", "value": "visible"}] metadata = [{"key": "key", "value": "value"}] volume = dict(volume_admin_metadata=admin_metadata, volume_metadata=metadata) utils.add_visible_admin_metadata(volume) self.assertEqual(volume['volume_metadata'], [{"key": "key", "value": "value"}, {"key": "readonly", "value": "visible"}, {"key": "attached_mode", "value": "visible"}]) admin_metadata = {"invisible_key": "invisible_value", "readonly": "visible", "attached_mode": "visible"} metadata = {"key": "value"} volume = dict(admin_metadata=admin_metadata, metadata=metadata) utils.add_visible_admin_metadata(volume) self.assertEqual(volume['metadata'], {'key': 'value', 'attached_mode': 'visible', 'readonly': 'visible'}) class VolumeSerializerTest(test.TestCase): def _verify_volume_attachment(self, attach, tree): for attr in ('id', 'volume_id', 'server_id', 'device'): self.assertEqual(str(attach[attr]), tree.get(attr)) def _verify_volume(self, vol, tree): self.assertEqual(tree.tag, NS + 'volume') for attr in ('id', 'status', 'size', 'availability_zone', 'created_at', 'display_name', 'display_description', 'volume_type', 'bootable', 'snapshot_id'): self.assertEqual(str(vol[attr]), tree.get(attr)) for child in tree: self.assertIn(child.tag, (NS + 'attachments', NS + 'metadata')) if child.tag == 'attachments': self.assertEqual(1, len(child)) self.assertEqual('attachment', child[0].tag) self._verify_volume_attachment(vol['attachments'][0], child[0]) elif child.tag == 'metadata': not_seen = set(vol['metadata'].keys()) for gr_child in child: self.assertIn(gr_child.get("key"), not_seen) self.assertEqual(str(vol['metadata'][gr_child.get("key")]), gr_child.text) not_seen.remove(gr_child.get('key')) self.assertEqual(0, len(not_seen)) def test_volume_show_create_serializer(self): serializer = volumes.VolumeTemplate() raw_volume = dict( id='vol_id', status='vol_status', size=1024, availability_zone='vol_availability', bootable='false', created_at=datetime.datetime.now(), attachments=[dict(id='vol_id', volume_id='vol_id', server_id='instance_uuid', device='/foo')], display_name='vol_name', display_description='vol_desc', volume_type='vol_type', snapshot_id='snap_id', source_volid='source_volid', metadata=dict(foo='bar', baz='quux', ), ) text = serializer.serialize(dict(volume=raw_volume)) tree = etree.fromstring(text) self._verify_volume(raw_volume, tree) def test_volume_index_detail_serializer(self): serializer = volumes.VolumesTemplate() raw_volumes = [dict(id='vol1_id', status='vol1_status', size=1024, availability_zone='vol1_availability', bootable='true', created_at=datetime.datetime.now(), attachments=[dict(id='vol1_id', volume_id='vol1_id', server_id='instance_uuid', device='/foo1')], display_name='vol1_name', display_description='vol1_desc', volume_type='vol1_type', snapshot_id='snap1_id', source_volid=None, metadata=dict(foo='vol1_foo', bar='vol1_bar', ), ), dict(id='vol2_id', status='vol2_status', size=1024, availability_zone='vol2_availability', bootable='true', created_at=datetime.datetime.now(), attachments=[dict(id='vol2_id', volume_id='vol2_id', server_id='instance_uuid', device='/foo2')], display_name='vol2_name', display_description='vol2_desc', volume_type='vol2_type', snapshot_id='snap2_id', source_volid=None, metadata=dict(foo='vol2_foo', bar='vol2_bar', ), )] text = serializer.serialize(dict(volumes=raw_volumes)) tree = etree.fromstring(text) self.assertEqual(NS + 'volumes', tree.tag) self.assertEqual(len(raw_volumes), len(tree)) for idx, child in enumerate(tree): self._verify_volume(raw_volumes[idx], child) class TestVolumeCreateRequestXMLDeserializer(test.TestCase): def setUp(self): super(TestVolumeCreateRequestXMLDeserializer, self).setUp() self.deserializer = volumes.CreateDeserializer() def test_minimal_volume(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = {"volume": {"size": "1", }, } self.assertEqual(request['body'], expected) def test_display_name(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", }, } self.assertEqual(request['body'], expected) def test_display_description(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", }, } self.assertEqual(request['body'], expected) def test_volume_type(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "display_name": "Volume-xml", "size": "1", "display_name": "Volume-xml", "display_description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", }, } self.assertEqual(request['body'], expected) def test_availability_zone(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", "availability_zone": "us-east1", }, } self.assertEqual(request['body'], expected) def test_metadata(self): self_request = """ work""" request = self.deserializer.deserialize(self_request) expected = { "volume": { "display_name": "Volume-xml", "size": "1", "metadata": { "Type": "work", }, }, } self.assertEqual(request['body'], expected) def test_full_volume(self): self_request = """ work""" request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164", "availability_zone": "us-east1", "metadata": { "Type": "work", }, }, } self.assertEqual(request['body'], expected) def test_imageref(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "imageRef": "4a90189d-d702-4c7c-87fc-6608c554d737", }, } self.assertEqual(expected, request['body']) def test_snapshot_id(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "snapshot_id": "4a90189d-d702-4c7c-87fc-6608c554d737", }, } self.assertEqual(expected, request['body']) def test_source_volid(self): self_request = """ """ request = self.deserializer.deserialize(self_request) expected = { "volume": { "size": "1", "display_name": "Volume-xml", "display_description": "description", "source_volid": "4a90189d-d702-4c7c-87fc-6608c554d737", }, } self.assertEqual(expected, request['body']) class VolumesUnprocessableEntityTestCase(test.TestCase): """Tests of places we throw 422 Unprocessable Entity from.""" def setUp(self): super(VolumesUnprocessableEntityTestCase, self).setUp() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = volumes.VolumeController(self.ext_mgr) def _unprocessable_volume_create(self, body): req = fakes.HTTPRequest.blank('/v2/fake/volumes') req.method = 'POST' self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, body) def test_create_no_body(self): self._unprocessable_volume_create(body=None) def test_create_missing_volume(self): body = {'foo': {'a': 'b'}} self._unprocessable_volume_create(body=body) def test_create_malformed_entity(self): body = {'volume': 'string'} self._unprocessable_volume_create(body=body) cinder-2014.1.5/cinder/tests/api/v1/test_snapshot_metadata.py0000664000567000056700000005147712540642606025210 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import uuid from oslo.config import cfg import webob from cinder.api import extensions from cinder.api.v1 import snapshot_metadata from cinder.api.v1 import snapshots import cinder.db from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes CONF = cfg.CONF def return_create_snapshot_metadata_max(context, snapshot_id, metadata, delete): return stub_max_snapshot_metadata() def return_create_snapshot_metadata(context, snapshot_id, metadata, delete): return stub_snapshot_metadata() def return_create_snapshot_metadata_insensitive(context, snapshot_id, metadata, delete): return stub_snapshot_metadata_insensitive() def return_new_snapshot_metadata(context, snapshot_id, metadata, delete): return stub_new_snapshot_metadata() def return_snapshot_metadata(context, snapshot_id): if not isinstance(snapshot_id, str) or not len(snapshot_id) == 36: msg = 'id %s must be a uuid in return snapshot metadata' % snapshot_id raise Exception(msg) return stub_snapshot_metadata() def return_empty_snapshot_metadata(context, snapshot_id): return {} def return_empty_container_metadata(context, snapshot_id, metadata, delete): return {} def delete_snapshot_metadata(context, snapshot_id, key): pass def stub_snapshot_metadata(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", } return metadata def stub_snapshot_metadata_insensitive(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4", } return metadata def stub_new_snapshot_metadata(): metadata = { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', } return metadata def stub_max_snapshot_metadata(): metadata = {"metadata": {}} for num in range(CONF.quota_metadata_items): metadata['metadata']['key%i' % num] = "blah" return metadata def return_snapshot(context, snapshot_id): return {'id': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'status': 'available', 'metadata': {}} def return_volume(context, volume_id): return {'id': 'fake-vol-id', 'size': 100, 'name': 'fake', 'host': 'fake-host', 'status': 'available', 'encryption_key_id': None, 'volume_type_id': None, 'migration_status': None, 'metadata': {}, 'project_id': context.project_id} def return_snapshot_nonexistent(context, snapshot_id): raise exception.SnapshotNotFound('bogus test message') def fake_update_snapshot_metadata(self, context, snapshot, diff): pass class SnapshotMetaDataTest(test.TestCase): def setUp(self): super(SnapshotMetaDataTest, self).setUp() self.volume_api = cinder.volume.api.API() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(cinder.db, 'volume_get', return_volume) self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot) self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_metadata) self.stubs.Set(self.volume_api, 'update_snapshot_metadata', fake_update_snapshot_metadata) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.snapshot_controller = snapshots.SnapshotsController(self.ext_mgr) self.controller = snapshot_metadata.Controller() self.req_id = str(uuid.uuid4()) self.url = '/v1/fake/snapshots/%s/metadata' % self.req_id snap = {"volume_size": 100, "volume_id": "fake-vol-id", "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1", "host": "fake-host", "metadata": {}} body = {"snapshot": snap} req = fakes.HTTPRequest.blank('/v1/snapshots') self.snapshot_controller.create(req, body) def test_index(self): req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = { 'metadata': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', }, } self.assertEqual(expected, res_dict) def test_index_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.url) def test_index_no_data(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = {'metadata': {}} self.assertEqual(expected, res_dict) def test_show(self): req = fakes.HTTPRequest.blank(self.url + '/key2') res_dict = self.controller.show(req, self.req_id, 'key2') expected = {'meta': {'key2': 'value2'}} self.assertEqual(expected, res_dict) def test_show_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key2') def test_show_meta_not_found(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key6') def test_delete(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_delete', delete_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key2') req.method = 'DELETE' res = self.controller.delete(req, self.req_id, 'key2') self.assertEqual(200, res.status_int) def test_delete_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key1') def test_delete_meta_not_found(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key6') def test_create(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank('/v1/snapshot_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(body, res_dict) def test_create_with_keys_in_uppercase_and_lowercase(self): # if the keys in uppercase_and_lowercase, should return the one # which server added self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_empty_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata_insensitive) req = fakes.HTTPRequest.blank('/v1/snapshot_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "KEY1": "value1", "key2": "value2", "KEY2": "value2", "key3": "value3", "KEY4": "value4"}} expected = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_create_empty_body(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, None) def test_create_item_empty_key(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_item_key_too_long(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank('/v1/snapshot_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key9": "value9"}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.req_id, body) def test_update_all(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_create_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_new_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_with_keys_in_uppercase_and_lowercase(self): self.stubs.Set(cinder.db, 'snapshot_metadata_get', return_create_snapshot_metadata) self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_new_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = { 'metadata': { 'key10': 'value10', 'KEY10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_update_all_empty_container(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_empty_container_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': {}} req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_malformed_container(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'meta': {}} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_malformed_data(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': ['asdf']} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = {'metadata': {'key10': 'value10'}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update_all, req, '100', body) def test_update_item(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res_dict = self.controller.update(req, self.req_id, 'key1', body) expected = {'meta': {'key1': 'value1'}} self.assertEqual(expected, res_dict) def test_update_item_nonexistent_snapshot(self): self.stubs.Set(cinder.db, 'snapshot_get', return_snapshot_nonexistent) req = fakes.HTTPRequest.blank( '/v1.1/fake/snapshots/asdf/metadata/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', None) def test_update_item_empty_key(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, '', body) def test_update_item_key_too_long(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, ("a" * 260), body) def test_update_item_value_too_long(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": ("a" * 260)}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, "key1", body) def test_update_item_too_many_keys(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1", "key2": "value2"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url + '/bad') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'bad', body) def test_invalid_metadata_items_on_create(self): self.stubs.Set(cinder.db, 'snapshot_metadata_update', return_create_snapshot_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, data) cinder-2014.1.5/cinder/tests/api/v1/test_limits.py0000664000567000056700000007744012540642606023010 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests dealing with HTTP rate-limiting. """ import httplib import six from xml.dom import minidom from lxml import etree import webob from cinder.api.v1 import limits from cinder.api import views from cinder.api import xmlutil import cinder.context from cinder.openstack.common import jsonutils from cinder import test TEST_LIMITS = [ limits.Limit("GET", "/delayed", "^/delayed", 1, limits.PER_MINUTE), limits.Limit("POST", "*", ".*", 7, limits.PER_MINUTE), limits.Limit("POST", "/volumes", "^/volumes", 3, limits.PER_MINUTE), limits.Limit("PUT", "*", "", 10, limits.PER_MINUTE), limits.Limit("PUT", "/volumes", "^/volumes", 5, limits.PER_MINUTE), ] NS = { 'atom': 'http://www.w3.org/2005/Atom', 'ns': 'http://docs.openstack.org/common/api/v1.0' } class BaseLimitTestSuite(test.TestCase): """Base test suite which provides relevant stubs and time abstraction.""" def setUp(self): super(BaseLimitTestSuite, self).setUp() self.time = 0.0 self.stubs.Set(limits.Limit, "_get_time", self._get_time) self.absolute_limits = {} def stub_get_project_quotas(context, project_id, usages=True): return dict((k, dict(limit=v)) for k, v in self.absolute_limits.items()) self.stubs.Set(cinder.quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) def _get_time(self): """Return the "time" according to this test suite.""" return self.time class LimitsControllerTest(BaseLimitTestSuite): """Tests for `limits.LimitsController` class.""" def setUp(self): """Run before each test.""" super(LimitsControllerTest, self).setUp() self.controller = limits.create_resource() def _get_index_request(self, accept_header="application/json"): """Helper to set routing arguments.""" request = webob.Request.blank("/") request.accept = accept_header request.environ["wsgiorg.routing_args"] = (None, { "action": "index", "controller": "", }) context = cinder.context.RequestContext('testuser', 'testproject') request.environ["cinder.context"] = context return request def _populate_limits(self, request): """Put limit info into a request.""" _limits = [ limits.Limit("GET", "*", ".*", 10, 60).display(), limits.Limit("POST", "*", ".*", 5, 60 * 60).display(), limits.Limit("GET", "changes-since*", "changes-since", 5, 60).display(), ] request.environ["cinder.limits"] = _limits return request def test_empty_index_json(self): """Test getting empty limit details in JSON.""" request = self._get_index_request() response = request.get_response(self.controller) expected = { "limits": { "rate": [], "absolute": {}, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def test_index_json(self): """Test getting limit details in JSON.""" request = self._get_index_request() request = self._populate_limits(request) self.absolute_limits = { 'gigabytes': 512, 'volumes': 5, } response = request.get_response(self.controller) expected = { "limits": { "rate": [ { "regex": ".*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, { "verb": "POST", "next-available": "1970-01-01T00:00:00Z", "unit": "HOUR", "value": 5, "remaining": 5, }, ], }, { "regex": "changes-since", "uri": "changes-since*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 5, "remaining": 5, }, ], }, ], "absolute": {"maxTotalVolumeGigabytes": 512, "maxTotalVolumes": 5, }, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def _populate_limits_diff_regex(self, request): """Put limit info into a request.""" _limits = [ limits.Limit("GET", "*", ".*", 10, 60).display(), limits.Limit("GET", "*", "*.*", 10, 60).display(), ] request.environ["cinder.limits"] = _limits return request def test_index_diff_regex(self): """Test getting limit details in JSON.""" request = self._get_index_request() request = self._populate_limits_diff_regex(request) response = request.get_response(self.controller) expected = { "limits": { "rate": [ { "regex": ".*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, ], }, { "regex": "*.*", "uri": "*", "limit": [ { "verb": "GET", "next-available": "1970-01-01T00:00:00Z", "unit": "MINUTE", "value": 10, "remaining": 10, }, ], }, ], "absolute": {}, }, } body = jsonutils.loads(response.body) self.assertEqual(expected, body) def _test_index_absolute_limits_json(self, expected): request = self._get_index_request() response = request.get_response(self.controller) body = jsonutils.loads(response.body) self.assertEqual(expected, body['limits']['absolute']) def test_index_ignores_extra_absolute_limits_json(self): self.absolute_limits = {'unknown_limit': 9001} self._test_index_absolute_limits_json({}) class TestLimiter(limits.Limiter): pass class LimitMiddlewareTest(BaseLimitTestSuite): """Tests for the `limits.RateLimitingMiddleware` class.""" @webob.dec.wsgify def _empty_app(self, request): """Do-nothing WSGI app.""" pass def setUp(self): """Prepare middleware for use through fake WSGI app.""" super(LimitMiddlewareTest, self).setUp() _limits = '(GET, *, .*, 1, MINUTE)' self.app = limits.RateLimitingMiddleware(self._empty_app, _limits, "%s.TestLimiter" % self.__class__.__module__) def test_limit_class(self): """Test that middleware selected correct limiter class.""" assert isinstance(self.app._limiter, TestLimiter) def test_good_request(self): """Test successful GET request through middleware.""" request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) def test_limited_request_json(self): """Test a rate-limited (413) GET request through middleware.""" request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(response.status_int, 413) self.assertIn('Retry-After', response.headers) retry_after = int(response.headers['Retry-After']) self.assertAlmostEqual(retry_after, 60, 1) body = jsonutils.loads(response.body) expected = "Only 1 GET request(s) can be made to * every minute." value = body["overLimitFault"]["details"].strip() self.assertEqual(value, expected) def test_limited_request_xml(self): """Test a rate-limited (413) response as XML.""" request = webob.Request.blank("/") response = request.get_response(self.app) self.assertEqual(200, response.status_int) request = webob.Request.blank("/") request.accept = "application/xml" response = request.get_response(self.app) self.assertEqual(response.status_int, 413) root = minidom.parseString(response.body).childNodes[0] expected = "Only 1 GET request(s) can be made to * every minute." details = root.getElementsByTagName("details") self.assertEqual(details.length, 1) value = details.item(0).firstChild.data.strip() self.assertEqual(value, expected) class LimitTest(BaseLimitTestSuite): """Tests for the `limits.Limit` class.""" def test_GET_no_delay(self): """Test a limit handles 1 GET per second.""" limit = limits.Limit("GET", "*", ".*", 1, 1) delay = limit("GET", "/anything") self.assertIsNone(delay) self.assertEqual(0, limit.next_request) self.assertEqual(0, limit.last_request) def test_GET_delay(self): """Test two calls to 1 GET per second limit.""" limit = limits.Limit("GET", "*", ".*", 1, 1) delay = limit("GET", "/anything") self.assertIsNone(delay) delay = limit("GET", "/anything") self.assertEqual(1, delay) self.assertEqual(1, limit.next_request) self.assertEqual(0, limit.last_request) self.time += 4 delay = limit("GET", "/anything") self.assertIsNone(delay) self.assertEqual(4, limit.next_request) self.assertEqual(4, limit.last_request) class ParseLimitsTest(BaseLimitTestSuite): """Tests for the default limits parser in the `limits.Limiter` class.""" def test_invalid(self): """Test that parse_limits() handles invalid input correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, ';;;;;') def test_bad_rule(self): """Test that parse_limits() handles bad rules correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, 'GET, *, .*, 20, minute') def test_missing_arg(self): """Test that parse_limits() handles missing args correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, 20)') def test_bad_value(self): """Test that parse_limits() handles bad values correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, foo, minute)') def test_bad_unit(self): """Test that parse_limits() handles bad units correctly.""" self.assertRaises(ValueError, limits.Limiter.parse_limits, '(GET, *, .*, 20, lightyears)') def test_multiple_rules(self): """Test that parse_limits() handles multiple rules correctly.""" try: l = limits.Limiter.parse_limits('(get, *, .*, 20, minute);' '(PUT, /foo*, /foo.*, 10, hour);' '(POST, /bar*, /bar.*, 5, second);' '(Say, /derp*, /derp.*, 1, day)') except ValueError as e: assert False, e # Make sure the number of returned limits are correct self.assertEqual(len(l), 4) # Check all the verbs... expected = ['GET', 'PUT', 'POST', 'SAY'] self.assertEqual([t.verb for t in l], expected) # ...the URIs... expected = ['*', '/foo*', '/bar*', '/derp*'] self.assertEqual([t.uri for t in l], expected) # ...the regexes... expected = ['.*', '/foo.*', '/bar.*', '/derp.*'] self.assertEqual([t.regex for t in l], expected) # ...the values... expected = [20, 10, 5, 1] self.assertEqual([t.value for t in l], expected) # ...and the units... expected = [limits.PER_MINUTE, limits.PER_HOUR, limits.PER_SECOND, limits.PER_DAY] self.assertEqual([t.unit for t in l], expected) class LimiterTest(BaseLimitTestSuite): """Tests for the in-memory `limits.Limiter` class.""" def setUp(self): """Run before each test.""" super(LimiterTest, self).setUp() userlimits = {'limits.user3': '', 'limits.user0': '(get, *, .*, 4, minute);' '(put, *, .*, 2, minute)'} self.limiter = limits.Limiter(TEST_LIMITS, **userlimits) def _check(self, num, verb, url, username=None): """Check and yield results from checks.""" for x in xrange(num): yield self.limiter.check_for_delay(verb, url, username)[0] def _check_sum(self, num, verb, url, username=None): """Check and sum results from checks.""" results = self._check(num, verb, url, username) return sum(item for item in results if item) def test_no_delay_GET(self): """no delay on a single call for a limit verb we didn"t set.""" delay = self.limiter.check_for_delay("GET", "/anything") self.assertEqual(delay, (None, None)) def test_no_delay_PUT(self): """no delay on a single call for a known limit.""" delay = self.limiter.check_for_delay("PUT", "/anything") self.assertEqual(delay, (None, None)) def test_delay_PUT(self): """test delay on 11th put request. the 11th PUT will result in a delay of 6.0 seconds until the next request will be granced. """ expected = [None] * 10 + [6.0] results = list(self._check(11, "PUT", "/anything")) self.assertEqual(expected, results) def test_delay_POST(self): """test delay of 8th post request. Ensure that the 8th POST will result in a delay of 6.0 seconds until the next request will be granced. """ expected = [None] * 7 results = list(self._check(7, "POST", "/anything")) self.assertEqual(expected, results) expected = 60.0 / 7.0 results = self._check_sum(1, "POST", "/anything") self.assertAlmostEqual(expected, results, 8) def test_delay_GET(self): """Ensure the 11th GET will result in NO delay.""" expected = [None] * 11 results = list(self._check(11, "GET", "/anything")) self.assertEqual(expected, results) expected = [None] * 4 + [15.0] results = list(self._check(5, "GET", "/foo", "user0")) self.assertEqual(expected, results) def test_delay_PUT_volumes(self): """Test limit of PUT on /volumes. Ensure PUT on /volumes limits at 5 requests, and PUT elsewhere is still OK after 5 requests... but then after 11 total requests, PUT limiting kicks in. """ # First 6 requests on PUT /volumes expected = [None] * 5 + [12.0] results = list(self._check(6, "PUT", "/volumes")) self.assertEqual(expected, results) # Next 5 request on PUT /anything expected = [None] * 4 + [6.0] results = list(self._check(5, "PUT", "/anything")) self.assertEqual(expected, results) def test_delay_PUT_wait(self): """Test limit on PUT is lifted. Ensure after hitting the limit and then waiting for the correct amount of time, the limit will be lifted. """ expected = [None] * 10 + [6.0] results = list(self._check(11, "PUT", "/anything")) self.assertEqual(expected, results) # Advance time self.time += 6.0 expected = [None, 6.0] results = list(self._check(2, "PUT", "/anything")) self.assertEqual(expected, results) def test_multiple_delays(self): """Ensure multiple requests still get a delay.""" expected = [None] * 10 + [6.0] * 10 results = list(self._check(20, "PUT", "/anything")) self.assertEqual(expected, results) self.time += 1.0 expected = [5.0] * 10 results = list(self._check(10, "PUT", "/anything")) self.assertEqual(expected, results) expected = [None] * 2 + [30.0] * 8 results = list(self._check(10, "PUT", "/anything", "user0")) self.assertEqual(expected, results) def test_user_limit(self): """Test user-specific limits.""" self.assertEqual(self.limiter.levels['user3'], []) self.assertEqual(len(self.limiter.levels['user0']), 2) def test_multiple_users(self): """Tests involving multiple users.""" # User0 expected = [None] * 2 + [30.0] * 8 results = list(self._check(10, "PUT", "/anything", "user0")) self.assertEqual(expected, results) # User1 expected = [None] * 10 + [6.0] * 10 results = list(self._check(20, "PUT", "/anything", "user1")) self.assertEqual(expected, results) # User2 expected = [None] * 10 + [6.0] * 5 results = list(self._check(15, "PUT", "/anything", "user2")) self.assertEqual(expected, results) # User3 expected = [None] * 20 results = list(self._check(20, "PUT", "/anything", "user3")) self.assertEqual(expected, results) self.time += 1.0 # User1 again expected = [5.0] * 10 results = list(self._check(10, "PUT", "/anything", "user1")) self.assertEqual(expected, results) self.time += 1.0 # User1 again expected = [4.0] * 5 results = list(self._check(5, "PUT", "/anything", "user2")) self.assertEqual(expected, results) # User0 again expected = [28.0] results = list(self._check(1, "PUT", "/anything", "user0")) self.assertEqual(expected, results) self.time += 28.0 expected = [None, 30.0] results = list(self._check(2, "PUT", "/anything", "user0")) self.assertEqual(expected, results) class WsgiLimiterTest(BaseLimitTestSuite): """Tests for `limits.WsgiLimiter` class.""" def setUp(self): """Run before each test.""" super(WsgiLimiterTest, self).setUp() self.app = limits.WsgiLimiter(TEST_LIMITS) def _request_data(self, verb, path): """Get data describing a limit request verb/path.""" return jsonutils.dumps({"verb": verb, "path": path}) def _request(self, verb, url, username=None): """Assert that POSTing to given url triggers given action. Ensure POSTing to the given url causes the given username to perform the given action. Make the internal rate limiter return delay and make sure that the WSGI app returns the correct response. """ if username: request = webob.Request.blank("/%s" % username) else: request = webob.Request.blank("/") request.method = "POST" request.body = self._request_data(verb, url) response = request.get_response(self.app) if "X-Wait-Seconds" in response.headers: self.assertEqual(response.status_int, 403) return response.headers["X-Wait-Seconds"] self.assertEqual(response.status_int, 204) def test_invalid_methods(self): """Only POSTs should work.""" requests = [] for method in ["GET", "PUT", "DELETE", "HEAD", "OPTIONS"]: request = webob.Request.blank("/", method=method) response = request.get_response(self.app) self.assertEqual(response.status_int, 405) def test_good_url(self): delay = self._request("GET", "/something") self.assertIsNone(delay) def test_escaping(self): delay = self._request("GET", "/something/jump%20up") self.assertIsNone(delay) def test_response_to_delays(self): delay = self._request("GET", "/delayed") self.assertIsNone(delay) delay = self._request("GET", "/delayed") self.assertEqual(delay, '60.00') def test_response_to_delays_usernames(self): delay = self._request("GET", "/delayed", "user1") self.assertIsNone(delay) delay = self._request("GET", "/delayed", "user2") self.assertIsNone(delay) delay = self._request("GET", "/delayed", "user1") self.assertEqual(delay, '60.00') delay = self._request("GET", "/delayed", "user2") self.assertEqual(delay, '60.00') class FakeHttplibSocket(object): """Fake `httplib.HTTPResponse` replacement.""" def __init__(self, response_string): """Initialize new `FakeHttplibSocket`.""" self._buffer = six.StringIO(response_string) def makefile(self, _mode, _other): """Returns the socket's internal buffer.""" return self._buffer class FakeHttplibConnection(object): """Fake `httplib.HTTPConnection`.""" def __init__(self, app, host): """Initialize `FakeHttplibConnection`.""" self.app = app self.host = host def request(self, method, path, body="", headers=None): """Fake method for request. Requests made via this connection actually get translated and routed into our WSGI app, we then wait for the response and turn it back into an `httplib.HTTPResponse`. """ if not headers: headers = {} req = webob.Request.blank(path) req.method = method req.headers = headers req.host = self.host req.body = body resp = str(req.get_response(self.app)) resp = "HTTP/1.0 %s" % resp sock = FakeHttplibSocket(resp) self.http_response = httplib.HTTPResponse(sock) self.http_response.begin() def getresponse(self): """Return our generated response from the request.""" return self.http_response def wire_HTTPConnection_to_WSGI(host, app): """Monkeypatches HTTPConnection so that if you try to connect to host, you are instead routed straight to the given WSGI app. After calling this method, when any code calls httplib.HTTPConnection(host) the connection object will be a fake. Its requests will be sent directly to the given WSGI app rather than through a socket. Code connecting to hosts other than host will not be affected. This method may be called multiple times to map different hosts to different apps. This method returns the original HTTPConnection object, so that the caller can restore the default HTTPConnection interface (for all hosts). """ class HTTPConnectionDecorator(object): """Wraps the real HTTPConnection class so that when you instantiate the class you might instead get a fake instance. """ def __init__(self, wrapped): self.wrapped = wrapped def __call__(self, connection_host, *args, **kwargs): if connection_host == host: return FakeHttplibConnection(app, host) else: return self.wrapped(connection_host, *args, **kwargs) oldHTTPConnection = httplib.HTTPConnection httplib.HTTPConnection = HTTPConnectionDecorator(httplib.HTTPConnection) return oldHTTPConnection class WsgiLimiterProxyTest(BaseLimitTestSuite): """Tests for the `limits.WsgiLimiterProxy` class.""" def setUp(self): """setUp for test suite. Do some nifty HTTP/WSGI magic which allows for WSGI to be called directly by something like the `httplib` library. """ super(WsgiLimiterProxyTest, self).setUp() self.app = limits.WsgiLimiter(TEST_LIMITS) self.oldHTTPConnection = ( wire_HTTPConnection_to_WSGI("169.254.0.1:80", self.app)) self.proxy = limits.WsgiLimiterProxy("169.254.0.1:80") def test_200(self): """Successful request test.""" delay = self.proxy.check_for_delay("GET", "/anything") self.assertEqual(delay, (None, None)) def test_403(self): """Forbidden request test.""" delay = self.proxy.check_for_delay("GET", "/delayed") self.assertEqual(delay, (None, None)) delay, error = self.proxy.check_for_delay("GET", "/delayed") error = error.strip() expected = ("60.00", "403 Forbidden\n\nOnly 1 GET request(s) can be " "made to /delayed every minute.") self.assertEqual((delay, error), expected) def tearDown(self): # restore original HTTPConnection object httplib.HTTPConnection = self.oldHTTPConnection super(WsgiLimiterProxyTest, self).tearDown() class LimitsViewBuilderTest(test.TestCase): def setUp(self): super(LimitsViewBuilderTest, self).setUp() self.view_builder = views.limits.ViewBuilder() self.rate_limits = [{"URI": "*", "regex": ".*", "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "resetTime": 1311272226}, {"URI": "*/volumes", "regex": "^/volumes", "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "resetTime": 1311272226}] self.absolute_limits = {"metadata_items": 1, "injected_files": 5, "injected_file_content_bytes": 5} def test_build_limits(self): tdate = "2011-07-21T18:17:06Z" expected_limits = \ {"limits": {"rate": [{"uri": "*", "regex": ".*", "limit": [{"value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": tdate}]}, {"uri": "*/volumes", "regex": "^/volumes", "limit": [{"value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": tdate}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 5}}} output = self.view_builder.build(self.rate_limits, self.absolute_limits) self.assertDictMatch(output, expected_limits) def test_build_limits_empty_limits(self): expected_limits = {"limits": {"rate": [], "absolute": {}}} abs_limits = {} rate_limits = [] output = self.view_builder.build(rate_limits, abs_limits) self.assertDictMatch(output, expected_limits) class LimitsXMLSerializationTest(test.TestCase): def test_xml_declaration(self): serializer = limits.LimitsTemplate() fixture = {"limits": { "rate": [], "absolute": {}}} output = serializer.serialize(fixture) has_dec = output.startswith("") self.assertTrue(has_dec) def test_index(self): serializer = limits.LimitsTemplate() fixture = { "limits": { "rate": [{ "uri": "*", "regex": ".*", "limit": [{ "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": "2011-12-15T22:42:45Z"}]}, {"uri": "*/servers", "regex": "^/servers", "limit": [{ "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": "2011-12-15T22:42:45Z"}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 4) for limit in absolutes: name = limit.get('name') value = limit.get('value') self.assertEqual(value, str(fixture['limits']['absolute'][name])) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 2) for i, rate in enumerate(rates): for key in ['uri', 'regex']: self.assertEqual(rate.get(key), str(fixture['limits']['rate'][i][key])) rate_limits = rate.xpath('ns:limit', namespaces=NS) self.assertEqual(len(rate_limits), 1) for j, limit in enumerate(rate_limits): for key in ['verb', 'value', 'remaining', 'unit', 'next-available']: self.assertEqual( limit.get(key), str(fixture['limits']['rate'][i]['limit'][j][key])) def test_index_no_limits(self): serializer = limits.LimitsTemplate() fixture = {"limits": { "rate": [], "absolute": {}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 0) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 0) cinder-2014.1.5/cinder/tests/api/v1/test_volume_metadata.py0000664000567000056700000004772412540642606024660 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import uuid from oslo.config import cfg import webob from cinder.api import extensions from cinder.api.v1 import volume_metadata from cinder.api.v1 import volumes import cinder.db from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v1 import stubs CONF = cfg.CONF def return_create_volume_metadata_max(context, volume_id, metadata, delete): return stub_max_volume_metadata() def return_create_volume_metadata(context, volume_id, metadata, delete): return stub_volume_metadata() def return_new_volume_metadata(context, volume_id, metadata, delete): return stub_new_volume_metadata() def return_create_volume_metadata_insensitive(context, snapshot_id, metadata, delete): return stub_volume_metadata_insensitive() def return_volume_metadata(context, volume_id): if not isinstance(volume_id, str) or not len(volume_id) == 36: msg = 'id %s must be a uuid in return volume metadata' % volume_id raise Exception(msg) return stub_volume_metadata() def return_empty_volume_metadata(context, volume_id): return {} def return_empty_container_metadata(context, volume_id, metadata, delete): return {} def delete_volume_metadata(context, volume_id, key): pass def stub_volume_metadata(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", } return metadata def stub_new_volume_metadata(): metadata = { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', } return metadata def stub_volume_metadata_insensitive(): metadata = { "key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4", } return metadata def stub_max_volume_metadata(): metadata = {"metadata": {}} for num in range(CONF.quota_metadata_items): metadata['metadata']['key%i' % num] = "blah" return metadata def return_volume(context, volume_id): return {'id': '0cc3346e-9fef-4445-abe6-5d2b2690ec64', 'name': 'fake', 'metadata': {}, 'project_id': context.project_id} def return_volume_nonexistent(context, volume_id): raise exception.VolumeNotFound('bogus test message') def fake_update_volume_metadata(self, context, volume, diff): pass class volumeMetaDataTest(test.TestCase): def setUp(self): super(volumeMetaDataTest, self).setUp() self.volume_api = cinder.volume.api.API() fakes.stub_out_key_pair_funcs(self.stubs) self.stubs.Set(cinder.db, 'volume_get', return_volume) self.stubs.Set(cinder.db, 'volume_metadata_get', return_volume_metadata) self.stubs.Set(cinder.db, 'service_get_all_by_topic', stubs.stub_service_get_all_by_topic) self.stubs.Set(self.volume_api, 'update_volume_metadata', fake_update_volume_metadata) self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.volume_controller = volumes.VolumeController(self.ext_mgr) self.controller = volume_metadata.Controller() self.req_id = str(uuid.uuid4()) self.url = '/v1/fake/volumes/%s/metadata' % self.req_id vol = {"size": 100, "display_name": "Volume Test Name", "display_description": "Volume Test Desc", "availability_zone": "zone1:host1", "metadata": {}} body = {"volume": vol} req = fakes.HTTPRequest.blank('/v1/volumes') self.volume_controller.create(req, body) def test_index(self): req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = { 'metadata': { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', }, } self.assertEqual(expected, res_dict) def test_index_nonexistent_volume(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url) self.assertRaises(webob.exc.HTTPNotFound, self.controller.index, req, self.url) def test_index_no_data(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_empty_volume_metadata) req = fakes.HTTPRequest.blank(self.url) res_dict = self.controller.index(req, self.req_id) expected = {'metadata': {}} self.assertEqual(expected, res_dict) def test_show(self): req = fakes.HTTPRequest.blank(self.url + '/key2') res_dict = self.controller.show(req, self.req_id, 'key2') expected = {'meta': {'key2': 'value2'}} self.assertEqual(expected, res_dict) def test_show_nonexistent_volume(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key2') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key2') def test_show_meta_not_found(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_empty_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, self.req_id, 'key6') def test_delete(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_volume_metadata) self.stubs.Set(cinder.db, 'volume_metadata_delete', delete_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key2') req.method = 'DELETE' res = self.controller.delete(req, self.req_id, 'key2') self.assertEqual(200, res.status_int) def test_delete_nonexistent_volume(self): self.stubs.Set(cinder.db, 'volume_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key1') def test_delete_meta_not_found(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_empty_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key6') req.method = 'DELETE' self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, self.req_id, 'key6') def test_create(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_empty_volume_metadata) self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank('/v1/volume_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3", }} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(body, res_dict) def test_create_with_keys_in_uppercase_and_lowercase(self): # if the keys in uppercase_and_lowercase, should return the one # which server added self.stubs.Set(cinder.db, 'volume_metadata_get', return_empty_volume_metadata) self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata_insensitive) req = fakes.HTTPRequest.blank('/v1/volume_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key1": "value1", "KEY1": "value1", "key2": "value2", "KEY2": "value2", "key3": "value3", "KEY4": "value4"}} expected = {"metadata": {"key1": "value1", "key2": "value2", "key3": "value3", "KEY4": "value4"}} req.body = jsonutils.dumps(body) res_dict = self.controller.create(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_create_empty_body(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, None) def test_create_item_empty_key(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_item_key_too_long(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, body) def test_create_nonexistent_volume(self): self.stubs.Set(cinder.db, 'volume_get', return_volume_nonexistent) self.stubs.Set(cinder.db, 'volume_metadata_get', return_volume_metadata) self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank('/v1/volume_metadata') req.method = 'POST' req.content_type = "application/json" body = {"metadata": {"key9": "value9"}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.create, req, self.req_id, body) def test_update_all(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_new_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_with_keys_in_uppercase_and_lowercase(self): self.stubs.Set(cinder.db, 'volume_metadata_get', return_create_volume_metadata) self.stubs.Set(cinder.db, 'volume_metadata_update', return_new_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = { 'metadata': { 'key10': 'value10', 'KEY10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } expected = { 'metadata': { 'key10': 'value10', 'key99': 'value99', 'KEY20': 'value20', }, } req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, body) self.assertEqual(expected, res_dict) def test_update_all_empty_container(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_empty_container_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': {}} req.body = jsonutils.dumps(expected) res_dict = self.controller.update_all(req, self.req_id, expected) self.assertEqual(expected, res_dict) def test_update_all_malformed_container(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'meta': {}} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_malformed_data(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" expected = {'metadata': ['asdf']} req.body = jsonutils.dumps(expected) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update_all, req, self.req_id, expected) def test_update_all_nonexistent_volume(self): self.stubs.Set(cinder.db, 'volume_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank(self.url) req.method = 'PUT' req.content_type = "application/json" body = {'metadata': {'key10': 'value10'}} req.body = jsonutils.dumps(body) self.assertRaises(webob.exc.HTTPNotFound, self.controller.update_all, req, '100', body) def test_update_item(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res_dict = self.controller.update(req, self.req_id, 'key1', body) expected = {'meta': {'key1': 'value1'}} self.assertEqual(expected, res_dict) def test_update_item_nonexistent_volume(self): self.stubs.Set(cinder.db, 'volume_get', return_volume_nonexistent) req = fakes.HTTPRequest.blank('/v1.1/fake/volumes/asdf/metadata/key1') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_empty_body(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', None) def test_update_item_empty_key(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, '', body) def test_update_item_key_too_long(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {("a" * 260): "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, ("a" * 260), body) def test_update_item_value_too_long(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": ("a" * 260)}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.update, req, self.req_id, "key1", body) def test_update_item_too_many_keys(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/key1') req.method = 'PUT' body = {"meta": {"key1": "value1", "key2": "value2"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url + '/bad') req.method = 'PUT' body = {"meta": {"key1": "value1"}} req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, self.req_id, 'bad', body) def test_invalid_metadata_items_on_create(self): self.stubs.Set(cinder.db, 'volume_metadata_update', return_create_volume_metadata) req = fakes.HTTPRequest.blank(self.url) req.method = 'POST' req.headers["content-type"] = "application/json" #test for long key data = {"metadata": {"a" * 260: "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for long value data = {"metadata": {"key": "v" * 260}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, self.controller.create, req, self.req_id, data) #test for empty key. data = {"metadata": {"": "value1"}} req.body = jsonutils.dumps(data) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, self.req_id, data) cinder-2014.1.5/cinder/tests/api/v1/test_types.py0000664000567000056700000001567412540642606022654 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # aLL Rights Reserved. # # 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. from lxml import etree import webob from cinder.api.v1 import types from cinder.api.views import types as views_types from cinder import exception from cinder.openstack.common import timeutils from cinder import test from cinder.tests.api import fakes from cinder.volume import volume_types def stub_volume_type(id): specs = {"key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} return dict(id=id, name='vol_type_%s' % str(id), extra_specs=specs) def return_volume_types_get_all_types(context): return dict(vol_type_1=stub_volume_type(1), vol_type_2=stub_volume_type(2), vol_type_3=stub_volume_type(3)) def return_empty_volume_types_get_all_types(context): return {} def return_volume_types_get_volume_type(context, id): if id == "777": raise exception.VolumeTypeNotFound(volume_type_id=id) return stub_volume_type(int(id)) def return_volume_types_get_by_name(context, name): if name == "777": raise exception.VolumeTypeNotFoundByName(volume_type_name=name) return stub_volume_type(int(name.split("_")[2])) class VolumeTypesApiTest(test.TestCase): def setUp(self): super(VolumeTypesApiTest, self).setUp() self.controller = types.VolumeTypesController() def test_volume_types_index(self): self.stubs.Set(volume_types, 'get_all_types', return_volume_types_get_all_types) req = fakes.HTTPRequest.blank('/v1/fake/types') res_dict = self.controller.index(req) self.assertEqual(3, len(res_dict['volume_types'])) expected_names = ['vol_type_1', 'vol_type_2', 'vol_type_3'] actual_names = map(lambda e: e['name'], res_dict['volume_types']) self.assertEqual(set(actual_names), set(expected_names)) for entry in res_dict['volume_types']: self.assertEqual('value1', entry['extra_specs']['key1']) def test_volume_types_index_no_data(self): self.stubs.Set(volume_types, 'get_all_types', return_empty_volume_types_get_all_types) req = fakes.HTTPRequest.blank('/v1/fake/types') res_dict = self.controller.index(req) self.assertEqual(0, len(res_dict['volume_types'])) def test_volume_types_show(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) req = fakes.HTTPRequest.blank('/v1/fake/types/1') res_dict = self.controller.show(req, 1) self.assertEqual(1, len(res_dict)) self.assertEqual('1', res_dict['volume_type']['id']) self.assertEqual('vol_type_1', res_dict['volume_type']['name']) def test_volume_types_show_not_found(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) req = fakes.HTTPRequest.blank('/v1/fake/types/777') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, '777') def test_view_builder_show(self): view_builder = views_types.ViewBuilder() now = timeutils.isotime() raw_volume_type = dict(name='new_type', deleted=False, created_at=now, updated_at=now, extra_specs={}, deleted_at=None, id=42) request = fakes.HTTPRequest.blank("/v1") output = view_builder.show(request, raw_volume_type) self.assertIn('volume_type', output) expected_volume_type = dict(name='new_type', extra_specs={}, id=42) self.assertDictMatch(output['volume_type'], expected_volume_type) def test_view_builder_list(self): view_builder = views_types.ViewBuilder() now = timeutils.isotime() raw_volume_types = [] for i in range(0, 10): raw_volume_types.append(dict(name='new_type', deleted=False, created_at=now, updated_at=now, extra_specs={}, deleted_at=None, id=42 + i)) request = fakes.HTTPRequest.blank("/v1") output = view_builder.index(request, raw_volume_types) self.assertIn('volume_types', output) for i in range(0, 10): expected_volume_type = dict(name='new_type', extra_specs={}, id=42 + i) self.assertDictMatch(output['volume_types'][i], expected_volume_type) class VolumeTypesSerializerTest(test.TestCase): def _verify_volume_type(self, vtype, tree): self.assertEqual('volume_type', tree.tag) self.assertEqual(vtype['name'], tree.get('name')) self.assertEqual(str(vtype['id']), tree.get('id')) self.assertEqual(1, len(tree)) extra_specs = tree[0] self.assertEqual('extra_specs', extra_specs.tag) seen = set(vtype['extra_specs'].keys()) for child in extra_specs: self.assertIn(child.tag, seen) self.assertEqual(vtype['extra_specs'][child.tag], child.text) seen.remove(child.tag) self.assertEqual(len(seen), 0) def test_index_serializer(self): serializer = types.VolumeTypesTemplate() # Just getting some input data vtypes = return_volume_types_get_all_types(None) text = serializer.serialize({'volume_types': vtypes.values()}) tree = etree.fromstring(text) self.assertEqual('volume_types', tree.tag) self.assertEqual(len(vtypes), len(tree)) for child in tree: name = child.get('name') self.assertIn(name, vtypes) self._verify_volume_type(vtypes[name], child) def test_voltype_serializer(self): serializer = types.VolumeTypeTemplate() vtype = stub_volume_type(1) text = serializer.serialize(dict(volume_type=vtype)) tree = etree.fromstring(text) self._verify_volume_type(vtype, tree) cinder-2014.1.5/cinder/tests/api/v1/__init__.py0000664000567000056700000000000012540642606022161 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/v1/test_snapshots.py0000664000567000056700000004355512540642606023531 0ustar jenkinsjenkins00000000000000# Copyright 2011 Denali Systems, Inc. # All Rights Reserved. # # 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. import datetime from lxml import etree import webob from cinder.api.v1 import snapshots from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v1 import stubs from cinder import volume LOG = logging.getLogger(__name__) UUID = '00000000-0000-0000-0000-000000000001' INVALID_UUID = '00000000-0000-0000-0000-000000000002' def _get_default_snapshot_param(): return {'id': UUID, 'volume_id': 12, 'status': 'available', 'volume_size': 100, 'created_at': None, 'display_name': 'Default name', 'display_description': 'Default description', } def stub_snapshot_create(self, context, volume_id, name, description, metadata): snapshot = _get_default_snapshot_param() snapshot['volume_id'] = volume_id snapshot['display_name'] = name snapshot['display_description'] = description snapshot['metadata'] = metadata return snapshot def stub_snapshot_delete(self, context, snapshot): if snapshot['id'] != UUID: raise exception.NotFound def stub_snapshot_get(self, context, snapshot_id): if snapshot_id != UUID: raise exception.NotFound param = _get_default_snapshot_param() return param def stub_snapshot_get_all(self, context, search_opts=None): param = _get_default_snapshot_param() return [param] class SnapshotApiTest(test.TestCase): def setUp(self): super(SnapshotApiTest, self).setUp() self.controller = snapshots.SnapshotsController() self.stubs.Set(db, 'snapshot_get_all_by_project', stubs.stub_snapshot_get_all_by_project) self.stubs.Set(db, 'snapshot_get_all', stubs.stub_snapshot_get_all) def test_snapshot_create(self): self.stubs.Set(volume.api.API, "create_snapshot", stub_snapshot_create) self.stubs.Set(volume.api.API, 'get', stubs.stub_volume_get) snapshot = {"volume_id": '12', "force": False, "display_name": "Snapshot Test Name", "display_description": "Snapshot Test Desc"} body = dict(snapshot=snapshot) req = fakes.HTTPRequest.blank('/v1/snapshots') resp_dict = self.controller.create(req, body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['display_name'], snapshot['display_name']) self.assertEqual(resp_dict['snapshot']['display_description'], snapshot['display_description']) def test_snapshot_create_force(self): self.stubs.Set(volume.api.API, "create_snapshot_force", stub_snapshot_create) self.stubs.Set(volume.api.API, 'get', stubs.stub_volume_get) snapshot = {"volume_id": '12', "force": True, "display_name": "Snapshot Test Name", "display_description": "Snapshot Test Desc"} body = dict(snapshot=snapshot) req = fakes.HTTPRequest.blank('/v1/snapshots') resp_dict = self.controller.create(req, body) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['display_name'], snapshot['display_name']) self.assertEqual(resp_dict['snapshot']['display_description'], snapshot['display_description']) snapshot = {"volume_id": "12", "force": "**&&^^%%$$##@@", "display_name": "Snapshot Test Name", "display_description": "Snapshot Test Desc"} body = dict(snapshot=snapshot) req = fakes.HTTPRequest.blank('/v1/snapshots') self.assertRaises(exception.InvalidParameterValue, self.controller.create, req, body) def test_snapshot_create_without_volume_id(self): snapshot_name = 'Snapshot Test Name' snapshot_description = 'Snapshot Test Desc' body = { "snapshot": { "force": True, "name": snapshot_name, "description": snapshot_description } } req = fakes.HTTPRequest.blank('/v1/snapshots') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_snapshot_update(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) self.stubs.Set(volume.api.API, "update_snapshot", stubs.stub_snapshot_update) updates = {"display_name": "Updated Test Name", } body = {"snapshot": updates} req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % UUID) res_dict = self.controller.update(req, UUID, body) expected = {'snapshot': { 'id': UUID, 'volume_id': 12, 'status': 'available', 'size': 100, 'created_at': None, 'display_name': 'Updated Test Name', 'display_description': 'Default description', 'metadata': {}, }} self.assertEqual(expected, res_dict) def test_snapshot_update_missing_body(self): body = {} req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % UUID) self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, UUID, body) def test_snapshot_update_invalid_body(self): body = {'display_name': 'missing top level snapshot key'} req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % UUID) self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.update, req, UUID, body) def test_snapshot_update_not_found(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) updates = { "display_name": "Updated Test Name", } body = {"snapshot": updates} req = fakes.HTTPRequest.blank('/v1/snapshots/not-the-uuid') self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, 'not-the-uuid', body) def test_snapshot_delete(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) self.stubs.Set(volume.api.API, "delete_snapshot", stub_snapshot_delete) snapshot_id = UUID req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % snapshot_id) resp = self.controller.delete(req, snapshot_id) self.assertEqual(resp.status_int, 202) def test_snapshot_delete_invalid_id(self): self.stubs.Set(volume.api.API, "delete_snapshot", stub_snapshot_delete) snapshot_id = INVALID_UUID req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % snapshot_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, snapshot_id) def test_snapshot_show(self): self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get) req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % UUID) resp_dict = self.controller.show(req, UUID) self.assertIn('snapshot', resp_dict) self.assertEqual(resp_dict['snapshot']['id'], UUID) def test_snapshot_show_invalid_id(self): snapshot_id = INVALID_UUID req = fakes.HTTPRequest.blank('/v1/snapshots/%s' % snapshot_id) self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, snapshot_id) def test_snapshot_detail(self): self.stubs.Set(volume.api.API, "get_all_snapshots", stub_snapshot_get_all) req = fakes.HTTPRequest.blank('/v1/snapshots/detail') resp_dict = self.controller.detail(req) self.assertIn('snapshots', resp_dict) resp_snapshots = resp_dict['snapshots'] self.assertEqual(len(resp_snapshots), 1) resp_snapshot = resp_snapshots.pop() self.assertEqual(resp_snapshot['id'], UUID) def test_snapshot_list_by_status(self): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, display_name='backup1', status='available'), stubs.stub_snapshot(2, display_name='backup2', status='available'), stubs.stub_snapshot(3, display_name='backup3', status='creating'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) # no status filter req = fakes.HTTPRequest.blank('/v1/snapshots') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 3) # single match req = fakes.HTTPRequest.blank('/v1/snapshots?status=creating') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['status'], 'creating') # multiple match req = fakes.HTTPRequest.blank('/v1/snapshots?status=available') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 2) for snapshot in resp['snapshots']: self.assertEqual(snapshot['status'], 'available') # no match req = fakes.HTTPRequest.blank('/v1/snapshots?status=error') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 0) def test_snapshot_list_by_volume(self): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, volume_id='vol1', status='creating'), stubs.stub_snapshot(2, volume_id='vol1', status='available'), stubs.stub_snapshot(3, volume_id='vol2', status='available'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) # single match req = fakes.HTTPRequest.blank('/v1/snapshots?volume_id=vol2') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['volume_id'], 'vol2') # multiple match req = fakes.HTTPRequest.blank('/v1/snapshots?volume_id=vol1') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 2) for snapshot in resp['snapshots']: self.assertEqual(snapshot['volume_id'], 'vol1') # multiple filters req = fakes.HTTPRequest.blank('/v1/snapshots?volume_id=vol1' '&status=available') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['volume_id'], 'vol1') self.assertEqual(resp['snapshots'][0]['status'], 'available') def test_snapshot_list_by_name(self): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, display_name='backup1'), stubs.stub_snapshot(2, display_name='backup2'), stubs.stub_snapshot(3, display_name='backup3'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) # no display_name filter req = fakes.HTTPRequest.blank('/v1/snapshots') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 3) # filter by one name req = fakes.HTTPRequest.blank('/v1/snapshots?display_name=backup2') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 1) self.assertEqual(resp['snapshots'][0]['display_name'], 'backup2') # filter no match req = fakes.HTTPRequest.blank('/v1/snapshots?display_name=backup4') resp = self.controller.index(req) self.assertEqual(len(resp['snapshots']), 0) def test_admin_list_snapshots_limited_to_project(self): req = fakes.HTTPRequest.blank('/v1/fake/snapshots', use_admin_context=True) res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) def test_list_snapshots_with_limit_and_offset(self): def list_snapshots_with_limit_and_offset(is_admin): def stub_snapshot_get_all_by_project(context, project_id): return [ stubs.stub_snapshot(1, display_name='backup1'), stubs.stub_snapshot(2, display_name='backup2'), stubs.stub_snapshot(3, display_name='backup3'), ] self.stubs.Set(db, 'snapshot_get_all_by_project', stub_snapshot_get_all_by_project) req = fakes.HTTPRequest.blank('/v1/fake/snapshots?limit=1\ &offset=1', use_admin_context=is_admin) res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) self.assertEqual(2, res['snapshots'][0]['id']) #admin case list_snapshots_with_limit_and_offset(is_admin=True) #non_admin case list_snapshots_with_limit_and_offset(is_admin=False) def test_admin_list_snapshots_all_tenants(self): req = fakes.HTTPRequest.blank('/v1/fake/snapshots?all_tenants=1', use_admin_context=True) res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(3, len(res['snapshots'])) def test_all_tenants_non_admin_gets_all_tenants(self): req = fakes.HTTPRequest.blank('/v1/fake/snapshots?all_tenants=1') res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) def test_non_admin_get_by_project(self): req = fakes.HTTPRequest.blank('/v1/fake/snapshots') res = self.controller.index(req) self.assertIn('snapshots', res) self.assertEqual(1, len(res['snapshots'])) class SnapshotSerializerTest(test.TestCase): def _verify_snapshot(self, snap, tree): self.assertEqual(tree.tag, 'snapshot') for attr in ('id', 'status', 'size', 'created_at', 'display_name', 'display_description', 'volume_id'): self.assertEqual(str(snap[attr]), tree.get(attr)) def test_snapshot_show_create_serializer(self): serializer = snapshots.SnapshotTemplate() raw_snapshot = dict( id='snap_id', status='snap_status', size=1024, created_at=datetime.datetime.now(), display_name='snap_name', display_description='snap_desc', volume_id='vol_id', ) text = serializer.serialize(dict(snapshot=raw_snapshot)) tree = etree.fromstring(text) self._verify_snapshot(raw_snapshot, tree) def test_snapshot_index_detail_serializer(self): serializer = snapshots.SnapshotsTemplate() raw_snapshots = [dict(id='snap1_id', status='snap1_status', size=1024, created_at=datetime.datetime.now(), display_name='snap1_name', display_description='snap1_desc', volume_id='vol1_id', ), dict(id='snap2_id', status='snap2_status', size=1024, created_at=datetime.datetime.now(), display_name='snap2_name', display_description='snap2_desc', volume_id='vol2_id', )] text = serializer.serialize(dict(snapshots=raw_snapshots)) tree = etree.fromstring(text) self.assertEqual('snapshots', tree.tag) self.assertEqual(len(raw_snapshots), len(tree)) for idx, child in enumerate(tree): self._verify_snapshot(raw_snapshots[idx], child) class SnapshotsUnprocessableEntityTestCase(test.TestCase): """Tests of places we throw 422 Unprocessable Entity.""" def setUp(self): super(SnapshotsUnprocessableEntityTestCase, self).setUp() self.controller = snapshots.SnapshotsController() def _unprocessable_snapshot_create(self, body): req = fakes.HTTPRequest.blank('/v2/fake/snapshots') req.method = 'POST' self.assertRaises(webob.exc.HTTPUnprocessableEntity, self.controller.create, req, body) def test_create_no_body(self): self._unprocessable_snapshot_create(body=None) def test_create_missing_snapshot(self): body = {'foo': {'a': 'b'}} self._unprocessable_snapshot_create(body=body) def test_create_malformed_entity(self): body = {'snapshot': 'string'} self._unprocessable_snapshot_create(body=body) cinder-2014.1.5/cinder/tests/api/test_xmlutil.py0000664000567000056700000006442412540642606022655 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. from lxml import etree from cinder.api import xmlutil from cinder import test class SelectorTest(test.TestCase): obj_for_test = {'test': {'name': 'test', 'values': [1, 2, 3], 'attrs': {'foo': 1, 'bar': 2, 'baz': 3, }, }, } def test_empty_selector(self): sel = xmlutil.Selector() self.assertEqual(len(sel.chain), 0) self.assertEqual(sel(self.obj_for_test), self.obj_for_test) def test_dict_selector(self): sel = xmlutil.Selector('test') self.assertEqual(len(sel.chain), 1) self.assertEqual(sel.chain[0], 'test') self.assertEqual(sel(self.obj_for_test), self.obj_for_test['test']) def test_datum_selector(self): sel = xmlutil.Selector('test', 'name') self.assertEqual(len(sel.chain), 2) self.assertEqual(sel.chain[0], 'test') self.assertEqual(sel.chain[1], 'name') self.assertEqual(sel(self.obj_for_test), 'test') def test_list_selector(self): sel = xmlutil.Selector('test', 'values', 0) self.assertEqual(len(sel.chain), 3) self.assertEqual(sel.chain[0], 'test') self.assertEqual(sel.chain[1], 'values') self.assertEqual(sel.chain[2], 0) self.assertEqual(sel(self.obj_for_test), 1) def test_items_selector(self): sel = xmlutil.Selector('test', 'attrs', xmlutil.get_items) self.assertEqual(len(sel.chain), 3) self.assertEqual(sel.chain[2], xmlutil.get_items) for key, val in sel(self.obj_for_test): self.assertEqual(self.obj_for_test['test']['attrs'][key], val) def test_missing_key_selector(self): sel = xmlutil.Selector('test2', 'attrs') self.assertIsNone(sel(self.obj_for_test)) self.assertRaises(KeyError, sel, self.obj_for_test, True) def test_constant_selector(self): sel = xmlutil.ConstantSelector('Foobar') self.assertEqual(sel.value, 'Foobar') self.assertEqual(sel(self.obj_for_test), 'Foobar') class TemplateElementTest(test.TestCase): def test_element_initial_attributes(self): # Create a template element with some attributes elem = xmlutil.TemplateElement('test', attrib=dict(a=1, b=2, c=3), c=4, d=5, e=6) # Verify all the attributes are as expected expected = dict(a=1, b=2, c=4, d=5, e=6) for k, v in expected.items(): self.assertEqual(elem.attrib[k].chain[0], v) def test_element_get_attributes(self): expected = dict(a=1, b=2, c=3) # Create a template element with some attributes elem = xmlutil.TemplateElement('test', attrib=expected) # Verify that get() retrieves the attributes for k, v in expected.items(): self.assertEqual(elem.get(k).chain[0], v) def test_element_set_attributes(self): attrs = dict(a=None, b='foo', c=xmlutil.Selector('foo', 'bar')) # Create a bare template element with no attributes elem = xmlutil.TemplateElement('test') # Set the attribute values for k, v in attrs.items(): elem.set(k, v) # Now verify what got set self.assertEqual(len(elem.attrib['a'].chain), 1) self.assertEqual(elem.attrib['a'].chain[0], 'a') self.assertEqual(len(elem.attrib['b'].chain), 1) self.assertEqual(elem.attrib['b'].chain[0], 'foo') self.assertEqual(elem.attrib['c'], attrs['c']) def test_element_attribute_keys(self): attrs = dict(a=1, b=2, c=3, d=4) expected = set(attrs.keys()) # Create a template element with some attributes elem = xmlutil.TemplateElement('test', attrib=attrs) # Now verify keys self.assertEqual(set(elem.keys()), expected) def test_element_attribute_items(self): expected = dict(a=xmlutil.Selector(1), b=xmlutil.Selector(2), c=xmlutil.Selector(3)) keys = set(expected.keys()) # Create a template element with some attributes elem = xmlutil.TemplateElement('test', attrib=expected) # Now verify items for k, v in elem.items(): self.assertEqual(expected[k], v) keys.remove(k) # Did we visit all keys? self.assertEqual(len(keys), 0) def test_element_selector_none(self): # Create a template element with no selector elem = xmlutil.TemplateElement('test') self.assertEqual(len(elem.selector.chain), 0) def test_element_selector_string(self): # Create a template element with a string selector elem = xmlutil.TemplateElement('test', selector='test') self.assertEqual(len(elem.selector.chain), 1) self.assertEqual(elem.selector.chain[0], 'test') def test_element_selector(self): sel = xmlutil.Selector('a', 'b') # Create a template element with an explicit selector elem = xmlutil.TemplateElement('test', selector=sel) self.assertEqual(elem.selector, sel) def test_element_subselector_none(self): # Create a template element with no subselector elem = xmlutil.TemplateElement('test') self.assertIsNone(elem.subselector) def test_element_subselector_string(self): # Create a template element with a string subselector elem = xmlutil.TemplateElement('test', subselector='test') self.assertEqual(len(elem.subselector.chain), 1) self.assertEqual(elem.subselector.chain[0], 'test') def test_element_subselector(self): sel = xmlutil.Selector('a', 'b') # Create a template element with an explicit subselector elem = xmlutil.TemplateElement('test', subselector=sel) self.assertEqual(elem.subselector, sel) def test_element_append_child(self): # Create an element elem = xmlutil.TemplateElement('test') # Make sure the element starts off empty self.assertEqual(len(elem), 0) # Create a child element child = xmlutil.TemplateElement('child') # Append the child to the parent elem.append(child) # Verify that the child was added self.assertEqual(len(elem), 1) self.assertEqual(elem[0], child) self.assertIn('child', elem) self.assertEqual(elem['child'], child) # Ensure that multiple children of the same name are rejected child2 = xmlutil.TemplateElement('child') self.assertRaises(KeyError, elem.append, child2) def test_element_extend_children(self): # Create an element elem = xmlutil.TemplateElement('test') # Make sure the element starts off empty self.assertEqual(len(elem), 0) # Create a few children children = [xmlutil.TemplateElement('child1'), xmlutil.TemplateElement('child2'), xmlutil.TemplateElement('child3'), ] # Extend the parent by those children elem.extend(children) # Verify that the children were added self.assertEqual(len(elem), 3) for idx in range(len(elem)): self.assertEqual(children[idx], elem[idx]) self.assertIn(children[idx].tag, elem) self.assertEqual(elem[children[idx].tag], children[idx]) # Ensure that multiple children of the same name are rejected children2 = [xmlutil.TemplateElement('child4'), xmlutil.TemplateElement('child1'), ] self.assertRaises(KeyError, elem.extend, children2) # Also ensure that child4 was not added self.assertEqual(len(elem), 3) self.assertEqual(elem[-1].tag, 'child3') def test_element_insert_child(self): # Create an element elem = xmlutil.TemplateElement('test') # Make sure the element starts off empty self.assertEqual(len(elem), 0) # Create a few children children = [xmlutil.TemplateElement('child1'), xmlutil.TemplateElement('child2'), xmlutil.TemplateElement('child3'), ] # Extend the parent by those children elem.extend(children) # Create a child to insert child = xmlutil.TemplateElement('child4') # Insert it elem.insert(1, child) # Ensure the child was inserted in the right place self.assertEqual(len(elem), 4) children.insert(1, child) for idx in range(len(elem)): self.assertEqual(children[idx], elem[idx]) self.assertIn(children[idx].tag, elem) self.assertEqual(elem[children[idx].tag], children[idx]) # Ensure that multiple children of the same name are rejected child2 = xmlutil.TemplateElement('child2') self.assertRaises(KeyError, elem.insert, 2, child2) def test_element_remove_child(self): # Create an element elem = xmlutil.TemplateElement('test') # Make sure the element starts off empty self.assertEqual(len(elem), 0) # Create a few children children = [xmlutil.TemplateElement('child1'), xmlutil.TemplateElement('child2'), xmlutil.TemplateElement('child3'), ] # Extend the parent by those children elem.extend(children) # Create a test child to remove child = xmlutil.TemplateElement('child2') # Try to remove it self.assertRaises(ValueError, elem.remove, child) # Ensure that no child was removed self.assertEqual(len(elem), 3) # Now remove a legitimate child elem.remove(children[1]) # Ensure that the child was removed self.assertEqual(len(elem), 2) self.assertEqual(elem[0], children[0]) self.assertEqual(elem[1], children[2]) self.assertNotIn('child2', elem) # Ensure the child cannot be retrieved by name def get_key(elem, key): return elem[key] self.assertRaises(KeyError, get_key, elem, 'child2') def test_element_text(self): # Create an element elem = xmlutil.TemplateElement('test') # Ensure that it has no text self.assertIsNone(elem.text) # Try setting it to a string and ensure it becomes a selector elem.text = 'test' self.assertEqual(hasattr(elem.text, 'chain'), True) self.assertEqual(len(elem.text.chain), 1) self.assertEqual(elem.text.chain[0], 'test') # Try resetting the text to None elem.text = None self.assertIsNone(elem.text) # Now make up a selector and try setting the text to that sel = xmlutil.Selector() elem.text = sel self.assertEqual(elem.text, sel) # Finally, try deleting the text and see what happens del elem.text self.assertIsNone(elem.text) def test_apply_attrs(self): # Create a template element attrs = dict(attr1=xmlutil.ConstantSelector(1), attr2=xmlutil.ConstantSelector(2)) tmpl_elem = xmlutil.TemplateElement('test', attrib=attrs) # Create an etree element elem = etree.Element('test') # Apply the template to the element tmpl_elem.apply(elem, None) # Now, verify the correct attributes were set for k, v in elem.items(): self.assertEqual(str(attrs[k].value), v) def test_apply_text(self): # Create a template element tmpl_elem = xmlutil.TemplateElement('test') tmpl_elem.text = xmlutil.ConstantSelector(1) # Create an etree element elem = etree.Element('test') # Apply the template to the element tmpl_elem.apply(elem, None) # Now, verify the text was set self.assertEqual(str(tmpl_elem.text.value), elem.text) def test__render(self): attrs = dict(attr1=xmlutil.ConstantSelector(1), attr2=xmlutil.ConstantSelector(2), attr3=xmlutil.ConstantSelector(3)) # Create a master template element master_elem = xmlutil.TemplateElement('test', attr1=attrs['attr1']) # Create a couple of slave template element slave_elems = [xmlutil.TemplateElement('test', attr2=attrs['attr2']), xmlutil.TemplateElement('test', attr3=attrs['attr3']), ] # Try the render elem = master_elem._render(None, None, slave_elems, None) # Verify the particulars of the render self.assertEqual(elem.tag, 'test') self.assertEqual(len(elem.nsmap), 0) for k, v in elem.items(): self.assertEqual(str(attrs[k].value), v) # Create a parent for the element to be rendered parent = etree.Element('parent') # Try the render again... elem = master_elem._render(parent, None, slave_elems, dict(a='foo')) # Verify the particulars of the render self.assertEqual(len(parent), 1) self.assertEqual(parent[0], elem) self.assertEqual(len(elem.nsmap), 1) self.assertEqual(elem.nsmap['a'], 'foo') def test_render(self): # Create a template element tmpl_elem = xmlutil.TemplateElement('test') tmpl_elem.text = xmlutil.Selector() # Create the object we're going to render obj = ['elem1', 'elem2', 'elem3', 'elem4'] # Try a render with no object elems = tmpl_elem.render(None, None) self.assertEqual(len(elems), 0) # Try a render with one object elems = tmpl_elem.render(None, 'foo') self.assertEqual(len(elems), 1) self.assertEqual(elems[0][0].text, 'foo') self.assertEqual(elems[0][1], 'foo') # Now, try rendering an object with multiple entries parent = etree.Element('parent') elems = tmpl_elem.render(parent, obj) self.assertEqual(len(elems), 4) # Check the results for idx in range(len(obj)): self.assertEqual(elems[idx][0].text, obj[idx]) self.assertEqual(elems[idx][1], obj[idx]) def test_subelement(self): # Try the SubTemplateElement constructor parent = xmlutil.SubTemplateElement(None, 'parent') self.assertEqual(parent.tag, 'parent') self.assertEqual(len(parent), 0) # Now try it with a parent element child = xmlutil.SubTemplateElement(parent, 'child') self.assertEqual(child.tag, 'child') self.assertEqual(len(parent), 1) self.assertEqual(parent[0], child) def test_wrap(self): # These are strange methods, but they make things easier elem = xmlutil.TemplateElement('test') self.assertEqual(elem.unwrap(), elem) self.assertEqual(elem.wrap().root, elem) def test_dyntag(self): obj = ['a', 'b', 'c'] # Create a template element with a dynamic tag tmpl_elem = xmlutil.TemplateElement(xmlutil.Selector()) # Try the render parent = etree.Element('parent') elems = tmpl_elem.render(parent, obj) # Verify the particulars of the render self.assertEqual(len(elems), len(obj)) for idx in range(len(obj)): self.assertEqual(elems[idx][0].tag, obj[idx]) class TemplateTest(test.TestCase): def test_wrap(self): # These are strange methods, but they make things easier elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem) self.assertEqual(tmpl.unwrap(), elem) self.assertEqual(tmpl.wrap(), tmpl) def test__siblings(self): # Set up a basic template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem) # Check that we get the right siblings siblings = tmpl._siblings() self.assertEqual(len(siblings), 1) self.assertEqual(siblings[0], elem) def test__nsmap(self): # Set up a basic template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.Template(elem, nsmap=dict(a="foo")) # Check out that we get the right namespace dictionary nsmap = tmpl._nsmap() self.assertNotEqual(id(nsmap), id(tmpl.nsmap)) self.assertEqual(len(nsmap), 1) self.assertEqual(nsmap['a'], 'foo') def test_master_attach(self): # Set up a master template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.MasterTemplate(elem, 1) # Make sure it has a root but no slaves self.assertEqual(tmpl.root, elem) self.assertEqual(len(tmpl.slaves), 0) # Try to attach an invalid slave bad_elem = xmlutil.TemplateElement('test2') self.assertRaises(ValueError, tmpl.attach, bad_elem) self.assertEqual(len(tmpl.slaves), 0) # Try to attach an invalid and a valid slave good_elem = xmlutil.TemplateElement('test') self.assertRaises(ValueError, tmpl.attach, good_elem, bad_elem) self.assertEqual(len(tmpl.slaves), 0) # Try to attach an inapplicable template class InapplicableTemplate(xmlutil.Template): def apply(self, master): return False inapp_tmpl = InapplicableTemplate(good_elem) tmpl.attach(inapp_tmpl) self.assertEqual(len(tmpl.slaves), 0) # Now try attaching an applicable template tmpl.attach(good_elem) self.assertEqual(len(tmpl.slaves), 1) self.assertEqual(tmpl.slaves[0].root, good_elem) def test_master_copy(self): # Construct a master template elem = xmlutil.TemplateElement('test') tmpl = xmlutil.MasterTemplate(elem, 1, nsmap=dict(a='foo')) # Give it a slave slave = xmlutil.TemplateElement('test') tmpl.attach(slave) # Construct a copy copy = tmpl.copy() # Check to see if we actually managed a copy self.assertNotEqual(tmpl, copy) self.assertEqual(tmpl.root, copy.root) self.assertEqual(tmpl.version, copy.version) self.assertEqual(id(tmpl.nsmap), id(copy.nsmap)) self.assertNotEqual(id(tmpl.slaves), id(copy.slaves)) self.assertEqual(len(tmpl.slaves), len(copy.slaves)) self.assertEqual(tmpl.slaves[0], copy.slaves[0]) def test_slave_apply(self): # Construct a master template elem = xmlutil.TemplateElement('test') master = xmlutil.MasterTemplate(elem, 3) # Construct a slave template with applicable minimum version slave = xmlutil.SlaveTemplate(elem, 2) self.assertEqual(slave.apply(master), True) # Construct a slave template with equal minimum version slave = xmlutil.SlaveTemplate(elem, 3) self.assertEqual(slave.apply(master), True) # Construct a slave template with inapplicable minimum version slave = xmlutil.SlaveTemplate(elem, 4) self.assertEqual(slave.apply(master), False) # Construct a slave template with applicable version range slave = xmlutil.SlaveTemplate(elem, 2, 4) self.assertEqual(slave.apply(master), True) # Construct a slave template with low version range slave = xmlutil.SlaveTemplate(elem, 1, 2) self.assertEqual(slave.apply(master), False) # Construct a slave template with high version range slave = xmlutil.SlaveTemplate(elem, 4, 5) self.assertEqual(slave.apply(master), False) # Construct a slave template with matching version range slave = xmlutil.SlaveTemplate(elem, 3, 3) self.assertEqual(slave.apply(master), True) def test__serialize(self): # Our test object to serialize obj = {'test': {'name': 'foobar', 'values': [1, 2, 3, 4], 'attrs': {'a': 1, 'b': 2, 'c': 3, 'd': 4, }, 'image': {'name': 'image_foobar', 'id': 42, }, }, } # Set up our master template root = xmlutil.TemplateElement('test', selector='test', name='name') value = xmlutil.SubTemplateElement(root, 'value', selector='values') value.text = xmlutil.Selector() attrs = xmlutil.SubTemplateElement(root, 'attrs', selector='attrs') xmlutil.SubTemplateElement(attrs, 'attr', selector=xmlutil.get_items, key=0, value=1) master = xmlutil.MasterTemplate(root, 1, nsmap=dict(f='foo')) # Set up our slave template root_slave = xmlutil.TemplateElement('test', selector='test') image = xmlutil.SubTemplateElement(root_slave, 'image', selector='image', id='id') image.text = xmlutil.Selector('name') slave = xmlutil.SlaveTemplate(root_slave, 1, nsmap=dict(b='bar')) # Attach the slave to the master... master.attach(slave) # Try serializing our object siblings = master._siblings() nsmap = master._nsmap() result = master._serialize(None, obj, siblings, nsmap) # Now we get to manually walk the element tree... self.assertEqual(result.tag, 'test') self.assertEqual(len(result.nsmap), 2) self.assertEqual(result.nsmap['f'], 'foo') self.assertEqual(result.nsmap['b'], 'bar') self.assertEqual(result.get('name'), obj['test']['name']) for idx, val in enumerate(obj['test']['values']): self.assertEqual(result[idx].tag, 'value') self.assertEqual(result[idx].text, str(val)) idx += 1 self.assertEqual(result[idx].tag, 'attrs') for attr in result[idx]: self.assertEqual(attr.tag, 'attr') self.assertEqual(attr.get('value'), str(obj['test']['attrs'][attr.get('key')])) idx += 1 self.assertEqual(result[idx].tag, 'image') self.assertEqual(result[idx].get('id'), str(obj['test']['image']['id'])) self.assertEqual(result[idx].text, obj['test']['image']['name']) def test_serialize_with_delimiter(self): # Our test object to serialize obj = {'test': {'scope0:key1': 'Value1', 'scope0:scope1:key2': 'Value2', 'scope0:scope1:scope2:key3': 'Value3' }} # Set up our master template root = xmlutil.TemplateElement('test', selector='test') key1 = xmlutil.SubTemplateElement(root, 'scope0:key1', selector='scope0:key1') key1.text = xmlutil.Selector() key2 = xmlutil.SubTemplateElement(root, 'scope0:scope1:key2', selector='scope0:scope1:key2') key2.text = xmlutil.Selector() key3 = xmlutil.SubTemplateElement(root, 'scope0:scope1:scope2:key3', selector='scope0:scope1:scope2:key3') key3.text = xmlutil.Selector() serializer = xmlutil.MasterTemplate(root, 1) xml_list = [] xml_list.append("") xml_list.append("Value1") xml_list.append("Value2Value3") xml_list.append("") expected_xml = ''.join(xml_list) result = serializer.serialize(obj) result = result.replace('\n', '').replace(' ', '') self.assertEqual(result, expected_xml) class MasterTemplateBuilder(xmlutil.TemplateBuilder): def construct(self): elem = xmlutil.TemplateElement('test') return xmlutil.MasterTemplate(elem, 1) class SlaveTemplateBuilder(xmlutil.TemplateBuilder): def construct(self): elem = xmlutil.TemplateElement('test') return xmlutil.SlaveTemplate(elem, 1) class TemplateBuilderTest(test.TestCase): def test_master_template_builder(self): # Make sure the template hasn't been built yet self.assertIsNone(MasterTemplateBuilder._tmpl) # Now, construct the template tmpl1 = MasterTemplateBuilder() # Make sure that there is a template cached... self.assertIsNotNone(MasterTemplateBuilder._tmpl) # Make sure it wasn't what was returned... self.assertNotEqual(MasterTemplateBuilder._tmpl, tmpl1) # Make sure it doesn't get rebuilt cached = MasterTemplateBuilder._tmpl tmpl2 = MasterTemplateBuilder() self.assertEqual(MasterTemplateBuilder._tmpl, cached) # Make sure we're always getting fresh copies self.assertNotEqual(tmpl1, tmpl2) # Make sure we can override the copying behavior tmpl3 = MasterTemplateBuilder(False) self.assertEqual(MasterTemplateBuilder._tmpl, tmpl3) def test_slave_template_builder(self): # Make sure the template hasn't been built yet self.assertIsNone(SlaveTemplateBuilder._tmpl) # Now, construct the template tmpl1 = SlaveTemplateBuilder() # Make sure there is a template cached... self.assertIsNotNone(SlaveTemplateBuilder._tmpl) # Make sure it was what was returned... self.assertEqual(SlaveTemplateBuilder._tmpl, tmpl1) # Make sure it doesn't get rebuilt tmpl2 = SlaveTemplateBuilder() self.assertEqual(SlaveTemplateBuilder._tmpl, tmpl1) # Make sure we're always getting the cached copy self.assertEqual(tmpl1, tmpl2) class MiscellaneousXMLUtilTests(test.TestCase): def test_make_flat_dict(self): expected_xml = ("\n" 'foobar') root = xmlutil.make_flat_dict('wrapper') tmpl = xmlutil.MasterTemplate(root, 1) result = tmpl.serialize(dict(wrapper=dict(a='foo', b='bar'))) self.assertEqual(result, expected_xml) cinder-2014.1.5/cinder/tests/api/contrib/0000775000567000056700000000000012540643114021167 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/api/contrib/test_snapshot_actions.py0000664000567000056700000000534212540642606026170 0ustar jenkinsjenkins00000000000000# Copyright 2013, Red Hat, Inc. # # 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. import webob from cinder import db from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs class SnapshotActionsTest(test.TestCase): def setUp(self): super(SnapshotActionsTest, self).setUp() def test_update_snapshot_status(self): self.stubs.Set(db, 'snapshot_get', stub_snapshot_get) self.stubs.Set(db, 'snapshot_update', stub_snapshot_update) body = {'os-update_snapshot_status': {'status': 'available'}} req = webob.Request.blank('/v2/fake/snapshots/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_update_snapshot_status_invalid_status(self): self.stubs.Set(db, 'snapshot_get', stub_snapshot_get) body = {'os-update_snapshot_status': {'status': 'in-use'}} req = webob.Request.blank('/v2/fake/snapshots/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_update_snapshot_status_without_status(self): self.stubs.Set(db, 'snapshot_get', stub_snapshot_get) body = {'os-update_snapshot_status': {}} req = webob.Request.blank('/v2/fake/snapshots/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def stub_snapshot_get(context, snapshot_id): snapshot = stubs.stub_snapshot(snapshot_id) if snapshot_id == 3: snapshot['status'] = 'error' elif snapshot_id == 1: snapshot['status'] = 'creating' elif snapshot_id == 7: snapshot['status'] = 'available' else: snapshot['status'] = 'creating' return snapshot def stub_snapshot_update(self, context, id, **kwargs): pass cinder-2014.1.5/cinder/tests/api/contrib/test_volume_tenant_attribute.py0000664000567000056700000001157012540642606027554 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. import datetime import json import uuid from lxml import etree import webob from cinder import context from cinder import test from cinder.tests.api import fakes from cinder import volume PROJECT_ID = '88fd1da4-f464-4a87-9ce5-26f2f40743b9' def fake_volume_get(*args, **kwargs): return { 'id': 'fake', 'host': 'host001', 'status': 'available', 'size': 5, 'availability_zone': 'somewhere', 'created_at': datetime.datetime.now(), 'attach_status': None, 'display_name': 'anothervolume', 'display_description': 'Just another volume!', 'volume_type_id': None, 'snapshot_id': None, 'project_id': PROJECT_ID, 'migration_status': None, '_name_id': 'fake2', } def fake_volume_get_all(*args, **kwargs): return [fake_volume_get()] def app(): # no auth, just let environ['cinder.context'] pass through api = fakes.router.APIRouter() mapper = fakes.urlmap.URLMap() mapper['/v2'] = api return mapper class VolumeTenantAttributeTest(test.TestCase): def setUp(self): super(VolumeTenantAttributeTest, self).setUp() self.stubs.Set(volume.API, 'get', fake_volume_get) self.stubs.Set(volume.API, 'get_all', fake_volume_get_all) self.UUID = uuid.uuid4() def test_get_volume_allowed(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volume'] self.assertEqual(vol['os-vol-tenant-attr:tenant_id'], PROJECT_ID) def test_get_volume_unallowed(self): ctx = context.RequestContext('non-admin', 'fake', False) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volume'] self.assertNotIn('os-vol-tenant-attr:tenant_id', vol) def test_list_detail_volumes_allowed(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertEqual(vol[0]['os-vol-tenant-attr:tenant_id'], PROJECT_ID) def test_list_detail_volumes_unallowed(self): ctx = context.RequestContext('non-admin', 'fake', False) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertNotIn('os-vol-tenant-attr:tenant_id', vol[0]) def test_list_simple_volumes_no_tenant_id(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertNotIn('os-vol-tenant-attr:tenant_id', vol[0]) def test_get_volume_xml(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.accept = 'application/xml' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = etree.XML(res.body) tenant_key = ('{http://docs.openstack.org/volume/ext/' 'volume_tenant_attribute/api/v1}tenant_id') self.assertEqual(vol.get(tenant_key), PROJECT_ID) def test_list_volumes_detail_xml(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.accept = 'application/xml' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = list(etree.XML(res.body))[0] tenant_key = ('{http://docs.openstack.org/volume/ext/' 'volume_tenant_attribute/api/v1}tenant_id') self.assertEqual(vol.get(tenant_key), PROJECT_ID) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_type_encryption.py0000664000567000056700000006017412540642606027437 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. import json import webob from cinder import context from cinder import db from cinder import test from cinder.tests.api import fakes from cinder.tests import fake_notifier def return_volume_type_encryption(context, volume_type_id): return stub_volume_type_encryption() def stub_volume_type_encryption(): values = { 'cipher': 'fake_cipher', 'control_location': 'front-end', 'key_size': 256, 'provider': 'fake_provider', 'volume_type_id': 'fake_type_id', } return values def volume_type_encryption_get(context, volume_type_id): pass class VolumeTypeEncryptionTest(test.TestCase): _default_volume_type = { 'id': 'fake_type_id', 'name': 'fake_type', } def setUp(self): super(VolumeTypeEncryptionTest, self).setUp() self.flags(host='fake') self.api_path = '/v2/fake/os-volume-types/1/encryption' """to reset notifier drivers left over from other api/contrib tests""" fake_notifier.reset() self.addCleanup(fake_notifier.reset) def _get_response(self, volume_type, admin=True, url='/v2/fake/types/%s/encryption', req_method='GET', req_body=None, req_headers=None): ctxt = context.RequestContext('fake', 'fake', is_admin=admin) req = webob.Request.blank(url % volume_type['id']) req.method = req_method req.body = req_body if req_headers: req.headers['Content-Type'] = req_headers return req.get_response(fakes.wsgi_app(fake_auth_context=ctxt)) def _create_type_and_encryption(self, volume_type, body=None): if body is None: body = {"encryption": stub_volume_type_encryption()} db.volume_type_create(context.get_admin_context(), volume_type) return self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') def test_index(self): self.stubs.Set(db, 'volume_type_encryption_get', return_volume_type_encryption) volume_type = self._default_volume_type self._create_type_and_encryption(volume_type) res = self._get_response(volume_type) self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) expected = stub_volume_type_encryption() self.assertEqual(expected, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_index_invalid_type(self): volume_type = self._default_volume_type res = self._get_response(volume_type) self.assertEqual(404, res.status_code) res_dict = json.loads(res.body) expected = { 'itemNotFound': { 'code': 404, 'message': ('Volume type %s could not be found.' % volume_type['id']) } } self.assertEqual(expected, res_dict) def test_show_key_size(self): volume_type = self._default_volume_type self._create_type_and_encryption(volume_type) res = self._get_response(volume_type, url='/v2/fake/types/%s/encryption/key_size') res_dict = json.loads(res.body) self.assertEqual(200, res.status_code) self.assertEqual(256, res_dict['key_size']) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_show_provider(self): volume_type = self._default_volume_type self._create_type_and_encryption(volume_type) res = self._get_response(volume_type, url='/v2/fake/types/%s/encryption/provider') res_dict = json.loads(res.body) self.assertEqual(200, res.status_code) self.assertEqual('fake_provider', res_dict['provider']) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_show_item_not_found(self): volume_type = self._default_volume_type self._create_type_and_encryption(volume_type) res = self._get_response(volume_type, url='/v2/fake/types/%s/encryption/fake') res_dict = json.loads(res.body) self.assertEqual(404, res.status_code) expected = { 'itemNotFound': { 'code': 404, 'message': ('The resource could not be found.') } } self.assertEqual(expected, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def _create(self, cipher, control_location, key_size, provider): volume_type = self._default_volume_type db.volume_type_create(context.get_admin_context(), volume_type) body = {"encryption": {'cipher': cipher, 'control_location': control_location, 'key_size': key_size, 'provider': provider, 'volume_type_id': volume_type['id']}} self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) res = self._get_response(volume_type) res_dict = json.loads(res.body) self.assertEqual(200, res.status_code) # Confirm that volume type has no encryption information # before create. self.assertEqual('{}', res.body) # Create encryption specs for the volume type # with the defined body. res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res_dict = json.loads(res.body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) # check response self.assertIn('encryption', res_dict) self.assertEqual(cipher, res_dict['encryption']['cipher']) self.assertEqual(control_location, res_dict['encryption']['control_location']) self.assertEqual(key_size, res_dict['encryption']['key_size']) self.assertEqual(provider, res_dict['encryption']['provider']) self.assertEqual(volume_type['id'], res_dict['encryption']['volume_type_id']) # check database encryption = db.volume_type_encryption_get(context.get_admin_context(), volume_type['id']) self.assertIsNotNone(encryption) self.assertEqual(cipher, encryption['cipher']) self.assertEqual(key_size, encryption['key_size']) self.assertEqual(provider, encryption['provider']) self.assertEqual(volume_type['id'], encryption['volume_type_id']) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_create_json(self): self._create('fake_cipher', 'front-end', 128, 'fake_encryptor') def test_create_xml(self): volume_type = self._default_volume_type db.volume_type_create(context.get_admin_context(), volume_type) ctxt = context.RequestContext('fake', 'fake', is_admin=True) req = webob.Request.blank('/v2/fake/types/%s/encryption' % volume_type['id']) req.method = 'POST' req.body = ('') req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctxt)) self.assertEqual(res.status_int, 200) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_create_invalid_volume_type(self): volume_type = self._default_volume_type body = {"encryption": stub_volume_type_encryption()} # Attempt to create encryption without first creating type res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res_dict = json.loads(res.body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertEqual(404, res.status_code) expected = { 'itemNotFound': { 'code': 404, 'message': ('Volume type %s could not be found.' % volume_type['id']) } } self.assertEqual(expected, res_dict) def test_create_encryption_type_exists(self): volume_type = self._default_volume_type body = {"encryption": stub_volume_type_encryption()} self._create_type_and_encryption(volume_type, body) # Try to create encryption specs for a volume type # that already has them. res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res_dict = json.loads(res.body) expected = { 'badRequest': { 'code': 400, 'message': ('Volume type encryption for type ' 'fake_type_id already exists.') } } self.assertEqual(expected, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_create_volume_exists(self): # Create the volume type and a volume with the volume type. volume_type = self._default_volume_type db.volume_type_create(context.get_admin_context(), volume_type) db.volume_create(context.get_admin_context(), {'id': 'fake_id', 'display_description': 'Test Desc', 'size': 20, 'status': 'creating', 'instance_uuid': None, 'host': 'dummy', 'volume_type_id': volume_type['id']}) body = {"encryption": {'cipher': 'cipher', 'key_size': 128, 'control_location': 'front-end', 'provider': 'fake_provider', 'volume_type_id': volume_type['id']}} # Try to create encryption specs for a volume type # with a volume. res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res_dict = json.loads(res.body) expected = { 'badRequest': { 'code': 400, 'message': ('Cannot create encryption specs. ' 'Volume type in use.') } } self.assertEqual(expected, res_dict) db.volume_destroy(context.get_admin_context(), 'fake_id') db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def _encryption_create_bad_body(self, body, msg='Create body is not valid.'): volume_type = self._default_volume_type db.volume_type_create(context.get_admin_context(), volume_type) res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res_dict = json.loads(res.body) expected = { 'badRequest': { 'code': 400, 'message': (msg) } } self.assertEqual(expected, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_create_no_body(self): self._encryption_create_bad_body(body=None) def test_create_malformed_entity(self): body = {'encryption': 'string'} self._encryption_create_bad_body(body=body) def test_create_negative_key_size(self): body = {"encryption": {'cipher': 'cipher', 'key_size': -128, 'provider': 'fake_provider', 'volume_type_id': 'volume_type'}} msg = 'Invalid input received: key_size must be non-negative' self._encryption_create_bad_body(body=body, msg=msg) def test_create_none_key_size(self): self._create('fake_cipher', 'front-end', None, 'fake_encryptor') def test_create_invalid_control_location(self): body = {"encryption": {'cipher': 'cipher', 'control_location': 'fake_control', 'provider': 'fake_provider', 'volume_type_id': 'volume_type'}} msg = ("Invalid input received: Valid control location are: " "['front-end', 'back-end']") self._encryption_create_bad_body(body=body, msg=msg) def test_create_no_provider(self): body = {"encryption": {'cipher': 'cipher', 'volume_type_id': 'volume_type'}} msg = ("Invalid input received: provider must be defined") self._encryption_create_bad_body(body=body, msg=msg) def test_delete(self): volume_type = self._default_volume_type db.volume_type_create(context.get_admin_context(), volume_type) # Test that before create, there's nothing with a get res = self._get_response(volume_type) self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) self.assertEqual({}, res_dict) body = {"encryption": {'cipher': 'cipher', 'key_size': 128, 'control_location': 'front-end', 'provider': 'fake_provider', 'volume_type_id': volume_type['id']}} # Create, and test that get returns something res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res_dict = json.loads(res.body) res = self._get_response(volume_type, req_method='GET', req_headers='application/json', url='/v2/fake/types/%s/encryption') self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) self.assertEqual(volume_type['id'], res_dict['volume_type_id']) # Delete, and test that get returns nothing res = self._get_response(volume_type, req_method='DELETE', req_headers='application/json', url='/v2/fake/types/%s/encryption/provider') self.assertEqual(202, res.status_code) self.assertEqual(0, len(res.body)) res = self._get_response(volume_type, req_method='GET', req_headers='application/json', url='/v2/fake/types/%s/encryption') self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) self.assertEqual({}, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_delete_with_volume_in_use(self): # Create the volume type volume_type = self._default_volume_type db.volume_type_create(context.get_admin_context(), volume_type) body = {"encryption": {'cipher': 'cipher', 'key_size': 128, 'control_location': 'front-end', 'provider': 'fake_provider', 'volume_type_id': volume_type['id']}} # Create encryption with volume type, and test with GET res = self._get_response(volume_type, req_method='POST', req_body=json.dumps(body), req_headers='application/json') res = self._get_response(volume_type, req_method='GET', req_headers='application/json', url='/v2/fake/types/%s/encryption') self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) self.assertEqual(volume_type['id'], res_dict['volume_type_id']) # Create volumes with the volume type db.volume_create(context.get_admin_context(), {'id': 'fake_id', 'display_description': 'Test Desc', 'size': 20, 'status': 'creating', 'instance_uuid': None, 'host': 'dummy', 'volume_type_id': volume_type['id']}) db.volume_create(context.get_admin_context(), {'id': 'fake_id2', 'display_description': 'Test Desc2', 'size': 2, 'status': 'creating', 'instance_uuid': None, 'host': 'dummy', 'volume_type_id': volume_type['id']}) # Delete, and test that there is an error since volumes exist res = self._get_response(volume_type, req_method='DELETE', req_headers='application/json', url='/v2/fake/types/%s/encryption/provider') self.assertEqual(400, res.status_code) res_dict = json.loads(res.body) expected = { 'badRequest': { 'code': 400, 'message': 'Cannot delete encryption specs. ' 'Volume type in use.' } } self.assertEqual(expected, res_dict) # Delete the volumes db.volume_destroy(context.get_admin_context(), 'fake_id') db.volume_destroy(context.get_admin_context(), 'fake_id2') # Delete, and test that get returns nothing res = self._get_response(volume_type, req_method='DELETE', req_headers='application/json', url='/v2/fake/types/%s/encryption/provider') self.assertEqual(202, res.status_code) self.assertEqual(0, len(res.body)) res = self._get_response(volume_type, req_method='GET', req_headers='application/json', url='/v2/fake/types/%s/encryption') self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) self.assertEqual({}, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_update_item(self): volume_type = self._default_volume_type # Create Encryption Specs create_body = {"encryption": {'cipher': 'cipher', 'control_location': 'front-end', 'key_size': 128, 'provider': 'fake_provider', 'volume_type_id': volume_type['id']}} self._create_type_and_encryption(volume_type, create_body) # Update Encryption Specs update_body = {"encryption": {'key_size': 512, 'provider': 'fake_provider2'}} res = self.\ _get_response(volume_type, req_method='PUT', req_body=json.dumps(update_body), req_headers='application/json', url='/v2/fake/types/%s/encryption/fake_type_id') res_dict = json.loads(res.body) self.assertEqual(512, res_dict['encryption']['key_size']) self.assertEqual('fake_provider2', res_dict['encryption']['provider']) # Get Encryption Specs res = self._get_response(volume_type) res_dict = json.loads(res.body) # Confirm Encryption Specs self.assertEqual(512, res_dict['key_size']) self.assertEqual('fake_provider2', res_dict['provider']) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def _encryption_update_bad_body(self, update_body, msg): # Create Volume Type and Encryption volume_type = self._default_volume_type res = self._create_type_and_encryption(volume_type) # Update Encryption res = self.\ _get_response(volume_type, req_method='PUT', req_body=json.dumps(update_body), req_headers='application/json', url='/v2/fake/types/%s/encryption/fake_type_id') res_dict = json.loads(res.body) expected = { 'badRequest': { 'code': 400, 'message': (msg) } } # Confirm Failure self.assertEqual(expected, res_dict) db.volume_type_destroy(context.get_admin_context(), volume_type['id']) def test_update_too_many_items(self): update_body = {"encryption": {'key_size': 512}, "encryption2": {'key_size': 256}} msg = 'Request body contains too many items.' self._encryption_update_bad_body(update_body, msg) def test_update_key_size_non_integer(self): update_body = {"encryption": {'key_size': 'abc'}} msg = 'Invalid input received: key_size must be an integer' self._encryption_update_bad_body(update_body, msg) def test_update_item_invalid_body(self): update_body = {"key_size": "value1"} msg = 'Update body is not valid. It must contain "encryption."' self._encryption_update_bad_body(update_body, msg) def _encryption_empty_update(self, update_body): msg = 'Request body empty.' self._encryption_update_bad_body(update_body, msg) def test_update_no_body(self): self._encryption_empty_update(update_body=None) def test_update_empty_body(self): self._encryption_empty_update(update_body={}) def test_update_with_volume_in_use(self): # Create the volume type and encryption volume_type = self._default_volume_type self._create_type_and_encryption(volume_type) # Create a volume with the volume type db.volume_create(context.get_admin_context(), {'id': 'fake_id', 'display_description': 'Test Desc', 'size': 20, 'status': 'creating', 'instance_uuid': None, 'host': 'dummy', 'volume_type_id': volume_type['id']}) # Get the Encryption res = self._get_response(volume_type) self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) self.assertEqual(volume_type['id'], res_dict['volume_type_id']) # Update, and test that there is an error since volumes exist update_body = {"encryption": {'key_size': 512}} res = self.\ _get_response(volume_type, req_method='PUT', req_body=json.dumps(update_body), req_headers='application/json', url='/v2/fake/types/%s/encryption/fake_type_id') self.assertEqual(400, res.status_code) res_dict = json.loads(res.body) expected = { 'badRequest': { 'code': 400, 'message': 'Cannot update encryption specs. ' 'Volume type in use.' } } self.assertEqual(expected, res_dict) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_unmanage.py0000775000567000056700000001432012540642606025772 0ustar jenkinsjenkins00000000000000# 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. import mock import webob from cinder import context from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes # This list of fake volumes is used by our tests. Each is configured in a # slightly different way, and includes only the properties that are required # for these particular tests to function correctly. snapshot_vol_id = 'ffffffff-0000-ffff-0000-fffffffffffd' detached_vol_id = 'ffffffff-0000-ffff-0000-fffffffffffe' attached_vol_id = 'ffffffff-0000-ffff-0000-ffffffffffff' bad_vol_id = 'ffffffff-0000-ffff-0000-fffffffffff0' vols = {snapshot_vol_id: {'id': snapshot_vol_id, 'status': 'available', 'attach_status': 'detached', 'host': 'fake_host', 'project_id': 'fake_project', 'migration_status': None, 'encryption_key_id': None}, detached_vol_id: {'id': detached_vol_id, 'status': 'available', 'attach_status': 'detached', 'host': 'fake_host', 'project_id': 'fake_project', 'migration_status': None, 'encryption_key_id': None}, attached_vol_id: {'id': attached_vol_id, 'status': 'available', 'attach_status': 'attached', 'host': 'fake_host', 'project_id': 'fake_project', 'migration_status': None, 'encryption_key_id': None} } def app(): # no auth, just let environ['cinder.context'] pass through api = fakes.router.APIRouter() mapper = fakes.urlmap.URLMap() mapper['/v2'] = api return mapper def api_get(self, context, volume_id): """Replacement for cinder.volume.api.API.get. We stub the cinder.volume.api.API.get method to check for the existence of volume_id in our list of fake volumes and raise an exception if the specified volume ID is not in our list. """ vol = vols.get(volume_id, None) if not vol: raise exception.NotFound return vol def db_snapshot_get_all_for_volume(context, volume_id): """Replacement for cinder.db.snapshot_get_all_for_volume. We stub the cinder.db.snapshot_get_all_for_volume method because when we go to unmanage a volume, the code checks for snapshots and won't unmanage volumes with snapshots. For these tests, only the snapshot_vol_id reports any snapshots. The delete code just checks for array length, doesn't inspect the contents. """ if volume_id == snapshot_vol_id: return ['fake_snapshot'] return [] @mock.patch('cinder.volume.api.API.get', api_get) @mock.patch('cinder.db.snapshot_get_all_for_volume', db_snapshot_get_all_for_volume) class VolumeUnmanageTest(test.TestCase): """Test cases for cinder/api/contrib/volume_unmanage.py The API extension adds an action to volumes, "os-unmanage", which will effectively issue a delete operation on the volume, but with a flag set that means that a different method will be invoked on the driver, so that the volume is not actually deleted in the storage backend. In this set of test cases, we are ensuring that the code correctly parses the request structure and raises the correct exceptions when things are not right, and calls down into cinder.volume.api.API.delete with the correct arguments. """ def setUp(self): super(VolumeUnmanageTest, self).setUp() def _get_resp(self, volume_id): """Helper to build an os-unmanage req for the specified volume_id.""" req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.environ['cinder.context'] = context.RequestContext('admin', 'fake', True) body = {'os-unmanage': ''} req.body = jsonutils.dumps(body) res = req.get_response(app()) return res @mock.patch('cinder.db.volume_update') @mock.patch('cinder.volume.rpcapi.VolumeAPI.delete_volume') def test_unmanage_volume_ok(self, mock_rpcapi, mock_db): """Return success for valid and unattached volume.""" res = self._get_resp(detached_vol_id) # volume_update is (context, id, new_data) self.assertEqual(mock_db.call_count, 1) self.assertEqual(len(mock_db.call_args[0]), 3, mock_db.call_args) self.assertEqual(mock_db.call_args[0][1], detached_vol_id) # delete_volume is (context, status, unmanageOnly) self.assertEqual(mock_rpcapi.call_count, 1) self.assertEqual(len(mock_rpcapi.call_args[0]), 3) self.assertEqual(mock_rpcapi.call_args[0][2], True) self.assertEqual(res.status_int, 202, res) def test_unmanage_volume_bad_volume_id(self): """Return 404 if the volume does not exist.""" res = self._get_resp(bad_vol_id) self.assertEqual(res.status_int, 404, res) def test_unmanage_volume_attached_(self): """Return 400 if the volume exists but is attached.""" res = self._get_resp(attached_vol_id) self.assertEqual(res.status_int, 400, res) def test_unmanage_volume_with_snapshots(self): """Return 400 if the volume exists but has snapshots.""" res = self._get_resp(snapshot_vol_id) self.assertEqual(res.status_int, 400, res) cinder-2014.1.5/cinder/tests/api/contrib/test_qos_specs_manage.py0000664000567000056700000005562312540642606026127 0ustar jenkinsjenkins00000000000000# Copyright 2013 eBay Inc. # Copyright 2013 OpenStack Foundation # All Rights Reserved. # # 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. from xml.dom import minidom import webob from cinder.api.contrib import qos_specs_manage from cinder import exception from cinder import test from cinder.tests.api import fakes from cinder.tests import fake_notifier from cinder.volume import qos_specs def stub_qos_specs(id): res = dict(name='qos_specs_' + str(id)) res.update(dict(consumer='back-end')) res.update(dict(id=str(id))) specs = {"key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} res.update(dict(specs=specs)) return res def stub_qos_associates(id): return [{ 'association_type': 'volume_type', 'name': 'FakeVolTypeName', 'id': 'FakeVolTypeID'}] def return_qos_specs_get_all(context): return [ stub_qos_specs(1), stub_qos_specs(2), stub_qos_specs(3), ] def return_qos_specs_get_qos_specs(context, id): if id == "777": raise exception.QoSSpecsNotFound(specs_id=id) return stub_qos_specs(int(id)) def return_qos_specs_delete(context, id, force): if id == "777": raise exception.QoSSpecsNotFound(specs_id=id) elif id == "666": raise exception.QoSSpecsInUse(specs_id=id) pass def return_qos_specs_delete_keys(context, id, keys): if id == "777": raise exception.QoSSpecsNotFound(specs_id=id) if 'foo' in keys: raise exception.QoSSpecsKeyNotFound(specs_id=id, specs_key='foo') def return_qos_specs_update(context, id, specs): if id == "777": raise exception.QoSSpecsNotFound(specs_id=id) elif id == "888": raise exception.InvalidQoSSpecs(reason=id) elif id == "999": raise exception.QoSSpecsUpdateFailed(specs_id=id, qos_specs=specs) pass def return_qos_specs_create(context, name, specs): if name == "666": raise exception.QoSSpecsExists(specs_id=name) elif name == "555": raise exception.QoSSpecsCreateFailed(name=id, qos_specs=specs) pass def return_qos_specs_get_by_name(context, name): if name == "777": raise exception.QoSSpecsNotFound(specs_id=name) return stub_qos_specs(int(name.split("_")[2])) def return_get_qos_associations(context, id): if id == "111": raise exception.QoSSpecsNotFound(specs_id=id) elif id == "222": raise exception.CinderException() return stub_qos_associates(id) def return_associate_qos_specs(context, id, type_id): if id == "111": raise exception.QoSSpecsNotFound(specs_id=id) elif id == "222": raise exception.QoSSpecsAssociateFailed(specs_id=id, type_id=type_id) elif id == "333": raise exception.QoSSpecsDisassociateFailed(specs_id=id, type_id=type_id) if type_id == "1234": raise exception.VolumeTypeNotFound( volume_type_id=type_id) pass def return_disassociate_all(context, id): if id == "111": raise exception.QoSSpecsNotFound(specs_id=id) elif id == "222": raise exception.QoSSpecsDisassociateFailed(specs_id=id, type_id=None) class QoSSpecManageApiTest(test.TestCase): def setUp(self): super(QoSSpecManageApiTest, self).setUp() self.flags(host='fake') self.controller = qos_specs_manage.QoSSpecsController() #reset notifier drivers left over from other api/contrib tests # NOTE(flaper87) WTF? ^^^^ Cleanups should happen in each test, # not the purpose of this patch, though. fake_notifier.reset() self.addCleanup(fake_notifier.reset) def test_index(self): self.stubs.Set(qos_specs, 'get_all_specs', return_qos_specs_get_all) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs') res = self.controller.index(req) self.assertEqual(3, len(res['qos_specs'])) names = set() for item in res['qos_specs']: self.assertEqual('value1', item['specs']['key1']) names.add(item['name']) expected_names = ['qos_specs_1', 'qos_specs_2', 'qos_specs_3'] self.assertEqual(names, set(expected_names)) def test_index_xml_response(self): self.stubs.Set(qos_specs, 'get_all_specs', return_qos_specs_get_all) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs') res = self.controller.index(req) req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) qos_specs_response = dom.getElementsByTagName('qos_spec') names = set() for qos_spec in qos_specs_response: name = qos_spec.getAttribute('name') names.add(name) expected_names = ['qos_specs_1', 'qos_specs_2', 'qos_specs_3'] self.assertEqual(names, set(expected_names)) def test_qos_specs_delete(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'delete', return_qos_specs_delete) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/1') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.controller.delete(req, 1) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_qos_specs_delete_not_found(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'delete', return_qos_specs_delete) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/777') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, '777') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_qos_specs_delete_inuse(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'delete', return_qos_specs_delete) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/666') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete, req, '666') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_qos_specs_delete_inuse_force(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'delete', return_qos_specs_delete) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/666?force=True') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.delete, req, '666') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_qos_specs_delete_keys(self): self.stubs.Set(qos_specs, 'delete_keys', return_qos_specs_delete_keys) body = {"keys": ['bar', 'zoo']} req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/666/delete_keys') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.controller.delete_keys(req, '666', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_qos_specs_delete_keys_qos_notfound(self): self.stubs.Set(qos_specs, 'delete_keys', return_qos_specs_delete_keys) body = {"keys": ['bar', 'zoo']} req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/777/delete_keys') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete_keys, req, '777', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_qos_specs_delete_keys_badkey(self): self.stubs.Set(qos_specs, 'delete_keys', return_qos_specs_delete_keys) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/666/delete_keys') body = {"keys": ['foo', 'zoo']} self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.delete_keys, req, '666', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_create(self): self.stubs.Set(qos_specs, 'create', return_qos_specs_create) self.stubs.Set(qos_specs, 'get_qos_specs_by_name', return_qos_specs_get_by_name) body = {"qos_specs": {"name": "qos_specs_1", "key1": "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/qos-specs') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) res_dict = self.controller.create(req, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) self.assertEqual('qos_specs_1', res_dict['qos_specs']['name']) def test_create_conflict(self): self.stubs.Set(qos_specs, 'create', return_qos_specs_create) self.stubs.Set(qos_specs, 'get_qos_specs_by_name', return_qos_specs_get_by_name) body = {"qos_specs": {"name": "666", "key1": "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/qos-specs') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(webob.exc.HTTPConflict, self.controller.create, req, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_create_failed(self): self.stubs.Set(qos_specs, 'create', return_qos_specs_create) self.stubs.Set(qos_specs, 'get_qos_specs_by_name', return_qos_specs_get_by_name) body = {"qos_specs": {"name": "555", "key1": "value1"}} req = fakes.HTTPRequest.blank('/v2/fake/qos-specs') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.create, req, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def _create_qos_specs_bad_body(self, body): req = fakes.HTTPRequest.blank('/v2/fake/qos-specs') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, body) def test_create_no_body(self): self._create_qos_specs_bad_body(body=None) def test_create_missing_specs_name(self): body = {'foo': {'a': 'b'}} self._create_qos_specs_bad_body(body=body) def test_create_malformed_entity(self): body = {'qos_specs': 'string'} self._create_qos_specs_bad_body(body=body) def test_update(self): self.stubs.Set(qos_specs, 'update', return_qos_specs_update) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/555') body = {'qos_specs': {'key1': 'value1', 'key2': 'value2'}} res = self.controller.update(req, '555', body) self.assertDictMatch(res, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_update_not_found(self): self.stubs.Set(qos_specs, 'update', return_qos_specs_update) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/777') body = {'qos_specs': {'key1': 'value1', 'key2': 'value2'}} self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, req, '777', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_update_invalid_input(self): self.stubs.Set(qos_specs, 'update', return_qos_specs_update) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/888') body = {'qos_specs': {'key1': 'value1', 'key2': 'value2'}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, '888', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_update_failed(self): self.stubs.Set(qos_specs, 'update', return_qos_specs_update) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/999') body = {'qos_specs': {'key1': 'value1', 'key2': 'value2'}} self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.update, req, '999', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_show(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/1') res_dict = self.controller.show(req, '1') self.assertEqual('1', res_dict['qos_specs']['id']) self.assertEqual('qos_specs_1', res_dict['qos_specs']['name']) def test_show_xml_response(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/1') res = self.controller.show(req, '1') req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) qos_spec_response = dom.getElementsByTagName('qos_spec') qos_spec = qos_spec_response.item(0) id = qos_spec.getAttribute('id') name = qos_spec.getAttribute('name') consumer = qos_spec.getAttribute('consumer') self.assertEqual(id, u'1') self.assertEqual(name, 'qos_specs_1') self.assertEqual(consumer, 'back-end') def test_get_associations(self): self.stubs.Set(qos_specs, 'get_associations', return_get_qos_associations) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/associations') res = self.controller.associations(req, '1') self.assertEqual('FakeVolTypeName', res['qos_associations'][0]['name']) self.assertEqual('FakeVolTypeID', res['qos_associations'][0]['id']) def test_get_associations_xml_response(self): self.stubs.Set(qos_specs, 'get_associations', return_get_qos_associations) req = fakes.HTTPRequest.blank('/v2/fake/qos-specs/1/associations') res = self.controller.associations(req, '1') req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) associations_response = dom.getElementsByTagName('associations') association = associations_response.item(0) id = association.getAttribute('id') name = association.getAttribute('name') association_type = association.getAttribute('association_type') self.assertEqual(id, 'FakeVolTypeID') self.assertEqual(name, 'FakeVolTypeName') self.assertEqual(association_type, 'volume_type') def test_get_associations_not_found(self): self.stubs.Set(qos_specs, 'get_associations', return_get_qos_associations) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/111/associations') self.assertRaises(webob.exc.HTTPNotFound, self.controller.associations, req, '111') def test_get_associations_failed(self): self.stubs.Set(qos_specs, 'get_associations', return_get_qos_associations) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/222/associations') self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.associations, req, '222') def test_associate(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'associate_qos_with_type', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/associate?vol_type_id=111') res = self.controller.associate(req, '1') self.assertEqual(res.status_int, 202) def test_associate_no_type(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'associate_qos_with_type', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/associate') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.associate, req, '1') def test_associate_not_found(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'associate_qos_with_type', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/111/associate?vol_type_id=12') self.assertRaises(webob.exc.HTTPNotFound, self.controller.associate, req, '111') req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/associate?vol_type_id=1234') self.assertRaises(webob.exc.HTTPNotFound, self.controller.associate, req, '1') def test_associate_fail(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'associate_qos_with_type', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/222/associate?vol_type_id=1000') self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.associate, req, '222') def test_disassociate(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_qos_specs', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/disassociate?vol_type_id=111') res = self.controller.disassociate(req, '1') self.assertEqual(res.status_int, 202) def test_disassociate_no_type(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_qos_specs', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/disassociate') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.disassociate, req, '1') def test_disassociate_not_found(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_qos_specs', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/111/disassociate?vol_type_id=12') self.assertRaises(webob.exc.HTTPNotFound, self.controller.disassociate, req, '111') req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/disassociate?vol_type_id=1234') self.assertRaises(webob.exc.HTTPNotFound, self.controller.disassociate, req, '1') def test_disassociate_failed(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_qos_specs', return_associate_qos_specs) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/333/disassociate?vol_type_id=1000') self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.disassociate, req, '333') def test_disassociate_all(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_all', return_disassociate_all) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/1/disassociate_all') res = self.controller.disassociate_all(req, '1') self.assertEqual(res.status_int, 202) def test_disassociate_all_not_found(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_all', return_disassociate_all) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/111/disassociate_all') self.assertRaises(webob.exc.HTTPNotFound, self.controller.disassociate_all, req, '111') def test_disassociate_all_failed(self): self.stubs.Set(qos_specs, 'get_qos_specs', return_qos_specs_get_qos_specs) self.stubs.Set(qos_specs, 'disassociate_all', return_disassociate_all) req = fakes.HTTPRequest.blank( '/v2/fake/qos-specs/222/disassociate_all') self.assertRaises(webob.exc.HTTPInternalServerError, self.controller.disassociate_all, req, '222') cinder-2014.1.5/cinder/tests/api/contrib/test_quotas.py0000664000567000056700000001273212540642606024126 0ustar jenkinsjenkins00000000000000# # Copyright 2013 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests for cinder.api.contrib.quotas.py """ from lxml import etree import webob.exc from cinder.api.contrib import quotas from cinder import context from cinder import db from cinder import test def make_body(root=True, gigabytes=1000, snapshots=10, volumes=10, tenant_id='foo'): resources = {'gigabytes': gigabytes, 'snapshots': snapshots, 'volumes': volumes} # need to consider preexisting volume types as well volume_types = db.volume_type_get_all(context.get_admin_context()) for volume_type in volume_types: resources['gigabytes_' + volume_type] = -1 resources['snapshots_' + volume_type] = -1 resources['volumes_' + volume_type] = -1 if tenant_id: resources['id'] = tenant_id if root: result = {'quota_set': resources} else: result = resources return result class QuotaSetsControllerTest(test.TestCase): def setUp(self): super(QuotaSetsControllerTest, self).setUp() self.controller = quotas.QuotaSetsController() self.req = self.mox.CreateMockAnything() self.req.environ = {'cinder.context': context.get_admin_context()} self.req.environ['cinder.context'].is_admin = True def test_defaults(self): result = self.controller.defaults(self.req, 'foo') self.assertDictMatch(result, make_body()) def test_show(self): result = self.controller.show(self.req, 'foo') self.assertDictMatch(result, make_body()) def test_show_not_authorized(self): self.req.environ['cinder.context'].is_admin = False self.req.environ['cinder.context'].user_id = 'bad_user' self.req.environ['cinder.context'].project_id = 'bad_project' self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, self.req, 'foo') def test_update(self): body = make_body(gigabytes=2000, snapshots=15, volumes=5, tenant_id=None) result = self.controller.update(self.req, 'foo', body) self.assertDictMatch(result, body) def test_update_wrong_key(self): body = {'quota_set': {'bad': 'bad'}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_update_invalid_key_value(self): body = {'quota_set': {'gigabytes': "should_be_int"}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_update_bad_quota_limit(self): body = {'quota_set': {'gigabytes': -1000}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_update_no_admin(self): self.req.environ['cinder.context'].is_admin = False self.assertRaises(webob.exc.HTTPForbidden, self.controller.update, self.req, 'foo', make_body(tenant_id=None)) def test_update_without_quota_set_field(self): body = {'fake_quota_set': {'gigabytes': 100}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_update_empty_body(self): body = {} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_delete(self): result_show = self.controller.show(self.req, 'foo') self.assertDictMatch(result_show, make_body()) body = make_body(gigabytes=2000, snapshots=15, volumes=5, tenant_id=None) result_update = self.controller.update(self.req, 'foo', body) self.assertDictMatch(result_update, body) self.controller.delete(self.req, 'foo') result_show_after = self.controller.show(self.req, 'foo') self.assertDictMatch(result_show, result_show_after) def test_delete_no_admin(self): self.req.environ['cinder.context'].is_admin = False self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete, self.req, 'test') class QuotaSerializerTest(test.TestCase): def setUp(self): super(QuotaSerializerTest, self).setUp() self.req = self.mox.CreateMockAnything() self.req.environ = {'cinder.context': context.get_admin_context()} def test_update_serializer(self): serializer = quotas.QuotaTemplate() quota_set = make_body(root=False) text = serializer.serialize({'quota_set': quota_set}) tree = etree.fromstring(text) self.assertEqual(tree.tag, 'quota_set') self.assertEqual(tree.get('id'), quota_set['id']) body = make_body(root=False, tenant_id=None) for node in tree: self.assertIn(node.tag, body) self.assertEqual(str(body[node.tag]), node.text) cinder-2014.1.5/cinder/tests/api/contrib/test_quotas_classes.py0000664000567000056700000001335212540642606025642 0ustar jenkinsjenkins00000000000000# Copyright 2013 Huawei Technologies Co., Ltd # All Rights Reserved. # # 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. """ Tests for cinder.api.contrib.quota_classes.py """ from lxml import etree import webob.exc from cinder.api.contrib import quota_classes from cinder import context from cinder import quota from cinder import test from cinder.volume import volume_types QUOTAS = quota.QUOTAS def make_body(root=True, gigabytes=1000, snapshots=10, volumes=10, volume_types_faked=None, tenant_id='foo'): resources = {'gigabytes': gigabytes, 'snapshots': snapshots, 'volumes': volumes} if not volume_types_faked: volume_types_faked = {'fake_type': None} for volume_type in volume_types_faked: resources['gigabytes_' + volume_type] = -1 resources['snapshots_' + volume_type] = -1 resources['volumes_' + volume_type] = -1 if tenant_id: resources['id'] = tenant_id if root: result = {'quota_class_set': resources} else: result = resources return result def make_response_body(root=True, ctxt=None, quota_class='foo', request_body=None, tenant_id='foo'): resources = {} if not ctxt: ctxt = context.get_admin_context() resources.update(QUOTAS.get_class_quotas(ctxt, quota_class)) if not request_body and not request_body['quota_class_set']: resources.update(request_body['quota_class_set']) if tenant_id: resources['id'] = tenant_id if root: result = {'quota_class_set': resources} else: result = resources return result class QuotaClassSetsControllerTest(test.TestCase): def setUp(self): super(QuotaClassSetsControllerTest, self).setUp() self.controller = quota_classes.QuotaClassSetsController() self.ctxt = context.get_admin_context() self.req = self.mox.CreateMockAnything() self.req.environ = {'cinder.context': self.ctxt} self.req.environ['cinder.context'].is_admin = True def test_show(self): volume_types.create(self.ctxt, 'fake_type') result = self.controller.show(self.req, 'foo') self.assertDictMatch(result, make_body()) def test_show_not_authorized(self): self.req.environ['cinder.context'].is_admin = False self.req.environ['cinder.context'].user_id = 'bad_user' self.req.environ['cinder.context'].project_id = 'bad_project' self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, self.req, 'foo') def test_update(self): volume_types.create(self.ctxt, 'fake_type') body = make_body(gigabytes=2000, snapshots=15, volumes=5, tenant_id=None) result = self.controller.update(self.req, 'foo', body) self.assertDictMatch(result, body) def test_update_wrong_key(self): volume_types.create(self.ctxt, 'fake_type') body = {'quota_class_set': {'bad': 'bad'}} result = self.controller.update(self.req, 'foo', body) self.assertDictMatch(result, make_body(tenant_id=None)) def test_update_invalid_key_value(self): body = {'quota_class_set': {'gigabytes': "should_be_int"}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_update_bad_quota_limit(self): body = {'quota_class_set': {'gigabytes': -1000}} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'foo', body) def test_update_no_admin(self): self.req.environ['cinder.context'].is_admin = False self.assertRaises(webob.exc.HTTPForbidden, self.controller.update, self.req, 'foo', make_body(tenant_id=None)) def test_update_with_more_volume_types(self): volume_types.create(self.ctxt, 'fake_type_1') volume_types.create(self.ctxt, 'fake_type_2') body = {'quota_class_set': {'gigabytes_fake_type_1': 1111, 'volumes_fake_type_2': 2222}} result = self.controller.update(self.req, 'foo', body) self.assertDictMatch(result, make_response_body(ctxt=self.ctxt, quota_class='foo', request_body=body, tenant_id=None)) class QuotaClassesSerializerTest(test.TestCase): def setUp(self): super(QuotaClassesSerializerTest, self).setUp() self.req = self.mox.CreateMockAnything() self.req.environ = {'cinder.context': context.get_admin_context()} def test_update_serializer(self): serializer = quota_classes.QuotaClassTemplate() quota_class_set = make_body(root=False) text = serializer.serialize({'quota_class_set': quota_class_set}) tree = etree.fromstring(text) self.assertEqual(tree.tag, 'quota_class_set') self.assertEqual(tree.get('id'), quota_class_set['id']) body = make_body(root=False, tenant_id=None) for node in tree: self.assertIn(node.tag, body) self.assertEqual(str(body[node.tag]), node.text) cinder-2014.1.5/cinder/tests/api/contrib/test_scheduler_hints.py0000664000567000056700000000670112540642606025774 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # 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. import datetime import cinder from cinder.api.openstack import wsgi from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs UUID = fakes.FAKE_UUID class SchedulerHintsTestCase(test.TestCase): def setUp(self): super(SchedulerHintsTestCase, self).setUp() self.fake_instance = stubs.stub_volume(1, uuid=UUID) self.fake_instance['created_at'] =\ datetime.datetime(2013, 1, 1, 1, 1, 1) self.fake_instance['launched_at'] =\ datetime.datetime(2013, 1, 1, 1, 1, 1) self.flags( osapi_volume_extension=[ 'cinder.api.contrib.select_extensions'], osapi_volume_ext_list=['Scheduler_hints']) self.app = fakes.wsgi_app() def test_create_server_without_hints(self): @wsgi.response(202) def fake_create(*args, **kwargs): self.assertNotIn('scheduler_hints', kwargs['body']) return self.fake_instance self.stubs.Set(cinder.api.v2.volumes.VolumeController, 'create', fake_create) req = fakes.HTTPRequest.blank('/v2/fake/volumes') req.method = 'POST' req.content_type = 'application/json' body = {'id': id, 'volume_type_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'volume_id': '1', } req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(202, res.status_int) def test_create_server_with_hints(self): @wsgi.response(202) def fake_create(*args, **kwargs): self.assertIn('scheduler_hints', kwargs['body']) self.assertEqual(kwargs['body']['scheduler_hints'], {"a": "b"}) return self.fake_instance self.stubs.Set(cinder.api.v2.volumes.VolumeController, 'create', fake_create) req = fakes.HTTPRequest.blank('/v2/fake/volumes') req.method = 'POST' req.content_type = 'application/json' body = {'id': id, 'volume_type_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'volume_id': '1', 'scheduler_hints': {'a': 'b'}, } req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(202, res.status_int) def test_create_server_bad_hints(self): req = fakes.HTTPRequest.blank('/v2/fake/volumes') req.method = 'POST' req.content_type = 'application/json' body = {'volume': { 'id': id, 'volume_type_id': 'cedef40a-ed67-4d10-800e-17455edce175', 'volume_id': '1', 'scheduler_hints': 'a', }} req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(400, res.status_int) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_encryption_metadata.py0000664000567000056700000002140212540642606030225 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. import json import webob from cinder.api.contrib import volume_encryption_metadata from cinder import context from cinder import db from cinder import test from cinder.tests.api import fakes from cinder.volume import volume_types def return_volume_type_encryption_metadata(context, volume_type_id): return stub_volume_type_encryption() def stub_volume_type_encryption(): values = { 'cipher': 'cipher', 'key_size': 256, 'provider': 'nova.volume.encryptors.base.VolumeEncryptor', 'volume_type_id': 'volume_type', 'control_location': 'front-end', } return values class VolumeEncryptionMetadataTest(test.TestCase): @staticmethod def _create_volume(context, display_name='test_volume', display_description='this is a test volume', status='creating', availability_zone='fake_az', host='fake_host', size=1): """Create a volume object.""" volume = { 'size': size, 'user_id': 'fake', 'project_id': 'fake', 'status': status, 'display_name': display_name, 'display_description': display_description, 'attach_status': 'detached', 'availability_zone': availability_zone, 'host': host, 'encryption_key_id': 'fake_key', } return db.volume_create(context, volume)['id'] def setUp(self): super(VolumeEncryptionMetadataTest, self).setUp() self.controller = (volume_encryption_metadata. VolumeEncryptionMetadataController()) self.stubs.Set(db.sqlalchemy.api, 'volume_type_encryption_get', return_volume_type_encryption_metadata) self.ctxt = context.RequestContext('fake', 'fake') self.volume_id = self._create_volume(self.ctxt) self.addCleanup(db.volume_destroy, self.ctxt.elevated(), self.volume_id) def test_index(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) req = webob.Request.blank('/v2/fake/volumes/%s/encryption' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) expected = { "encryption_key_id": "fake_key", "control_location": "front-end", "cipher": "cipher", "provider": "nova.volume.encryptors.base.VolumeEncryptor", "key_size": 256, } self.assertEqual(expected, res_dict) def test_index_bad_tenant_id(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) req = webob.Request.blank('/v2/%s/volumes/%s/encryption' % ('bad-tenant-id', self.volume_id)) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(400, res.status_code) res_dict = json.loads(res.body) expected = {'badRequest': {'code': 400, 'message': 'Malformed request url'}} self.assertEqual(expected, res_dict) def test_index_bad_volume_id(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) bad_volume_id = 'bad_volume_id' req = webob.Request.blank('/v2/fake/volumes/%s/encryption' % bad_volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(404, res.status_code) res_dict = json.loads(res.body) expected = {'itemNotFound': {'code': 404, 'message': 'VolumeNotFound: Volume ' '%s could not be found.' % bad_volume_id}} self.assertEqual(expected, res_dict) def test_show_key(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) req = webob.Request.blank('/v2/fake/volumes/%s/encryption/' 'encryption_key_id' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(200, res.status_code) self.assertEqual('fake_key', res.body) def test_show_control(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) req = webob.Request.blank('/v2/fake/volumes/%s/encryption/' 'control_location' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(200, res.status_code) self.assertEqual('front-end', res.body) def test_show_provider(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) req = webob.Request.blank('/v2/fake/volumes/%s/encryption/' 'provider' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(200, res.status_code) self.assertEqual('nova.volume.encryptors.base.VolumeEncryptor', res.body) def test_show_bad_tenant_id(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) req = webob.Request.blank('/v2/%s/volumes/%s/encryption/' 'encryption_key_id' % ('bad-tenant-id', self.volume_id)) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(400, res.status_code) res_dict = json.loads(res.body) expected = {'badRequest': {'code': 400, 'message': 'Malformed request url'}} self.assertEqual(expected, res_dict) def test_show_bad_volume_id(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) bad_volume_id = 'bad_volume_id' req = webob.Request.blank('/v2/fake/volumes/%s/encryption/' 'encryption_key_id' % bad_volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(404, res.status_code) res_dict = json.loads(res.body) expected = {'itemNotFound': {'code': 404, 'message': 'VolumeNotFound: Volume ' '%s could not be found.' % bad_volume_id}} self.assertEqual(expected, res_dict) def test_retrieve_key_admin(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: True) ctxt = context.RequestContext('fake', 'fake', is_admin=True) req = webob.Request.blank('/v2/fake/volumes/%s/encryption/' 'encryption_key_id' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=ctxt)) self.assertEqual(200, res.status_code) self.assertEqual('fake_key', res.body) def test_show_volume_not_encrypted_type(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: False) req = webob.Request.blank('/v2/fake/volumes/%s/encryption/' 'encryption_key_id' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(200, res.status_code) self.assertEqual(0, len(res.body)) def test_index_volume_not_encrypted_type(self): self.stubs.Set(volume_types, 'is_encrypted', lambda *a, **kw: False) req = webob.Request.blank('/v2/fake/volumes/%s/encryption' % self.volume_id) res = req.get_response(fakes.wsgi_app(fake_auth_context=self.ctxt)) self.assertEqual(200, res.status_code) res_dict = json.loads(res.body) expected = { 'encryption_key_id': None } self.assertEqual(expected, res_dict) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_migration_status_attribute.py0000664000567000056700000001276012540642606031661 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. import datetime import json import uuid from lxml import etree import webob from cinder import context from cinder import test from cinder.tests.api import fakes from cinder import volume def fake_volume_get(*args, **kwargs): return { 'id': 'fake', 'host': 'host001', 'status': 'available', 'size': 5, 'availability_zone': 'somewhere', 'created_at': datetime.datetime.now(), 'attach_status': None, 'display_name': 'anothervolume', 'display_description': 'Just another volume!', 'volume_type_id': None, 'snapshot_id': None, 'project_id': 'fake', 'migration_status': 'migrating', '_name_id': 'fake2', } def fake_volume_get_all(*args, **kwargs): return [fake_volume_get()] def app(): # no auth, just let environ['cinder.context'] pass through api = fakes.router.APIRouter() mapper = fakes.urlmap.URLMap() mapper['/v2'] = api return mapper class VolumeMigStatusAttributeTest(test.TestCase): def setUp(self): super(VolumeMigStatusAttributeTest, self).setUp() self.stubs.Set(volume.API, 'get', fake_volume_get) self.stubs.Set(volume.API, 'get_all', fake_volume_get_all) self.UUID = uuid.uuid4() def test_get_volume_allowed(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volume'] self.assertEqual(vol['os-vol-mig-status-attr:migstat'], 'migrating') self.assertEqual(vol['os-vol-mig-status-attr:name_id'], 'fake2') def test_get_volume_unallowed(self): ctx = context.RequestContext('non-admin', 'fake', False) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volume'] self.assertNotIn('os-vol-mig-status-attr:migstat', vol) self.assertNotIn('os-vol-mig-status-attr:name_id', vol) def test_list_detail_volumes_allowed(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertEqual(vol[0]['os-vol-mig-status-attr:migstat'], 'migrating') self.assertEqual(vol[0]['os-vol-mig-status-attr:name_id'], 'fake2') def test_list_detail_volumes_unallowed(self): ctx = context.RequestContext('non-admin', 'fake', False) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertNotIn('os-vol-mig-status-attr:migstat', vol[0]) self.assertNotIn('os-vol-mig-status-attr:name_id', vol[0]) def test_list_simple_volumes_no_migration_status(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertNotIn('os-vol-mig-status-attr:migstat', vol[0]) self.assertNotIn('os-vol-mig-status-attr:name_id', vol[0]) def test_get_volume_xml(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.accept = 'application/xml' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = etree.XML(res.body) mig_key = ('{http://docs.openstack.org/volume/ext/' 'volume_mig_status_attribute/api/v1}migstat') self.assertEqual(vol.get(mig_key), 'migrating') mig_key = ('{http://docs.openstack.org/volume/ext/' 'volume_mig_status_attribute/api/v1}name_id') self.assertEqual(vol.get(mig_key), 'fake2') def test_list_volumes_detail_xml(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.accept = 'application/xml' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = list(etree.XML(res.body))[0] mig_key = ('{http://docs.openstack.org/volume/ext/' 'volume_mig_status_attribute/api/v1}migstat') self.assertEqual(vol.get(mig_key), 'migrating') mig_key = ('{http://docs.openstack.org/volume/ext/' 'volume_mig_status_attribute/api/v1}name_id') self.assertEqual(vol.get(mig_key), 'fake2') cinder-2014.1.5/cinder/tests/api/contrib/test_services.py0000664000567000056700000004706312540642606024442 0ustar jenkinsjenkins00000000000000# Copyright 2012 IBM Corp. # All Rights Reserved. # # 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. import webob.exc from cinder.api.contrib import services from cinder.api import extensions from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import timeutils from cinder import policy from cinder import test from cinder.tests.api import fakes from datetime import datetime fake_services_list = [{'binary': 'cinder-scheduler', 'host': 'host1', 'availability_zone': 'cinder', 'id': 1, 'disabled': True, 'updated_at': datetime(2012, 10, 29, 13, 42, 2), 'created_at': datetime(2012, 9, 18, 2, 46, 27), 'disabled_reason': 'test1'}, {'binary': 'cinder-volume', 'host': 'host1', 'availability_zone': 'cinder', 'id': 2, 'disabled': True, 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'created_at': datetime(2012, 9, 18, 2, 46, 27), 'disabled_reason': 'test2'}, {'binary': 'cinder-scheduler', 'host': 'host2', 'availability_zone': 'cinder', 'id': 3, 'disabled': False, 'updated_at': datetime(2012, 9, 19, 6, 55, 34), 'created_at': datetime(2012, 9, 18, 2, 46, 28), 'disabled_reason': ''}, {'binary': 'cinder-volume', 'host': 'host2', 'availability_zone': 'cinder', 'id': 4, 'disabled': True, 'updated_at': datetime(2012, 9, 18, 8, 3, 38), 'created_at': datetime(2012, 9, 18, 2, 46, 28), 'disabled_reason': 'test4'}, ] class FakeRequest(object): environ = {"cinder.context": context.get_admin_context()} GET = {} # NOTE(uni): deprecating service request key, binary takes precedence # Still keeping service key here for API compatibility sake. class FakeRequestWithService(object): environ = {"cinder.context": context.get_admin_context()} GET = {"service": "cinder-volume"} class FakeRequestWithBinary(object): environ = {"cinder.context": context.get_admin_context()} GET = {"binary": "cinder-volume"} class FakeRequestWithHost(object): environ = {"cinder.context": context.get_admin_context()} GET = {"host": "host1"} # NOTE(uni): deprecating service request key, binary takes precedence # Still keeping service key here for API compatibility sake. class FakeRequestWithHostService(object): environ = {"cinder.context": context.get_admin_context()} GET = {"host": "host1", "service": "cinder-volume"} class FakeRequestWithHostBinary(object): environ = {"cinder.context": context.get_admin_context()} GET = {"host": "host1", "binary": "cinder-volume"} def fake_service_get_all(context): return fake_services_list def fake_service_get_by_host_binary(context, host, binary): for service in fake_services_list: if service['host'] == host and service['binary'] == binary: return service return None def fake_service_get_by_id(value): for service in fake_services_list: if service['id'] == value: return service return None def fake_service_update(context, service_id, values): service = fake_service_get_by_id(service_id) if service is None: raise exception.ServiceNotFound(service_id=service_id) else: {'host': 'host1', 'service': 'cinder-volume', 'disabled': values['disabled']} def fake_policy_enforce(context, action, target): pass def fake_utcnow(): return datetime(2012, 10, 29, 13, 42, 11) class ServicesTest(test.TestCase): def setUp(self): super(ServicesTest, self).setUp() self.stubs.Set(db, "service_get_all", fake_service_get_all) self.stubs.Set(timeutils, "utcnow", fake_utcnow) self.stubs.Set(db, "service_get_by_args", fake_service_get_by_host_binary) self.stubs.Set(db, "service_update", fake_service_update) self.stubs.Set(policy, "enforce", fake_policy_enforce) self.context = context.get_admin_context() self.ext_mgr = extensions.ExtensionManager() self.ext_mgr.extensions = {} self.controller = services.ServiceController(self.ext_mgr) def test_services_list(self): req = FakeRequest() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-scheduler', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 2)}, {'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5)}, {'binary': 'cinder-scheduler', 'host': 'host2', 'zone': 'cinder', 'status': 'enabled', 'state': 'down', 'updated_at': datetime(2012, 9, 19, 6, 55, 34)}, {'binary': 'cinder-volume', 'host': 'host2', 'zone': 'cinder', 'status': 'disabled', 'state': 'down', 'updated_at': datetime(2012, 9, 18, 8, 3, 38)}]} self.assertEqual(res_dict, response) def test_services_detail(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = FakeRequest() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-scheduler', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 2), 'disabled_reason': 'test1'}, {'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'cinder-scheduler', 'host': 'host2', 'zone': 'cinder', 'status': 'enabled', 'state': 'down', 'updated_at': datetime(2012, 9, 19, 6, 55, 34), 'disabled_reason': ''}, {'binary': 'cinder-volume', 'host': 'host2', 'zone': 'cinder', 'status': 'disabled', 'state': 'down', 'updated_at': datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_services_list_with_host(self): req = FakeRequestWithHost() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-scheduler', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 2)}, {'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5)}]} self.assertEqual(res_dict, response) def test_services_detail_with_host(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = FakeRequestWithHost() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-scheduler', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 2), 'disabled_reason': 'test1'}, {'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_services_list_with_service(self): req = FakeRequestWithService() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5)}, {'binary': 'cinder-volume', 'host': 'host2', 'zone': 'cinder', 'status': 'disabled', 'state': 'down', 'updated_at': datetime(2012, 9, 18, 8, 3, 38)}]} self.assertEqual(res_dict, response) def test_services_detail_with_service(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = FakeRequestWithService() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'cinder-volume', 'host': 'host2', 'zone': 'cinder', 'status': 'disabled', 'state': 'down', 'updated_at': datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_services_list_with_binary(self): req = FakeRequestWithBinary() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5)}, {'binary': 'cinder-volume', 'host': 'host2', 'zone': 'cinder', 'status': 'disabled', 'state': 'down', 'updated_at': datetime(2012, 9, 18, 8, 3, 38)}]} self.assertEqual(res_dict, response) def test_services_detail_with_binary(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = FakeRequestWithBinary() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}, {'binary': 'cinder-volume', 'host': 'host2', 'zone': 'cinder', 'status': 'disabled', 'state': 'down', 'updated_at': datetime(2012, 9, 18, 8, 3, 38), 'disabled_reason': 'test4'}]} self.assertEqual(res_dict, response) def test_services_list_with_host_service(self): req = FakeRequestWithHostService() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5)}]} self.assertEqual(res_dict, response) def test_services_detail_with_host_service(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = FakeRequestWithHostService() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_services_list_with_host_binary(self): req = FakeRequestWithHostBinary() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5)}]} self.assertEqual(res_dict, response) def test_services_detail_with_host_binary(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = FakeRequestWithHostBinary() res_dict = self.controller.index(req) response = {'services': [{'binary': 'cinder-volume', 'host': 'host1', 'zone': 'cinder', 'status': 'disabled', 'state': 'up', 'updated_at': datetime(2012, 10, 29, 13, 42, 5), 'disabled_reason': 'test2'}]} self.assertEqual(res_dict, response) def test_services_enable_with_service_key(self): body = {'host': 'host1', 'service': 'cinder-volume'} req = fakes.HTTPRequest.blank('/v1/fake/os-services/enable') res_dict = self.controller.update(req, "enable", body) self.assertEqual(res_dict['status'], 'enabled') def test_services_enable_with_binary_key(self): body = {'host': 'host1', 'binary': 'cinder-volume'} req = fakes.HTTPRequest.blank('/v1/fake/os-services/enable') res_dict = self.controller.update(req, "enable", body) self.assertEqual(res_dict['status'], 'enabled') def test_services_disable_with_service_key(self): req = fakes.HTTPRequest.blank('/v1/fake/os-services/disable') body = {'host': 'host1', 'service': 'cinder-volume'} res_dict = self.controller.update(req, "disable", body) self.assertEqual(res_dict['status'], 'disabled') def test_services_disable_with_binary_key(self): req = fakes.HTTPRequest.blank('/v1/fake/os-services/disable') body = {'host': 'host1', 'binary': 'cinder-volume'} res_dict = self.controller.update(req, "disable", body) self.assertEqual(res_dict['status'], 'disabled') def test_services_disable_log_reason(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = ( fakes.HTTPRequest.blank('v1/fake/os-services/disable-log-reason')) body = {'host': 'host1', 'binary': 'cinder-scheduler', 'disabled_reason': 'test-reason', } res_dict = self.controller.update(req, "disable-log-reason", body) self.assertEqual(res_dict['status'], 'disabled') self.assertEqual(res_dict['disabled_reason'], 'test-reason') def test_services_disable_log_reason_none(self): self.ext_mgr.extensions['os-extended-services'] = True self.controller = services.ServiceController(self.ext_mgr) req = ( fakes.HTTPRequest.blank('v1/fake/os-services/disable-log-reason')) body = {'host': 'host1', 'binary': 'cinder-scheduler', 'disabled_reason': None, } self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, "disable-log-reason", body) def test_invalid_reason_field(self): reason = ' ' self.assertFalse(self.controller._is_valid_as_reason(reason)) reason = 'a' * 256 self.assertFalse(self.controller._is_valid_as_reason(reason)) reason = 'it\'s a valid reason.' self.assertTrue(self.controller._is_valid_as_reason(reason)) reason = None self.assertFalse(self.controller._is_valid_as_reason(reason)) cinder-2014.1.5/cinder/tests/api/contrib/test_backups.py0000664000567000056700000015533212540642606024246 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Tests for Backup code. """ import json import mock from xml.dom import minidom import webob # needed for stubs to work import cinder.backup from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import test from cinder.tests.api import fakes from cinder.tests import utils # needed for stubs to work import cinder.volume LOG = logging.getLogger(__name__) class BackupsAPITestCase(test.TestCase): """Test Case for backups API.""" def setUp(self): super(BackupsAPITestCase, self).setUp() self.volume_api = cinder.volume.API() self.backup_api = cinder.backup.API() self.context = context.get_admin_context() self.context.project_id = 'fake' self.context.user_id = 'fake' @staticmethod def _create_backup(volume_id=1, display_name='test_backup', display_description='this is a test backup', container='volumebackups', status='creating', size=0, object_count=0): """Create a backup object.""" backup = {} backup['volume_id'] = volume_id backup['user_id'] = 'fake' backup['project_id'] = 'fake' backup['host'] = 'testhost' backup['availability_zone'] = 'az1' backup['display_name'] = display_name backup['display_description'] = display_description backup['container'] = container backup['status'] = status backup['fail_reason'] = '' backup['size'] = size backup['object_count'] = object_count return db.backup_create(context.get_admin_context(), backup)['id'] @staticmethod def _get_backup_attrib(backup_id, attrib_name): return db.backup_get(context.get_admin_context(), backup_id)[attrib_name] def test_show_backup(self): volume_id = utils.create_volume(self.context, size=5, status='creating')['id'] backup_id = self._create_backup(volume_id) LOG.debug('Created backup with id %s' % backup_id) req = webob.Request.blank('/v2/fake/backups/%s' % backup_id) req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(res_dict['backup']['availability_zone'], 'az1') self.assertEqual(res_dict['backup']['container'], 'volumebackups') self.assertEqual(res_dict['backup']['description'], 'this is a test backup') self.assertEqual(res_dict['backup']['name'], 'test_backup') self.assertEqual(res_dict['backup']['id'], backup_id) self.assertEqual(res_dict['backup']['object_count'], 0) self.assertEqual(res_dict['backup']['size'], 0) self.assertEqual(res_dict['backup']['status'], 'creating') self.assertEqual(res_dict['backup']['volume_id'], volume_id) db.backup_destroy(context.get_admin_context(), backup_id) db.volume_destroy(context.get_admin_context(), volume_id) def test_show_backup_xml_content_type(self): volume_id = utils.create_volume(self.context, size=5, status='creating')['id'] backup_id = self._create_backup(volume_id) req = webob.Request.blank('/v2/fake/backups/%s' % backup_id) req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) backup = dom.getElementsByTagName('backup') name = backup.item(0).getAttribute('name') container_name = backup.item(0).getAttribute('container') self.assertEqual(container_name.strip(), "volumebackups") self.assertEqual(name.strip(), "test_backup") db.backup_destroy(context.get_admin_context(), backup_id) db.volume_destroy(context.get_admin_context(), volume_id) def test_show_backup_with_backup_NotFound(self): req = webob.Request.blank('/v2/fake/backups/9999') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Backup 9999 could not be found.') def test_list_backups_json(self): backup_id1 = self._create_backup() backup_id2 = self._create_backup() backup_id3 = self._create_backup() req = webob.Request.blank('/v2/fake/backups') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(len(res_dict['backups'][0]), 3) self.assertEqual(res_dict['backups'][0]['id'], backup_id1) self.assertEqual(res_dict['backups'][0]['name'], 'test_backup') self.assertEqual(len(res_dict['backups'][1]), 3) self.assertEqual(res_dict['backups'][1]['id'], backup_id2) self.assertEqual(res_dict['backups'][1]['name'], 'test_backup') self.assertEqual(len(res_dict['backups'][2]), 3) self.assertEqual(res_dict['backups'][2]['id'], backup_id3) self.assertEqual(res_dict['backups'][2]['name'], 'test_backup') db.backup_destroy(context.get_admin_context(), backup_id3) db.backup_destroy(context.get_admin_context(), backup_id2) db.backup_destroy(context.get_admin_context(), backup_id1) def test_list_backups_xml(self): backup_id1 = self._create_backup() backup_id2 = self._create_backup() backup_id3 = self._create_backup() req = webob.Request.blank('/v2/fake/backups') req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) backup_list = dom.getElementsByTagName('backup') self.assertEqual(backup_list.item(0).attributes.length, 2) self.assertEqual(backup_list.item(0).getAttribute('id'), backup_id1) self.assertEqual(backup_list.item(1).attributes.length, 2) self.assertEqual(backup_list.item(1).getAttribute('id'), backup_id2) self.assertEqual(backup_list.item(2).attributes.length, 2) self.assertEqual(backup_list.item(2).getAttribute('id'), backup_id3) db.backup_destroy(context.get_admin_context(), backup_id3) db.backup_destroy(context.get_admin_context(), backup_id2) db.backup_destroy(context.get_admin_context(), backup_id1) def test_list_backups_detail_json(self): backup_id1 = self._create_backup() backup_id2 = self._create_backup() backup_id3 = self._create_backup() req = webob.Request.blank('/v2/fake/backups/detail') req.method = 'GET' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(len(res_dict['backups'][0]), 12) self.assertEqual(res_dict['backups'][0]['availability_zone'], 'az1') self.assertEqual(res_dict['backups'][0]['container'], 'volumebackups') self.assertEqual(res_dict['backups'][0]['description'], 'this is a test backup') self.assertEqual(res_dict['backups'][0]['name'], 'test_backup') self.assertEqual(res_dict['backups'][0]['id'], backup_id1) self.assertEqual(res_dict['backups'][0]['object_count'], 0) self.assertEqual(res_dict['backups'][0]['size'], 0) self.assertEqual(res_dict['backups'][0]['status'], 'creating') self.assertEqual(res_dict['backups'][0]['volume_id'], '1') self.assertEqual(len(res_dict['backups'][1]), 12) self.assertEqual(res_dict['backups'][1]['availability_zone'], 'az1') self.assertEqual(res_dict['backups'][1]['container'], 'volumebackups') self.assertEqual(res_dict['backups'][1]['description'], 'this is a test backup') self.assertEqual(res_dict['backups'][1]['name'], 'test_backup') self.assertEqual(res_dict['backups'][1]['id'], backup_id2) self.assertEqual(res_dict['backups'][1]['object_count'], 0) self.assertEqual(res_dict['backups'][1]['size'], 0) self.assertEqual(res_dict['backups'][1]['status'], 'creating') self.assertEqual(res_dict['backups'][1]['volume_id'], '1') self.assertEqual(len(res_dict['backups'][2]), 12) self.assertEqual(res_dict['backups'][2]['availability_zone'], 'az1') self.assertEqual(res_dict['backups'][2]['container'], 'volumebackups') self.assertEqual(res_dict['backups'][2]['description'], 'this is a test backup') self.assertEqual(res_dict['backups'][2]['name'], 'test_backup') self.assertEqual(res_dict['backups'][2]['id'], backup_id3) self.assertEqual(res_dict['backups'][2]['object_count'], 0) self.assertEqual(res_dict['backups'][2]['size'], 0) self.assertEqual(res_dict['backups'][2]['status'], 'creating') self.assertEqual(res_dict['backups'][2]['volume_id'], '1') db.backup_destroy(context.get_admin_context(), backup_id3) db.backup_destroy(context.get_admin_context(), backup_id2) db.backup_destroy(context.get_admin_context(), backup_id1) def test_list_backups_detail_xml(self): backup_id1 = self._create_backup() backup_id2 = self._create_backup() backup_id3 = self._create_backup() req = webob.Request.blank('/v2/fake/backups/detail') req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) backup_detail = dom.getElementsByTagName('backup') self.assertEqual(backup_detail.item(0).attributes.length, 11) self.assertEqual( backup_detail.item(0).getAttribute('availability_zone'), 'az1') self.assertEqual( backup_detail.item(0).getAttribute('container'), 'volumebackups') self.assertEqual( backup_detail.item(0).getAttribute('description'), 'this is a test backup') self.assertEqual( backup_detail.item(0).getAttribute('name'), 'test_backup') self.assertEqual( backup_detail.item(0).getAttribute('id'), backup_id1) self.assertEqual( int(backup_detail.item(0).getAttribute('object_count')), 0) self.assertEqual( int(backup_detail.item(0).getAttribute('size')), 0) self.assertEqual( backup_detail.item(0).getAttribute('status'), 'creating') self.assertEqual( int(backup_detail.item(0).getAttribute('volume_id')), 1) self.assertEqual(backup_detail.item(1).attributes.length, 11) self.assertEqual( backup_detail.item(1).getAttribute('availability_zone'), 'az1') self.assertEqual( backup_detail.item(1).getAttribute('container'), 'volumebackups') self.assertEqual( backup_detail.item(1).getAttribute('description'), 'this is a test backup') self.assertEqual( backup_detail.item(1).getAttribute('name'), 'test_backup') self.assertEqual( backup_detail.item(1).getAttribute('id'), backup_id2) self.assertEqual( int(backup_detail.item(1).getAttribute('object_count')), 0) self.assertEqual( int(backup_detail.item(1).getAttribute('size')), 0) self.assertEqual( backup_detail.item(1).getAttribute('status'), 'creating') self.assertEqual( int(backup_detail.item(1).getAttribute('volume_id')), 1) self.assertEqual(backup_detail.item(2).attributes.length, 11) self.assertEqual( backup_detail.item(2).getAttribute('availability_zone'), 'az1') self.assertEqual( backup_detail.item(2).getAttribute('container'), 'volumebackups') self.assertEqual( backup_detail.item(2).getAttribute('description'), 'this is a test backup') self.assertEqual( backup_detail.item(2).getAttribute('name'), 'test_backup') self.assertEqual( backup_detail.item(2).getAttribute('id'), backup_id3) self.assertEqual( int(backup_detail.item(2).getAttribute('object_count')), 0) self.assertEqual( int(backup_detail.item(2).getAttribute('size')), 0) self.assertEqual( backup_detail.item(2).getAttribute('status'), 'creating') self.assertEqual( int(backup_detail.item(2).getAttribute('volume_id')), 1) db.backup_destroy(context.get_admin_context(), backup_id3) db.backup_destroy(context.get_admin_context(), backup_id2) db.backup_destroy(context.get_admin_context(), backup_id1) @mock.patch('cinder.db.service_get_all_by_topic') def test_create_backup_json(self, _mock_service_get_all_by_topic): _mock_service_get_all_by_topic.return_value = [ {'availability_zone': "fake_az", 'host': 'test_host', 'disabled': 0, 'updated_at': timeutils.utcnow()}] volume_id = utils.create_volume(self.context, size=5)['id'] body = {"backup": {"display_name": "nightly001", "display_description": "Nightly Backup 03-Sep-2012", "volume_id": volume_id, "container": "nightlybackups", } } req = webob.Request.blank('/v2/fake/backups') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) LOG.info(res_dict) self.assertEqual(res.status_int, 202) self.assertIn('id', res_dict['backup']) self.assertTrue(_mock_service_get_all_by_topic.called) db.volume_destroy(context.get_admin_context(), volume_id) @mock.patch('cinder.db.service_get_all_by_topic') def test_create_backup_xml(self, _mock_service_get_all_by_topic): _mock_service_get_all_by_topic.return_value = [ {'availability_zone': "fake_az", 'host': 'test_host', 'disabled': 0, 'updated_at': timeutils.utcnow()}] volume_id = utils.create_volume(self.context, size=2)['id'] req = webob.Request.blank('/v2/fake/backups') req.body = ('' % volume_id) req.method = 'POST' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) dom = minidom.parseString(res.body) backup = dom.getElementsByTagName('backup') self.assertTrue(backup.item(0).hasAttribute('id')) self.assertTrue(_mock_service_get_all_by_topic.called) db.volume_destroy(context.get_admin_context(), volume_id) def test_create_backup_with_no_body(self): # omit body from the request req = webob.Request.blank('/v2/fake/backups') req.body = json.dumps(None) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'The server could not comply with the request since' ' it is either malformed or otherwise incorrect.') def test_create_backup_with_body_KeyError(self): # omit volume_id from body body = {"backup": {"display_name": "nightly001", "display_description": "Nightly Backup 03-Sep-2012", "container": "nightlybackups", } } req = webob.Request.blank('/v2/fake/backups') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format') def test_create_backup_with_VolumeNotFound(self): body = {"backup": {"display_name": "nightly001", "display_description": "Nightly Backup 03-Sep-2012", "volume_id": 9999, "container": "nightlybackups", } } req = webob.Request.blank('/v2/fake/backups') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Volume 9999 could not be found.') def test_create_backup_with_InvalidVolume(self): # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5, status='restoring')['id'] body = {"backup": {"display_name": "nightly001", "display_description": "Nightly Backup 03-Sep-2012", "volume_id": volume_id, "container": "nightlybackups", } } req = webob.Request.blank('/v2/fake/backups') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid volume: Volume to be backed up must' ' be available') @mock.patch('cinder.db.service_get_all_by_topic') def test_create_backup_WithOUT_enabled_backup_service( self, _mock_service_get_all_by_topic): # need an enabled backup service available _mock_service_get_all_by_topic.return_value = [] volume_id = utils.create_volume(self.context, size=2)['id'] req = webob.Request.blank('/v2/fake/backups') body = {"backup": {"display_name": "nightly001", "display_description": "Nightly Backup 03-Sep-2012", "volume_id": volume_id, "container": "nightlybackups", } } req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 500) self.assertEqual(res_dict['computeFault']['code'], 500) self.assertEqual(res_dict['computeFault']['message'], 'Service cinder-backup could not be found.') volume = self.volume_api.get(context.get_admin_context(), volume_id) self.assertEqual(volume['status'], 'available') @mock.patch('cinder.db.service_get_all_by_topic') def test_is_backup_service_enabled(self, _mock_service_get_all_by_topic): test_host = 'test_host' alt_host = 'strange_host' empty_service = [] #service host not match with volume's host host_not_match = [{'availability_zone': "fake_az", 'host': alt_host, 'disabled': 0, 'updated_at': timeutils.utcnow()}] #service az not match with volume's az az_not_match = [{'availability_zone': "strange_az", 'host': test_host, 'disabled': 0, 'updated_at': timeutils.utcnow()}] #service disabled disabled_service = [{'availability_zone': "fake_az", 'host': test_host, 'disabled': 1, 'updated_at': timeutils.utcnow()}] #dead service that last reported at 20th century dead_service = [{'availability_zone': "fake_az", 'host': alt_host, 'disabled': 0, 'updated_at': '1989-04-16 02:55:44'}] #first service's host not match but second one works. multi_services = [{'availability_zone': "fake_az", 'host': alt_host, 'disabled': 0, 'updated_at': timeutils.utcnow()}, {'availability_zone': "fake_az", 'host': test_host, 'disabled': 0, 'updated_at': timeutils.utcnow()}] #Setup mock to run through the following service cases _mock_service_get_all_by_topic.side_effect = [empty_service, host_not_match, az_not_match, disabled_service, dead_service, multi_services] volume_id = utils.create_volume(self.context, size=2, host=test_host)['id'] volume = self.volume_api.get(context.get_admin_context(), volume_id) #test empty service self.assertEqual(self.backup_api._is_backup_service_enabled(volume, test_host), False) #test host not match service self.assertEqual(self.backup_api._is_backup_service_enabled(volume, test_host), False) #test az not match service self.assertEqual(self.backup_api._is_backup_service_enabled(volume, test_host), False) #test disabled service self.assertEqual(self.backup_api._is_backup_service_enabled(volume, test_host), False) #test dead service self.assertEqual(self.backup_api._is_backup_service_enabled(volume, test_host), False) #test multi services and the last service matches self.assertEqual(self.backup_api._is_backup_service_enabled(volume, test_host), True) def test_delete_backup_available(self): backup_id = self._create_backup(status='available') req = webob.Request.blank('/v2/fake/backups/%s' % backup_id) req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) self.assertEqual(self._get_backup_attrib(backup_id, 'status'), 'deleting') db.backup_destroy(context.get_admin_context(), backup_id) def test_delete_backup_error(self): backup_id = self._create_backup(status='error') req = webob.Request.blank('/v2/fake/backups/%s' % backup_id) req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) self.assertEqual(self._get_backup_attrib(backup_id, 'status'), 'deleting') db.backup_destroy(context.get_admin_context(), backup_id) def test_delete_backup_with_backup_NotFound(self): req = webob.Request.blank('/v2/fake/backups/9999') req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Backup 9999 could not be found.') def test_delete_backup_with_InvalidBackup(self): backup_id = self._create_backup() req = webob.Request.blank('/v2/fake/backups/%s' % backup_id) req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid backup: Backup status must be ' 'available or error') db.backup_destroy(context.get_admin_context(), backup_id) def test_restore_backup_volume_id_specified_json(self): backup_id = self._create_backup(status='available') # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 202) self.assertEqual(res_dict['restore']['backup_id'], backup_id) self.assertEqual(res_dict['restore']['volume_id'], volume_id) def test_restore_backup_volume_id_specified_xml(self): backup_id = self._create_backup(status='available') volume_id = utils.create_volume(self.context, size=2)['id'] req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.body = '' % volume_id req.method = 'POST' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) dom = minidom.parseString(res.body) restore = dom.getElementsByTagName('restore') self.assertEqual(restore.item(0).getAttribute('backup_id'), backup_id) self.assertEqual(restore.item(0).getAttribute('volume_id'), volume_id) db.backup_destroy(context.get_admin_context(), backup_id) db.volume_destroy(context.get_admin_context(), volume_id) def test_restore_backup_with_no_body(self): # omit body from the request backup_id = self._create_backup(status='available') req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.body = json.dumps(None) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format') db.backup_destroy(context.get_admin_context(), backup_id) def test_restore_backup_with_body_KeyError(self): # omit restore from body backup_id = self._create_backup(status='available') req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) body = {"": {}} req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format') @mock.patch('cinder.volume.API.create') def test_restore_backup_volume_id_unspecified(self, _mock_volume_api_create): # intercept volume creation to ensure created volume # has status of available def fake_volume_api_create(context, size, name, description): volume_id = utils.create_volume(self.context, size=size)['id'] return db.volume_get(context, volume_id) _mock_volume_api_create.side_effect = fake_volume_api_create backup_id = self._create_backup(size=5, status='available') body = {"restore": {}} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 202) self.assertEqual(res_dict['restore']['backup_id'], backup_id) @mock.patch('cinder.backup.API.restore') def test_restore_backup_with_InvalidInput(self, _mock_volume_api_restore): msg = _("Invalid input") _mock_volume_api_restore.side_effect = \ exception.InvalidInput(reason=msg) backup_id = self._create_backup(status='available') # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=0)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid input received: Invalid input') def test_restore_backup_with_InvalidVolume(self): backup_id = self._create_backup(status='available') # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5, status='attaching')['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid volume: Volume to be restored to must ' 'be available') db.volume_destroy(context.get_admin_context(), volume_id) db.backup_destroy(context.get_admin_context(), backup_id) def test_restore_backup_with_InvalidBackup(self): backup_id = self._create_backup(status='restoring') # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid backup: Backup status must be available') db.volume_destroy(context.get_admin_context(), volume_id) db.backup_destroy(context.get_admin_context(), backup_id) def test_restore_backup_with_BackupNotFound(self): # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/9999/restore') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Backup 9999 could not be found.') db.volume_destroy(context.get_admin_context(), volume_id) def test_restore_backup_with_VolumeNotFound(self): backup_id = self._create_backup(status='available') body = {"restore": {"volume_id": "9999", }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Volume 9999 could not be found.') db.backup_destroy(context.get_admin_context(), backup_id) @mock.patch('cinder.backup.API.restore') def test_restore_backup_with_VolumeSizeExceedsAvailableQuota( self, _mock_backup_restore): _mock_backup_restore.side_effect = \ exception.VolumeSizeExceedsAvailableQuota(requested='2', consumed='2', quota='3') backup_id = self._create_backup(status='available') # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 413) self.assertEqual(res_dict['overLimit']['code'], 413) self.assertEqual(res_dict['overLimit']['message'], 'Requested volume or snapshot exceeds allowed ' 'Gigabytes quota. Requested 2G, quota is 3G and ' '2G has been consumed.') @mock.patch('cinder.backup.API.restore') def test_restore_backup_with_VolumeLimitExceeded(self, _mock_backup_restore): _mock_backup_restore.side_effect = \ exception.VolumeLimitExceeded(allowed=1) backup_id = self._create_backup(status='available') # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=5)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 413) self.assertEqual(res_dict['overLimit']['code'], 413) self.assertEqual(res_dict['overLimit']['message'], 'Maximum number of volumes allowed (1) exceeded') def test_restore_backup_to_undersized_volume(self): backup_size = 10 backup_id = self._create_backup(status='available', size=backup_size) # need to create the volume referenced below first volume_size = 5 volume_id = utils.create_volume(self.context, size=volume_size)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid volume: volume size %d is too ' 'small to restore backup of size %d.' % (volume_size, backup_size)) db.volume_destroy(context.get_admin_context(), volume_id) db.backup_destroy(context.get_admin_context(), backup_id) def test_restore_backup_to_oversized_volume(self): backup_id = self._create_backup(status='available', size=10) # need to create the volume referenced below first volume_id = utils.create_volume(self.context, size=15)['id'] body = {"restore": {"volume_id": volume_id, }} req = webob.Request.blank('/v2/fake/backups/%s/restore' % backup_id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 202) self.assertEqual(res_dict['restore']['backup_id'], backup_id) self.assertEqual(res_dict['restore']['volume_id'], volume_id) db.volume_destroy(context.get_admin_context(), volume_id) db.backup_destroy(context.get_admin_context(), backup_id) def test_export_record_as_non_admin(self): backup_id = self._create_backup(status='available', size=10) req = webob.Request.blank('/v2/fake/backups/%s/export_record' % backup_id) req.method = 'GET' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) # request is not authorized self.assertEqual(res.status_int, 403) @mock.patch('cinder.backup.rpcapi.BackupAPI.export_record') def test_export_backup_record_id_specified_json(self, _mock_export_record_rpc): backup_id = self._create_backup(status='available', size=10) ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' _mock_export_record_rpc.return_value = \ {'backup_service': backup_service, 'backup_url': backup_url} req = webob.Request.blank('/v2/fake/backups/%s/export_record' % backup_id) req.method = 'GET' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) # verify that request is successful self.assertEqual(res.status_int, 200) self.assertEqual(res_dict['backup-record']['backup_service'], backup_service) self.assertEqual(res_dict['backup-record']['backup_url'], backup_url) db.backup_destroy(context.get_admin_context(), backup_id) @mock.patch('cinder.backup.rpcapi.BackupAPI.export_record') def test_export_record_backup_id_specified_xml(self, _mock_export_record_rpc): backup_id = self._create_backup(status='available', size=10) ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' _mock_export_record_rpc.return_value = \ {'backup_service': backup_service, 'backup_url': backup_url} req = webob.Request.blank('/v2/fake/backups/%s/export_record' % backup_id) req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) export = dom.getElementsByTagName('backup-record') self.assertEqual(export.item(0).getAttribute('backup_service'), backup_service) self.assertEqual(export.item(0).getAttribute('backup_url'), backup_url) #db.backup_destroy(context.get_admin_context(), backup_id) def test_export_record_with_bad_backup_id(self): ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_id = 'bad_id' req = webob.Request.blank('/v2/fake/backups/%s/export_record' % backup_id) req.method = 'GET' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Backup %s could not be found.' % backup_id) def test_export_record_for_unavailable_backup(self): backup_id = self._create_backup(status='restoring') ctx = context.RequestContext('admin', 'fake', is_admin=True) req = webob.Request.blank('/v2/fake/backups/%s/export_record' % backup_id) req.method = 'GET' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid backup: Backup status must be available ' 'and not restoring.') db.backup_destroy(context.get_admin_context(), backup_id) @mock.patch('cinder.backup.rpcapi.BackupAPI.export_record') def test_export_record_with_unavailable_service(self, _mock_export_record_rpc): msg = 'fake unavailable service' _mock_export_record_rpc.side_effect = \ exception.InvalidBackup(reason=msg) backup_id = self._create_backup(status='available') ctx = context.RequestContext('admin', 'fake', is_admin=True) req = webob.Request.blank('/v2/fake/backups/%s/export_record' % backup_id) req.method = 'GET' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid backup: %s' % msg) db.backup_destroy(context.get_admin_context(), backup_id) def test_import_record_as_non_admin(self): backup_service = 'fake' backup_url = 'fake' req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {'backup_service': backup_service, 'backup_url': backup_url}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) # request is not authorized self.assertEqual(res.status_int, 403) @mock.patch('cinder.backup.api.API._list_backup_services') @mock.patch('cinder.backup.rpcapi.BackupAPI.import_record') def test_import_record_volume_id_specified_json(self, _mock_import_record_rpc, _mock_list_services): ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' _mock_import_record_rpc.return_value = \ {'display_name': 'fake', 'display_description': 'fake', 'container': 'fake', 'size': 1, 'service_metadata': 'fake', 'service': 'fake', 'object_count': 1, 'status': 'available', 'availability_zone': 'fake'} _mock_list_services.return_value = ['fake'] req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {'backup_service': backup_service, 'backup_url': backup_url}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) # verify that request is successful self.assertEqual(res.status_int, 201) self.assertTrue('id' in res_dict['backup']) @mock.patch('cinder.backup.api.API._list_backup_services') @mock.patch('cinder.backup.rpcapi.BackupAPI.import_record') def test_import_record_volume_id_specified_xml(self, _mock_import_record_rpc, _mock_list_services): ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' _mock_import_record_rpc.return_value = \ {'display_name': 'fake', 'display_description': 'fake', 'container': 'fake', 'size': 1, 'service_metadata': 'fake', 'service': 'fake', 'object_count': 1, 'status': 'available', 'availability_zone': 'fake'} _mock_list_services.return_value = ['fake'] req = webob.Request.blank('/v2/fake/backups/import_record') req.body = ('') \ % {'backup_url': backup_url, 'backup_service': backup_service} req.method = 'POST' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) self.assertEqual(res.status_int, 201) dom = minidom.parseString(res.body) backup = dom.getElementsByTagName('backup') self.assertTrue(backup.item(0).hasAttribute('id')) @mock.patch('cinder.backup.api.API._list_backup_services') def test_import_record_with_no_backup_services(self, _mock_list_services): ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' _mock_list_services.return_value = [] req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {'backup_service': backup_service, 'backup_url': backup_url}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 500) self.assertEqual(res_dict['computeFault']['code'], 500) self.assertEqual(res_dict['computeFault']['message'], 'Service %s could not be found.' % backup_service) @mock.patch('cinder.backup.api.API._list_backup_services') @mock.patch('cinder.backup.rpcapi.BackupAPI.import_record') def test_import_backup_with_missing_backup_services(self, _mock_import_record, _mock_list_services): ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' _mock_list_services.return_value = ['no-match1', 'no-match2'] _mock_import_record.side_effect = \ exception.ServiceNotFound(service_id='fake') req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {'backup_service': backup_service, 'backup_url': backup_url}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 500) self.assertEqual(res_dict['computeFault']['code'], 500) self.assertEqual(res_dict['computeFault']['message'], 'Service %s could not be found.' % backup_service) def test_import_record_with_missing_body_elements(self): ctx = context.RequestContext('admin', 'fake', is_admin=True) backup_service = 'fake' backup_url = 'fake' #test with no backup_service req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {'backup_url': backup_url}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format.') #test with no backup_url req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {'backup_service': backup_service}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format.') #test with no backup_url and backup_url req = webob.Request.blank('/v2/fake/backups/import_record') body = {'backup-record': {}} req.body = json.dumps(body) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format.') def test_import_record_with_no_body(self): ctx = context.RequestContext('admin', 'fake', is_admin=True) req = webob.Request.blank('/v2/fake/backups/import_record') req.body = json.dumps(None) req.method = 'POST' req.headers['content-type'] = 'application/json' res = req.get_response(fakes.wsgi_app(fake_auth_context=ctx)) res_dict = json.loads(res.body) # verify that request is successful self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format.') cinder-2014.1.5/cinder/tests/api/contrib/test_availability_zones.py0000664000567000056700000000560112540642606026477 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. import datetime from lxml import etree import cinder.api.contrib.availability_zones import cinder.context from cinder.openstack.common import timeutils import cinder.test import cinder.volume.api created_time = datetime.datetime(2012, 11, 14, 1, 20, 41, 95099) current_time = timeutils.utcnow() def list_availability_zones(self): return ( {'name': 'ping', 'available': True}, {'name': 'pong', 'available': False}, ) class FakeRequest(object): environ = {'cinder.context': cinder.context.get_admin_context()} GET = {} class ControllerTestCase(cinder.test.TestCase): def setUp(self): super(ControllerTestCase, self).setUp() self.controller = cinder.api.contrib.availability_zones.Controller() self.req = FakeRequest() self.stubs.Set(cinder.volume.api.API, 'list_availability_zones', list_availability_zones) def test_list_hosts(self): """Verify that the volume hosts are returned.""" actual = self.controller.index(self.req) expected = { 'availabilityZoneInfo': [ {'zoneName': 'ping', 'zoneState': {'available': True}}, {'zoneName': 'pong', 'zoneState': {'available': False}}, ], } self.assertEqual(expected, actual) class XMLSerializerTest(cinder.test.TestCase): def test_index_xml(self): fixture = { 'availabilityZoneInfo': [ {'zoneName': 'ping', 'zoneState': {'available': True}}, {'zoneName': 'pong', 'zoneState': {'available': False}}, ], } serializer = cinder.api.contrib.availability_zones.ListTemplate() text = serializer.serialize(fixture) tree = etree.fromstring(text) self.assertEqual('availabilityZones', tree.tag) self.assertEqual(2, len(tree)) self.assertEqual('availabilityZone', tree[0].tag) self.assertEqual('ping', tree[0].get('name')) self.assertEqual('zoneState', tree[0][0].tag) self.assertEqual('True', tree[0][0].get('available')) self.assertEqual('pong', tree[1].get('name')) self.assertEqual('zoneState', tree[1][0].tag) self.assertEqual('False', tree[1][0].get('available')) cinder-2014.1.5/cinder/tests/api/contrib/__init__.py0000664000567000056700000000134312540642606023306 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. # NOTE(vish): this forces the fixtures from tests/__init.py:setup() to work from cinder.tests import * cinder-2014.1.5/cinder/tests/api/contrib/test_types_extra_specs.py0000664000567000056700000002541212540642606026355 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # Copyright 2011 University of Southern California # All Rights Reserved. # # 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. from lxml import etree import webob import mock from cinder.api.contrib import types_extra_specs from cinder import exception from cinder import test from cinder.tests.api import fakes from cinder.tests import fake_notifier import cinder.wsgi def return_create_volume_type_extra_specs(context, volume_type_id, extra_specs): return stub_volume_type_extra_specs() def return_volume_type_extra_specs(context, volume_type_id): return stub_volume_type_extra_specs() def return_empty_volume_type_extra_specs(context, volume_type_id): return {} def delete_volume_type_extra_specs(context, volume_type_id, key): pass def delete_volume_type_extra_specs_not_found(context, volume_type_id, key): raise exception.VolumeTypeExtraSpecsNotFound("Not Found") def stub_volume_type_extra_specs(): specs = {"key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} return specs def volume_type_get(context, volume_type_id): pass class VolumeTypesExtraSpecsTest(test.TestCase): def setUp(self): super(VolumeTypesExtraSpecsTest, self).setUp() self.flags(host='fake') self.stubs.Set(cinder.db, 'volume_type_get', volume_type_get) self.api_path = '/v2/fake/os-volume-types/1/extra_specs' self.controller = types_extra_specs.VolumeTypeExtraSpecsController() """to reset notifier drivers left over from other api/contrib tests""" fake_notifier.reset() self.addCleanup(fake_notifier.reset) def test_index(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_get', return_volume_type_extra_specs) req = fakes.HTTPRequest.blank(self.api_path) res_dict = self.controller.index(req, 1) self.assertEqual('value1', res_dict['extra_specs']['key1']) def test_index_no_data(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_get', return_empty_volume_type_extra_specs) req = fakes.HTTPRequest.blank(self.api_path) res_dict = self.controller.index(req, 1) self.assertEqual(0, len(res_dict['extra_specs'])) def test_show(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_get', return_volume_type_extra_specs) req = fakes.HTTPRequest.blank(self.api_path + '/key5') res_dict = self.controller.show(req, 1, 'key5') self.assertEqual('value5', res_dict['key5']) def test_show_spec_not_found(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_get', return_empty_volume_type_extra_specs) req = fakes.HTTPRequest.blank(self.api_path + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req, 1, 'key6') def test_delete(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_delete', delete_volume_type_extra_specs) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank(self.api_path + '/key5') self.controller.delete(req, 1, 'key5') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_delete_not_found(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_delete', delete_volume_type_extra_specs_not_found) req = fakes.HTTPRequest.blank(self.api_path + '/key6') self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, req, 1, 'key6') def test_create(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_update_or_create', return_create_volume_type_extra_specs) body = {"extra_specs": {"key1": "value1"}} self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank(self.api_path) res_dict = self.controller.create(req, 1, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) self.assertEqual('value1', res_dict['extra_specs']['key1']) @mock.patch.object(cinder.db, 'volume_type_extra_specs_update_or_create') def test_create_key_allowed_chars( self, volume_type_extra_specs_update_or_create): mock_return_value = {"key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} volume_type_extra_specs_update_or_create.\ return_value = mock_return_value body = {"extra_specs": {"other_alphanum.-_:": "value1"}} self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank(self.api_path) res_dict = self.controller.create(req, 1, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) self.assertEqual('value1', res_dict['extra_specs']['other_alphanum.-_:']) @mock.patch.object(cinder.db, 'volume_type_extra_specs_update_or_create') def test_create_too_many_keys_allowed_chars( self, volume_type_extra_specs_update_or_create): mock_return_value = {"key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} volume_type_extra_specs_update_or_create.\ return_value = mock_return_value body = {"extra_specs": {"other_alphanum.-_:": "value1", "other2_alphanum.-_:": "value2", "other3_alphanum.-_:": "value3"}} self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank(self.api_path) res_dict = self.controller.create(req, 1, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) self.assertEqual('value1', res_dict['extra_specs']['other_alphanum.-_:']) self.assertEqual('value2', res_dict['extra_specs']['other2_alphanum.-_:']) self.assertEqual('value3', res_dict['extra_specs']['other3_alphanum.-_:']) def test_update_item(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_update_or_create', return_create_volume_type_extra_specs) body = {"key1": "value1"} self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank(self.api_path + '/key1') res_dict = self.controller.update(req, 1, 'key1', body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) self.assertEqual('value1', res_dict['key1']) def test_update_item_too_many_keys(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_update_or_create', return_create_volume_type_extra_specs) body = {"key1": "value1", "key2": "value2"} req = fakes.HTTPRequest.blank(self.api_path + '/key1') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'key1', body) def test_update_item_body_uri_mismatch(self): self.stubs.Set(cinder.db, 'volume_type_extra_specs_update_or_create', return_create_volume_type_extra_specs) body = {"key1": "value1"} req = fakes.HTTPRequest.blank(self.api_path + '/bad') self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, 1, 'bad', body) def _extra_specs_empty_update(self, body): req = fakes.HTTPRequest.blank('/v2/fake/types/1/extra_specs') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, req, '1', body) def test_update_no_body(self): self._extra_specs_empty_update(body=None) def test_update_empty_body(self): self._extra_specs_empty_update(body={}) def _extra_specs_create_bad_body(self, body): req = fakes.HTTPRequest.blank('/v2/fake/types/1/extra_specs') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, req, '1', body) def test_create_no_body(self): self._extra_specs_create_bad_body(body=None) def test_create_missing_volume(self): body = {'foo': {'a': 'b'}} self._extra_specs_create_bad_body(body=body) def test_create_malformed_entity(self): body = {'extra_specs': 'string'} self._extra_specs_create_bad_body(body=body) def test_create_invalid_key(self): body = {"extra_specs": {"ke/y1": "value1"}} self._extra_specs_create_bad_body(body=body) def test_create_invalid_too_many_key(self): body = {"key1": "value1", "ke/y2": "value2", "key3": "value3"} self._extra_specs_create_bad_body(body=body) class VolumeTypeExtraSpecsSerializerTest(test.TestCase): def test_index_create_serializer(self): serializer = types_extra_specs.VolumeTypeExtraSpecsTemplate() # Just getting some input data extra_specs = stub_volume_type_extra_specs() text = serializer.serialize(dict(extra_specs=extra_specs)) tree = etree.fromstring(text) self.assertEqual('extra_specs', tree.tag) self.assertEqual(len(extra_specs), len(tree)) seen = set(extra_specs.keys()) for child in tree: self.assertIn(child.tag, seen) self.assertEqual(extra_specs[child.tag], child.text) seen.remove(child.tag) self.assertEqual(len(seen), 0) def test_update_show_serializer(self): serializer = types_extra_specs.VolumeTypeExtraSpecTemplate() exemplar = dict(key1='value1') text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('key1', tree.tag) self.assertEqual('value1', tree.text) self.assertEqual(0, len(tree)) cinder-2014.1.5/cinder/tests/api/contrib/test_types_manage.py0000664000567000056700000001337512540642606025272 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. import webob from cinder.api.contrib import types_manage from cinder import exception from cinder import test from cinder.tests.api import fakes from cinder.tests import fake_notifier from cinder.volume import volume_types def stub_volume_type(id): specs = {"key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5"} return dict(id=id, name='vol_type_%s' % str(id), extra_specs=specs) def return_volume_types_get_volume_type(context, id): if id == "777": raise exception.VolumeTypeNotFound(volume_type_id=id) return stub_volume_type(int(id)) def return_volume_types_destroy(context, name): if name == "777": raise exception.VolumeTypeNotFoundByName(volume_type_name=name) pass def return_volume_types_with_volumes_destroy(context, id): if id == "1": raise exception.VolumeTypeInUse(volume_type_id=id) pass def return_volume_types_create(context, name, specs): pass def return_volume_types_create_duplicate_type(context, name, specs): raise exception.VolumeTypeExists(id=name) def return_volume_types_get_by_name(context, name): if name == "777": raise exception.VolumeTypeNotFoundByName(volume_type_name=name) return stub_volume_type(int(name.split("_")[2])) class VolumeTypesManageApiTest(test.TestCase): def setUp(self): super(VolumeTypesManageApiTest, self).setUp() self.flags(host='fake') self.controller = types_manage.VolumeTypesManageController() """to reset notifier drivers left over from other api/contrib tests""" fake_notifier.reset() self.addCleanup(fake_notifier.reset) def tearDown(self): super(VolumeTypesManageApiTest, self).tearDown() def test_volume_types_delete(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) self.stubs.Set(volume_types, 'destroy', return_volume_types_destroy) req = fakes.HTTPRequest.blank('/v2/fake/types/1') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.controller._delete(req, 1) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_volume_types_delete_not_found(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) self.stubs.Set(volume_types, 'destroy', return_volume_types_destroy) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) req = fakes.HTTPRequest.blank('/v2/fake/types/777') self.assertRaises(webob.exc.HTTPNotFound, self.controller._delete, req, '777') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_volume_types_with_volumes_destroy(self): self.stubs.Set(volume_types, 'get_volume_type', return_volume_types_get_volume_type) self.stubs.Set(volume_types, 'destroy', return_volume_types_with_volumes_destroy) req = fakes.HTTPRequest.blank('/v2/fake/types/1') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.controller._delete(req, 1) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) def test_create(self): self.stubs.Set(volume_types, 'create', return_volume_types_create) self.stubs.Set(volume_types, 'get_volume_type_by_name', return_volume_types_get_by_name) body = {"volume_type": {"name": "vol_type_1", "extra_specs": {"key1": "value1"}}} req = fakes.HTTPRequest.blank('/v2/fake/types') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) res_dict = self.controller._create(req, body) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1) self.assertEqual(1, len(res_dict)) self.assertEqual('vol_type_1', res_dict['volume_type']['name']) def test_create_duplicate_type_fail(self): self.stubs.Set(volume_types, 'create', return_volume_types_create_duplicate_type) self.stubs.Set(volume_types, 'get_volume_type_by_name', return_volume_types_get_by_name) body = {"volume_type": {"name": "vol_type_1", "extra_specs": {"key1": "value1"}}} req = fakes.HTTPRequest.blank('/v2/fake/types') self.assertRaises(webob.exc.HTTPConflict, self.controller._create, req, body) def _create_volume_type_bad_body(self, body): req = fakes.HTTPRequest.blank('/v2/fake/types') req.method = 'POST' self.assertRaises(webob.exc.HTTPBadRequest, self.controller._create, req, body) def test_create_no_body(self): self._create_volume_type_bad_body(body=None) def test_create_missing_volume(self): body = {'foo': {'a': 'b'}} self._create_volume_type_bad_body(body=body) def test_create_malformed_entity(self): body = {'volume_type': 'string'} self._create_volume_type_bad_body(body=body) cinder-2014.1.5/cinder/tests/api/contrib/test_extended_snapshot_attributes.py0000664000567000056700000000713512540642606030600 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. from lxml import etree import webob from cinder.api.contrib import extended_snapshot_attributes from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes from cinder import volume UUID1 = '00000000-0000-0000-0000-000000000001' UUID2 = '00000000-0000-0000-0000-000000000002' def _get_default_snapshot_param(): return {'id': UUID1, 'volume_id': 12, 'status': 'available', 'volume_size': 100, 'created_at': None, 'display_name': 'Default name', 'display_description': 'Default description', 'project_id': 'fake', 'progress': '0%'} def fake_snapshot_get(self, context, snapshot_id): param = _get_default_snapshot_param() return param def fake_snapshot_get_all(self, context, search_opts=None): param = _get_default_snapshot_param() return [param] class ExtendedSnapshotAttributesTest(test.TestCase): content_type = 'application/json' prefix = 'os-extended-snapshot-attributes:' def setUp(self): super(ExtendedSnapshotAttributesTest, self).setUp() self.stubs.Set(volume.api.API, 'get_snapshot', fake_snapshot_get) self.stubs.Set(volume.api.API, 'get_all_snapshots', fake_snapshot_get_all) def _make_request(self, url): req = webob.Request.blank(url) req.headers['Accept'] = self.content_type res = req.get_response(fakes.wsgi_app()) return res def _get_snapshot(self, body): return jsonutils.loads(body).get('snapshot') def _get_snapshots(self, body): return jsonutils.loads(body).get('snapshots') def assertSnapshotAttributes(self, snapshot, project_id, progress): self.assertEqual(snapshot.get('%sproject_id' % self.prefix), project_id) self.assertEqual(snapshot.get('%sprogress' % self.prefix), progress) def test_show(self): url = '/v2/fake/snapshots/%s' % UUID2 res = self._make_request(url) self.assertEqual(res.status_int, 200) self.assertSnapshotAttributes(self._get_snapshot(res.body), project_id='fake', progress='0%') def test_detail(self): url = '/v2/fake/snapshots/detail' res = self._make_request(url) self.assertEqual(res.status_int, 200) for i, snapshot in enumerate(self._get_snapshots(res.body)): self.assertSnapshotAttributes(snapshot, project_id='fake', progress='0%') class ExtendedSnapshotAttributesXmlTest(ExtendedSnapshotAttributesTest): content_type = 'application/xml' ext = extended_snapshot_attributes prefix = '{%s}' % ext.Extended_snapshot_attributes.namespace def _get_snapshot(self, body): return etree.XML(body) def _get_snapshots(self, body): return etree.XML(body).getchildren() cinder-2014.1.5/cinder/tests/api/contrib/test_admin_actions.py0000664000567000056700000010202412540642606025414 0ustar jenkinsjenkins00000000000000# 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. import ast import tempfile import webob from oslo.config import cfg from cinder.brick.local_dev import lvm as brick_lvm from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import jsonutils from cinder.openstack.common import timeutils from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs from cinder.tests import cast_as_call from cinder.volume import api as volume_api CONF = cfg.CONF def app(): # no auth, just let environ['cinder.context'] pass through api = fakes.router.APIRouter() mapper = fakes.urlmap.URLMap() mapper['/v2'] = api return mapper class AdminActionsTest(test.TestCase): def setUp(self): super(AdminActionsTest, self).setUp() self.tempdir = tempfile.mkdtemp() self.flags(rpc_backend='cinder.openstack.common.rpc.impl_fake') self.flags(lock_path=self.tempdir, disable_process_locking=True) self.volume_api = volume_api.API() cast_as_call.mock_cast_as_call(self.volume_api.volume_rpcapi.client) cast_as_call.mock_cast_as_call(self.volume_api.scheduler_rpcapi.client) self.stubs.Set(brick_lvm.LVM, '_vg_exists', lambda x: True) def test_reset_status_as_admin(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available'}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request status of 'error' req.body = jsonutils.dumps({'os-reset_status': {'status': 'error'}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 202) volume = db.volume_get(ctx, volume['id']) # status changed to 'error' self.assertEqual(volume['status'], 'error') def test_reset_status_as_non_admin(self): # current status is 'error' volume = db.volume_create(context.get_admin_context(), {'status': 'error', 'size': 1}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request changing status to available req.body = jsonutils.dumps({'os-reset_status': {'status': 'available'}}) # non-admin context req.environ['cinder.context'] = context.RequestContext('fake', 'fake') resp = req.get_response(app()) # request is not authorized self.assertEqual(resp.status_int, 403) volume = db.volume_get(context.get_admin_context(), volume['id']) # status is still 'error' self.assertEqual(volume['status'], 'error') def test_malformed_reset_status_body(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'size': 1}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # malformed request body req.body = jsonutils.dumps({'os-reset_status': {'x-status': 'bad'}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # bad request self.assertEqual(resp.status_int, 400) volume = db.volume_get(ctx, volume['id']) # status is still 'available' self.assertEqual(volume['status'], 'available') def test_invalid_status_for_volume(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'size': 1}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # 'invalid' is not a valid status req.body = jsonutils.dumps({'os-reset_status': {'status': 'invalid'}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # bad request self.assertEqual(resp.status_int, 400) volume = db.volume_get(ctx, volume['id']) # status is still 'available' self.assertEqual(volume['status'], 'available') def test_reset_status_for_missing_volume(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # missing-volume-id req = webob.Request.blank('/v2/fake/volumes/%s/action' % 'missing-volume-id') req.method = 'POST' req.headers['content-type'] = 'application/json' # malformed request body req.body = jsonutils.dumps({'os-reset_status': {'status': 'available'}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # not found self.assertEqual(resp.status_int, 404) self.assertRaises(exception.NotFound, db.volume_get, ctx, 'missing-volume-id') def test_reset_attached_status(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1, 'attach_status': 'attached'}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request update attach_status to detached body = {'os-reset_status': {'status': 'available', 'attach_status': 'detached'}} req.body = jsonutils.dumps(body) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 202) volume = db.volume_get(ctx, volume['id']) # attach_status changed to 'detached' self.assertEqual(volume['attach_status'], 'detached') # status un-modified self.assertEqual(volume['status'], 'available') def test_invalid_reset_attached_status(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1, 'attach_status': 'detached'}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # 'invalid' is not a valid attach_status body = {'os-reset_status': {'status': 'available', 'attach_status': 'invalid'}} req.body = jsonutils.dumps(body) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # bad request self.assertEqual(resp.status_int, 400) volume = db.volume_get(ctx, volume['id']) # status and attach_status un-modified self.assertEqual(volume['status'], 'available') self.assertEqual(volume['attach_status'], 'detached') def test_snapshot_reset_status(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # snapshot in 'error_deleting' volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) snapshot = db.snapshot_create(ctx, {'status': 'error_deleting', 'volume_id': volume['id']}) req = webob.Request.blank('/v2/fake/snapshots/%s/action' % snapshot['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request status of 'error' req.body = jsonutils.dumps({'os-reset_status': {'status': 'error'}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 202) snapshot = db.snapshot_get(ctx, snapshot['id']) # status changed to 'error' self.assertEqual(snapshot['status'], 'error') def test_invalid_status_for_snapshot(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # snapshot in 'available' volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) snapshot = db.snapshot_create(ctx, {'status': 'available', 'volume_id': volume['id']}) req = webob.Request.blank('/v2/fake/snapshots/%s/action' % snapshot['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # 'attaching' is not a valid status for snapshots req.body = jsonutils.dumps({'os-reset_status': {'status': 'attaching'}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 400) snapshot = db.snapshot_get(ctx, snapshot['id']) # status is still 'available' self.assertEqual(snapshot['status'], 'available') def test_force_delete(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is creating volume = db.volume_create(ctx, {'size': 1}) req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = jsonutils.dumps({'os-force_delete': {}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 202) # volume is deleted self.assertRaises(exception.NotFound, db.volume_get, ctx, volume['id']) def test_force_delete_snapshot(self): ctx = context.RequestContext('admin', 'fake', True) snapshot = stubs.stub_snapshot(1, host='foo') self.stubs.Set(db, 'volume_get', lambda x, y: snapshot) self.stubs.Set(db, 'snapshot_get', lambda x, y: snapshot) self.stubs.Set(volume_api.API, 'delete_snapshot', lambda *x, **y: True) path = '/v2/fake/snapshots/%s/action' % snapshot['id'] req = webob.Request.blank(path) req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = jsonutils.dumps({'os-force_delete': {}}) # attach admin context to request req.environ['cinder.context'] = ctx resp = req.get_response(app()) self.assertEqual(resp.status_int, 202) def test_force_detach_instance_attached_volume(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) connector = {'initiator': 'iqn.2012-07.org.fake:01'} # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') self.volume_api.reserve_volume(ctx, volume) mountpoint = '/dev/vbd' self.volume_api.attach(ctx, volume, stubs.FAKE_UUID, None, mountpoint, 'rw') # volume is attached volume = db.volume_get(ctx, volume['id']) self.assertEqual(volume['status'], 'in-use') self.assertEqual(volume['instance_uuid'], stubs.FAKE_UUID) self.assertIsNone(volume['attached_host']) self.assertEqual(volume['mountpoint'], mountpoint) self.assertEqual(volume['attach_status'], 'attached') admin_metadata = volume['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'False') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'rw') conn_info = self.volume_api.initialize_connection(ctx, volume, connector) self.assertEqual(conn_info['data']['access_mode'], 'rw') # build request to force detach req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request status of 'error' req.body = jsonutils.dumps({'os-force_detach': None}) # attach admin context to request req.environ['cinder.context'] = ctx # make request resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 202) volume = db.volume_get(ctx, volume['id']) # status changed to 'available' self.assertEqual(volume['status'], 'available') self.assertIsNone(volume['instance_uuid']) self.assertIsNone(volume['attached_host']) self.assertIsNone(volume['mountpoint']) self.assertEqual(volume['attach_status'], 'detached') admin_metadata = volume['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'False') # cleanup svc.stop() def test_force_detach_host_attached_volume(self): # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) connector = {'initiator': 'iqn.2012-07.org.fake:01'} # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') self.volume_api.reserve_volume(ctx, volume) mountpoint = '/dev/vbd' host_name = 'fake-host' self.volume_api.attach(ctx, volume, None, host_name, mountpoint, 'ro') # volume is attached volume = db.volume_get(ctx, volume['id']) self.assertEqual(volume['status'], 'in-use') self.assertIsNone(volume['instance_uuid']) self.assertEqual(volume['attached_host'], host_name) self.assertEqual(volume['mountpoint'], mountpoint) self.assertEqual(volume['attach_status'], 'attached') admin_metadata = volume['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'False') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'ro') conn_info = self.volume_api.initialize_connection(ctx, volume, connector) self.assertEqual(conn_info['data']['access_mode'], 'ro') # build request to force detach req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' # request status of 'error' req.body = jsonutils.dumps({'os-force_detach': None}) # attach admin context to request req.environ['cinder.context'] = ctx # make request resp = req.get_response(app()) # request is accepted self.assertEqual(resp.status_int, 202) volume = db.volume_get(ctx, volume['id']) # status changed to 'available' self.assertEqual(volume['status'], 'available') self.assertIsNone(volume['instance_uuid']) self.assertIsNone(volume['attached_host']) self.assertIsNone(volume['mountpoint']) self.assertEqual(volume['attach_status'], 'detached') admin_metadata = volume['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'False') # cleanup svc.stop() def test_attach_in_used_volume_by_instance(self): """Test that attaching to an in-use volume fails.""" # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) connector = {'initiator': 'iqn.2012-07.org.fake:01'} # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') self.volume_api.reserve_volume(ctx, volume) mountpoint = '/dev/vbd' self.volume_api.attach(ctx, volume, stubs.FAKE_UUID, None, mountpoint, 'rw') conn_info = self.volume_api.initialize_connection(ctx, volume, connector) self.assertEqual(conn_info['data']['access_mode'], 'rw') self.assertRaises(exception.InvalidVolume, self.volume_api.attach, ctx, volume, fakes.get_fake_uuid(), None, mountpoint, 'rw') self.assertRaises(exception.InvalidVolume, self.volume_api.attach, ctx, volume, fakes.get_fake_uuid(), None, mountpoint, 'ro') # cleanup svc.stop() def test_attach_in_used_volume_by_host(self): """Test that attaching to an in-use volume fails.""" # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) connector = {'initiator': 'iqn.2012-07.org.fake:01'} # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') self.volume_api.reserve_volume(ctx, volume) mountpoint = '/dev/vbd' host_name = 'fake_host' self.volume_api.attach(ctx, volume, None, host_name, mountpoint, 'rw') conn_info = self.volume_api.initialize_connection(ctx, volume, connector) conn_info['data']['access_mode'] = 'rw' self.assertRaises(exception.InvalidVolume, self.volume_api.attach, ctx, volume, None, host_name, mountpoint, 'rw') self.assertRaises(exception.InvalidVolume, self.volume_api.attach, ctx, volume, None, host_name, mountpoint, 'ro') # cleanup svc.stop() def test_invalid_iscsi_connector(self): """Test connector without the initiator (required by iscsi driver).""" # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) connector = {} # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') self.assertRaises(exception.VolumeBackendAPIException, self.volume_api.initialize_connection, ctx, volume, connector) # cleanup svc.stop() def test_attach_attaching_volume_with_different_instance(self): """Test that attaching volume reserved for another instance fails.""" ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') values = {'status': 'attaching', 'instance_uuid': fakes.get_fake_uuid()} db.volume_update(ctx, volume['id'], values) mountpoint = '/dev/vbd' self.assertRaises(exception.InvalidVolume, self.volume_api.attach, ctx, volume, stubs.FAKE_UUID, None, mountpoint, 'rw') # cleanup svc.stop() def test_attach_attaching_volume_with_different_mode(self): """Test that attaching volume reserved for another mode fails.""" # admin context ctx = context.RequestContext('admin', 'fake', True) # current status is available volume = db.volume_create(ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'size': 1}) # start service to handle rpc messages for attach requests svc = self.start_service('volume', host='test') values = {'status': 'attaching', 'instance_uuid': fakes.get_fake_uuid()} db.volume_update(ctx, volume['id'], values) db.volume_admin_metadata_update(ctx, volume['id'], {"attached_mode": 'rw'}, False) mountpoint = '/dev/vbd' self.assertRaises(exception.InvalidVolume, self.volume_api.attach, ctx, volume, values['instance_uuid'], None, mountpoint, 'ro') # cleanup svc.stop() def _migrate_volume_prep(self): admin_ctx = context.get_admin_context() # create volume's current host and the destination host db.service_create(admin_ctx, {'host': 'test', 'topic': CONF.volume_topic, 'created_at': timeutils.utcnow()}) db.service_create(admin_ctx, {'host': 'test2', 'topic': CONF.volume_topic, 'created_at': timeutils.utcnow()}) # current status is available volume = db.volume_create(admin_ctx, {'status': 'available', 'host': 'test', 'provider_location': '', 'attach_status': ''}) return volume def _migrate_volume_exec(self, ctx, volume, host, expected_status, force_host_copy=False): admin_ctx = context.get_admin_context() # build request to migrate to host req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' body = {'os-migrate_volume': {'host': host, 'force_host_copy': force_host_copy}} req.body = jsonutils.dumps(body) req.environ['cinder.context'] = ctx resp = req.get_response(app()) # verify status self.assertEqual(resp.status_int, expected_status) volume = db.volume_get(admin_ctx, volume['id']) return volume def test_migrate_volume_success(self): expected_status = 202 host = 'test2' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() volume = self._migrate_volume_exec(ctx, volume, host, expected_status) self.assertEqual(volume['migration_status'], 'starting') def test_migrate_volume_as_non_admin(self): expected_status = 403 host = 'test2' ctx = context.RequestContext('fake', 'fake') volume = self._migrate_volume_prep() self._migrate_volume_exec(ctx, volume, host, expected_status) def test_migrate_volume_without_host_parameter(self): expected_status = 400 host = 'test3' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() # build request to migrate without host req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' body = {'os-migrate_volume': {'host': host, 'force_host_copy': False}} req.body = jsonutils.dumps(body) req.environ['cinder.context'] = ctx resp = req.get_response(app()) # verify status self.assertEqual(resp.status_int, expected_status) def test_migrate_volume_host_no_exist(self): expected_status = 400 host = 'test3' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() self._migrate_volume_exec(ctx, volume, host, expected_status) def test_migrate_volume_same_host(self): expected_status = 400 host = 'test' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() self._migrate_volume_exec(ctx, volume, host, expected_status) def test_migrate_volume_migrating(self): expected_status = 400 host = 'test2' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() model_update = {'migration_status': 'migrating'} volume = db.volume_update(ctx, volume['id'], model_update) self._migrate_volume_exec(ctx, volume, host, expected_status) def test_migrate_volume_with_snap(self): expected_status = 400 host = 'test2' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() db.snapshot_create(ctx, {'volume_id': volume['id']}) self._migrate_volume_exec(ctx, volume, host, expected_status) def test_migrate_volume_bad_force_host_copy1(self): expected_status = 400 host = 'test2' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() self._migrate_volume_exec(ctx, volume, host, expected_status, force_host_copy='foo') def test_migrate_volume_bad_force_host_copy2(self): expected_status = 400 host = 'test2' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_prep() self._migrate_volume_exec(ctx, volume, host, expected_status, force_host_copy=1) def _migrate_volume_comp_exec(self, ctx, volume, new_volume, error, expected_status, expected_id, no_body=False): req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id']) req.method = 'POST' req.headers['content-type'] = 'application/json' body = {'new_volume': new_volume['id'], 'error': error} if no_body: req.body = jsonutils.dumps({'': body}) else: req.body = jsonutils.dumps({'os-migrate_volume_completion': body}) req.environ['cinder.context'] = ctx resp = req.get_response(app()) resp_dict = ast.literal_eval(resp.body) # verify status self.assertEqual(resp.status_int, expected_status) if expected_id: self.assertEqual(resp_dict['save_volume_id'], expected_id) else: self.assertNotIn('save_volume_id', resp_dict) def test_migrate_volume_comp_as_non_admin(self): admin_ctx = context.get_admin_context() volume = db.volume_create(admin_ctx, {'id': 'fake1'}) new_volume = db.volume_create(admin_ctx, {'id': 'fake2'}) expected_status = 403 expected_id = None ctx = context.RequestContext('fake', 'fake') volume = self._migrate_volume_comp_exec(ctx, volume, new_volume, False, expected_status, expected_id) def test_migrate_volume_comp_no_mig_status(self): admin_ctx = context.get_admin_context() volume1 = db.volume_create(admin_ctx, {'id': 'fake1', 'migration_status': 'foo'}) volume2 = db.volume_create(admin_ctx, {'id': 'fake2', 'migration_status': None}) expected_status = 400 expected_id = None ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_comp_exec(ctx, volume1, volume2, False, expected_status, expected_id) volume = self._migrate_volume_comp_exec(ctx, volume2, volume1, False, expected_status, expected_id) def test_migrate_volume_comp_bad_mig_status(self): admin_ctx = context.get_admin_context() volume1 = db.volume_create(admin_ctx, {'id': 'fake1', 'migration_status': 'migrating'}) volume2 = db.volume_create(admin_ctx, {'id': 'fake2', 'migration_status': 'target:foo'}) expected_status = 400 expected_id = None ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_comp_exec(ctx, volume1, volume2, False, expected_status, expected_id) def test_migrate_volume_comp_no_action(self): admin_ctx = context.get_admin_context() volume = db.volume_create(admin_ctx, {'id': 'fake1'}) new_volume = db.volume_create(admin_ctx, {'id': 'fake2'}) expected_status = 400 expected_id = None ctx = context.RequestContext('fake', 'fake') self._migrate_volume_comp_exec(ctx, volume, new_volume, False, expected_status, expected_id, True) def test_migrate_volume_comp_from_nova(self): admin_ctx = context.get_admin_context() volume = db.volume_create(admin_ctx, {'id': 'fake1', 'status': 'in-use', 'host': 'test', 'migration_status': None, 'attach_status': 'attached'}) new_volume = db.volume_create(admin_ctx, {'id': 'fake2', 'status': 'available', 'host': 'test', 'migration_status': None, 'attach_status': 'detached'}) expected_status = 200 expected_id = 'fake2' ctx = context.RequestContext('admin', 'fake', True) volume = self._migrate_volume_comp_exec(ctx, volume, new_volume, False, expected_status, expected_id) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_image_metadata.py0000664000567000056700000001067312540642606027125 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. import datetime import json import uuid from xml.dom import minidom import webob from cinder.api import common from cinder.api.openstack.wsgi import MetadataXMLDeserializer from cinder.api.openstack.wsgi import XMLDeserializer from cinder import db from cinder import test from cinder.tests.api import fakes from cinder import volume def fake_volume_get(*args, **kwargs): return { 'id': 'fake', 'host': 'host001', 'status': 'available', 'size': 5, 'availability_zone': 'somewhere', 'created_at': datetime.datetime.now(), 'attach_status': None, 'display_name': 'anothervolume', 'display_description': 'Just another volume!', 'volume_type_id': None, 'snapshot_id': None, 'project_id': 'fake', } def fake_volume_get_all(*args, **kwargs): return [fake_volume_get()] fake_image_metadata = { 'image_id': 'someid', 'image_name': 'fake', 'kernel_id': 'somekernel', 'ramdisk_id': 'someramdisk', } def fake_get_volume_image_metadata(*args, **kwargs): return fake_image_metadata def fake_get_volumes_image_metadata(*args, **kwargs): return {'fake': fake_image_metadata} class VolumeImageMetadataTest(test.TestCase): content_type = 'application/json' def setUp(self): super(VolumeImageMetadataTest, self).setUp() self.stubs.Set(volume.API, 'get', fake_volume_get) self.stubs.Set(volume.API, 'get_all', fake_volume_get_all) self.stubs.Set(volume.API, 'get_volume_image_metadata', fake_get_volume_image_metadata) self.stubs.Set(volume.API, 'get_volumes_image_metadata', fake_get_volumes_image_metadata) self.stubs.Set(db, 'volume_get', fake_volume_get) self.UUID = uuid.uuid4() def _make_request(self, url): req = webob.Request.blank(url) req.accept = self.content_type res = req.get_response(fakes.wsgi_app()) return res def _get_image_metadata(self, body): return json.loads(body)['volume']['volume_image_metadata'] def _get_image_metadata_list(self, body): return [ volume['volume_image_metadata'] for volume in json.loads(body)['volumes'] ] def test_get_volume(self): res = self._make_request('/v2/fake/volumes/%s' % self.UUID) self.assertEqual(res.status_int, 200) self.assertEqual(self._get_image_metadata(res.body), fake_image_metadata) def test_list_detail_volumes(self): res = self._make_request('/v2/fake/volumes/detail') self.assertEqual(res.status_int, 200) self.assertEqual(self._get_image_metadata_list(res.body)[0], fake_image_metadata) class ImageMetadataXMLDeserializer(common.MetadataXMLDeserializer): metadata_node_name = "volume_image_metadata" class VolumeImageMetadataXMLTest(VolumeImageMetadataTest): content_type = 'application/xml' def _get_image_metadata(self, body): deserializer = XMLDeserializer() volume = deserializer.find_first_child_named( minidom.parseString(body), 'volume') image_metadata = deserializer.find_first_child_named( volume, 'volume_image_metadata') return MetadataXMLDeserializer().extract_metadata(image_metadata) def _get_image_metadata_list(self, body): deserializer = XMLDeserializer() volumes = deserializer.find_first_child_named( minidom.parseString(body), 'volumes') volume_list = deserializer.find_children_named(volumes, 'volume') image_metadata_list = [ deserializer.find_first_child_named( volume, 'volume_image_metadata' ) for volume in volume_list] return map(MetadataXMLDeserializer().extract_metadata, image_metadata_list) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_manage.py0000775000567000056700000002034512540642606025433 0ustar jenkinsjenkins00000000000000# 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. import mock import webob from cinder import context from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes def app(): # no auth, just let environ['cinder.context'] pass through api = fakes.router.APIRouter() mapper = fakes.urlmap.URLMap() mapper['/v2'] = api return mapper def db_service_get_by_host_and_topic(context, host, topic): """Replacement for db.service_get_by_host_and_topic. We stub the db.service_get_by_host_and_topic method to return something for a specific host, and raise an exception for anything else. We don't use the returned data (the code under test just use the call to check for existence of a host, so the content returned doesn't matter. """ if host == 'host_ok': return {} raise exception.ServiceNotFound(service_id=host) # Some of the tests check that volume types are correctly validated during a # volume manage operation. This data structure represents an existing volume # type. fake_vt = {'id': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'name': 'good_fakevt'} def vt_get_volume_type_by_name(context, name): """Replacement for cinder.volume.volume_types.get_volume_type_by_name. Overrides cinder.volume.volume_types.get_volume_type_by_name to return the volume type based on inspection of our fake structure, rather than going to the Cinder DB. """ if name == fake_vt['name']: return fake_vt raise exception.VolumeTypeNotFoundByName(volume_type_name=name) def vt_get_volume_type(context, vt_id): """Replacement for cinder.volume.volume_types.get_volume_type. Overrides cinder.volume.volume_types.get_volume_type to return the volume type based on inspection of our fake structure, rather than going to the Cinder DB. """ if vt_id == fake_vt['id']: return fake_vt raise exception.VolumeTypeNotFound(volume_type_id=vt_id) def api_manage(*args, **kwargs): """Replacement for cinder.volume.api.API.manage_existing. Overrides cinder.volume.api.API.manage_existing to return some fake volume data structure, rather than initiating a real volume managing. Note that we don't try to replicate any passed-in information (e.g. name, volume type) in the returned structure. """ vol = { 'status': 'creating', 'display_name': 'fake_name', 'availability_zone': 'nova', 'tenant_id': 'fake', 'created_at': 'DONTCARE', 'id': 'ffffffff-0000-ffff-0000-ffffffffffff', 'volume_type': None, 'snapshot_id': None, 'user_id': 'fake', 'launched_at': 'DONTCARE', 'size': 0, 'attach_status': 'detached', 'volume_type_id': None} return vol @mock.patch('cinder.db.service_get_by_host_and_topic', db_service_get_by_host_and_topic) @mock.patch('cinder.volume.volume_types.get_volume_type_by_name', vt_get_volume_type_by_name) @mock.patch('cinder.volume.volume_types.get_volume_type', vt_get_volume_type) class VolumeManageTest(test.TestCase): """Test cases for cinder/api/contrib/volume_manage.py The API extension adds a POST /os-volume-manage API that is passed a cinder host name, and a driver-specific reference parameter. If everything is passed correctly, then the cinder.volume.api.API.manage_existing method is invoked to manage an existing storage object on the host. In this set of test cases, we are ensuring that the code correctly parses the request structure and raises the correct exceptions when things are not right, and calls down into cinder.volume.api.API.manage_existing with the correct arguments. """ def setUp(self): super(VolumeManageTest, self).setUp() def _get_resp(self, body): """Helper to execute an os-volume-manage API call.""" req = webob.Request.blank('/v2/fake/os-volume-manage') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.environ['cinder.context'] = context.RequestContext('admin', 'fake', True) req.body = jsonutils.dumps(body) res = req.get_response(app()) return res @mock.patch('cinder.volume.api.API.manage_existing', wraps=api_manage) def test_manage_volume_ok(self, mock_api_manage): """Test successful manage volume execution. Tests for correct operation when valid arguments are passed in the request body. We ensure that cinder.volume.api.API.manage_existing got called with the correct arguments, and that we return the correct HTTP code to the caller. """ body = {'volume': {'host': 'host_ok', 'ref': 'fake_ref'}} res = self._get_resp(body) self.assertEqual(res.status_int, 202, res) # Check that the manage API was called with the correct arguments. self.assertEqual(mock_api_manage.call_count, 1) args = mock_api_manage.call_args[0] self.assertEqual(args[1], body['volume']['host']) self.assertEqual(args[2], body['volume']['ref']) def test_manage_volume_missing_host(self): """Test correct failure when host is not specified.""" body = {'volume': {'ref': 'fake_ref'}} res = self._get_resp(body) self.assertEqual(res.status_int, 400) def test_manage_volume_missing_ref(self): """Test correct failure when the ref is not specified.""" body = {'volume': {'host': 'host_ok'}} res = self._get_resp(body) self.assertEqual(res.status_int, 400) pass @mock.patch('cinder.volume.api.API.manage_existing', api_manage) def test_manage_volume_volume_type_by_uuid(self): """Tests for correct operation when a volume type is specified by ID. We wrap cinder.volume.api.API.manage_existing so that managing is not actually attempted. """ body = {'volume': {'host': 'host_ok', 'ref': 'fake_ref', 'volume_type': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}} res = self._get_resp(body) self.assertEqual(res.status_int, 202, res) pass @mock.patch('cinder.volume.api.API.manage_existing', api_manage) def test_manage_volume_volume_type_by_name(self): """Tests for correct operation when a volume type is specified by name. We wrap cinder.volume.api.API.manage_existing so that managing is not actually attempted. """ body = {'volume': {'host': 'host_ok', 'ref': 'fake_ref', 'volume_type': 'good_fakevt'}} res = self._get_resp(body) self.assertEqual(res.status_int, 202, res) pass def test_manage_volume_bad_volume_type_by_uuid(self): """Test failure on nonexistent volume type specified by ID.""" body = {'volume': {'host': 'host_ok', 'ref': 'fake_ref', 'volume_type': 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'}} res = self._get_resp(body) self.assertEqual(res.status_int, 404, res) pass def test_manage_volume_bad_volume_type_by_name(self): """Test failure on nonexistent volume type specified by name.""" body = {'volume': {'host': 'host_ok', 'ref': 'fake_ref', 'volume_type': 'bad_fakevt'}} res = self._get_resp(body) self.assertEqual(res.status_int, 404, res) pass cinder-2014.1.5/cinder/tests/api/contrib/test_hosts.py0000664000567000056700000001771012540642606023753 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 OpenStack Foundation # All Rights Reserved. # # 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. import datetime from lxml import etree import webob.exc from cinder.api.contrib import hosts as os_hosts from cinder import context from cinder import db from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import test LOG = logging.getLogger(__name__) created_time = datetime.datetime(2012, 11, 14, 1, 20, 41, 95099) curr_time = datetime.datetime(2013, 7, 3, 0, 0, 1) SERVICE_LIST = [ {'created_at': created_time, 'updated_at': curr_time, 'host': 'test.host.1', 'topic': 'cinder-volume', 'disabled': 0, 'availability_zone': 'cinder'}, {'created_at': created_time, 'updated_at': curr_time, 'host': 'test.host.1', 'topic': 'cinder-volume', 'disabled': 0, 'availability_zone': 'cinder'}, {'created_at': created_time, 'updated_at': curr_time, 'host': 'test.host.1', 'topic': 'cinder-volume', 'disabled': 0, 'availability_zone': 'cinder'}, {'created_at': created_time, 'updated_at': curr_time, 'host': 'test.host.1', 'topic': 'cinder-volume', 'disabled': 0, 'availability_zone': 'cinder'}] LIST_RESPONSE = [{'service-status': 'available', 'service': 'cinder-volume', 'zone': 'cinder', 'service-state': 'enabled', 'host_name': 'test.host.1', 'last-update': curr_time}, {'service-status': 'available', 'service': 'cinder-volume', 'zone': 'cinder', 'service-state': 'enabled', 'host_name': 'test.host.1', 'last-update': curr_time}, {'service-status': 'available', 'service': 'cinder-volume', 'zone': 'cinder', 'service-state': 'enabled', 'host_name': 'test.host.1', 'last-update': curr_time}, {'service-status': 'available', 'service': 'cinder-volume', 'zone': 'cinder', 'service-state': 'enabled', 'host_name': 'test.host.1', 'last-update': curr_time}] def stub_utcnow(): return datetime.datetime(2013, 7, 3, 0, 0, 2) def stub_service_get_all(self, req): return SERVICE_LIST class FakeRequest(object): environ = {'cinder.context': context.get_admin_context()} GET = {} class FakeRequestWithcinderZone(object): environ = {'cinder.context': context.get_admin_context()} GET = {'zone': 'cinder'} class HostTestCase(test.TestCase): """Test Case for hosts.""" def setUp(self): super(HostTestCase, self).setUp() self.controller = os_hosts.HostController() self.req = FakeRequest() self.stubs.Set(db, 'service_get_all', stub_service_get_all) self.stubs.Set(timeutils, 'utcnow', stub_utcnow) def _test_host_update(self, host, key, val, expected_value): body = {key: val} result = self.controller.update(self.req, host, body=body) self.assertEqual(result[key], expected_value) def test_list_hosts(self): """Verify that the volume hosts are returned.""" hosts = os_hosts._list_hosts(self.req) self.assertEqual(hosts, LIST_RESPONSE) cinder_hosts = os_hosts._list_hosts(self.req, 'cinder-volume') expected = [host for host in LIST_RESPONSE if host['service'] == 'cinder-volume'] self.assertEqual(cinder_hosts, expected) def test_list_hosts_with_zone(self): req = FakeRequestWithcinderZone() hosts = os_hosts._list_hosts(req) self.assertEqual(hosts, LIST_RESPONSE) def test_bad_status_value(self): self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'test.host.1', body={'status': 'bad'}) self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'test.host.1', body={'status': 'disablabc'}) def test_bad_update_key(self): bad_body = {'crazy': 'bad'} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'test.host.1', body=bad_body) def test_bad_update_key_and_correct_udpate_key(self): bad_body = {'status': 'disable', 'crazy': 'bad'} self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update, self.req, 'test.host.1', body=bad_body) def test_good_udpate_keys(self): body = {'status': 'disable'} self.assertRaises(NotImplementedError, self.controller.update, self.req, 'test.host.1', body=body) def test_bad_host(self): self.assertRaises(webob.exc.HTTPNotFound, self.controller.update, self.req, 'bogus_host_name', body={'disabled': 0}) def test_show_forbidden(self): self.req.environ['cinder.context'].is_admin = False dest = 'dummydest' self.assertRaises(webob.exc.HTTPForbidden, self.controller.show, self.req, dest) self.req.environ['cinder.context'].is_admin = True def test_show_host_not_exist(self): """A host given as an argument does not exists.""" self.req.environ['cinder.context'].is_admin = True dest = 'dummydest' self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, self.req, dest) class HostSerializerTest(test.TestCase): def setUp(self): super(HostSerializerTest, self).setUp() self.deserializer = os_hosts.HostDeserializer() def test_index_serializer(self): serializer = os_hosts.HostIndexTemplate() text = serializer.serialize({"hosts": LIST_RESPONSE}) tree = etree.fromstring(text) self.assertEqual('hosts', tree.tag) self.assertEqual(len(LIST_RESPONSE), len(tree)) for i in range(len(LIST_RESPONSE)): self.assertEqual('host', tree[i].tag) self.assertEqual(LIST_RESPONSE[i]['service-status'], tree[i].get('service-status')) self.assertEqual(LIST_RESPONSE[i]['service'], tree[i].get('service')) self.assertEqual(LIST_RESPONSE[i]['zone'], tree[i].get('zone')) self.assertEqual(LIST_RESPONSE[i]['service-state'], tree[i].get('service-state')) self.assertEqual(LIST_RESPONSE[i]['host_name'], tree[i].get('host_name')) self.assertEqual(str(LIST_RESPONSE[i]['last-update']), tree[i].get('last-update')) def test_update_serializer_with_status(self): exemplar = dict(host='test.host.1', status='enabled') serializer = os_hosts.HostUpdateTemplate() text = serializer.serialize(exemplar) tree = etree.fromstring(text) self.assertEqual('host', tree.tag) for key, value in exemplar.items(): self.assertEqual(value, tree.get(key)) def test_update_deserializer(self): exemplar = dict(status='enabled', foo='bar') intext = ("\n" 'enabledbar') result = self.deserializer.deserialize(intext) self.assertEqual(dict(body=exemplar), result) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_transfer.py0000664000567000056700000006124312540642606026026 0ustar jenkinsjenkins00000000000000# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """ Tests for volume transfer code. """ import json from xml.dom import minidom import webob from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests.api import fakes from cinder.transfer import API import cinder.volume LOG = logging.getLogger(__name__) class VolumeTransferAPITestCase(test.TestCase): """Test Case for transfers API.""" def setUp(self): super(VolumeTransferAPITestCase, self).setUp() self.volume_transfer_api = API() def _create_transfer(self, volume_id=1, display_name='test_transfer'): """Create a transfer object.""" return self.volume_transfer_api.create(context.get_admin_context(), volume_id, display_name) @staticmethod def _create_volume(display_name='test_volume', display_description='this is a test volume', status='available', size=1): """Create a volume object.""" vol = {} vol['size'] = size vol['user_id'] = 'fake' vol['project_id'] = 'fake' vol['status'] = status vol['display_name'] = display_name vol['display_description'] = display_description vol['attach_status'] = status return db.volume_create(context.get_admin_context(), vol)['id'] def test_show_transfer(self): volume_id = self._create_volume(size=5) transfer = self._create_transfer(volume_id) LOG.debug('Created transfer with id %s' % transfer) req = webob.Request.blank('/v2/fake/os-volume-transfer/%s' % transfer['id']) req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(res_dict['transfer']['name'], 'test_transfer') self.assertEqual(res_dict['transfer']['id'], transfer['id']) self.assertEqual(res_dict['transfer']['volume_id'], volume_id) db.transfer_destroy(context.get_admin_context(), transfer['id']) db.volume_destroy(context.get_admin_context(), volume_id) def test_show_transfer_xml_content_type(self): volume_id = self._create_volume(size=5) transfer = self._create_transfer(volume_id) req = webob.Request.blank('/v2/fake/os-volume-transfer/%s' % transfer['id']) req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) transfer_xml = dom.getElementsByTagName('transfer') name = transfer_xml.item(0).getAttribute('name') self.assertEqual(name.strip(), "test_transfer") db.transfer_destroy(context.get_admin_context(), transfer['id']) db.volume_destroy(context.get_admin_context(), volume_id) def test_show_transfer_with_transfer_NotFound(self): req = webob.Request.blank('/v2/fake/os-volume-transfer/1234') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Transfer 1234 could not be found.') def test_list_transfers_json(self): volume_id_1 = self._create_volume(size=5) volume_id_2 = self._create_volume(size=5) transfer1 = self._create_transfer(volume_id_1) transfer2 = self._create_transfer(volume_id_2) req = webob.Request.blank('/v2/fake/os-volume-transfer') req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(len(res_dict['transfers'][0]), 4) self.assertEqual(res_dict['transfers'][0]['id'], transfer1['id']) self.assertEqual(res_dict['transfers'][0]['name'], 'test_transfer') self.assertEqual(len(res_dict['transfers'][1]), 4) self.assertEqual(res_dict['transfers'][1]['name'], 'test_transfer') db.transfer_destroy(context.get_admin_context(), transfer2['id']) db.transfer_destroy(context.get_admin_context(), transfer1['id']) db.volume_destroy(context.get_admin_context(), volume_id_1) db.volume_destroy(context.get_admin_context(), volume_id_2) def test_list_transfers_xml(self): volume_id_1 = self._create_volume(size=5) volume_id_2 = self._create_volume(size=5) transfer1 = self._create_transfer(volume_id_1) transfer2 = self._create_transfer(volume_id_2) req = webob.Request.blank('/v2/fake/os-volume-transfer') req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) transfer_list = dom.getElementsByTagName('transfer') self.assertEqual(transfer_list.item(0).attributes.length, 3) self.assertEqual(transfer_list.item(0).getAttribute('id'), transfer1['id']) self.assertEqual(transfer_list.item(1).attributes.length, 3) self.assertEqual(transfer_list.item(1).getAttribute('id'), transfer2['id']) db.transfer_destroy(context.get_admin_context(), transfer2['id']) db.transfer_destroy(context.get_admin_context(), transfer1['id']) db.volume_destroy(context.get_admin_context(), volume_id_2) db.volume_destroy(context.get_admin_context(), volume_id_1) def test_list_transfers_detail_json(self): volume_id_1 = self._create_volume(size=5) volume_id_2 = self._create_volume(size=5) transfer1 = self._create_transfer(volume_id_1) transfer2 = self._create_transfer(volume_id_2) req = webob.Request.blank('/v2/fake/os-volume-transfer/detail') req.method = 'GET' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 200) self.assertEqual(len(res_dict['transfers'][0]), 5) self.assertEqual(res_dict['transfers'][0]['name'], 'test_transfer') self.assertEqual(res_dict['transfers'][0]['id'], transfer1['id']) self.assertEqual(res_dict['transfers'][0]['volume_id'], volume_id_1) self.assertEqual(len(res_dict['transfers'][1]), 5) self.assertEqual(res_dict['transfers'][1]['name'], 'test_transfer') self.assertEqual(res_dict['transfers'][1]['id'], transfer2['id']) self.assertEqual(res_dict['transfers'][1]['volume_id'], volume_id_2) db.transfer_destroy(context.get_admin_context(), transfer2['id']) db.transfer_destroy(context.get_admin_context(), transfer1['id']) db.volume_destroy(context.get_admin_context(), volume_id_2) db.volume_destroy(context.get_admin_context(), volume_id_1) def test_list_transfers_detail_xml(self): volume_id_1 = self._create_volume(size=5) volume_id_2 = self._create_volume(size=5) transfer1 = self._create_transfer(volume_id_1) transfer2 = self._create_transfer(volume_id_2) req = webob.Request.blank('/v2/fake/os-volume-transfer/detail') req.method = 'GET' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) dom = minidom.parseString(res.body) transfer_detail = dom.getElementsByTagName('transfer') self.assertEqual(transfer_detail.item(0).attributes.length, 4) self.assertEqual( transfer_detail.item(0).getAttribute('name'), 'test_transfer') self.assertEqual( transfer_detail.item(0).getAttribute('id'), transfer1['id']) self.assertEqual(transfer_detail.item(0).getAttribute('volume_id'), volume_id_1) self.assertEqual(transfer_detail.item(1).attributes.length, 4) self.assertEqual( transfer_detail.item(1).getAttribute('name'), 'test_transfer') self.assertEqual( transfer_detail.item(1).getAttribute('id'), transfer2['id']) self.assertEqual(transfer_detail.item(1).getAttribute('volume_id'), volume_id_2) db.transfer_destroy(context.get_admin_context(), transfer2['id']) db.transfer_destroy(context.get_admin_context(), transfer1['id']) db.volume_destroy(context.get_admin_context(), volume_id_2) db.volume_destroy(context.get_admin_context(), volume_id_1) def test_create_transfer_json(self): volume_id = self._create_volume(status='available', size=5) body = {"transfer": {"display_name": "transfer1", "volume_id": volume_id}} req = webob.Request.blank('/v2/fake/os-volume-transfer') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) LOG.info(res_dict) self.assertEqual(res.status_int, 202) self.assertIn('id', res_dict['transfer']) self.assertIn('auth_key', res_dict['transfer']) self.assertIn('created_at', res_dict['transfer']) self.assertIn('name', res_dict['transfer']) self.assertIn('volume_id', res_dict['transfer']) db.volume_destroy(context.get_admin_context(), volume_id) def test_create_transfer_xml(self): volume_size = 2 volume_id = self._create_volume(status='available', size=volume_size) req = webob.Request.blank('/v2/fake/os-volume-transfer') req.body = ('' % volume_id) req.method = 'POST' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) dom = minidom.parseString(res.body) transfer = dom.getElementsByTagName('transfer') self.assertTrue(transfer.item(0).hasAttribute('id')) self.assertTrue(transfer.item(0).hasAttribute('auth_key')) self.assertTrue(transfer.item(0).hasAttribute('created_at')) self.assertEqual(transfer.item(0).getAttribute('name'), 'transfer-001') self.assertTrue(transfer.item(0).hasAttribute('volume_id')) db.volume_destroy(context.get_admin_context(), volume_id) def test_create_transfer_with_no_body(self): req = webob.Request.blank('/v2/fake/os-volume-transfer') req.body = json.dumps(None) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'The server could not comply with the request since' ' it is either malformed or otherwise incorrect.') def test_create_transfer_with_body_KeyError(self): body = {"transfer": {"display_name": "transfer1"}} req = webob.Request.blank('/v2/fake/os-volume-transfer') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Incorrect request body format') def test_create_transfer_with_VolumeNotFound(self): body = {"transfer": {"display_name": "transfer1", "volume_id": 1234}} req = webob.Request.blank('/v2/fake/os-volume-transfer') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Volume 1234 could not be found.') def test_create_transfer_with_InvalidVolume(self): volume_id = self._create_volume(status='attached') body = {"transfer": {"display_name": "transfer1", "volume_id": volume_id}} req = webob.Request.blank('/v2/fake/os-volume-transfer') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid volume: status must be available') db.volume_destroy(context.get_admin_context(), volume_id) def test_delete_transfer_awaiting_transfer(self): volume_id = self._create_volume() transfer = self._create_transfer(volume_id) req = webob.Request.blank('/v2/fake/os-volume-transfer/%s' % transfer['id']) req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) # verify transfer has been deleted req = webob.Request.blank('/v2/fake/os-volume-transfer/%s' % transfer['id']) req.method = 'GET' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Transfer %s could not be found.' % transfer['id']) self.assertEqual(db.volume_get(context.get_admin_context(), volume_id)['status'], 'available') db.volume_destroy(context.get_admin_context(), volume_id) def test_delete_transfer_with_transfer_NotFound(self): req = webob.Request.blank('/v2/fake/os-volume-transfer/9999') req.method = 'DELETE' req.headers['Content-Type'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'Transfer 9999 could not be found.') def test_accept_transfer_volume_id_specified_json(self): volume_id = self._create_volume() transfer = self._create_transfer(volume_id) svc = self.start_service('volume', host='fake_host') body = {"accept": {"id": transfer['id'], "auth_key": transfer['auth_key']}} req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 202) self.assertEqual(res_dict['transfer']['id'], transfer['id']) self.assertEqual(res_dict['transfer']['volume_id'], volume_id) # cleanup svc.stop() def test_accept_transfer_volume_id_specified_xml(self): volume_id = self._create_volume(size=5) transfer = self._create_transfer(volume_id) svc = self.start_service('volume', host='fake_host') req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) req.body = '' % transfer['auth_key'] req.method = 'POST' req.headers['Content-Type'] = 'application/xml' req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) dom = minidom.parseString(res.body) accept = dom.getElementsByTagName('transfer') self.assertEqual(accept.item(0).getAttribute('id'), transfer['id']) self.assertEqual(accept.item(0).getAttribute('volume_id'), volume_id) db.volume_destroy(context.get_admin_context(), volume_id) # cleanup svc.stop() def test_accept_transfer_with_no_body(self): volume_id = self._create_volume(size=5) transfer = self._create_transfer(volume_id) req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) req.body = json.dumps(None) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'The server could not comply with the request since' ' it is either malformed or otherwise incorrect.') db.volume_destroy(context.get_admin_context(), volume_id) def test_accept_transfer_with_body_KeyError(self): volume_id = self._create_volume(size=5) transfer = self._create_transfer(volume_id) req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) body = {"": {}} req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.headers['Accept'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'The server could not comply with the request since' ' it is either malformed or otherwise incorrect.') def test_accept_transfer_invalid_id_auth_key(self): volume_id = self._create_volume() transfer = self._create_transfer(volume_id) body = {"accept": {"id": transfer['id'], "auth_key": 1}} req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 400) self.assertEqual(res_dict['badRequest']['code'], 400) self.assertEqual(res_dict['badRequest']['message'], 'Invalid auth key: Attempt to transfer %s with ' 'invalid auth key.' % transfer['id']) db.transfer_destroy(context.get_admin_context(), transfer['id']) db.volume_destroy(context.get_admin_context(), volume_id) def test_accept_transfer_with_invalid_transfer(self): volume_id = self._create_volume() transfer = self._create_transfer(volume_id) body = {"accept": {"id": transfer['id'], "auth_key": 1}} req = webob.Request.blank('/v2/fake/os-volume-transfer/1/accept') req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 404) self.assertEqual(res_dict['itemNotFound']['code'], 404) self.assertEqual(res_dict['itemNotFound']['message'], 'TransferNotFound: Transfer 1 could not be found.') db.transfer_destroy(context.get_admin_context(), transfer['id']) db.volume_destroy(context.get_admin_context(), volume_id) def test_accept_transfer_with_VolumeSizeExceedsAvailableQuota(self): def fake_transfer_api_accept_throwing_VolumeSizeExceedsAvailableQuota( cls, context, transfer, volume_id): raise exception.VolumeSizeExceedsAvailableQuota(requested='2', consumed='2', quota='3') self.stubs.Set( cinder.transfer.API, 'accept', fake_transfer_api_accept_throwing_VolumeSizeExceedsAvailableQuota) volume_id = self._create_volume() transfer = self._create_transfer(volume_id) body = {"accept": {"id": transfer['id'], "auth_key": transfer['auth_key']}} req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 413) self.assertEqual(res_dict['overLimit']['code'], 413) self.assertEqual(res_dict['overLimit']['message'], 'Requested volume or snapshot exceeds allowed ' 'Gigabytes quota. Requested 2G, quota is 3G and ' '2G has been consumed.') def test_accept_transfer_with_VolumeLimitExceeded(self): def fake_transfer_api_accept_throwing_VolumeLimitExceeded(cls, context, transfer, volume_id): raise exception.VolumeLimitExceeded(allowed=1) self.stubs.Set(cinder.transfer.API, 'accept', fake_transfer_api_accept_throwing_VolumeLimitExceeded) volume_id = self._create_volume() transfer = self._create_transfer(volume_id) body = {"accept": {"id": transfer['id'], "auth_key": transfer['auth_key']}} req = webob.Request.blank('/v2/fake/os-volume-transfer/%s/accept' % transfer['id']) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res.status_int, 413) self.assertEqual(res_dict['overLimit']['code'], 413) self.assertEqual(res_dict['overLimit']['message'], 'VolumeLimitExceeded: Maximum number of volumes ' 'allowed (1) exceeded') cinder-2014.1.5/cinder/tests/api/contrib/test_volume_actions.py0000664000567000056700000006055212540642606025644 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. import datetime import json import uuid import mock from oslo import messaging import webob from cinder.api.contrib import volume_actions from cinder import exception from cinder.openstack.common import jsonutils from cinder import test from cinder.tests.api import fakes from cinder.tests.api.v2 import stubs from cinder import volume from cinder.volume import api as volume_api class VolumeActionsTest(test.TestCase): _actions = ('os-detach', 'os-reserve', 'os-unreserve') _methods = ('attach', 'detach', 'reserve_volume', 'unreserve_volume') def setUp(self): super(VolumeActionsTest, self).setUp() self.UUID = uuid.uuid4() self.api_patchers = {} for _meth in self._methods: self.api_patchers[_meth] = mock.patch('cinder.volume.API.' + _meth) self.api_patchers[_meth].start() self.addCleanup(self.api_patchers[_meth].stop) self.api_patchers[_meth].return_value = True vol = {'id': 'fake', 'host': 'fake', 'status': 'available', 'size': 1, 'migration_status': None, 'volume_type_id': 'fake'} self.get_patcher = mock.patch('cinder.volume.API.get') self.mock_volume_get = self.get_patcher.start() self.addCleanup(self.get_patcher.stop) self.mock_volume_get.return_value = vol self.update_patcher = mock.patch('cinder.volume.API.update') self.mock_volume_update = self.update_patcher.start() self.addCleanup(self.update_patcher.stop) self.mock_volume_update.return_value = vol self.flags(rpc_backend='cinder.openstack.common.rpc.impl_fake') def test_simple_api_actions(self): app = fakes.wsgi_app() for _action in self._actions: req = webob.Request.blank('/v2/fake/volumes/%s/action' % self.UUID) req.method = 'POST' req.body = jsonutils.dumps({_action: None}) req.content_type = 'application/json' res = req.get_response(app) self.assertEqual(res.status_int, 202) def test_initialize_connection(self): with mock.patch.object(volume_api.API, 'initialize_connection') as init_conn: init_conn.return_value = {} body = {'os-initialize_connection': {'connector': 'fake'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 200) def test_initialize_connection_without_connector(self): with mock.patch.object(volume_api.API, 'initialize_connection') as init_conn: init_conn.return_value = {} body = {'os-initialize_connection': {}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_initialize_connection_exception(self): with mock.patch.object(volume_api.API, 'initialize_connection') as init_conn: init_conn.side_effect = \ exception.VolumeBackendAPIException(data=None) body = {'os-initialize_connection': {'connector': 'fake'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 500) def test_terminate_connection(self): with mock.patch.object(volume_api.API, 'terminate_connection') as terminate_conn: terminate_conn.return_value = {} body = {'os-terminate_connection': {'connector': 'fake'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_terminate_connection_without_connector(self): with mock.patch.object(volume_api.API, 'terminate_connection') as terminate_conn: terminate_conn.return_value = {} body = {'os-terminate_connection': {}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_terminate_connection_with_exception(self): with mock.patch.object(volume_api.API, 'terminate_connection') as terminate_conn: terminate_conn.side_effect = \ exception.VolumeBackendAPIException(data=None) body = {'os-terminate_connection': {'connector': 'fake'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 500) def test_attach_to_instance(self): body = {'os-attach': {'instance_uuid': 'fake', 'mountpoint': '/dev/vdc', 'mode': 'rw'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_attach_to_host(self): # using 'read-write' mode attach volume by default body = {'os-attach': {'host_name': 'fake_host', 'mountpoint': '/dev/vdc'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_attach_with_invalid_arguments(self): # Invalid request to attach volume an invalid target body = {'os-attach': {'mountpoint': '/dev/vdc'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.headers["content-type"] = "application/json" req.body = jsonutils.dumps(body) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) # Invalid request to attach volume to an instance and a host body = {'os-attach': {'instance_uuid': 'fake', 'host_name': 'fake_host', 'mountpoint': '/dev/vdc'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.headers["content-type"] = "application/json" req.body = jsonutils.dumps(body) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) # Invalid request to attach volume with an invalid mode body = {'os-attach': {'instance_uuid': 'fake', 'mountpoint': '/dev/vdc', 'mode': 'rr'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.headers["content-type"] = "application/json" req.body = jsonutils.dumps(body) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) body = {'os-attach': {'host_name': 'fake_host', 'mountpoint': '/dev/vdc', 'mode': 'ww'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.headers["content-type"] = "application/json" req.body = jsonutils.dumps(body) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_begin_detaching(self): def fake_begin_detaching(*args, **kwargs): return {} self.stubs.Set(volume.API, 'begin_detaching', fake_begin_detaching) body = {'os-begin_detaching': {'fake': 'fake'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_roll_detaching(self): def fake_roll_detaching(*args, **kwargs): return {} self.stubs.Set(volume.API, 'roll_detaching', fake_roll_detaching) body = {'os-roll_detaching': {'fake': 'fake'}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_extend_volume(self): def fake_extend_volume(*args, **kwargs): return {} self.stubs.Set(volume.API, 'extend', fake_extend_volume) body = {'os-extend': {'new_size': 5}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) def test_update_readonly_flag(self): def fake_update_readonly_flag(*args, **kwargs): return {} self.stubs.Set(volume.API, 'update_readonly_flag', fake_update_readonly_flag) def make_update_readonly_flag_test(self, readonly, return_code): body = {"os-update_readonly_flag": {"readonly": readonly}} if readonly is None: body = {"os-update_readonly_flag": {}} req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = "POST" req.body = jsonutils.dumps(body) req.headers["content-type"] = "application/json" res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, return_code) make_update_readonly_flag_test(self, True, 202) make_update_readonly_flag_test(self, False, 202) make_update_readonly_flag_test(self, '1', 202) make_update_readonly_flag_test(self, '0', 202) make_update_readonly_flag_test(self, 'true', 202) make_update_readonly_flag_test(self, 'false', 202) make_update_readonly_flag_test(self, 'tt', 400) make_update_readonly_flag_test(self, 11, 400) make_update_readonly_flag_test(self, None, 400) class VolumeRetypeActionsTest(VolumeActionsTest): def setUp(self): def get_vol_type(*args, **kwargs): d1 = {'id': 'fake', 'qos_specs_id': 'fakeqid1', 'extra_specs': {}} d2 = {'id': 'foo', 'qos_specs_id': 'fakeqid2', 'extra_specs': {}} return d1 if d1['id'] == args[1] else d2 self.retype_patchers = {} self.retype_mocks = {} paths = ['cinder.volume.volume_types.get_volume_type', 'cinder.volume.volume_types.get_volume_type_by_name', 'cinder.volume.qos_specs.get_qos_specs', 'cinder.quota.QUOTAS.add_volume_type_opts', 'cinder.quota.QUOTAS.reserve'] for path in paths: name = path.split('.')[-1] self.retype_patchers[name] = mock.patch(path) self.retype_mocks[name] = self.retype_patchers[name].start() self.addCleanup(self.retype_patchers[name].stop) self.retype_mocks['get_volume_type'].side_effect = get_vol_type self.retype_mocks['get_volume_type_by_name'].side_effect = get_vol_type self.retype_mocks['add_volume_type_opts'].return_value = None self.retype_mocks['reserve'].return_value = None super(VolumeRetypeActionsTest, self).setUp() def _retype_volume_exec(self, expected_status, new_type='foo'): req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = 'POST' req.headers['content-type'] = 'application/json' retype_body = {'new_type': new_type, 'migration_policy': 'never'} req.body = jsonutils.dumps({'os-retype': retype_body}) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, expected_status) @mock.patch('cinder.volume.qos_specs.get_qos_specs') def test_retype_volume_success(self, _mock_get_qspecs): # Test that the retype API works for both available and in-use self._retype_volume_exec(202) self.mock_volume_get.return_value['status'] = 'in-use' specs = {'qos_specs': {'id': 'fakeqid1', 'consumer': 'back-end'}} _mock_get_qspecs.return_value = specs self._retype_volume_exec(202) def test_retype_volume_no_body(self): # Request with no body should fail req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = jsonutils.dumps({'os-retype': None}) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_retype_volume_bad_policy(self): # Request with invalid migration policy should fail req = webob.Request.blank('/v2/fake/volumes/1/action') req.method = 'POST' req.headers['content-type'] = 'application/json' retype_body = {'new_type': 'foo', 'migration_policy': 'invalid'} req.body = jsonutils.dumps({'os-retype': retype_body}) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_retype_volume_bad_status(self): # Should fail if volume does not have proper status self.mock_volume_get.return_value['status'] = 'error' self._retype_volume_exec(400) def test_retype_type_no_exist(self): # Should fail if new type does not exist exc = exception.VolumeTypeNotFound('exc') self.retype_mocks['get_volume_type'].side_effect = exc self._retype_volume_exec(404) def test_retype_same_type(self): # Should fail if new type and old type are the same self._retype_volume_exec(400, new_type='fake') def test_retype_over_quota(self): # Should fail if going over quota for new type exc = exception.OverQuota(overs=['gigabytes'], quotas={'gigabytes': 20}, usages={'gigabytes': {'reserved': 5, 'in_use': 15}}) self.retype_mocks['reserve'].side_effect = exc self._retype_volume_exec(413) @mock.patch('cinder.volume.qos_specs.get_qos_specs') def _retype_volume_diff_qos(self, vol_status, consumer, expected_status, _mock_get_qspecs): def fake_get_qos(ctxt, qos_id): d1 = {'qos_specs': {'id': 'fakeqid1', 'consumer': consumer}} d2 = {'qos_specs': {'id': 'fakeqid2', 'consumer': consumer}} return d1 if d1['qos_specs']['id'] == qos_id else d2 self.mock_volume_get.return_value['status'] = vol_status _mock_get_qspecs.side_effect = fake_get_qos self._retype_volume_exec(expected_status) def test_retype_volume_diff_qos_fe_in_use(self): # should fail if changing qos enforced by front-end for in-use volumes self._retype_volume_diff_qos('in-use', 'front-end', 400) def test_retype_volume_diff_qos_fe_available(self): # should NOT fail if changing qos enforced by FE for available volumes self._retype_volume_diff_qos('available', 'front-end', 202) def test_retype_volume_diff_qos_be(self): # should NOT fail if changing qos enforced by back-end self._retype_volume_diff_qos('available', 'back-end', 202) self._retype_volume_diff_qos('in-use', 'back-end', 202) def stub_volume_get(self, context, volume_id): volume = stubs.stub_volume(volume_id) if volume_id == 5: volume['status'] = 'in-use' else: volume['status'] = 'available' return volume def stub_upload_volume_to_image_service(self, context, volume, metadata, force): ret = {"id": volume['id'], "updated_at": datetime.datetime(1, 1, 1, 1, 1, 1), "status": 'uploading', "display_description": volume['display_description'], "size": volume['size'], "volume_type": volume['volume_type'], "image_id": 1, "container_format": 'bare', "disk_format": 'raw', "image_name": 'image_name'} return ret class VolumeImageActionsTest(test.TestCase): def setUp(self): super(VolumeImageActionsTest, self).setUp() self.controller = volume_actions.VolumeActionsController() self.stubs.Set(volume_api.API, 'get', stub_volume_get) def test_copy_volume_to_image(self): self.stubs.Set(volume_api.API, "copy_volume_to_image", stub_upload_volume_to_image_service) id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": 'image_name', "force": True} body = {"os-volume_upload_image": vol} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) res_dict = self.controller._volume_upload_image(req, id, body) expected = {'os-volume_upload_image': {'id': id, 'updated_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'status': 'uploading', 'display_description': 'displaydesc', 'size': 1, 'volume_type': {'name': 'vol_type_name'}, 'image_id': 1, 'container_format': 'bare', 'disk_format': 'raw', 'image_name': 'image_name'}} self.assertDictMatch(res_dict, expected) def test_copy_volume_to_image_volumenotfound(self): def stub_volume_get_raise_exc(self, context, volume_id): raise exception.VolumeNotFound(volume_id=volume_id) self.stubs.Set(volume_api.API, 'get', stub_volume_get_raise_exc) id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": 'image_name', "force": True} body = {"os-volume_upload_image": vol} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) self.assertRaises(webob.exc.HTTPNotFound, self.controller._volume_upload_image, req, id, body) def test_copy_volume_to_image_invalidvolume(self): def stub_upload_volume_to_image_service_raise(self, context, volume, metadata, force): raise exception.InvalidVolume(reason='blah') self.stubs.Set(volume_api.API, "copy_volume_to_image", stub_upload_volume_to_image_service_raise) id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": 'image_name', "force": True} body = {"os-volume_upload_image": vol} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._volume_upload_image, req, id, body) def test_copy_volume_to_image_valueerror(self): def stub_upload_volume_to_image_service_raise(self, context, volume, metadata, force): raise ValueError self.stubs.Set(volume_api.API, "copy_volume_to_image", stub_upload_volume_to_image_service_raise) id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": 'image_name', "force": True} body = {"os-volume_upload_image": vol} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._volume_upload_image, req, id, body) def test_copy_volume_to_image_remoteerror(self): def stub_upload_volume_to_image_service_raise(self, context, volume, metadata, force): raise messaging.RemoteError self.stubs.Set(volume_api.API, "copy_volume_to_image", stub_upload_volume_to_image_service_raise) id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": 'image_name', "force": True} body = {"os-volume_upload_image": vol} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._volume_upload_image, req, id, body) def test_volume_upload_image_typeerror(self): id = 1 body = {"os-volume_upload_image_fake": "fake"} req = webob.Request.blank('/v2/tenant1/volumes/%s/action' % id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_volume_upload_image_without_type(self): id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": None, "force": True} body = {"": vol} req = webob.Request.blank('/v2/tenant1/volumes/%s/action' % id) req.method = 'POST' req.headers['Content-Type'] = 'application/json' req.body = json.dumps(body) res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 400) def test_extend_volume_valueerror(self): id = 1 body = {'os-extend': {'new_size': 'fake'}} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._extend, req, id, body) def test_copy_volume_to_image_notimagename(self): id = 1 vol = {"container_format": 'bare', "disk_format": 'raw', "image_name": None, "force": True} body = {"os-volume_upload_image": vol} req = fakes.HTTPRequest.blank('/v2/tenant1/volumes/%s/action' % id) self.assertRaises(webob.exc.HTTPBadRequest, self.controller._volume_upload_image, req, id, body) cinder-2014.1.5/cinder/tests/api/contrib/test_used_limits.py0000664000567000056700000000431512540642606025131 0ustar jenkinsjenkins00000000000000# vim: tabstop=5 shiftwidth=4 softtabstop=4 # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. from cinder.api.contrib import used_limits from cinder.api.openstack import wsgi from cinder import quota from cinder import test from cinder.tests.api import fakes class FakeRequest(object): def __init__(self, context): self.environ = {'cinder.context': context} class UsedLimitsTestCase(test.TestCase): def setUp(self): """Run before each test.""" super(UsedLimitsTestCase, self).setUp() self.controller = used_limits.UsedLimitsController() def test_used_limits(self): fake_req = FakeRequest(fakes.FakeRequestContext('fake', 'fake')) obj = { "limits": { "rate": [], "absolute": {}, }, } res = wsgi.ResponseObject(obj) quota_map = { 'totalVolumesUsed': 'volumes', 'totalGigabytesUsed': 'gigabytes', 'totalSnapshotsUsed': 'snapshots', } limits = {} for display_name, q in quota_map.iteritems(): limits[q] = {'limit': 2, 'in_use': 1} def stub_get_project_quotas(context, project_id, usages=True): return limits self.stubs.Set(quota.QUOTAS, "get_project_quotas", stub_get_project_quotas) self.mox.ReplayAll() self.controller.index(fake_req, res) abs_limits = res.obj['limits']['absolute'] for used_limit, value in abs_limits.iteritems(): self.assertEqual(value, limits[quota_map[used_limit]]['in_use']) cinder-2014.1.5/cinder/tests/api/contrib/test_volume_host_attribute.py0000664000567000056700000001150512540642606027236 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. import datetime import json import uuid from lxml import etree import webob from cinder import context from cinder import db from cinder import test from cinder.tests.api import fakes from cinder import volume def fake_volume_get(*args, **kwargs): return { 'id': 'fake', 'host': 'host001', 'status': 'available', 'size': 5, 'availability_zone': 'somewhere', 'created_at': datetime.datetime.now(), 'attach_status': None, 'display_name': 'anothervolume', 'display_description': 'Just another volume!', 'volume_type_id': None, 'snapshot_id': None, 'project_id': 'fake', 'migration_status': None, '_name_id': 'fake2', } def fake_volume_get_all(*args, **kwargs): return [fake_volume_get()] def app(): # no auth, just let environ['cinder.context'] pass through api = fakes.router.APIRouter() mapper = fakes.urlmap.URLMap() mapper['/v2'] = api return mapper class VolumeHostAttributeTest(test.TestCase): def setUp(self): super(VolumeHostAttributeTest, self).setUp() self.stubs.Set(volume.API, 'get', fake_volume_get) self.stubs.Set(volume.API, 'get_all', fake_volume_get_all) self.stubs.Set(db, 'volume_get', fake_volume_get) self.UUID = uuid.uuid4() def test_get_volume_allowed(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volume'] self.assertEqual(vol['os-vol-host-attr:host'], 'host001') def test_get_volume_unallowed(self): ctx = context.RequestContext('non-admin', 'fake', False) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volume'] self.assertNotIn('os-vol-host-attr:host', vol) def test_list_detail_volumes_allowed(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertEqual(vol[0]['os-vol-host-attr:host'], 'host001') def test_list_detail_volumes_unallowed(self): ctx = context.RequestContext('non-admin', 'fake', False) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertNotIn('os-vol-host-attr:host', vol[0]) def test_list_simple_volumes_no_host(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes') req.method = 'GET' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = json.loads(res.body)['volumes'] self.assertNotIn('os-vol-host-attr:host', vol[0]) def test_get_volume_xml(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/%s' % self.UUID) req.method = 'GET' req.accept = 'application/xml' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = etree.XML(res.body) host_key = ('{http://docs.openstack.org/volume/ext/' 'volume_host_attribute/api/v1}host') self.assertEqual(vol.get(host_key), 'host001') def test_list_volumes_detail_xml(self): ctx = context.RequestContext('admin', 'fake', True) req = webob.Request.blank('/v2/fake/volumes/detail') req.method = 'GET' req.accept = 'application/xml' req.environ['cinder.context'] = ctx res = req.get_response(app()) vol = list(etree.XML(res.body))[0] host_key = ('{http://docs.openstack.org/volume/ext/' 'volume_host_attribute/api/v1}host') self.assertEqual(vol.get(host_key), 'host001') cinder-2014.1.5/cinder/tests/test_hplefthand.py0000664000567000056700000015273112540642606022522 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. # """Unit tests for OpenStack Cinder volume drivers.""" import mock from hplefthandclient import exceptions as hpexceptions from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder import units from cinder.volume.drivers.san.hp import hp_lefthand_iscsi from cinder.volume.drivers.san.hp import hp_lefthand_rest_proxy from cinder.volume import volume_types LOG = logging.getLogger(__name__) class HPLeftHandBaseDriver(): cluster_id = 1 volume_name = "fakevolume" volume_id = 1 volume = { 'name': volume_name, 'provider_location': ('10.0.1.6 iqn.2003-10.com.lefthandnetworks:' 'group01:25366:fakev 0'), 'id': volume_id, 'provider_auth': None, 'size': 1} serverName = 'fakehost' server_id = 0 snapshot_name = "fakeshapshot" snapshot_id = 3 snapshot = { 'name': snapshot_name, 'volume_name': volume_name} cloned_volume_name = "clone_volume" cloned_volume = {'name': cloned_volume_name} cloned_snapshot_name = "clonedshapshot" cloned_snapshot_id = 5 cloned_snapshot = { 'name': cloned_snapshot_name, 'volume_name': volume_name} volume_type_id = 4 init_iqn = 'iqn.1993-08.org.debian:01:222' connector = { 'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'host': serverName} driver_startup_call_stack = [ mock.call.login('foo1', 'bar2'), mock.call.getClusterByName('CloudCluster1'), mock.call.getCluster(1)] class TestHPLeftHandCLIQISCSIDriver(HPLeftHandBaseDriver, test.TestCase): def _fake_cliq_run(self, verb, cliq_args, check_exit_code=True): """Return fake results for the various methods.""" def create_volume(cliq_args): """Create volume CLIQ input for test. input = "createVolume description="fake description" clusterName=Cluster01 volumeName=fakevolume thinProvision=0 output=XML size=1GB" """ output = """ """ self.assertEqual(cliq_args['volumeName'], self.volume_name) self.assertEqual(cliq_args['thinProvision'], '1') self.assertEqual(cliq_args['size'], '1GB') return output, None def delete_volume(cliq_args): """Delete volume CLIQ input for test. input = "deleteVolume volumeName=fakevolume prompt=false output=XML" """ output = """ """ self.assertEqual(cliq_args['volumeName'], self.volume_name) self.assertEqual(cliq_args['prompt'], 'false') return output, None def extend_volume(cliq_args): """Extend volume CLIQ input for test. input = "modifyVolume description="fake description" volumeName=fakevolume output=XML size=2GB" """ output = """ """ self.assertEqual(cliq_args['volumeName'], self.volume_name) self.assertEqual(cliq_args['size'], '2GB') return output, None def assign_volume(cliq_args): """Assign volume CLIQ input for test. input = "assignVolumeToServer volumeName=fakevolume serverName=fakehost output=XML" """ output = """ """ self.assertEqual(cliq_args['volumeName'], self.volume_name) self.assertEqual(cliq_args['serverName'], self.connector['host']) return output, None def unassign_volume(cliq_args): """Unassign volume CLIQ input for test. input = "unassignVolumeToServer volumeName=fakevolume serverName=fakehost output=XML """ output = """ """ self.assertEqual(cliq_args['volumeName'], self.volume_name) self.assertEqual(cliq_args['serverName'], self.connector['host']) return output, None def create_snapshot(cliq_args): """Create snapshot CLIQ input for test. input = "createSnapshot description="fake description" snapshotName=fakesnapshot volumeName=fakevolume output=XML" """ output = """ """ self.assertEqual(cliq_args['snapshotName'], self.snapshot_name) self.assertEqual(cliq_args['volumeName'], self.volume_name) return output, None def delete_snapshot(cliq_args): """Delete shapshot CLIQ input for test. input = "deleteSnapshot snapshotName=fakesnapshot prompt=false output=XML" """ output = """ """ self.assertEqual(cliq_args['snapshotName'], self.snapshot_name) self.assertEqual(cliq_args['prompt'], 'false') return output, None def create_volume_from_snapshot(cliq_args): """Create volume from snapshot CLIQ input for test. input = "cloneSnapshot description="fake description" snapshotName=fakesnapshot volumeName=fakevolume output=XML" """ output = """ """ self.assertEqual(cliq_args['snapshotName'], self.snapshot_name) self.assertEqual(cliq_args['volumeName'], self.volume_name) return output, None def get_cluster_info(cliq_args): """Get cluster info CLIQ input for test. input = "getClusterInfo clusterName=Cluster01 searchDepth=1 verbose=0 output=XML" """ output = """ """ return output, None def get_volume_info(cliq_args): """Get volume info CLIQ input for test. input = "getVolumeInfo volumeName=fakevolume output=XML" """ output = """ """ return output, None def get_snapshot_info(cliq_args): """Get snapshot info CLIQ input for test. input = "getSnapshotInfo snapshotName=fakesnapshot output=XML" """ output = """ """ return output, None def get_server_info(cliq_args): """Get server info CLIQ input for test. input = "getServerInfo serverName=fakeName" """ output = """ """ return output, None def create_server(cliq_args): """Create server CLIQ input for test. input = "createServer serverName=fakeName initiator=something" """ output = """ """ return output, None def test_error(cliq_args): output = """ """ return output, None def test_paramiko_1_13_0(cliq_args): # paramiko 1.13.0 now returns unicode output = unicode( '\n' '\n\n \n \n' ' \n' ' \n \n \n\n' '\n ') return output, None def test_paramiko_1_10_0(cliq_args): # paramiko 1.10.0 returns python default encoding. output = ( '\n' '\n\n \n \n' ' \n' ' \n \n \n\n' '\n ') return output, None self.assertEqual(cliq_args['output'], 'XML') try: verbs = {'createVolume': create_volume, 'deleteVolume': delete_volume, 'modifyVolume': extend_volume, 'assignVolumeToServer': assign_volume, 'unassignVolumeToServer': unassign_volume, 'createSnapshot': create_snapshot, 'deleteSnapshot': delete_snapshot, 'cloneSnapshot': create_volume_from_snapshot, 'getClusterInfo': get_cluster_info, 'getVolumeInfo': get_volume_info, 'getSnapshotInfo': get_snapshot_info, 'getServerInfo': get_server_info, 'createServer': create_server, 'testError': test_error, 'testParamiko_1.10.1': test_paramiko_1_10_0, 'testParamiko_1.13.1': test_paramiko_1_13_0} except KeyError: raise NotImplementedError() return verbs[verb](cliq_args) def setUp(self): super(TestHPLeftHandCLIQISCSIDriver, self).setUp() self.properties = { 'target_discoverd': True, 'target_portal': '10.0.1.6:3260', 'target_iqn': 'iqn.2003-10.com.lefthandnetworks:group01:25366:fakev', 'volume_id': self.volume_id} def tearDown(self): super(TestHPLeftHandCLIQISCSIDriver, self).tearDown() def default_mock_conf(self): mock_conf = mock.Mock() mock_conf.san_ip = '10.10.10.10' mock_conf.san_login = 'foo' mock_conf.san_password = 'bar' mock_conf.san_ssh_port = 16022 mock_conf.san_clustername = 'CloudCluster1' mock_conf.hplefthand_api_url = None return mock_conf def setup_driver(self, config=None): if config is None: config = self.default_mock_conf() self.driver = hp_lefthand_iscsi.HPLeftHandISCSIDriver( configuration=config) self.driver.do_setup(None) self.driver.proxy._cliq_run = mock.Mock( side_effect=self._fake_cliq_run) return self.driver.proxy._cliq_run def test_create_volume(self): # set up driver with default config mock_cliq_run = self.setup_driver() volume = {'name': self.volume_name, 'size': 1} model_update = self.driver.create_volume(volume) expected_iqn = "iqn.2003-10.com.lefthandnetworks:group01:25366:fakev 0" expected_location = "10.0.1.6:3260,1 %s" % expected_iqn self.assertEqual(model_update['provider_location'], expected_location) expected = [ mock.call( 'createVolume', { 'clusterName': 'CloudCluster1', 'volumeName': 'fakevolume', 'thinProvision': '1', 'output': 'XML', 'size': '1GB'}, True), mock.call( 'getVolumeInfo', { 'volumeName': 'fakevolume', 'output': 'XML'}, True), mock.call( 'getClusterInfo', { 'clusterName': 'Cluster01', 'searchDepth': '1', 'verbose': '0', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_delete_volume(self): # set up driver with default config mock_cliq_run = self.setup_driver() volume = {'name': self.volume_name} self.driver.delete_volume(volume) expected = [ mock.call( 'getVolumeInfo', { 'volumeName': 'fakevolume', 'output': 'XML'}, True), mock.call( 'deleteVolume', { 'volumeName': 'fakevolume', 'prompt': 'false', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_extend_volume(self): # set up driver with default config mock_cliq_run = self.setup_driver() volume = {'name': self.volume_name} self.driver.extend_volume(volume, 2) expected = [ mock.call( 'modifyVolume', { 'volumeName': 'fakevolume', 'output': 'XML', 'size': '2GB'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_initialize_connection(self): # set up driver with default config mock_cliq_run = self.setup_driver() self.driver.proxy._get_iscsi_properties = mock.Mock( return_value=self.properties) volume = {'name': self.volume_name} result = self.driver.initialize_connection(volume, self.connector) self.assertEqual(result['driver_volume_type'], 'iscsi') self.assertDictMatch(result['data'], self.properties) expected = [ mock.call( 'getServerInfo', { 'output': 'XML', 'serverName': 'fakehost'}, False), mock.call( 'assignVolumeToServer', { 'volumeName': 'fakevolume', 'serverName': 'fakehost', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_terminate_connection(self): # set up driver with default config mock_cliq_run = self.setup_driver() volume = {'name': self.volume_name} self.driver.terminate_connection(volume, self.connector) expected = [ mock.call( 'unassignVolumeToServer', { 'volumeName': 'fakevolume', 'serverName': 'fakehost', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_create_snapshot(self): # set up driver with default config mock_cliq_run = self.setup_driver() snapshot = {'name': self.snapshot_name, 'volume_name': self.volume_name} self.driver.create_snapshot(snapshot) expected = [ mock.call( 'createSnapshot', { 'snapshotName': 'fakeshapshot', 'output': 'XML', 'inheritAccess': 1, 'volumeName': 'fakevolume'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_delete_snapshot(self): # set up driver with default config mock_cliq_run = self.setup_driver() snapshot = {'name': self.snapshot_name} self.driver.delete_snapshot(snapshot) expected = [ mock.call( 'getSnapshotInfo', { 'snapshotName': 'fakeshapshot', 'output': 'XML'}, True), mock.call( 'deleteSnapshot', { 'snapshotName': 'fakeshapshot', 'prompt': 'false', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_create_volume_from_snapshot(self): # set up driver with default config mock_cliq_run = self.setup_driver() volume = {'name': self.volume_name} snapshot = {'name': self.snapshot_name} model_update = self.driver.create_volume_from_snapshot(volume, snapshot) expected_iqn = "iqn.2003-10.com.lefthandnetworks:group01:25366:fakev 0" expected_location = "10.0.1.6:3260,1 %s" % expected_iqn self.assertEqual(model_update['provider_location'], expected_location) expected = [ mock.call( 'cloneSnapshot', { 'snapshotName': 'fakeshapshot', 'output': 'XML', 'volumeName': 'fakevolume'}, True), mock.call( 'getVolumeInfo', { 'volumeName': 'fakevolume', 'output': 'XML'}, True), mock.call( 'getClusterInfo', { 'clusterName': 'Cluster01', 'searchDepth': '1', 'verbose': '0', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_get_volume_stats(self): # set up driver with default config mock_cliq_run = self.setup_driver() volume_stats = self.driver.get_volume_stats(True) self.assertEqual(volume_stats['vendor_name'], 'Hewlett-Packard') self.assertEqual(volume_stats['storage_protocol'], 'iSCSI') expected = [ mock.call('getClusterInfo', { 'searchDepth': 1, 'clusterName': 'CloudCluster1', 'output': 'XML'}, True)] # validate call chain mock_cliq_run.assert_has_calls(expected) def test_cliq_run_xml_paramiko_1_13_0(self): # set up driver with default config self.setup_driver() xml = self.driver.proxy._cliq_run_xml('testParamiko_1.13.1', {}) self.assertIsNotNone(xml) def test_cliq_run_xml_paramiko_1_10_0(self): # set up driver with default config self.setup_driver() xml = self.driver.proxy._cliq_run_xml('testParamiko_1.10.1', {}) self.assertIsNotNone(xml) class TestHPLeftHandRESTISCSIDriver(HPLeftHandBaseDriver, test.TestCase): driver_startup_call_stack = [ mock.call.login('foo1', 'bar2'), mock.call.getClusterByName('CloudCluster1'), mock.call.getCluster(1)] def setUp(self): super(TestHPLeftHandRESTISCSIDriver, self).setUp() def tearDown(self): super(TestHPLeftHandRESTISCSIDriver, self).tearDown() def default_mock_conf(self): mock_conf = mock.Mock() mock_conf.hplefthand_api_url = 'http://fake.foo:8080/lhos' mock_conf.hplefthand_username = 'foo1' mock_conf.hplefthand_password = 'bar2' mock_conf.hplefthand_iscsi_chap_enabled = False mock_conf.hplefthand_debug = False mock_conf.hplefthand_clustername = "CloudCluster1" return mock_conf @mock.patch('hplefthandclient.client.HPLeftHandClient', spec=True) def setup_driver(self, _mock_client, config=None): if config is None: config = self.default_mock_conf() _mock_client.return_value.getClusterByName.return_value = { 'id': 1, 'virtualIPAddresses': [{'ipV4Address': '10.0.1.6'}]} _mock_client.return_value.getCluster.return_value = { 'spaceTotal': units.GiB * 500, 'spaceAvailable': units.GiB * 250} self.driver = hp_lefthand_iscsi.HPLeftHandISCSIDriver( configuration=config) self.driver.do_setup(None) return _mock_client.return_value def test_create_volume(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() # mock return value of createVolume mock_client.createVolume.return_value = { 'iscsiIqn': self.connector['initiator']} # execute driver volume_info = self.driver.create_volume(self.volume) self.assertEqual('10.0.1.6:3260,1 iqn.1993-08.org.debian:01:222 0', volume_info['provider_location']) expected = self.driver_startup_call_stack + [ mock.call.createVolume( 'fakevolume', 1, units.GiB, {'isThinProvisioned': True, 'clusterName': 'CloudCluster1'})] mock_client.assert_has_calls(expected) # mock HTTPServerError mock_client.createVolume.side_effect = hpexceptions.HTTPServerError() # ensure the raised exception is a cinder exception self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, self.volume) @mock.patch.object( volume_types, 'get_volume_type', return_value={'extra_specs': {'hplh:provisioning': 'full'}}) def test_create_volume_with_es(self, _mock_volume_type): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() volume_with_vt = self.volume volume_with_vt['volume_type_id'] = 1 # mock return value of createVolume mock_client.createVolume.return_value = { 'iscsiIqn': self.connector['initiator']} # execute creat_volume volume_info = self.driver.create_volume(volume_with_vt) self.assertEqual('10.0.1.6:3260,1 iqn.1993-08.org.debian:01:222 0', volume_info['provider_location']) expected = self.driver_startup_call_stack + [ mock.call.createVolume( 'fakevolume', 1, units.GiB, {'isThinProvisioned': False, 'clusterName': 'CloudCluster1'})] mock_client.assert_has_calls(expected) def test_delete_volume(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() # mock return value of getVolumeByName mock_client.getVolumeByName.return_value = {'id': self.volume_id} # execute delete_volume self.driver.delete_volume(self.volume) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.deleteVolume(self.volume_id)] mock_client.assert_has_calls(expected) # mock HTTPNotFound (volume not found) mock_client.getVolumeByName.side_effect = hpexceptions.HTTPNotFound() # no exception should escape method self.driver.delete_volume(self.volume) # mock HTTPConflict mock_client.deleteVolume.side_effect = hpexceptions.HTTPConflict() # ensure the raised exception is a cinder exception self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_volume, self.volume_id) def test_extend_volume(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() # mock return value of getVolumeByName mock_client.getVolumeByName.return_value = {'id': self.volume_id} # execute extend_volume self.driver.extend_volume(self.volume, 2) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.modifyVolume(1, {'size': 2 * units.GiB})] # validate call chain mock_client.assert_has_calls(expected) # mock HTTPServerError (array failure) mock_client.modifyVolume.side_effect = hpexceptions.HTTPServerError() # ensure the raised exception is a cinder exception self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, self.volume, 2) def test_initialize_connection(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() # mock return value of getVolumeByName mock_client.getServerByName.side_effect = hpexceptions.HTTPNotFound() mock_client.createServer.return_value = {'id': self.server_id} mock_client.getVolumeByName.return_value = {'id': self.volume_id} # execute initialize_connection result = self.driver.initialize_connection( self.volume, self.connector) # validate self.assertEqual(result['driver_volume_type'], 'iscsi') self.assertEqual(result['data']['target_discovered'], False) self.assertEqual(result['data']['volume_id'], self.volume_id) self.assertTrue('auth_method' not in result['data']) expected = self.driver_startup_call_stack + [ mock.call.getServerByName('fakehost'), mock.call.createServer ( 'fakehost', 'iqn.1993-08.org.debian:01:222', None ), mock.call.getVolumeByName('fakevolume'), mock.call.addServerAccess(1, 0)] # validate call chain mock_client.assert_has_calls(expected) # mock HTTPServerError (array failure) mock_client.createServer.side_effect = hpexceptions.HTTPServerError() # ensure the raised exception is a cinder exception self.assertRaises( exception.VolumeBackendAPIException, self.driver.initialize_connection, self.volume, self.connector) def test_initialize_connection_with_chaps(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() # mock return value of getVolumeByName mock_client.getServerByName.side_effect = hpexceptions.HTTPNotFound() mock_client.createServer.return_value = { 'id': self.server_id, 'chapAuthenticationRequired': True, 'chapTargetSecret': 'dont_tell'} mock_client.getVolumeByName.return_value = {'id': self.volume_id} # execute initialize_connection result = self.driver.initialize_connection( self.volume, self.connector) # validate self.assertEqual(result['driver_volume_type'], 'iscsi') self.assertEqual(result['data']['target_discovered'], False) self.assertEqual(result['data']['volume_id'], self.volume_id) self.assertEqual(result['data']['auth_method'], 'CHAP') expected = self.driver_startup_call_stack + [ mock.call.getServerByName('fakehost'), mock.call.createServer ( 'fakehost', 'iqn.1993-08.org.debian:01:222', None ), mock.call.getVolumeByName('fakevolume'), mock.call.addServerAccess(1, 0)] # validate call chain mock_client.assert_has_calls(expected) def test_terminate_connection(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getVolumeByName.return_value = {'id': self.volume_id} mock_client.getServerByName.return_value = {'id': self.server_id} # execute terminate_connection self.driver.terminate_connection(self.volume, self.connector) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.getServerByName('fakehost'), mock.call.removeServerAccess(1, 0)] # validate call chain mock_client.assert_has_calls(expected) mock_client.getVolumeByName.side_effect = hpexceptions.HTTPNotFound() # ensure the raised exception is a cinder exception self.assertRaises( exception.VolumeBackendAPIException, self.driver.terminate_connection, self.volume, self.connector) def test_create_snapshot(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getVolumeByName.return_value = {'id': self.volume_id} # execute create_snapshot self.driver.create_snapshot(self.snapshot) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.createSnapshot( 'fakeshapshot', 1, {'inheritAccess': True})] # validate call chain mock_client.assert_has_calls(expected) # mock HTTPServerError (array failure) mock_client.getVolumeByName.side_effect = hpexceptions.HTTPNotFound() # ensure the raised exception is a cinder exception self.assertRaises( exception.VolumeBackendAPIException, self.driver.create_snapshot, self.snapshot) def test_delete_snapshot(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getSnapshotByName.return_value = {'id': self.snapshot_id} # execute delete_snapshot self.driver.delete_snapshot(self.snapshot) expected = self.driver_startup_call_stack + [ mock.call.getSnapshotByName('fakeshapshot'), mock.call.deleteSnapshot(3)] # validate call chain mock_client.assert_has_calls(expected) mock_client.getSnapshotByName.side_effect = hpexceptions.HTTPNotFound() # no exception is thrown, just error msg is logged self.driver.delete_snapshot(self.snapshot) # mock HTTPServerError (array failure) ex = hpexceptions.HTTPServerError({'message': 'Some message.'}) mock_client.getSnapshotByName.side_effect = ex # ensure the raised exception is a cinder exception self.assertRaises( exception.VolumeBackendAPIException, self.driver.delete_snapshot, self.snapshot) # mock HTTPServerError because the snap is in use ex = hpexceptions.HTTPServerError({ 'message': 'Hey, dude cannot be deleted because it is a clone point duh.'}) mock_client.getSnapshotByName.side_effect = ex # ensure the raised exception is a cinder exception self.assertRaises( exception.SnapshotIsBusy, self.driver.delete_snapshot, self.snapshot) def test_create_volume_from_snapshot(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getSnapshotByName.return_value = {'id': self.snapshot_id} mock_client.cloneSnapshot.return_value = { 'iscsiIqn': self.connector['initiator']} # execute create_volume_from_snapshot model_update = self.driver.create_volume_from_snapshot( self.volume, self.snapshot) expected_iqn = 'iqn.1993-08.org.debian:01:222 0' expected_location = "10.0.1.6:3260,1 %s" % expected_iqn self.assertEqual(model_update['provider_location'], expected_location) expected = self.driver_startup_call_stack + [ mock.call.getSnapshotByName('fakeshapshot'), mock.call.cloneSnapshot('fakevolume', 3)] # validate call chain mock_client.assert_has_calls(expected) def test_create_cloned_volume(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getVolumeByName.return_value = {'id': self.volume_id} # execute create_cloned_volume self.driver.create_cloned_volume( self.cloned_volume, self.volume) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.cloneVolume('clone_volume', 1)] # validate call chain mock_client.assert_has_calls(expected) @mock.patch.object(volume_types, 'get_volume_type') def test_extra_spec_mapping(self, _mock_get_volume_type): # setup drive with default configuration self.setup_driver() # 2 extra specs we don't care about, and # 1 that will get mapped _mock_get_volume_type.return_value = { 'extra_specs': { 'foo:bar': 'fake', 'bar:foo': 1234, 'hplh:provisioning': 'full'}} volume_with_vt = self.volume volume_with_vt['volume_type_id'] = self.volume_type_id # get the extra specs of interest from this volume's volume type volume_extra_specs = self.driver.proxy._get_volume_extra_specs( volume_with_vt) extra_specs = self.driver.proxy._get_lh_extra_specs( volume_extra_specs, hp_lefthand_rest_proxy.extra_specs_key_map.keys()) # map the extra specs key/value pairs to key/value pairs # used as optional configuration values by the LeftHand backend optional = self.driver.proxy._map_extra_specs(extra_specs) self.assertDictMatch({'isThinProvisioned': False}, optional) @mock.patch.object(volume_types, 'get_volume_type') def test_extra_spec_mapping_invalid_value(self, _mock_get_volume_type): # setup drive with default configuration self.setup_driver() volume_with_vt = self.volume volume_with_vt['volume_type_id'] = self.volume_type_id _mock_get_volume_type.return_value = { 'extra_specs': { # r-07 is an invalid value for hplh:ao 'hplh:data_pl': 'r-07', 'hplh:ao': 'true'}} # get the extra specs of interest from this volume's volume type volume_extra_specs = self.driver.proxy._get_volume_extra_specs( volume_with_vt) extra_specs = self.driver.proxy._get_lh_extra_specs( volume_extra_specs, hp_lefthand_rest_proxy.extra_specs_key_map.keys()) # map the extra specs key/value pairs to key/value pairs # used as optional configuration values by the LeftHand backend optional = self.driver.proxy._map_extra_specs(extra_specs) # {'hplh:ao': 'true'} should map to # {'isAdaptiveOptimizationEnabled': True} # without hplh:data_pl since r-07 is an invalid value self.assertDictMatch({'isAdaptiveOptimizationEnabled': True}, optional) def test_retype_with_no_LH_extra_specs(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() ctxt = context.get_admin_context() host = {'host': self.serverName} key_specs_old = {'foo': False, 'bar': 2, 'error': True} key_specs_new = {'foo': True, 'bar': 5, 'error': False} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = dict.copy(self.volume) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.retype(ctxt, volume, new_type, diff, host) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume')] # validate call chain mock_client.assert_has_calls(expected) def test_retype_with_only_LH_extra_specs(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getVolumeByName.return_value = {'id': self.volume_id} ctxt = context.get_admin_context() host = {'host': self.serverName} key_specs_old = {'hplh:provisioning': 'thin'} key_specs_new = {'hplh:provisioning': 'full', 'hplh:ao': 'true'} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = dict.copy(self.volume) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.retype(ctxt, volume, new_type, diff, host) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.modifyVolume( 1, { 'isThinProvisioned': False, 'isAdaptiveOptimizationEnabled': True})] # validate call chain mock_client.assert_has_calls(expected) def test_retype_with_both_extra_specs(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getVolumeByName.return_value = {'id': self.volume_id} ctxt = context.get_admin_context() host = {'host': self.serverName} key_specs_old = {'hplh:provisioning': 'full', 'foo': 'bar'} key_specs_new = {'hplh:provisioning': 'thin', 'foo': 'foobar'} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = dict.copy(self.volume) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.retype(ctxt, volume, new_type, diff, host) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.modifyVolume(1, {'isThinProvisioned': True})] # validate call chain mock_client.assert_has_calls(expected) def test_retype_same_extra_specs(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getVolumeByName.return_value = {'id': self.volume_id} ctxt = context.get_admin_context() host = {'host': self.serverName} key_specs_old = {'hplh:provisioning': 'full', 'hplh:ao': 'true'} key_specs_new = {'hplh:provisioning': 'full', 'hplh:ao': 'false'} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = dict.copy(self.volume) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.retype(ctxt, volume, new_type, diff, host) expected = self.driver_startup_call_stack + [ mock.call.getVolumeByName('fakevolume'), mock.call.modifyVolume( 1, {'isAdaptiveOptimizationEnabled': False})] # validate call chain mock_client.assert_has_calls(expected) def test_migrate_no_location(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() host = {'host': self.serverName, 'capabilities': {}} (migrated, update) = self.driver.migrate_volume( None, self.volume, host) self.assertFalse(migrated) # only startup code is called mock_client.assert_has_calls(self.driver_startup_call_stack) # and nothing else self.assertEqual( len(self.driver_startup_call_stack), len(mock_client.method_calls)) def test_migrate_incorrect_vip(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getClusterByName.return_value = { "virtualIPAddresses": [{ "ipV4Address": "10.10.10.10", "ipV4NetMask": "255.255.240.0"}]} mock_client.getVolumeByName.return_value = {'id': self.volume_id} location = (self.driver.proxy.DRIVER_LOCATION % { 'cluster': 'New_CloudCluster', 'vip': '10.10.10.111'}) host = { 'host': self.serverName, 'capabilities': {'location_info': location}} (migrated, update) = self.driver.migrate_volume( None, self.volume, host) self.assertFalse(migrated) expected = self.driver_startup_call_stack + [ mock.call.getClusterByName('New_CloudCluster')] mock_client.assert_has_calls(expected) # and nothing else self.assertEqual( len(expected), len(mock_client.method_calls)) def test_migrate_with_location(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getClusterByName.return_value = { "virtualIPAddresses": [{ "ipV4Address": "10.10.10.111", "ipV4NetMask": "255.255.240.0"}]} mock_client.getVolumeByName.return_value = {'id': self.volume_id, 'iscsiSessions': None} mock_client.getVolume.return_value = {'snapshots': { 'resource': None}} location = (self.driver.proxy.DRIVER_LOCATION % { 'cluster': 'New_CloudCluster', 'vip': '10.10.10.111'}) host = { 'host': self.serverName, 'capabilities': {'location_info': location}} (migrated, update) = self.driver.migrate_volume( None, self.volume, host) self.assertTrue(migrated) expected = self.driver_startup_call_stack + [ mock.call.getClusterByName('New_CloudCluster'), mock.call.getVolumeByName('fakevolume'), mock.call.getVolume( 1, 'fields=snapshots,snapshots[resource[members[name]]]'), mock.call.modifyVolume(1, {'clusterName': 'New_CloudCluster'})] mock_client.assert_has_calls(expected) # and nothing else self.assertEqual( len(expected), len(mock_client.method_calls)) def test_migrate_with_Snapshots(self): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() mock_client.getClusterByName.return_value = { "virtualIPAddresses": [{ "ipV4Address": "10.10.10.111", "ipV4NetMask": "255.255.240.0"}]} mock_client.getVolumeByName.return_value = { 'id': self.volume_id, 'iscsiSessions': None} mock_client.getVolume.return_value = {'snapshots': { 'resource': 'snapfoo'}} location = (self.driver.proxy.DRIVER_LOCATION % { 'cluster': 'New_CloudCluster', 'vip': '10.10.10.111'}) host = { 'host': self.serverName, 'capabilities': {'location_info': location}} (migrated, update) = self.driver.migrate_volume( None, self.volume, host) self.assertFalse(migrated) expected = self.driver_startup_call_stack + [ mock.call.getClusterByName('New_CloudCluster'), mock.call.getVolumeByName('fakevolume'), mock.call.getVolume( 1, 'fields=snapshots,snapshots[resource[members[name]]]')] mock_client.assert_has_calls(expected) # and nothing else self.assertEqual( len(expected), len(mock_client.method_calls)) @mock.patch.object(volume_types, 'get_volume_type', return_value={'extra_specs': {'hplh:ao': 'true'}}) def test_create_volume_with_ao_true(self, _mock_volume_type): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() volume_with_vt = self.volume volume_with_vt['volume_type_id'] = 1 # mock return value of createVolume mock_client.createVolume.return_value = { 'iscsiIqn': self.connector['initiator']} volume_info = self.driver.create_volume(volume_with_vt) self.assertEqual('10.0.1.6:3260,1 iqn.1993-08.org.debian:01:222 0', volume_info['provider_location']) # make sure createVolume is called without # isAdaptiveOptimizationEnabled == true expected = self.driver_startup_call_stack + [ mock.call.createVolume( 'fakevolume', 1, units.GiB, {'isThinProvisioned': True, 'clusterName': 'CloudCluster1'})] mock_client.assert_has_calls(expected) @mock.patch.object(volume_types, 'get_volume_type', return_value={'extra_specs': {'hplh:ao': 'false'}}) def test_create_volume_with_ao_false(self, _mock_volume_type): # setup drive with default configuration # and return the mock HTTP LeftHand client mock_client = self.setup_driver() volume_with_vt = self.volume volume_with_vt['volume_type_id'] = 1 # mock return value of createVolume mock_client.createVolume.return_value = { 'iscsiIqn': self.connector['initiator']} volume_info = self.driver.create_volume(volume_with_vt) self.assertEqual('10.0.1.6:3260,1 iqn.1993-08.org.debian:01:222 0', volume_info['provider_location']) # make sure createVolume is called with # isAdaptiveOptimizationEnabled == false expected = self.driver_startup_call_stack + [ mock.call.createVolume( 'fakevolume', 1, units.GiB, {'isThinProvisioned': True, 'clusterName': 'CloudCluster1', 'isAdaptiveOptimizationEnabled': False})] mock_client.assert_has_calls(expected) cinder-2014.1.5/cinder/tests/test_nexenta.py0000664000567000056700000007545012540642606022051 0ustar jenkinsjenkins00000000000000# # Copyright 2011 Nexenta Systems, Inc. # All Rights Reserved. # # 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. """ Unit tests for OpenStack Cinder volume driver """ import base64 import urllib2 import mox as mox_lib from cinder import context from cinder import db from cinder import test from cinder import units from cinder.volume import configuration as conf from cinder.volume.drivers import nexenta from cinder.volume.drivers.nexenta import iscsi from cinder.volume.drivers.nexenta import jsonrpc from cinder.volume.drivers.nexenta import nfs from cinder.volume.drivers.nexenta import utils class TestNexentaISCSIDriver(test.TestCase): TEST_VOLUME_NAME = 'volume1' TEST_VOLUME_NAME2 = 'volume2' TEST_SNAPSHOT_NAME = 'snapshot1' TEST_VOLUME_REF = { 'name': TEST_VOLUME_NAME, 'size': 1, 'id': '1', 'status': 'available' } TEST_VOLUME_REF2 = { 'name': TEST_VOLUME_NAME2, 'size': 1, 'id': '2', 'status': 'in-use' } TEST_SNAPSHOT_REF = { 'name': TEST_SNAPSHOT_NAME, 'volume_name': TEST_VOLUME_NAME, } def __init__(self, method): super(TestNexentaISCSIDriver, self).__init__(method) def setUp(self): super(TestNexentaISCSIDriver, self).setUp() self.configuration = mox_lib.MockObject(conf.Configuration) self.configuration.nexenta_host = '1.1.1.1' self.configuration.nexenta_user = 'admin' self.configuration.nexenta_password = 'nexenta' self.configuration.nexenta_volume = 'cinder' self.configuration.nexenta_rest_port = 2000 self.configuration.nexenta_rest_protocol = 'http' self.configuration.nexenta_iscsi_target_portal_port = 3260 self.configuration.nexenta_target_prefix = 'iqn:' self.configuration.nexenta_target_group_prefix = 'cinder/' self.configuration.nexenta_blocksize = '8K' self.configuration.nexenta_sparse = True self.configuration.nexenta_rrmgr_compression = 1 self.configuration.nexenta_rrmgr_tcp_buf_size = 1024 self.configuration.nexenta_rrmgr_connections = 2 self.nms_mock = self.mox.CreateMockAnything() for mod in ['volume', 'zvol', 'iscsitarget', 'appliance', 'stmf', 'scsidisk', 'snapshot']: setattr(self.nms_mock, mod, self.mox.CreateMockAnything()) self.stubs.Set(jsonrpc, 'NexentaJSONProxy', lambda *_, **__: self.nms_mock) self.drv = iscsi.NexentaISCSIDriver(configuration=self.configuration) self.drv.do_setup({}) def test_setup_error(self): self.nms_mock.volume.object_exists('cinder').AndReturn(True) self.mox.ReplayAll() self.drv.check_for_setup_error() def test_setup_error_fail(self): self.nms_mock.volume.object_exists('cinder').AndReturn(False) self.mox.ReplayAll() self.assertRaises(LookupError, self.drv.check_for_setup_error) def test_local_path(self): self.assertRaises(NotImplementedError, self.drv.local_path, '') def test_create_volume(self): self.nms_mock.zvol.create('cinder/volume1', '1G', '8K', True) self.nms_mock.stmf.list_targets() self.nms_mock.iscsitarget.create_target({'target_name': 'iqn:volume1'}) self.nms_mock.stmf.list_targetgroups() self.nms_mock.stmf.create_targetgroup('cinder/volume1') self.nms_mock.stmf.list_targetgroup_members('cinder/volume1') self.nms_mock.stmf.add_targetgroup_member('cinder/volume1', 'iqn:volume1') self.nms_mock.scsidisk.lu_exists('cinder/volume1') self.nms_mock.scsidisk.create_lu('cinder/volume1', {}) self.nms_mock.scsidisk.lu_shared('cinder/volume1') self.nms_mock.scsidisk.add_lun_mapping_entry( 'cinder/volume1', {'target_group': 'cinder/volume1', 'lun': '0'}) self.mox.ReplayAll() self.drv.create_volume(self.TEST_VOLUME_REF) def test_delete_volume(self): self.nms_mock.zvol.get_child_props('cinder/volume1', 'origin').AndReturn({}) self.nms_mock.zvol.destroy('cinder/volume1', '') self.mox.ReplayAll() self.drv.delete_volume(self.TEST_VOLUME_REF) self.mox.ResetAll() c = self.nms_mock.zvol.get_child_props('cinder/volume1', 'origin') c.AndReturn({'origin': 'cinder/volume0@snapshot'}) self.nms_mock.zvol.destroy('cinder/volume1', '') self.mox.ReplayAll() self.drv.delete_volume(self.TEST_VOLUME_REF) self.mox.ResetAll() c = self.nms_mock.zvol.get_child_props('cinder/volume1', 'origin') c.AndReturn({'origin': 'cinder/volume0@cinder-clone-snapshot-1'}) self.nms_mock.zvol.destroy('cinder/volume1', '') self.nms_mock.snapshot.destroy( 'cinder/volume0@cinder-clone-snapshot-1', '') self.mox.ReplayAll() self.drv.delete_volume(self.TEST_VOLUME_REF) self.mox.ResetAll() def test_create_cloned_volume(self): vol = self.TEST_VOLUME_REF2 src_vref = self.TEST_VOLUME_REF snapshot = { 'volume_name': src_vref['name'], 'name': 'cinder-clone-snapshot-%s' % vol['id'], } self.nms_mock.zvol.create_snapshot('cinder/%s' % src_vref['name'], snapshot['name'], '') self.nms_mock.zvol.clone('cinder/%s@%s' % (src_vref['name'], snapshot['name']), 'cinder/%s' % vol['name']) self.mox.ReplayAll() self.drv.create_cloned_volume(vol, src_vref) def test_migrate_volume(self): volume = self.TEST_VOLUME_REF host = { 'capabilities': { 'vendor_name': 'Nexenta', 'location_info': 'NexentaISCSIDriver:1.1.1.1:cinder', 'free_capacity_gb': 1, 'iscsi_target_portal_port': 3260, 'nms_url': 'http://admin:password@1.1.1.1:2000' } } snapshot = { 'volume_name': volume['name'], 'name': 'cinder-migrate-snapshot-%s' % volume['id'], } self.nms_mock.appliance.ssh_list_bindings().AndReturn([]) self.nms_mock.zvol.create_snapshot('cinder/%s' % volume['name'], snapshot['name'], '') src = '%(volume)s/%(zvol)s@%(snapshot)s' % { 'volume': 'cinder', 'zvol': volume['name'], 'snapshot': snapshot['name'] } dst = '1.1.1.1:cinder' cmd = ' '.join(['rrmgr -s zfs -c 1 -q -e -w 1024 -n 2', src, dst]) self.nms_mock.appliance.execute(cmd) snapshot_name = 'cinder/%(volume)s@%(snapshot)s' % { 'volume': volume['name'], 'snapshot': snapshot['name'] } self.nms_mock.snapshot.destroy(snapshot_name, '') volume_name = 'cinder/%s' % volume['name'] self.nms_mock.zvol.get_child_props(volume_name, 'origin').AndReturn(None) self.nms_mock.zvol.destroy(volume_name, '') self.nms_mock.snapshot.destroy('cinder/%(volume)s@%(snapshot)s' % { 'volume': volume['name'], 'snapshot': snapshot['name'] }, '') self.mox.ReplayAll() self.drv.migrate_volume(None, volume, host) def test_create_snapshot(self): self.nms_mock.zvol.create_snapshot('cinder/volume1', 'snapshot1', '') self.mox.ReplayAll() self.drv.create_snapshot(self.TEST_SNAPSHOT_REF) def test_create_volume_from_snapshot(self): self.nms_mock.zvol.clone('cinder/volume1@snapshot1', 'cinder/volume2') self.mox.ReplayAll() self.drv.create_volume_from_snapshot(self.TEST_VOLUME_REF2, self.TEST_SNAPSHOT_REF) def test_delete_snapshot(self): self.nms_mock.snapshot.destroy('cinder/volume1@snapshot1', '') self.mox.ReplayAll() self.drv.delete_snapshot(self.TEST_SNAPSHOT_REF) self.mox.ResetAll() # Check that exception not raised if snapshot does not exist mock = self.nms_mock.snapshot.destroy('cinder/volume1@snapshot1', '') mock.AndRaise(nexenta.NexentaException( 'Snapshot cinder/volume1@snapshot1 does not exist')) self.mox.ReplayAll() self.drv.delete_snapshot(self.TEST_SNAPSHOT_REF) _CREATE_EXPORT_METHODS = [ ('stmf', 'list_targets', tuple(), [], False, ), ('iscsitarget', 'create_target', ({'target_name': 'iqn:volume1'},), u'Unable to create iscsi target\n' u' iSCSI target iqn.1986-03.com.sun:02:cinder-volume1 already' u' configured\n' u' itadm create-target failed with error 17\n', True, ), ('stmf', 'list_targetgroups', tuple(), [], False, ), ('stmf', 'create_targetgroup', ('cinder/volume1',), u'Unable to create targetgroup: stmfadm: cinder/volume1:' u' already exists\n', True, ), ('stmf', 'list_targetgroup_members', ('cinder/volume1', ), [], False, ), ('stmf', 'add_targetgroup_member', ('cinder/volume1', 'iqn:volume1'), u'Unable to add member to targetgroup: stmfadm:' u' iqn.1986-03.com.sun:02:cinder-volume1: already exists\n', True, ), ('scsidisk', 'lu_exists', ('cinder/volume1', ), 0, False, ), ('scsidisk', 'create_lu', ('cinder/volume1', {}), u"Unable to create lu with zvol 'cinder/volume1':\n" u" sbdadm: filename /dev/zvol/rdsk/cinder/volume1: in use\n", True, ), ('scsidisk', 'lu_shared', ('cinder/volume1', ), 0, False, ), ('scsidisk', 'add_lun_mapping_entry', ('cinder/volume1', { 'target_group': 'cinder/volume1', 'lun': '0'}), u"Unable to add view to zvol 'cinder/volume1' (LUNs in use: ):\n" u" stmfadm: view entry exists\n", True, ), ] def _stub_export_method(self, module, method, args, error, raise_exception, fail=False): m = getattr(self.nms_mock, module) m = getattr(m, method) mock = m(*args) if raise_exception and fail: mock.AndRaise(nexenta.NexentaException(error)) else: mock.AndReturn(error) def _stub_all_export_methods(self, fail=False): for params in self._CREATE_EXPORT_METHODS: self._stub_export_method(*params, fail=fail) def test_create_export(self): self._stub_all_export_methods() self.mox.ReplayAll() retval = self.drv.create_export({}, self.TEST_VOLUME_REF) location = '%(host)s:%(port)s,1 %(prefix)s%(volume)s 0' % { 'host': self.configuration.nexenta_host, 'port': self.configuration.nexenta_iscsi_target_portal_port, 'prefix': self.configuration.nexenta_target_prefix, 'volume': self.TEST_VOLUME_NAME } self.assertEqual(retval, {'provider_location': location}) def __get_test(i): def _test_create_export_fail(self): for params in self._CREATE_EXPORT_METHODS[:i]: self._stub_export_method(*params) self._stub_export_method(*self._CREATE_EXPORT_METHODS[i], fail=True) self.mox.ReplayAll() self.assertRaises(nexenta.NexentaException, self.drv.create_export, {}, self.TEST_VOLUME_REF) return _test_create_export_fail for i in range(len(_CREATE_EXPORT_METHODS)): if i % 2: locals()['test_create_export_fail_%d' % i] = __get_test(i) def test_ensure_export(self): self._stub_all_export_methods(fail=True) self.mox.ReplayAll() self.drv.ensure_export({}, self.TEST_VOLUME_REF) def test_remove_export(self): self.nms_mock.scsidisk.delete_lu('cinder/volume1') self.nms_mock.stmf.destroy_targetgroup('cinder/volume1') self.nms_mock.iscsitarget.delete_target('iqn:volume1') self.mox.ReplayAll() self.drv.remove_export({}, self.TEST_VOLUME_REF) def test_remove_export_fail_0(self): self.nms_mock.scsidisk.delete_lu('cinder/volume1') self.nms_mock.stmf.destroy_targetgroup( 'cinder/volume1').AndRaise(nexenta.NexentaException()) self.nms_mock.iscsitarget.delete_target('iqn:volume1') self.mox.ReplayAll() self.drv.remove_export({}, self.TEST_VOLUME_REF) def test_remove_export_fail_1(self): self.nms_mock.scsidisk.delete_lu('cinder/volume1') self.nms_mock.stmf.destroy_targetgroup('cinder/volume1') self.nms_mock.iscsitarget.delete_target( 'iqn:volume1').AndRaise(nexenta.NexentaException()) self.mox.ReplayAll() self.drv.remove_export({}, self.TEST_VOLUME_REF) def test_get_volume_stats(self): stats = {'size': '5368709120G', 'used': '5368709120G', 'available': '5368709120G', 'health': 'ONLINE'} self.nms_mock.volume.get_child_props( self.configuration.nexenta_volume, 'health|size|used|available').AndReturn(stats) self.mox.ReplayAll() stats = self.drv.get_volume_stats(True) self.assertEqual(stats['storage_protocol'], 'iSCSI') self.assertEqual(stats['total_capacity_gb'], 5368709120.0) self.assertEqual(stats['free_capacity_gb'], 5368709120.0) self.assertEqual(stats['reserved_percentage'], 0) self.assertEqual(stats['QoS_support'], False) class TestNexentaJSONRPC(test.TestCase): HOST = 'example.com' URL = 'http://%s/' % HOST URL_S = 'https://%s/' % HOST USER = 'user' PASSWORD = 'password' HEADERS = { 'Authorization': 'Basic %s' % base64.b64encode('%s:%s' % (USER, PASSWORD)), 'Content-Type': 'application/json' } REQUEST = 'the request' def setUp(self): super(TestNexentaJSONRPC, self).setUp() self.proxy = jsonrpc.NexentaJSONProxy( 'http', self.HOST, 2000, '/', self.USER, self.PASSWORD, auto=True) self.mox.StubOutWithMock(urllib2, 'Request', True) self.mox.StubOutWithMock(urllib2, 'urlopen') self.resp_mock = self.mox.CreateMockAnything() self.resp_info_mock = self.mox.CreateMockAnything() self.resp_mock.info().AndReturn(self.resp_info_mock) urllib2.urlopen(self.REQUEST).AndReturn(self.resp_mock) def test_call(self): urllib2.Request( 'http://%s:2000/' % self.HOST, '{"object": null, "params": ["arg1", "arg2"], "method": null}', self.HEADERS).AndReturn(self.REQUEST) self.resp_info_mock.status = '' self.resp_mock.read().AndReturn( '{"error": null, "result": "the result"}') self.mox.ReplayAll() result = self.proxy('arg1', 'arg2') self.assertEqual("the result", result) def test_call_deep(self): urllib2.Request( 'http://%s:2000/' % self.HOST, '{"object": "obj1.subobj", "params": ["arg1", "arg2"],' ' "method": "meth"}', self.HEADERS).AndReturn(self.REQUEST) self.resp_info_mock.status = '' self.resp_mock.read().AndReturn( '{"error": null, "result": "the result"}') self.mox.ReplayAll() result = self.proxy.obj1.subobj.meth('arg1', 'arg2') self.assertEqual("the result", result) def test_call_auto(self): urllib2.Request( 'http://%s:2000/' % self.HOST, '{"object": null, "params": ["arg1", "arg2"], "method": null}', self.HEADERS).AndReturn(self.REQUEST) urllib2.Request( 'https://%s:2000/' % self.HOST, '{"object": null, "params": ["arg1", "arg2"], "method": null}', self.HEADERS).AndReturn(self.REQUEST) self.resp_info_mock.status = 'EOF in headers' self.resp_mock.read().AndReturn( '{"error": null, "result": "the result"}') urllib2.urlopen(self.REQUEST).AndReturn(self.resp_mock) self.mox.ReplayAll() result = self.proxy('arg1', 'arg2') self.assertEqual("the result", result) def test_call_error(self): urllib2.Request( 'http://%s:2000/' % self.HOST, '{"object": null, "params": ["arg1", "arg2"], "method": null}', self.HEADERS).AndReturn(self.REQUEST) self.resp_info_mock.status = '' self.resp_mock.read().AndReturn( '{"error": {"message": "the error"}, "result": "the result"}') self.mox.ReplayAll() self.assertRaises(jsonrpc.NexentaJSONException, self.proxy, 'arg1', 'arg2') def test_call_fail(self): urllib2.Request( 'http://%s:2000/' % self.HOST, '{"object": null, "params": ["arg1", "arg2"], "method": null}', self.HEADERS).AndReturn(self.REQUEST) self.resp_info_mock.status = 'EOF in headers' self.proxy.auto = False self.mox.ReplayAll() self.assertRaises(jsonrpc.NexentaJSONException, self.proxy, 'arg1', 'arg2') class TestNexentaNfsDriver(test.TestCase): TEST_EXPORT1 = 'host1:/volumes/stack/share' TEST_NMS1 = 'http://admin:nexenta@host1:2000' TEST_EXPORT2 = 'host2:/volumes/stack/share' TEST_NMS2 = 'http://admin:nexenta@host2:2000' TEST_EXPORT2_OPTIONS = '-o intr' TEST_FILE_NAME = 'test.txt' TEST_SHARES_CONFIG_FILE = '/etc/cinder/nexenta-shares.conf' TEST_SHARE_SVC = 'svc:/network/nfs/server:default' TEST_SHARE_OPTS = { 'read_only': '', 'read_write': '*', 'recursive': 'true', 'anonymous_rw': 'true', 'extra_options': 'anon=0', 'root': 'nobody' } def _create_volume_db_entry(self): vol = { 'id': '1', 'size': 1, 'status': 'available', 'provider_location': self.TEST_EXPORT1 } return db.volume_create(self.ctxt, vol)['id'] def setUp(self): super(TestNexentaNfsDriver, self).setUp() self.ctxt = context.get_admin_context() self.configuration = mox_lib.MockObject(conf.Configuration) self.configuration.nexenta_shares_config = None self.configuration.nexenta_mount_point_base = '$state_path/mnt' self.configuration.nexenta_sparsed_volumes = True self.configuration.nexenta_volume_compression = 'on' self.configuration.nfs_mount_point_base = '/mnt/test' self.configuration.nfs_mount_options = None self.configuration.nexenta_nms_cache_volroot = False self.nms_mock = self.mox.CreateMockAnything() for mod in ('appliance', 'folder', 'server', 'volume', 'netstorsvc', 'snapshot'): setattr(self.nms_mock, mod, self.mox.CreateMockAnything()) self.nms_mock.__hash__ = lambda *_, **__: 1 self.stubs.Set(jsonrpc, 'NexentaJSONProxy', lambda *_, **__: self.nms_mock) self.drv = nfs.NexentaNfsDriver(configuration=self.configuration) self.drv.shares = {} self.drv.share2nms = {} def test_check_for_setup_error(self): self.drv.share2nms = { 'host1:/volumes/stack/share': self.nms_mock } self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.volume.object_exists('stack').AndReturn(True) self.nms_mock.folder.object_exists('stack/share').AndReturn(True) share_opts = { 'read_write': '*', 'read_only': '', 'root': 'nobody', 'extra_options': 'anon=0', 'recursive': 'true', 'anonymous_rw': 'true', } self.nms_mock.netstorsvc.share_folder( 'svc:/network/nfs/server:default', 'stack/share', share_opts) self.mox.ReplayAll() self.drv.check_for_setup_error() self.mox.ResetAll() self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.volume.object_exists('stack').AndReturn(False) self.mox.ReplayAll() self.assertRaises(LookupError, self.drv.check_for_setup_error) self.mox.ResetAll() self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.volume.object_exists('stack').AndReturn(True) self.nms_mock.folder.object_exists('stack/share').AndReturn(False) self.mox.ReplayAll() self.assertRaises(LookupError, self.drv.check_for_setup_error) def test_initialize_connection(self): self.drv.shares = { self.TEST_EXPORT1: None } volume = { 'provider_location': self.TEST_EXPORT1, 'name': 'volume' } result = self.drv.initialize_connection(volume, None) self.assertEqual(result['data']['export'], '%s/volume' % self.TEST_EXPORT1) def test_do_create_volume(self): volume = { 'provider_location': self.TEST_EXPORT1, 'size': 1, 'name': 'volume-1' } self.drv.shares = {self.TEST_EXPORT1: None} self.drv.share2nms = {self.TEST_EXPORT1: self.nms_mock} compression = self.configuration.nexenta_volume_compression self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.folder.create_with_props( 'stack', 'share/volume-1', {'compression': compression}) self.nms_mock.netstorsvc.share_folder(self.TEST_SHARE_SVC, 'stack/share/volume-1', self.TEST_SHARE_OPTS) self.nms_mock.appliance.execute( 'dd if=/dev/zero of=/volumes/stack/share/volume-1/volume bs=1M ' 'count=0 seek=1024' ) self.nms_mock.appliance.execute('chmod ugo+rw ' '/volumes/stack/share/volume-1/volume') self.mox.ReplayAll() self.drv._do_create_volume(volume) self.mox.ResetAll() self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.folder.create_with_props( 'stack', 'share/volume-1', {'compression': compression}) self.nms_mock.netstorsvc.share_folder( self.TEST_SHARE_SVC, 'stack/share/volume-1', self.TEST_SHARE_OPTS).AndRaise(nexenta.NexentaException('-')) self.nms_mock.folder.destroy('stack/share/volume-1') self.mox.ReplayAll() self.assertRaises(nexenta.NexentaException, self.drv._do_create_volume, volume) def test_create_sparsed_file(self): self.nms_mock.appliance.execute('dd if=/dev/zero of=/tmp/path bs=1M ' 'count=0 seek=1024') self.mox.ReplayAll() self.drv._create_sparsed_file(self.nms_mock, '/tmp/path', 1) def test_create_regular_file(self): self.nms_mock.appliance.execute('dd if=/dev/zero of=/tmp/path bs=1M ' 'count=1024') self.mox.ReplayAll() self.drv._create_regular_file(self.nms_mock, '/tmp/path', 1) def test_set_rw_permissions_for_all(self): path = '/tmp/path' self.nms_mock.appliance.execute('chmod ugo+rw %s' % path) self.mox.ReplayAll() self.drv._set_rw_permissions_for_all(self.nms_mock, path) def test_local_path(self): volume = {'provider_location': self.TEST_EXPORT1, 'name': 'volume-1'} path = self.drv.local_path(volume) self.assertEqual( path, '$state_path/mnt/b3f660847a52b29ac330d8555e4ad669/volume-1/volume' ) def test_remote_path(self): volume = {'provider_location': self.TEST_EXPORT1, 'name': 'volume-1'} path = self.drv.remote_path(volume) self.assertEqual(path, '/volumes/stack/share/volume-1/volume') def test_share_folder(self): path = 'stack/share/folder' self.nms_mock.netstorsvc.share_folder(self.TEST_SHARE_SVC, path, self.TEST_SHARE_OPTS) self.mox.ReplayAll() self.drv._share_folder(self.nms_mock, 'stack', 'share/folder') def test_load_shares_config(self): self.drv.configuration.nfs_shares_config = self.TEST_SHARES_CONFIG_FILE self.mox.StubOutWithMock(self.drv, '_read_config_file') config_data = [ '%s %s' % (self.TEST_EXPORT1, self.TEST_NMS1), '# %s %s' % (self.TEST_EXPORT2, self.TEST_NMS2), '', '%s %s %s' % (self.TEST_EXPORT2, self.TEST_NMS2, self.TEST_EXPORT2_OPTIONS) ] self.drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) self.mox.ReplayAll() self.drv._load_shares_config(self.drv.configuration.nfs_shares_config) self.assertIn(self.TEST_EXPORT1, self.drv.shares) self.assertIn(self.TEST_EXPORT2, self.drv.shares) self.assertEqual(len(self.drv.shares), 2) self.assertIn(self.TEST_EXPORT1, self.drv.share2nms) self.assertIn(self.TEST_EXPORT2, self.drv.share2nms) self.assertEqual(len(self.drv.share2nms.keys()), 2) self.assertEqual(self.drv.shares[self.TEST_EXPORT2], self.TEST_EXPORT2_OPTIONS) self.mox.VerifyAll() def test_get_capacity_info(self): self.drv.share2nms = {self.TEST_EXPORT1: self.nms_mock} self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.folder.get_child_props('stack/share', '').AndReturn({ 'available': '1G', 'used': '2G' }) self.mox.ReplayAll() total, free, allocated = self.drv._get_capacity_info(self.TEST_EXPORT1) self.assertEqual(total, 3 * units.GiB) self.assertEqual(free, units.GiB) self.assertEqual(allocated, 2 * units.GiB) def test_get_share_datasets(self): self.drv.share2nms = {self.TEST_EXPORT1: self.nms_mock} self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.mox.ReplayAll() volume_name, folder_name = \ self.drv._get_share_datasets(self.TEST_EXPORT1) self.assertEqual(volume_name, 'stack') self.assertEqual(folder_name, 'share') def test_delete_snapshot(self): self.drv.share2nms = {self.TEST_EXPORT1: self.nms_mock} self._create_volume_db_entry() self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.snapshot.destroy('stack/share/volume-1@snapshot1', '') self.mox.ReplayAll() self.drv.delete_snapshot({'volume_id': '1', 'name': 'snapshot1'}) self.mox.ResetAll() # Check that exception not raised if snapshot does not exist on # NexentaStor appliance. self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') mock = self.nms_mock.snapshot.destroy('stack/share/volume-1@snapshot1', '') mock.AndRaise(nexenta.NexentaException("Snapshot does not exist")) self.mox.ReplayAll() self.drv.delete_snapshot({'volume_id': '1', 'name': 'snapshot1'}) self.mox.ResetAll() def test_delete_volume(self): self.drv.share2nms = {self.TEST_EXPORT1: self.nms_mock} self._create_volume_db_entry() self.drv._ensure_share_mounted = lambda *_, **__: 0 self.drv._execute = lambda *_, **__: 0 self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.folder.get_child_props('stack/share/volume-1', 'origin').AndReturn(None) self.nms_mock.folder.destroy('stack/share/volume-1', '-r') self.mox.ReplayAll() self.drv.delete_volume({ 'id': '1', 'name': 'volume-1', 'provider_location': self.TEST_EXPORT1 }) self.mox.ResetAll() # Check that exception not raised if folder does not exist on # NexentaStor appliance. self.nms_mock.server.get_prop('volroot').AndReturn('/volumes') self.nms_mock.folder.get_child_props('stack/share/volume-1', 'origin').AndReturn(None) mock = self.nms_mock.folder.destroy('stack/share/volume-1', '-r') mock.AndRaise(nexenta.NexentaException("Folder does not exist")) self.mox.ReplayAll() self.drv.delete_volume({ 'id': '1', 'name': 'volume-1', 'provider_location': self.TEST_EXPORT1 }) self.mox.ResetAll() class TestNexentaUtils(test.TestCase): def test_str2size(self): values_to_test = ( # Test empty value (None, 0), ('', 0), ('0', 0), ('12', 12), # Test int and long values (10, 10), (long(10), 10), # Test bytes string ('1b', 1), ('1B', 1), ('1023b', 1023), ('0B', 0), # Test other units ('1M', units.MiB), ('1.0M', units.MiB), ) for value, result in values_to_test: self.assertEqual(utils.str2size(value), result) # Invalid format value self.assertRaises(ValueError, utils.str2size, 'A') def test_str2gib_size(self): self.assertEqual(utils.str2gib_size('1024M'), 1) self.assertEqual(utils.str2gib_size('300M'), 300 * units.MiB // units.GiB) self.assertEqual(utils.str2gib_size('1.2T'), 1.2 * units.TiB // units.GiB) self.assertRaises(ValueError, utils.str2gib_size, 'A') def test_parse_nms_url(self): urls = ( ('auto://192.168.1.1/', (True, 'http', 'admin', 'nexenta', '192.168.1.1', '2000', '/rest/nms/')), ('http://192.168.1.1/', (False, 'http', 'admin', 'nexenta', '192.168.1.1', '2000', '/rest/nms/')), ('http://192.168.1.1:8080', (False, 'http', 'admin', 'nexenta', '192.168.1.1', '8080', '/rest/nms/')), ('https://root:password@192.168.1.1:8080', (False, 'https', 'root', 'password', '192.168.1.1', '8080', '/rest/nms/')), ) for url, result in urls: self.assertEqual(utils.parse_nms_url(url), result) cinder-2014.1.5/cinder/tests/test_conf.py0000664000567000056700000000570012540642606021323 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # Copyright 2011 Red Hat, Inc. # # 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. from oslo.config import cfg from cinder import test CONF = cfg.CONF CONF.register_opt(cfg.StrOpt('conf_unittest', default='foo', help='for testing purposes only')) class ConfigTestCase(test.TestCase): def setUp(self): super(ConfigTestCase, self).setUp() def test_declare(self): self.assertNotIn('answer', CONF) CONF.import_opt('answer', 'cinder.tests.declare_conf') self.assertIn('answer', CONF) self.assertEqual(CONF.answer, 42) # Make sure we don't overwrite anything CONF.set_override('answer', 256) self.assertEqual(CONF.answer, 256) CONF.import_opt('answer', 'cinder.tests.declare_conf') self.assertEqual(CONF.answer, 256) def test_runtime_and_unknown_conf(self): self.assertNotIn('runtime_answer', CONF) import cinder.tests.runtime_conf # noqa self.assertIn('runtime_answer', CONF) self.assertEqual(CONF.runtime_answer, 54) def test_long_vs_short_conf(self): CONF.clear() CONF.register_cli_opt(cfg.StrOpt('duplicate_answer_long', default='val', help='desc')) CONF.register_cli_opt(cfg.IntOpt('duplicate_answer', default=50, help='desc')) argv = ['--duplicate_answer=60'] CONF(argv, default_config_files=[]) self.assertEqual(CONF.duplicate_answer, 60) self.assertEqual(CONF.duplicate_answer_long, 'val') def test_conf_leak_left(self): self.assertEqual(CONF.conf_unittest, 'foo') self.flags(conf_unittest='bar') self.assertEqual(CONF.conf_unittest, 'bar') def test_conf_leak_right(self): self.assertEqual(CONF.conf_unittest, 'foo') self.flags(conf_unittest='bar') self.assertEqual(CONF.conf_unittest, 'bar') def test_conf_overrides(self): self.assertEqual(CONF.conf_unittest, 'foo') self.flags(conf_unittest='bar') self.assertEqual(CONF.conf_unittest, 'bar') CONF.reset() self.assertEqual(CONF.conf_unittest, 'foo') cinder-2014.1.5/cinder/tests/xenapi/0000775000567000056700000000000012540643114020242 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/xenapi/__init__.py0000664000567000056700000000000012540642606022346 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/test_wsgi.py0000664000567000056700000002572312540642606021356 0ustar jenkinsjenkins00000000000000# Copyright 2011 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Unit tests for `cinder.wsgi`.""" import mock import os.path import ssl import tempfile import urllib2 from oslo.config import cfg import testtools import webob import webob.dec from cinder import exception from cinder.openstack.common import gettextutils from cinder import test import cinder.wsgi CONF = cfg.CONF TEST_VAR_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), 'var')) def open_no_proxy(*args, **kwargs): # NOTE(coreycb): # Deal with more secure certification chain verficiation # introduced in python 2.7.9 under PEP-0476 # https://github.com/python/peps/blob/master/pep-0476.txt if hasattr(ssl, "_create_unverified_context"): opener = urllib2.build_opener( urllib2.ProxyHandler({}), urllib2.HTTPSHandler(context=ssl._create_unverified_context()) ) else: opener = urllib2.build_opener(urllib2.ProxyHandler({})) return opener.open(*args, **kwargs) class TestLoaderNothingExists(test.TestCase): """Loader tests where os.path.exists always returns False.""" def setUp(self): super(TestLoaderNothingExists, self).setUp() self.stubs.Set(os.path, 'exists', lambda _: False) def test_config_not_found(self): self.assertRaises( cinder.exception.ConfigNotFound, cinder.wsgi.Loader, ) class TestLoaderNormalFilesystem(test.TestCase): """Loader tests with normal filesystem (unmodified os.path module).""" _paste_config = """ [app:test_app] use = egg:Paste#static document_root = /tmp """ def setUp(self): super(TestLoaderNormalFilesystem, self).setUp() self.config = tempfile.NamedTemporaryFile(mode="w+t") self.config.write(self._paste_config.lstrip()) self.config.seek(0) self.config.flush() self.loader = cinder.wsgi.Loader(self.config.name) self.addCleanup(self.config.close) def test_config_found(self): self.assertEqual(self.config.name, self.loader.config_path) def test_app_not_found(self): self.assertRaises( cinder.exception.PasteAppNotFound, self.loader.load_app, "non-existent app", ) def test_app_found(self): url_parser = self.loader.load_app("test_app") self.assertEqual("/tmp", url_parser.directory) class TestWSGIServer(test.TestCase): """WSGI server tests.""" def _ipv6_configured(): try: with file('/proc/net/if_inet6') as f: return len(f.read()) > 0 except IOError: return False def test_no_app(self): server = cinder.wsgi.Server("test_app", None) self.assertEqual("test_app", server.name) def test_start_random_port(self): server = cinder.wsgi.Server("test_random_port", None, host="127.0.0.1") self.assertEqual(0, server.port) server.start() self.assertNotEqual(0, server.port) server.stop() server.wait() @testtools.skipIf(not _ipv6_configured(), "Test requires an IPV6 configured interface") def test_start_random_port_with_ipv6(self): server = cinder.wsgi.Server("test_random_port", None, host="::1") server.start() self.assertEqual("::1", server.host) self.assertNotEqual(0, server.port) server.stop() server.wait() def test_server_pool_waitall(self): # test pools waitall method gets called while stopping server server = cinder.wsgi.Server("test_server", None, host="127.0.0.1", port=4444) server.start() with mock.patch.object(server._pool, 'waitall') as mock_waitall: server.stop() server.wait() mock_waitall.assert_called_once_with() def test_app(self): greetings = 'Hello, World!!!' def hello_world(env, start_response): if env['PATH_INFO'] != '/': start_response('404 Not Found', [('Content-Type', 'text/plain')]) return ['Not Found\r\n'] start_response('200 OK', [('Content-Type', 'text/plain')]) return [greetings] server = cinder.wsgi.Server("test_app", hello_world) server.start() response = open_no_proxy('http://127.0.0.1:%d/' % server.port) self.assertEqual(greetings, response.read()) server.stop() def test_app_using_ssl(self): CONF.set_default("ssl_cert_file", os.path.join(TEST_VAR_DIR, 'certificate.crt')) CONF.set_default("ssl_key_file", os.path.join(TEST_VAR_DIR, 'privatekey.key')) greetings = 'Hello, World!!!' @webob.dec.wsgify def hello_world(req): return greetings server = cinder.wsgi.Server("test_app", hello_world) server.start() response = open_no_proxy('https://127.0.0.1:%d/' % server.port) self.assertEqual(greetings, response.read()) server.stop() @testtools.skipIf(not _ipv6_configured(), "Test requires an IPV6 configured interface") def test_app_using_ipv6_and_ssl(self): CONF.set_default("ssl_cert_file", os.path.join(TEST_VAR_DIR, 'certificate.crt')) CONF.set_default("ssl_key_file", os.path.join(TEST_VAR_DIR, 'privatekey.key')) greetings = 'Hello, World!!!' @webob.dec.wsgify def hello_world(req): return greetings server = cinder.wsgi.Server("test_app", hello_world, host="::1", port=0) server.start() response = open_no_proxy('https://[::1]:%d/' % server.port) self.assertEqual(greetings, response.read()) server.stop() class ExceptionTest(test.TestCase): def _wsgi_app(self, inner_app): # NOTE(luisg): In order to test localization, we need to # make sure the lazy _() is installed in the 'fault' module # also we don't want to install the _() system-wide and # potentially break other test cases, so we do it here for this # test suite only. gettextutils.install('', lazy=True) from cinder.api.middleware import fault return fault.FaultWrapper(inner_app) def _do_test_exception_safety_reflected_in_faults(self, expose): class ExceptionWithSafety(exception.CinderException): safe = expose @webob.dec.wsgify def fail(req): raise ExceptionWithSafety('some explanation') api = self._wsgi_app(fail) resp = webob.Request.blank('/').get_response(api) self.assertIn('{"computeFault', resp.body) expected = ('ExceptionWithSafety: some explanation' if expose else 'The server has either erred or is incapable ' 'of performing the requested operation.') self.assertIn(expected, resp.body) self.assertEqual(resp.status_int, 500, resp.body) def test_safe_exceptions_are_described_in_faults(self): self._do_test_exception_safety_reflected_in_faults(True) def test_unsafe_exceptions_are_not_described_in_faults(self): self._do_test_exception_safety_reflected_in_faults(False) def _do_test_exception_mapping(self, exception_type, msg): @webob.dec.wsgify def fail(req): raise exception_type(msg) api = self._wsgi_app(fail) resp = webob.Request.blank('/').get_response(api) self.assertIn(msg, resp.body) self.assertEqual(resp.status_int, exception_type.code, resp.body) if hasattr(exception_type, 'headers'): for (key, value) in exception_type.headers.iteritems(): self.assertIn(key, resp.headers) self.assertEqual(resp.headers[key], value) def test_quota_error_mapping(self): self._do_test_exception_mapping(exception.QuotaError, 'too many used') def test_non_cinder_notfound_exception_mapping(self): class ExceptionWithCode(Exception): code = 404 self._do_test_exception_mapping(ExceptionWithCode, 'NotFound') def test_non_cinder_exception_mapping(self): class ExceptionWithCode(Exception): code = 417 self._do_test_exception_mapping(ExceptionWithCode, 'Expectation failed') def test_exception_with_none_code_throws_500(self): class ExceptionWithNoneCode(Exception): code = None msg = 'Internal Server Error' @webob.dec.wsgify def fail(req): raise ExceptionWithNoneCode() api = self._wsgi_app(fail) resp = webob.Request.blank('/').get_response(api) self.assertEqual(500, resp.status_int) @mock.patch('cinder.openstack.common.gettextutils.translate') def test_cinder_exception_with_localized_explanation(self, mock_t9n): msg = 'My Not Found' msg_translation = 'Mi No Encontrado' message = gettextutils.Message(msg, '') @webob.dec.wsgify def fail(req): class MyVolumeNotFound(exception.NotFound): def __init__(self): self.msg = message self.safe = True raise MyVolumeNotFound() # Test response without localization def mock_get_non_localized_message(msgid, locale): return msg mock_t9n.side_effect = mock_get_non_localized_message api = self._wsgi_app(fail) resp = webob.Request.blank('/').get_response(api) self.assertEqual(404, resp.status_int) self.assertIn(msg, resp.body) # Test response with localization def mock_translate(msgid, locale): if isinstance(msgid, gettextutils.Message): return msg_translation return msgid mock_t9n.side_effect = mock_translate api = self._wsgi_app(fail) resp = webob.Request.blank('/').get_response(api) self.assertEqual(404, resp.status_int) self.assertIn(msg_translation, resp.body) cinder-2014.1.5/cinder/tests/test_netapp_eseries_iscsi.py0000664000567000056700000013023612540642606024601 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 NetApp, Inc. # All Rights Reserved. # # 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. """ Tests for NetApp e-series iscsi volume driver. """ import json import mock import re import requests from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.netapp import common from cinder.volume.drivers.netapp.options import netapp_basicauth_opts from cinder.volume.drivers.netapp.options import netapp_eseries_opts LOG = logging.getLogger(__name__) def create_configuration(): configuration = conf.Configuration(None) configuration.append_config_values(netapp_basicauth_opts) configuration.append_config_values(netapp_eseries_opts) return configuration class FakeEseriesResponse(object): """Fake response to requests.""" def __init__(self, code=None, text=None): self.status_code = code self.text = text def json(self): return json.loads(self.text) class FakeEseriesServerHandler(object): """HTTP handler that fakes enough stuff to allow the driver to run.""" def do_GET(self, path, params, data, headers): """Respond to a GET request.""" response = FakeEseriesResponse() if "/devmgr/vn" not in path: response.status_code = 404 (__, ___, path) = path.partition("/devmgr/vn") if re.match("^/storage-systems/[0-9a-zA-Z]+/volumes$", path): response.status_code = 200 response.text = """[{"extremeProtection": false, "pitBaseVolume": false, "dssMaxSegmentSize": 131072, "totalSizeInBytes": "2126008832", "raidLevel": "raid6", "volumeRef": "0200000060080E500023C73400000AAA52D11677", "listOfMappings": [], "sectorOffset": "6", "id": "0200000060080E500023C73400000AAA52D11677", "wwn": "60080E500023C73400000AAA52D11677", "capacity": "2126008832", "mgmtClientAttribute": 0, "label": "repos_0006", "volumeFull": false, "blkSize": 512, "volumeCopyTarget": false, "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "preferredControllerId": "070000000000000000000002", "currentManager": "070000000000000000000002", "applicationTagOwned": true, "status": "optimal", "segmentSize": 131072, "volumeUse": "freeRepositoryVolume", "action": "none", "name": "repos_0006", "worldWideName": "60080E500023C73400000AAA52D11677", "currentControllerId" : "070000000000000000000002", "protectionInformationCapable": false, "mapped": false, "reconPriority": 1, "protectionType": "type0Protection"} , {"extremeProtection": false, "pitBaseVolume": true, "dssMaxSegmentSize": 131072, "totalSizeInBytes": "2147483648", "raidLevel": "raid6", "volumeRef": "0200000060080E500023BB3400001FC352D14CB2", "listOfMappings": [], "sectorOffset": "15", "id": "0200000060080E500023BB3400001FC352D14CB2", "wwn": "60080E500023BB3400001FC352D14CB2", "capacity": "2147483648", "mgmtClientAttribute": 0, "label": "bdm-vc-test-1", "volumeFull": false, "blkSize": 512, "volumeCopyTarget": false, "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "preferredControllerId": "070000000000000000000001", "currentManager": "070000000000000000000001", "applicationTagOwned": false, "status": "optimal", "segmentSize": 131072, "volumeUse": "standardVolume", "action": "none", "preferredManager": "070000000000000000000001", "volumeHandle": 15, "offline": false, "preReadRedundancyCheckEnabled": false, "dssPreallocEnabled": false, "name": "bdm-vc-test-1", "worldWideName": "60080E500023BB3400001FC352D14CB2", "currentControllerId": "070000000000000000000001", "protectionInformationCapable": false, "mapped": false, "reconPriority": 1, "protectionType": "type1Protection"}, {"extremeProtection": false, "pitBaseVolume": true, "dssMaxSegmentSize": 131072, "totalSizeInBytes": "1073741824", "raidLevel": "raid6", "volumeRef": "0200000060080E500023BB34000003FB515C2293", "listOfMappings": [], "sectorOffset": "15", "id": "0200000060080E500023BB34000003FB515C2293", "wwn": "60080E500023BB3400001FC352D14CB2", "capacity": "2147483648", "mgmtClientAttribute": 0, "label": "CFDXJ67BLJH25DXCZFZD4NSF54", "volumeFull": false, "blkSize": 512, "volumeCopyTarget": false, "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "preferredControllerId": "070000000000000000000001", "currentManager": "070000000000000000000001", "applicationTagOwned": false, "status": "optimal", "segmentSize": 131072, "volumeUse": "standardVolume", "action": "none", "preferredManager": "070000000000000000000001", "volumeHandle": 15, "offline": false, "preReadRedundancyCheckEnabled": false, "dssPreallocEnabled": false, "name": "bdm-vc-test-1", "worldWideName": "60080E500023BB3400001FC352D14CB2", "currentControllerId": "070000000000000000000001", "protectionInformationCapable": false, "mapped": false, "reconPriority": 1, "protectionType": "type1Protection"}]""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/volumes/[0-9A-Za-z]+$", path): response.status_code = 200 response.text = """{"extremeProtection": false, "pitBaseVolume": true, "dssMaxSegmentSize": 131072, "totalSizeInBytes": "2147483648", "raidLevel": "raid6", "volumeRef": "0200000060080E500023BB3400001FC352D14CB2", "listOfMappings": [], "sectorOffset": "15", "id": "0200000060080E500023BB3400001FC352D14CB2", "wwn": "60080E500023BB3400001FC352D14CB2", "capacity": "2147483648", "mgmtClientAttribute": 0, "label": "bdm-vc-test-1", "volumeFull": false, "blkSize": 512, "volumeCopyTarget": false, "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "preferredControllerId": "070000000000000000000001", "currentManager": "070000000000000000000001", "applicationTagOwned": false, "status": "optimal", "segmentSize": 131072, "volumeUse": "standardVolume", "action": "none", "preferredManager": "070000000000000000000001", "volumeHandle": 15, "offline": false, "preReadRedundancyCheckEnabled": false, "dssPreallocEnabled": false, "name": "bdm-vc-test-1", "worldWideName": "60080E500023BB3400001FC352D14CB2", "currentControllerId": "070000000000000000000001", "protectionInformationCapable": false, "mapped": false, "reconPriority": 1, "protectionType": "type1Protection"}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/hardware-inventory$", path): response.status_code = 200 response.text = """ {"iscsiPorts": [{"controllerId": "070000000000000000000002", "ipv4Enabled": true, "ipv4Data": {"ipv4Address": "0.0.0.0", "ipv4AddressConfigMethod": "configStatic", "ipv4VlanId": {"isEnabled": false, "value": 0}, "ipv4AddressData": {"ipv4Address": "172.20.123.66", "ipv4SubnetMask": "255.255.255.0", "configState": "configured", "ipv4GatewayAddress": "0.0.0.0"}}, "tcpListenPort": 3260, "interfaceRef": "2202040000000000000000000000000000000000" ,"iqn": "iqn.1992-01.com.lsi:2365.60080e500023c73400000000515af323" }]}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/hosts$", path): response.status_code = 200 response.text = """[{"isSAControlled": false, "confirmLUNMappingCreation" : false, "label": "stlrx300s7-55", "isLargeBlockFormatHost": false, "clusterRef": "8500000060080E500023C7340036035F515B78FC", "protectionInformationCapableAccessMethod": false, "ports": [], "hostRef": "8400000060080E500023C73400300381515BFBA3", "hostTypeIndex": 6, "hostSidePorts": [{"label": "NewStore", "type": "iscsi", "address": "iqn.1998-01.com.vmware:localhost-28a58148"}]}]""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/host-types$", path): response.status_code = 200 response.text = """[{ "id" : "4", "code" : "AIX", "name" : "AIX", "index" : 4 }, { "id" : "5", "code" : "IRX", "name" : "IRX", "index" : 5 }, { "id" : "6", "code" : "LnxALUA", "name" : "LnxALUA", "index" : 6 }]""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-groups$", path): response.status_code = 200 response.text = """[]""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-images$", path): response.status_code = 200 response.text = """[]""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/storage-pools$", path): response.status_code = 200 response.text = """[ {"protectionInformationCapabilities": {"protectionInformationCapable": true, "protectionType": "type2Protection"}, "raidLevel": "raidDiskPool", "reserved1": "000000000000000000000000", "reserved2": "", "isInaccessible": false, "label": "DDP", "state": "complete", "usage": "standard", "offline": false, "drawerLossProtection": false, "trayLossProtection": false, "securityType": "capable", "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "driveBlockFormat": "__UNDEFINED", "usedSpace": "81604378624", "volumeGroupData": {"type": "diskPool", "diskPoolData": {"criticalReconstructPriority": "highest", "poolUtilizationState": "utilizationOptimal", "reconstructionReservedDriveCountCurrent": 3, "allocGranularity": "4294967296", "degradedReconstructPriority": "high", "backgroundOperationPriority": "low", "reconstructionReservedAmt": "897111293952", "unusableCapacity": "0", "reconstructionReservedDriveCount": 1, "poolUtilizationWarningThreshold": 50, "poolUtilizationCriticalThreshold": 85}}, "spindleSpeed": 10000, "worldWideName": "60080E500023BB3400001F9F52CECC3F", "spindleSpeedMatch": true, "totalRaidedSpace": "17273253317836", "sequenceNum": 2, "protectionInformationCapable": false}]""" elif re.match("^/storage-systems$", path): response.status_code = 200 response.text = """[ {"freePoolSpace": 11142431623168, "driveCount": 24, "hostSparesUsed": 0, "id": "1fa6efb5-f07b-4de4-9f0e-52e5f7ff5d1b", "hotSpareSizeAsString": "0", "wwn": "60080E500023C73400000000515AF323", "parameters": {"minVolSize": 1048576, "maxSnapshotsPerBase": 16, "maxDrives": 192, "maxVolumes": 512, "maxVolumesPerGroup": 256, "maxMirrors": 0, "maxMappingsPerVolume": 1, "maxMappableLuns": 256, "maxVolCopys": 511, "maxSnapshots": 256}, "hotSpareCount": 0, "hostSpareCountInStandby": 0, "status": "needsattn", "trayCount": 1, "usedPoolSpaceAsString": "5313000380416", "ip2": "10.63.165.216", "ip1": "10.63.165.215", "freePoolSpaceAsString": "11142431623168", "types": "SAS", "name": "stle2600-7_8", "hotSpareSize": 0, "usedPoolSpace": 5313000380416, "driveTypes": ["sas"], "unconfiguredSpaceByDriveType": {}, "unconfiguredSpaceAsStrings": "0", "model": "2650", "unconfiguredSpace": 0}]""" elif re.match("^/storage-systems/[0-9a-zA-Z]+$", path): response.status_code = 200 response.text = """{"freePoolSpace": 11142431623168, "driveCount": 24, "hostSparesUsed": 0, "id": "1fa6efb5-f07b-4de4-9f0e-52e5f7ff5d1b", "hotSpareSizeAsString": "0", "wwn": "60080E500023C73400000000515AF323", "parameters": {"minVolSize": 1048576, "maxSnapshotsPerBase": 16, "maxDrives": 192, "maxVolumes": 512, "maxVolumesPerGroup": 256, "maxMirrors": 0, "maxMappingsPerVolume": 1, "maxMappableLuns": 256, "maxVolCopys": 511, "maxSnapshots": 256}, "hotSpareCount": 0, "hostSpareCountInStandby": 0, "status": "needsattn", "trayCount": 1, "usedPoolSpaceAsString": "5313000380416", "ip2": "10.63.165.216", "ip1": "10.63.165.215", "freePoolSpaceAsString": "11142431623168", "types": "SAS", "name": "stle2600-7_8", "hotSpareSize": 0, "usedPoolSpace": 5313000380416, "driveTypes": ["sas"], "unconfiguredSpaceByDriveType": {}, "unconfiguredSpaceAsStrings": "0", "model": "2650", "unconfiguredSpace": 0}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/volume-copy-jobs" "/[0-9a-zA-Z]+$", path): response.status_code = 200 response.text = """{"status": "complete", "cloneCopy": true, "pgRef": "3300000060080E500023C73400000ACA52D29454", "volcopyHandle":49160 , "idleTargetWriteProt": true, "copyPriority": "priority2", "volcopyRef": "1800000060080E500023C73400000ACF52D29466", "worldWideName": "60080E500023C73400000ACF52D29466", "copyCompleteTime": "0", "sourceVolume": "3500000060080E500023C73400000ACE52D29462", "currentManager": "070000000000000000000002", "copyStartTime": "1389551671", "reserved1": "00000000", "targetVolume": "0200000060080E500023C73400000A8C52D10675"}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/volume-mappings$", path): response.status_code = 200 response.text = """[ { "lunMappingRef":"8800000000000000000000000000000000000000", "lun": 0, "ssid": 16384, "perms": 15, "volumeRef": "0200000060080E500023BB34000003FB515C2293", "type": "all", "mapRef": "8400000060080E500023C73400300381515BFBA3" }] """ else: # Unknown API response.status_code = 500 return response def do_POST(self, path, params, data, headers): """Respond to a POST request.""" response = FakeEseriesResponse() if "/devmgr/vn" not in path: response.status_code = 404 data = json.loads(data) if data else None (__, ___, path) = path.partition("/devmgr/vn") if re.match("^/storage-systems/[0-9a-zA-Z]+/volumes$", path): response.status_code = 200 text_json = json.loads(""" {"extremeProtection": false, "pitBaseVolume": true, "dssMaxSegmentSize": 131072, "totalSizeInBytes": "1073741824", "raidLevel": "raid6", "volumeRef": "0200000060080E500023BB34000003FB515C2293", "listOfMappings": [], "sectorOffset": "15", "id": "0200000060080E500023BB34000003FB515C2293", "wwn": "60080E500023BB3400001FC352D14CB2", "capacity": "2147483648", "mgmtClientAttribute": 0, "label": "CFDXJ67BLJH25DXCZFZD4NSF54", "volumeFull": false, "blkSize": 512, "volumeCopyTarget": false, "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "preferredControllerId": "070000000000000000000001", "currentManager": "070000000000000000000001", "applicationTagOwned": false, "status": "optimal", "segmentSize": 131072, "volumeUse": "standardVolume", "action": "none", "preferredManager": "070000000000000000000001", "volumeHandle": 15, "offline": false, "preReadRedundancyCheckEnabled": false, "dssPreallocEnabled": false, "name": "bdm-vc-test-1", "worldWideName": "60080E500023BB3400001FC352D14CB2", "currentControllerId": "070000000000000000000001", "protectionInformationCapable": false, "mapped": false, "reconPriority": 1, "protectionType": "type1Protection"}""") text_json['label'] = data['name'] text_json['name'] = data['name'] text_json['volumeRef'] = data['name'] text_json['id'] = data['name'] response.text = json.dumps(text_json) elif re.match("^/storage-systems/[0-9a-zA-Z]+/volume-mappings$", path): response.status_code = 200 text_json = json.loads(""" { "lunMappingRef":"8800000000000000000000000000000000000000", "lun": 0, "ssid": 16384, "perms": 15, "volumeRef": "0200000060080E500023BB34000003FB515C2293", "type": "all", "mapRef": "8400000060080E500023C73400300381515BFBA3" } """) text_json['volumeRef'] = data['mappableObjectId'] text_json['mapRef'] = data['targetId'] response.text = json.dumps(text_json) elif re.match("^/storage-systems/[0-9a-zA-Z]+/hosts$", path): response.status_code = 200 response.text = """{"isSAControlled": false, "confirmLUNMappingCreation" : false, "label": "stlrx300s7-55", "isLargeBlockFormatHost": false, "clusterRef": "8500000060080E500023C7340036035F515B78FC", "protectionInformationCapableAccessMethod": false, "ports": [], "hostRef": "8400000060080E500023C73400300381515BFBA3", "hostTypeIndex": 10, "hostSidePorts": [{"label": "NewStore", "type": "iscsi", "address": "iqn.1998-01.com.vmware:localhost-28a58148"}]}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-groups$", path): response.status_code = 200 text_json = json.loads("""{"status": "optimal", "autoDeleteLimit": 0, "maxRepositoryCapacity": "-65536", "rollbackStatus": "none" , "unusableRepositoryCapacity": "0", "pitGroupRef": "3300000060080E500023C7340000098D5294AC9A", "clusterSize": 65536, "label": "C6JICISVHNG2TFZX4XB5ZWL7O", "maxBaseCapacity": "476187142128128", "repositoryVolume": "3600000060080E500023BB3400001FA952CEF12C", "fullWarnThreshold": 99, "repFullPolicy": "purgepit", "action": "none", "rollbackPriority": "medium", "creationPendingStatus": "none", "consistencyGroupRef": "0000000000000000000000000000000000000000", "volumeHandle": 49153, "consistencyGroup": false, "baseVolume": "0200000060080E500023C734000009825294A534"}""") text_json['label'] = data['name'] text_json['name'] = data['name'] text_json['pitGroupRef'] = data['name'] text_json['id'] = data['name'] text_json['baseVolume'] = data['baseMappableObjectId'] response.text = json.dumps(text_json) elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-images$", path): response.status_code = 200 text_json = json.loads("""{"status": "optimal", "pitCapacity": "2147483648", "pitTimestamp": "1389315375", "pitGroupRef": "3300000060080E500023C7340000098D5294AC9A", "creationMethod": "user", "repositoryCapacityUtilization": "2818048", "activeCOW": true, "isRollbackSource": false, "pitRef": "3400000060080E500023BB3400631F335294A5A8", "pitSequenceNumber": "19"}""") text_json['label'] = data['groupId'] text_json['name'] = data['groupId'] text_json['id'] = data['groupId'] text_json['pitGroupRef'] = data['groupId'] response.text = json.dumps(text_json) elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-volumes$", path): response.status_code = 200 text_json = json.loads("""{"unusableRepositoryCapacity": "0", "totalSizeInBytes": "-1", "worldWideName": "60080E500023BB3400001FAD52CEF2F5", "boundToPIT": true, "wwn": "60080E500023BB3400001FAD52CEF2F5", "id": "3500000060080E500023BB3400001FAD52CEF2F5", "baseVol": "0200000060080E500023BB3400001FA352CECCAE", "label": "bdm-pv-1", "volumeFull": false, "preferredControllerId": "070000000000000000000001", "offline": false, "viewSequenceNumber": "10", "status": "optimal", "viewRef": "3500000060080E500023BB3400001FAD52CEF2F5", "mapped": false, "accessMode": "readOnly", "viewTime": "1389315613", "repositoryVolume": "0000000000000000000000000000000000000000", "preferredManager": "070000000000000000000001", "volumeHandle": 16385, "currentManager": "070000000000000000000001", "maxRepositoryCapacity": "0", "name": "bdm-pv-1", "fullWarnThreshold": 0, "currentControllerId": "070000000000000000000001", "basePIT": "3400000060080E500023BB3400631F335294A5A8", "clusterSize": 0, "mgmtClientAttribute": 0}""") text_json['label'] = data['name'] text_json['name'] = data['name'] text_json['id'] = data['name'] text_json['basePIT'] = data['snapshotImageId'] text_json['baseVol'] = data['baseMappableObjectId'] response.text = json.dumps(text_json) elif re.match("^/storage-systems$", path): response.status_code = 200 response.text = """{"freePoolSpace": "17055871480319", "driveCount": 24, "wwn": "60080E500023C73400000000515AF323", "id": "1", "hotSpareSizeAsString": "0", "hostSparesUsed": 0, "types": "", "hostSpareCountInStandby": 0, "status": "optimal", "trayCount": 1, "usedPoolSpaceAsString": "37452115456", "ip2": "10.63.165.216", "ip1": "10.63.165.215", "freePoolSpaceAsString": "17055871480319", "hotSpareCount": 0, "hotSpareSize": "0", "name": "stle2600-7_8", "usedPoolSpace": "37452115456", "driveTypes": ["sas"], "unconfiguredSpaceByDriveType": {}, "unconfiguredSpaceAsStrings": "0", "model": "2650", "unconfiguredSpace": "0"}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+$", path): response.status_code = 200 elif re.match("^/storage-systems/[0-9a-zA-Z]+/volume-copy-jobs$", path): response.status_code = 200 response.text = """{"status": "complete", "cloneCopy": true, "pgRef": "3300000060080E500023C73400000ACA52D29454", "volcopyHandle":49160 , "idleTargetWriteProt": true, "copyPriority": "priority2", "volcopyRef": "1800000060080E500023C73400000ACF52D29466", "worldWideName": "60080E500023C73400000ACF52D29466", "copyCompleteTime": "0", "sourceVolume": "3500000060080E500023C73400000ACE52D29462", "currentManager": "070000000000000000000002", "copyStartTime": "1389551671", "reserved1": "00000000", "targetVolume": "0200000060080E500023C73400000A8C52D10675"}""" elif re.match("^/storage-systems/[0-9a-zA-Z]+/volumes/[0-9A-Za-z]+$", path): response.status_code = 200 response.text = """{"extremeProtection": false, "pitBaseVolume": true, "dssMaxSegmentSize": 131072, "totalSizeInBytes": "1073741824", "raidLevel": "raid6", "volumeRef": "0200000060080E500023BB34000003FB515C2293", "listOfMappings": [], "sectorOffset": "15", "id": "0200000060080E500023BB34000003FB515C2293", "wwn": "60080E500023BB3400001FC352D14CB2", "capacity": "2147483648", "mgmtClientAttribute": 0, "label": "rename", "volumeFull": false, "blkSize": 512, "volumeCopyTarget": false, "volumeGroupRef": "0400000060080E500023BB3400001F9F52CECC3F", "preferredControllerId": "070000000000000000000001", "currentManager": "070000000000000000000001", "applicationTagOwned": false, "status": "optimal", "segmentSize": 131072, "volumeUse": "standardVolume", "action": "none", "preferredManager": "070000000000000000000001", "volumeHandle": 15, "offline": false, "preReadRedundancyCheckEnabled": false, "dssPreallocEnabled": false, "name": "bdm-vc-test-1", "worldWideName": "60080E500023BB3400001FC352D14CB2", "currentControllerId": "070000000000000000000001", "protectionInformationCapable": false, "mapped": false, "reconPriority": 1, "protectionType": "type1Protection"}""" else: # Unknown API response.status_code = 500 return response def do_DELETE(self, path, params, data, headers): """Respond to a DELETE request.""" response = FakeEseriesResponse() if "/devmgr/vn" not in path: response.status_code = 500 (__, ___, path) = path.partition("/devmgr/vn") if re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-images" "/[0-9A-Za-z]+$", path): code = 204 elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-groups" "/[0-9A-Za-z]+$", path): code = 204 elif re.match("^/storage-systems/[0-9a-zA-Z]+/snapshot-volumes" "/[0-9A-Za-z]+$", path): code = 204 elif re.match("^/storage-systems/[0-9a-zA-Z]+/volume-copy-jobs" "/[0-9A-Za-z]+$", path): code = 204 elif re.match("^/storage-systems/[0-9a-zA-Z]+/volumes" "/[0-9A-Za-z]+$", path): code = 204 elif re.match("^/storage-systems/[0-9a-zA-Z]+/volume-mappings/" "[0-9a-zA-Z]+$", path): code = 204 else: code = 500 response.status_code = code return response class FakeEseriesHTTPSession(object): """A fake requests.Session for netapp tests. """ def __init__(self): self.handler = FakeEseriesServerHandler() def request(self, method, url, params, data, headers, timeout, verify): address = '127.0.0.1:80' (__, ___, path) = url.partition(address) if method.upper() == 'GET': return self.handler.do_GET(path, params, data, headers) elif method.upper() == 'POST': return self.handler.do_POST(path, params, data, headers) elif method.upper() == 'DELETE': return self.handler.do_DELETE(path, params, data, headers) else: raise exception.Invalid() class NetAppEseriesIscsiDriverTestCase(test.TestCase): """Test case for NetApp e-series iscsi driver.""" volume = {'id': '114774fb-e15a-4fae-8ee2-c9723e3645ef', 'size': 1, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'lun1', 'id': '114774fb-e15a-4fae-8ee2-c9723e3645ef', 'provider_auth': 'provider a b', 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} snapshot = {'id': '17928122-553b-4da9-9737-e5c3dcd97f75', 'volume_id': '114774fb-e15a-4fae-8ee2-c9723e3645ef', 'size': 2, 'volume_name': 'lun1', 'volume_size': 2, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} volume_sec = {'id': 'b6c01641-8955-4917-a5e3-077147478575', 'size': 2, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'lun1', 'id': 'b6c01641-8955-4917-a5e3-077147478575', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} volume_clone = {'id': 'b4b24b27-c716-4647-b66d-8b93ead770a5', 'size': 3, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'cl_sm', 'id': 'b4b24b27-c716-4647-b66d-8b93ead770a5', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} volume_clone_large = {'id': 'f6ef5bf5-e24f-4cbb-b4c4-11d631d6e553', 'size': 6, 'volume_name': 'lun1', 'os_type': 'linux', 'provider_location': 'cl_lg', 'id': 'f6ef5bf5-e24f-4cbb-b4c4-11d631d6e553', 'provider_auth': None, 'project_id': 'project', 'display_name': None, 'display_description': 'lun1', 'volume_type_id': None} connector = {'initiator': 'iqn.1998-01.com.vmware:localhost-28a58148'} def setUp(self): super(NetAppEseriesIscsiDriverTestCase, self).setUp() self._custom_setup() def _custom_setup(self): configuration = self._set_config(create_configuration()) self.driver = common.NetAppDriver(configuration=configuration) requests.Session = mock.Mock(wraps=FakeEseriesHTTPSession) self.driver.do_setup(context='context') self.driver.check_for_setup_error() def _set_config(self, configuration): configuration.netapp_storage_family = 'eseries' configuration.netapp_storage_protocol = 'iscsi' configuration.netapp_transport_type = 'http' configuration.netapp_server_hostname = '127.0.0.1' configuration.netapp_server_port = '80' configuration.netapp_webservice_path = '/devmgr/vn' configuration.netapp_controller_ips = '127.0.0.2,127.0.0.3' configuration.netapp_sa_password = 'pass1234' configuration.netapp_login = 'rw' configuration.netapp_password = 'rw' configuration.netapp_storage_pools = 'DDP' return configuration def test_embedded_mode(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '127.0.0.1,127.0.0.3' driver = common.NetAppDriver(configuration=configuration) driver.do_setup(context='context') self.assertEqual(driver._client.get_system_id(), '1fa6efb5-f07b-4de4-9f0e-52e5f7ff5d1b') def test_check_system_pwd_not_sync(self): def list_system(): if getattr(self, 'test_count', None): self.test_count = 1 return {'status': 'passwordoutofsync'} return {'status': 'needsAttention'} self.driver._client.list_storage_system = mock.Mock(wraps=list_system) result = self.driver._check_storage_system() self.assertTrue(result) def test_connect(self): self.driver.check_for_setup_error() def test_create_destroy(self): self.driver.create_volume(self.volume) self.driver.delete_volume(self.volume) def test_create_vol_snapshot_destroy(self): self.driver.create_volume(self.volume) self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot(self.volume_sec, self.snapshot) self.driver.delete_snapshot(self.snapshot) self.driver.delete_volume(self.volume) def test_map_unmap(self): self.driver.create_volume(self.volume) connection_info = self.driver.initialize_connection(self.volume, self.connector) self.assertEqual(connection_info['driver_volume_type'], 'iscsi') properties = connection_info.get('data') self.assertIsNotNone(properties, 'Target portal is none') self.driver.terminate_connection(self.volume, self.connector) self.driver.delete_volume(self.volume) def test_map_already_mapped_same_host(self): self.driver.create_volume(self.volume) maps = [{'lunMappingRef': 'hdkjsdhjsdh', 'mapRef': '8400000060080E500023C73400300381515BFBA3', 'volumeRef': '0200000060080E500023BB34000003FB515C2293', 'lun': 2}] self.driver._get_host_mapping_for_vol_frm_array = mock.Mock( return_value=maps) self.driver._get_free_lun = mock.Mock() info = self.driver.initialize_connection(self.volume, self.connector) self.assertEqual( self.driver._get_host_mapping_for_vol_frm_array.call_count, 1) self.assertEqual(self.driver._get_free_lun.call_count, 0) self.assertEqual(info['driver_volume_type'], 'iscsi') properties = info.get('data') self.assertIsNotNone(properties, 'Target portal is none') self.driver.terminate_connection(self.volume, self.connector) self.driver.delete_volume(self.volume) def test_map_already_mapped_diff_host(self): self.driver.create_volume(self.volume) maps = [{'lunMappingRef': 'hdkjsdhjsdh', 'mapRef': '7400000060080E500023C73400300381515BFBA3', 'volumeRef': 'CFDXJ67BLJH25DXCZFZD4NSF54', 'lun': 2}] self.driver._get_host_mapping_for_vol_frm_array = mock.Mock( return_value=maps) self.driver._get_vol_mapping_for_host_frm_array = mock.Mock( return_value=[]) self.driver._get_free_lun = mock.Mock(return_value=0) self.driver._del_vol_mapping_frm_cache = mock.Mock() info = self.driver.initialize_connection(self.volume, self.connector) self.assertEqual( self.driver._get_vol_mapping_for_host_frm_array.call_count, 1) self.assertEqual( self.driver._get_host_mapping_for_vol_frm_array.call_count, 1) self.assertEqual(self.driver._get_free_lun.call_count, 1) self.assertEqual(self.driver._del_vol_mapping_frm_cache.call_count, 1) self.assertEqual(info['driver_volume_type'], 'iscsi') properties = info.get('data') self.assertIsNotNone(properties, 'Target portal is none') self.driver.terminate_connection(self.volume, self.connector) self.driver.delete_volume(self.volume) def test_cloned_volume_destroy(self): self.driver.create_volume(self.volume) self.driver.create_cloned_volume(self.snapshot, self.volume) self.driver.delete_volume(self.volume) def test_map_by_creating_host(self): self.driver.create_volume(self.volume) connector_new = {'initiator': 'iqn.1993-08.org.debian:01:1001'} connection_info = self.driver.initialize_connection(self.volume, connector_new) self.assertEqual(connection_info['driver_volume_type'], 'iscsi') properties = connection_info.get('data') self.assertIsNotNone(properties, 'Target portal is none') def test_vol_stats(self): self.driver.get_volume_stats(refresh=True) def test_create_vol_snapshot_diff_size_resize(self): self.driver.create_volume(self.volume) self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot( self.volume_clone, self.snapshot) self.driver.delete_snapshot(self.snapshot) self.driver.delete_volume(self.volume) def test_create_vol_snapshot_diff_size_subclone(self): self.driver.create_volume(self.volume) self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot( self.volume_clone_large, self.snapshot) self.driver.delete_snapshot(self.snapshot) self.driver.delete_volume(self.volume) def test_get_host_right_type(self): self.driver._get_host_with_port = mock.Mock( return_value={'hostTypeIndex': 2, 'name': 'test'}) self.driver._get_host_type_definition = mock.Mock( return_value={'index': 2, 'name': 'LnxALUA'}) host = self.driver._get_or_create_host('port', 'LinuxALUA') self.assertEqual(host, {'hostTypeIndex': 2, 'name': 'test'}) self.driver._get_host_with_port.assert_called_once_with('port') self.driver._get_host_type_definition.assert_called_once_with( 'LinuxALUA') def test_get_host_update_type(self): self.driver._get_host_with_port = mock.Mock( return_value={'hostTypeIndex': 2, 'hostRef': 'test'}) self.driver._get_host_type_definition = mock.Mock( return_value={'index': 3, 'name': 'LnxALUA'}) self.driver._client.update_host_type = mock.Mock( return_value={'hostTypeIndex': 3, 'hostRef': 'test'}) host = self.driver._get_or_create_host('port', 'LinuxALUA') self.assertEqual(host, {'hostTypeIndex': 3, 'hostRef': 'test'}) self.driver._get_host_with_port.assert_called_once_with('port') self.driver._get_host_type_definition.assert_called_once_with( 'LinuxALUA') self.assertEqual(self.driver._client.update_host_type.call_count, 1) def test_get_host_update_type_failed(self): self.driver._get_host_with_port = mock.Mock( return_value={'hostTypeIndex': 2, 'hostRef': 'test', 'label': 'test'}) self.driver._get_host_type_definition = mock.Mock( return_value={'index': 3, 'name': 'LnxALUA'}) self.driver._client.update_host_type = mock.Mock( side_effect=exception.NetAppDriverException) host = self.driver._get_or_create_host('port', 'LinuxALUA') self.assertEqual(host, {'hostTypeIndex': 2, 'hostRef': 'test', 'label': 'test'}) self.driver._get_host_with_port.assert_called_once_with('port') self.driver._get_host_type_definition.assert_called_once_with( 'LinuxALUA') self.assertEqual(self.driver._client.update_host_type.call_count, 1) def test_get_host_not_found(self): self.driver._get_host_with_port = mock.Mock( side_effect=exception.NotFound) self.driver._create_host = mock.Mock() self.driver._get_or_create_host('port', 'LnxALUA') self.driver._get_host_with_port.assert_called_once_with('port') self.driver._create_host.assert_called_once_with('port', 'LnxALUA') def test_setup_error_unsupported_host_type(self): configuration = self._set_config(create_configuration()) configuration.netapp_eseries_host_type = 'garbage' driver = common.NetAppDriver(configuration=configuration) self.assertRaises(exception.NetAppDriverException, driver.check_for_setup_error) def test_setup_good_controller_ip(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '127.0.0.1' driver = common.NetAppDriver(configuration=configuration) driver._check_mode_get_or_register_storage_system def test_setup_good_controller_ips(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '127.0.0.2,127.0.0.1' driver = common.NetAppDriver(configuration=configuration) driver._check_mode_get_or_register_storage_system def test_setup_missing_controller_ip(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = None driver = common.NetAppDriver(configuration=configuration) self.assertRaises(exception.InvalidInput, driver.do_setup, context='context') def test_setup_error_invalid_controller_ip(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '987.65.43.21' driver = common.NetAppDriver(configuration=configuration) self.assertRaises(exception.NoValidHost, driver._check_mode_get_or_register_storage_system) def test_setup_error_invalid_first_controller_ip(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '987.65.43.21,127.0.0.1' driver = common.NetAppDriver(configuration=configuration) self.assertRaises(exception.NoValidHost, driver._check_mode_get_or_register_storage_system) def test_setup_error_invalid_second_controller_ip(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '127.0.0.1,987.65.43.21' driver = common.NetAppDriver(configuration=configuration) self.assertRaises(exception.NoValidHost, driver._check_mode_get_or_register_storage_system) def test_setup_error_invalid_both_controller_ips(self): configuration = self._set_config(create_configuration()) configuration.netapp_controller_ips = '564.124.1231.1,987.65.43.21' driver = common.NetAppDriver(configuration=configuration) self.assertRaises(exception.NoValidHost, driver._check_mode_get_or_register_storage_system) cinder-2014.1.5/cinder/tests/integrated/0000775000567000056700000000000012540643114021104 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/integrated/test_extensions.py0000664000567000056700000000266012540642606024725 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. from oslo.config import cfg from cinder.openstack.common import log as logging from cinder.tests.integrated import integrated_helpers CONF = cfg.CONF LOG = logging.getLogger(__name__) class ExtensionsTest(integrated_helpers._IntegratedTestBase): def _get_flags(self): f = super(ExtensionsTest, self)._get_flags() f['osapi_volume_extension'] = CONF.osapi_volume_extension[:] f['osapi_volume_extension'].append( 'cinder.tests.api.extensions.foxinsocks.Foxinsocks') return f def test_get_foxnsocks(self): """Simple check that fox-n-socks works.""" response = self.api.api_request('/foxnsocks') foxnsocks = response.text LOG.debug("foxnsocks: %s" % foxnsocks) self.assertEqual('Try to say this Mr. Knox, sir...', foxnsocks) cinder-2014.1.5/cinder/tests/integrated/integrated_helpers.py0000664000567000056700000001041412540642606025333 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """ Provides common functionality for integrated unit tests """ import random import string import uuid import fixtures from cinder.openstack.common import log as logging from cinder import service from cinder import test # For the flags from cinder.tests.integrated.api import client LOG = logging.getLogger(__name__) def generate_random_alphanumeric(length): """Creates a random alphanumeric string of specified length.""" return ''.join(random.choice(string.ascii_uppercase + string.digits) for _x in range(length)) def generate_random_numeric(length): """Creates a random numeric string of specified length.""" return ''.join(random.choice(string.digits) for _x in range(length)) def generate_new_element(items, prefix, numeric=False): """Creates a random string with prefix, that is not in 'items' list.""" while True: if numeric: candidate = prefix + generate_random_numeric(8) else: candidate = prefix + generate_random_alphanumeric(8) if candidate not in items: return candidate LOG.debug("Random collision on %s" % candidate) class _IntegratedTestBase(test.TestCase): def setUp(self): super(_IntegratedTestBase, self).setUp() f = self._get_flags() self.flags(**f) self.flags(verbose=True) for var in ('http_proxy', 'HTTP_PROXY'): self.useFixture(fixtures.EnvironmentVariable(var)) # set up services self.volume = self.start_service('volume') self.scheduler = self.start_service('scheduler') self._start_api_service() self.api = client.TestOpenStackClient('fake', 'fake', self.auth_url) def tearDown(self): self.osapi.stop() super(_IntegratedTestBase, self).tearDown() def _start_api_service(self): self.osapi = service.WSGIService("osapi_volume") self.osapi.start() # FIXME(ja): this is not the auth url - this is the service url # FIXME(ja): this needs fixed in nova as well self.auth_url = 'http://%s:%s/v1' % (self.osapi.host, self.osapi.port) LOG.warn(self.auth_url) def _get_flags(self): """An opportunity to setup flags, before the services are started.""" f = {} # Ensure tests only listen on localhost f['osapi_volume_listen'] = '127.0.0.1' # Auto-assign ports to allow concurrent tests f['osapi_volume_listen_port'] = 0 # Use simple scheduler to avoid complications - we test schedulers # separately f['scheduler_driver'] = 'cinder.scheduler.simple.SimpleScheduler' return f def get_unused_server_name(self): servers = self.api.get_servers() server_names = [server['name'] for server in servers] return generate_new_element(server_names, 'server') def get_invalid_image(self): return str(uuid.uuid4()) def _build_minimal_create_server_request(self): server = {} image = self.api.get_images()[0] LOG.debug("Image: %s" % image) if 'imageRef' in image: image_href = image['imageRef'] else: image_href = image['id'] image_href = 'http://fake.server/%s' % image_href # We now have a valid imageId server['imageRef'] = image_href # Set a valid flavorId flavor = self.api.get_flavors()[0] LOG.debug("Using flavor: %s" % flavor) server['flavorRef'] = 'http://fake.server/%s' % flavor['id'] # Set a valid server name server_name = self.get_unused_server_name() server['name'] = server_name return server cinder-2014.1.5/cinder/tests/integrated/test_volumes.py0000664000567000056700000001626012540642606024221 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. import testtools import time from cinder.openstack.common import log as logging from cinder import service from cinder.tests import fake_driver from cinder.tests.integrated.api import client from cinder.tests.integrated import integrated_helpers LOG = logging.getLogger(__name__) class VolumesTest(integrated_helpers._IntegratedTestBase): def setUp(self): super(VolumesTest, self).setUp() fake_driver.LoggingVolumeDriver.clear_logs() def _start_api_service(self): self.osapi = service.WSGIService("osapi_volume") self.osapi.start() self.auth_url = 'http://%s:%s/v1' % (self.osapi.host, self.osapi.port) LOG.warn(self.auth_url) def _get_flags(self): f = super(VolumesTest, self)._get_flags() f['volume_driver'] = 'cinder.tests.fake_driver.LoggingVolumeDriver' return f def test_get_volumes_summary(self): """Simple check that listing volumes works.""" volumes = self.api.get_volumes(False) for volume in volumes: LOG.debug("volume: %s" % volume) def test_get_volumes(self): """Simple check that listing volumes works.""" volumes = self.api.get_volumes() for volume in volumes: LOG.debug("volume: %s" % volume) def _poll_while(self, volume_id, continue_states, max_retries=5): """Poll (briefly) while the state is in continue_states.""" retries = 0 while True: try: found_volume = self.api.get_volume(volume_id) except client.OpenStackApiNotFoundException: found_volume = None LOG.debug("Got 404, proceeding") break LOG.debug("Found %s" % found_volume) self.assertEqual(volume_id, found_volume['id']) if found_volume['status'] not in continue_states: break time.sleep(1) retries = retries + 1 if retries > max_retries: break return found_volume @testtools.skip('This test is failing: bug 1173266') def test_create_and_delete_volume(self): """Creates and deletes a volume.""" # Create volume created_volume = self.api.post_volume({'volume': {'size': 1}}) LOG.debug("created_volume: %s" % created_volume) self.assertTrue(created_volume['id']) created_volume_id = created_volume['id'] # Check it's there found_volume = self.api.get_volume(created_volume_id) self.assertEqual(created_volume_id, found_volume['id']) # It should also be in the all-volume list volumes = self.api.get_volumes() volume_names = [volume['id'] for volume in volumes] self.assertIn(created_volume_id, volume_names) # Wait (briefly) for creation. Delay is due to the 'message queue' found_volume = self._poll_while(created_volume_id, ['creating']) # It should be available... self.assertEqual('available', found_volume['status']) # Delete the volume self.api.delete_volume(created_volume_id) # Wait (briefly) for deletion. Delay is due to the 'message queue' found_volume = self._poll_while(created_volume_id, ['deleting']) # Should be gone self.assertFalse(found_volume) LOG.debug("Logs: %s" % fake_driver.LoggingVolumeDriver.all_logs()) create_actions = fake_driver.LoggingVolumeDriver.logs_like( 'create_volume', id=created_volume_id) LOG.debug("Create_Actions: %s" % create_actions) self.assertEqual(1, len(create_actions)) create_action = create_actions[0] self.assertEqual(create_action['id'], created_volume_id) self.assertEqual(create_action['availability_zone'], 'nova') self.assertEqual(create_action['size'], 1) export_actions = fake_driver.LoggingVolumeDriver.logs_like( 'create_export', id=created_volume_id) self.assertEqual(1, len(export_actions)) export_action = export_actions[0] self.assertEqual(export_action['id'], created_volume_id) self.assertEqual(export_action['availability_zone'], 'nova') delete_actions = fake_driver.LoggingVolumeDriver.logs_like( 'delete_volume', id=created_volume_id) self.assertEqual(1, len(delete_actions)) delete_action = export_actions[0] self.assertEqual(delete_action['id'], created_volume_id) def test_create_volume_with_metadata(self): """Creates a volume with metadata.""" # Create volume metadata = {'key1': 'value1', 'key2': 'value2'} created_volume = self.api.post_volume( {'volume': {'size': 1, 'metadata': metadata}}) LOG.debug("created_volume: %s" % created_volume) self.assertTrue(created_volume['id']) created_volume_id = created_volume['id'] # Check it's there and metadata present found_volume = self.api.get_volume(created_volume_id) self.assertEqual(created_volume_id, found_volume['id']) self.assertEqual(metadata, found_volume['metadata']) def test_create_volume_in_availability_zone(self): """Creates a volume in availability_zone.""" # Create volume availability_zone = 'nova' created_volume = self.api.post_volume( {'volume': {'size': 1, 'availability_zone': availability_zone}}) LOG.debug("created_volume: %s" % created_volume) self.assertTrue(created_volume['id']) created_volume_id = created_volume['id'] # Check it's there and availability zone present found_volume = self.api.get_volume(created_volume_id) self.assertEqual(created_volume_id, found_volume['id']) self.assertEqual(availability_zone, found_volume['availability_zone']) def test_create_and_update_volume(self): # Create vol1 created_volume = self.api.post_volume({'volume': { 'size': 1, 'display_name': 'vol1'}}) self.assertEqual(created_volume['display_name'], 'vol1') created_volume_id = created_volume['id'] # update volume body = {'volume': {'display_name': 'vol-one'}} updated_volume = self.api.put_volume(created_volume_id, body) self.assertEqual(updated_volume['display_name'], 'vol-one') # check for update found_volume = self.api.get_volume(created_volume_id) self.assertEqual(created_volume_id, found_volume['id']) self.assertEqual(found_volume['display_name'], 'vol-one') cinder-2014.1.5/cinder/tests/integrated/api/0000775000567000056700000000000012540643114021655 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/integrated/api/__init__.py0000664000567000056700000000133512540642606023775 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Justin Santa Barbara # # 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. """ :mod:`api` -- OpenStack API client, for testing rather than production ================================= """ cinder-2014.1.5/cinder/tests/integrated/api/client.py0000664000567000056700000001734012540642606023517 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Justin Santa Barbara # # 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. import netaddr import requests import six.moves.urllib.parse as urlparse from cinder.openstack.common import jsonutils from cinder.openstack.common import log as logging LOG = logging.getLogger(__name__) class OpenStackApiException(Exception): def __init__(self, message=None, response=None): self.response = response if not message: message = 'Unspecified error' if response: message = _('%(message)s\nStatus Code: %(_status)s\n' 'Body: %(_body)s') % {'_status': response.status_code, '_body': response.text} super(OpenStackApiException, self).__init__(message) class OpenStackApiAuthenticationException(OpenStackApiException): def __init__(self, response=None, message=None): if not message: message = _("Authentication error") super(OpenStackApiAuthenticationException, self).__init__(message, response) class OpenStackApiAuthorizationException(OpenStackApiException): def __init__(self, response=None, message=None): if not message: message = _("Authorization error") super(OpenStackApiAuthorizationException, self).__init__(message, response) class OpenStackApiNotFoundException(OpenStackApiException): def __init__(self, response=None, message=None): if not message: message = _("Item not found") super(OpenStackApiNotFoundException, self).__init__(message, response) class TestOpenStackClient(object): """Simple OpenStack API Client. This is a really basic OpenStack API client that is under our control, so we can make changes / insert hooks for testing """ def __init__(self, auth_user, auth_key, auth_uri): super(TestOpenStackClient, self).__init__() self.auth_result = None self.auth_user = auth_user self.auth_key = auth_key self.auth_uri = auth_uri # default project_id self.project_id = 'openstack' def request(self, url, method='GET', body=None, headers=None, ssl_verify=True, stream=False): _headers = {'Content-Type': 'application/json'} _headers.update(headers or {}) parsed_url = urlparse.urlparse(url) port = parsed_url.port hostname = parsed_url.hostname scheme = parsed_url.scheme if netaddr.valid_ipv6(hostname): hostname = "[%s]" % hostname relative_url = parsed_url.path if parsed_url.query: relative_url = relative_url + "?" + parsed_url.query LOG.info(_("Doing %(method)s on %(relative_url)s"), {'method': method, 'relative_url': relative_url}) if body: LOG.info(_("Body: %s") % body) if port: _url = "%s://%s:%d%s" % (scheme, hostname, int(port), relative_url) else: _url = "%s://%s%s" % (scheme, hostname, relative_url) response = requests.request(method, _url, data=body, headers=_headers, verify=ssl_verify, stream=stream) return response def _authenticate(self): if self.auth_result: return self.auth_result auth_uri = self.auth_uri headers = {'X-Auth-User': self.auth_user, 'X-Auth-Key': self.auth_key, 'X-Auth-Project-Id': self.project_id} response = self.request(auth_uri, headers=headers) http_status = response.status_code LOG.debug(_("%(auth_uri)s => code %(http_status)s"), {'auth_uri': auth_uri, 'http_status': http_status}) if http_status == 401: raise OpenStackApiAuthenticationException(response=response) self.auth_result = response.headers return self.auth_result def api_request(self, relative_uri, check_response_status=None, **kwargs): auth_result = self._authenticate() # NOTE(justinsb): httplib 'helpfully' converts headers to lower case base_uri = auth_result['x-server-management-url'] full_uri = '%s/%s' % (base_uri, relative_uri) headers = kwargs.setdefault('headers', {}) headers['X-Auth-Token'] = auth_result['x-auth-token'] response = self.request(full_uri, **kwargs) http_status = response.status_code LOG.debug(_("%(relative_uri)s => code %(http_status)s"), {'relative_uri': relative_uri, 'http_status': http_status}) if check_response_status: if http_status not in check_response_status: if http_status == 404: raise OpenStackApiNotFoundException(response=response) elif http_status == 401: raise OpenStackApiAuthorizationException(response=response) else: raise OpenStackApiException( message=_("Unexpected status code"), response=response) return response def _decode_json(self, response): body = response.text LOG.debug(_("Decoding JSON: %s") % (body)) if body: return jsonutils.loads(body) else: return "" def api_get(self, relative_uri, **kwargs): kwargs.setdefault('check_response_status', [200]) response = self.api_request(relative_uri, **kwargs) return self._decode_json(response) def api_post(self, relative_uri, body, **kwargs): kwargs['method'] = 'POST' if body: headers = kwargs.setdefault('headers', {}) headers['Content-Type'] = 'application/json' kwargs['body'] = jsonutils.dumps(body) kwargs.setdefault('check_response_status', [200, 202]) response = self.api_request(relative_uri, **kwargs) return self._decode_json(response) def api_put(self, relative_uri, body, **kwargs): kwargs['method'] = 'PUT' if body: headers = kwargs.setdefault('headers', {}) headers['Content-Type'] = 'application/json' kwargs['body'] = jsonutils.dumps(body) kwargs.setdefault('check_response_status', [200, 202, 204]) response = self.api_request(relative_uri, **kwargs) return self._decode_json(response) def api_delete(self, relative_uri, **kwargs): kwargs['method'] = 'DELETE' kwargs.setdefault('check_response_status', [200, 202, 204]) return self.api_request(relative_uri, **kwargs) def get_volume(self, volume_id): return self.api_get('/volumes/%s' % volume_id)['volume'] def get_volumes(self, detail=True): rel_url = '/volumes/detail' if detail else '/volumes' return self.api_get(rel_url)['volumes'] def post_volume(self, volume): return self.api_post('/volumes', volume)['volume'] def delete_volume(self, volume_id): return self.api_delete('/volumes/%s' % volume_id) def put_volume(self, volume_id, volume): return self.api_put('/volumes/%s' % volume_id, volume)['volume'] cinder-2014.1.5/cinder/tests/integrated/__init__.py0000664000567000056700000000151012540642606023217 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Justin Santa Barbara # # 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. """ :mod:`integrated` -- Tests whole systems, using mock services where needed ================================= """ # NOTE(vish): this forces the fixtures from tests/__init.py:setup() to work from cinder.tests import * cinder-2014.1.5/cinder/tests/integrated/test_xml.py0000664000567000056700000000342012540642606023321 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. from lxml import etree from cinder.api import common from cinder.openstack.common import log as logging from cinder.tests.integrated import integrated_helpers LOG = logging.getLogger(__name__) class XmlTests(integrated_helpers._IntegratedTestBase): """"Some basic XML sanity checks.""" # FIXME(ja): does cinder need limits? # def test_namespace_limits(self): # headers = {} # headers['Accept'] = 'application/xml' # response = self.api.api_request('/limits', headers=headers) # data = response.read() # LOG.debug("data: %s" % data) # root = etree.XML(data) # self.assertEqual(root.nsmap.get(None), xmlutil.XMLNS_COMMON_V10) def test_namespace_volumes(self): """/servers should have v1.1 namespace (has changed in 1.1).""" headers = {} headers['Accept'] = 'application/xml' response = self.api.api_request('/volumes', headers=headers, stream=True) data = response.raw LOG.warn("data: %s" % data) root = etree.parse(data).getroot() self.assertEqual(root.nsmap.get(None), common.XML_NS_V1) cinder-2014.1.5/cinder/tests/integrated/test_login.py0000664000567000056700000000204312540642606023631 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. from cinder.openstack.common import log as logging from cinder.tests.integrated import integrated_helpers LOG = logging.getLogger(__name__) class LoginTest(integrated_helpers._IntegratedTestBase): def test_login(self): """Simple check - we list volumes - so we know we're logged in.""" volumes = self.api.get_volumes() for volume in volumes: LOG.debug(_("volume: %s") % volume) cinder-2014.1.5/cinder/tests/test_huawei_hvs.py0000664000567000056700000010675112540642606022550 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. """ Unit Tests for Huawei HVS volume drivers. """ import json import mox import os import shutil import tempfile import time from xml.dom.minidom import Document from cinder import exception from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.huawei import huawei_hvs from cinder.volume.drivers.huawei import rest_common test_volume = {'name': 'volume-21ec7341-9256-497b-97d9-ef48edcf0635', 'size': 2, 'volume_name': 'vol1', 'id': '21ec7341-9256-497b-97d9-ef48edcf0635', 'volume_id': '21ec7341-9256-497b-97d9-ef48edcf0635', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'test volume', 'volume_type_id': None} test_snap = {'name': 'volume-21ec7341-9256-497b-97d9-ef48edcf0635', 'size': 1, 'volume_name': 'vol1', 'id': '21ec7341-9256-497b-97d9-ef48edcf0635', 'volume_id': '21ec7341-9256-497b-97d9-ef48edcf0635', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'test volume', 'volume_type_id': None} FakeConnector = {'initiator': 'iqn.1993-08.debian:01:ec2bff7ac3a3', 'wwpns': ['10000090fa0d6754'], 'wwnns': ['10000090fa0d6755'], 'host': 'fakehost', 'ip': '10.10.0.1'} volume_size = 3 def Fake_sleep(time): pass class FakeHVSCommon(rest_common.HVSCommon): def __init__(self, configuration): rest_common.HVSCommon.__init__(self, configuration) self.test_normal = True self.other_flag = True self.deviceid = None self.lun_id = None self.snapshot_id = None self.luncopy_id = None self.termin_flag = False def _parse_volume_type(self, volume): self._get_lun_conf_params() poolinfo = self._find_pool_info() volume_size = self._get_volume_size(poolinfo, volume) params = {'LUNType': 0, 'WriteType': '1', 'PrefetchType': '3', 'qos_level': 'Qos-high', 'StripUnitSize': '64', 'PrefetchValue': '0', 'PrefetchTimes': '0', 'qos': 'OpenStack_Qos_High', 'MirrorSwitch': '1', 'tier': 'Tier_high'} params['volume_size'] = volume_size params['pool_id'] = poolinfo['ID'] return params def _change_file_mode(self, filepath): # NOTE(flaper87): Changing file permissions is # not needed since we're using a tempfile created # within this test. pass def call(self, url=False, data=None, method=None): url = url.replace('http://100.115.10.69:8082/deviceManager/rest', '') url = url.replace('/210235G7J20000000000/', '') data = None if self.test_normal: if url == "/xx/sessions": data = """{"error":{"code":0}, "data":{"username":"admin", "deviceid":"210235G7J20000000000" }}""" if url == "sessions": data = """{"error":{"code":0}, "data":{"ID":11}}""" if url == "storagepool": data = """{"error":{"code":0}, "data":[{"ID":"0", "NAME":"OpenStack_Pool", "USERFREECAPACITY":"985661440", "USERTOTALCAPACITY":"985661440" }]}""" if url == "lun": if method is None: data = """{"error":{"code":0}, "data":{"ID":"1", "NAME":"5mFHcBv4RkCcD+JyrWc0SA"}}""" self.lun_id = "0" if method == 'GET': data = """{"error":{"code":0}, "data":[{"ID":"1", "NAME":"IexzQZJWSXuX2e9I7c8GNQ"}]}""" if url == "lungroup": if method is None: data = """{"error":{"code":0}, "data":{"NAME":"5mFHcBv4RkCcD+JyrWc0SA", "DESCRIPTION":"5mFHcBv4RkCcD", "ID":"11", "TYPE":256}}""" if method == "GET": data = """{"error":{"code":0}, "data":[{"NAME":"IexzQZJWSXuX2e9I7c8GNQ", "DESCRIPTION":"5mFHcBv4RkCcD", "ID":"11", "TYPE":256}]}""" if method == "DELETE": data = """{"error":{"code":0}, "data":[{"NAME":"IexzQZJWSXuX2e9I7c8GNQ", "DESCRIPTION":"5mFHcBv4RkCcD+JyrWc0SA", "ID":"11", "TYPE":256}]}""" if url == "lungroup/associate": data = """{"error":{"code":0}, "data":{"NAME":"5mFHcBv4RkCcD+JyrWc0SA", "DESCRIPTION":"5mFHcBv4RkCcD+JyrWc0SA", "ID":"11", "TYPE":256}}""" if url == "snapshot": if method is None: data = """{"error":{"code":0}, "data":{"ID":11}}""" self.snapshot_id = "3" if method == "GET": data = """{"error":{"code":0}, "data":[{"ID":11,"NAME":"SDFAJSDFLKJ"}, {"ID":12,"NAME":"SDFAJSDFLKJ"}]}""" if url == "snapshot/activate": data = """{"error":{"code":0}}""" if url == ("lungroup/associate?ID=11" "&ASSOCIATEOBJTYPE=11&ASSOCIATEOBJID=1"): data = """{"error":{"code":0}}""" if url == "LUNGroup/11": data = """{"error":{"code":0}}""" if url == 'lun/1': data = """{"error":{"code":0}}""" self.lun_id = None if url == 'snapshot': if method == "GET": data = """{"error":{"code":0}, "data":[{"PARENTTYPE":11, "NAME":"IexzQZJWSXuX2e9I7c8GNQ", "WWN":"60022a11000a2a3907ce96cb00000b", "ID":"11", "CONSUMEDCAPACITY":"0"}]}""" if url == "snapshot/stop": data = """{"error":{"code":0}}""" if url == "snapshot/11": data = """{"error":{"code":0}}""" self.snapshot_id = None if url == "luncopy": data = """{"error":{"code":0}, "data":{"COPYSTOPTIME":"-1", "HEALTHSTATUS":"1", "NAME":"w1PSNvu6RumcZMmSh4/l+Q==", "RUNNINGSTATUS":"36", "DESCRIPTION":"w1PSNvu6RumcZMmSh4/l+Q==", "ID":"0","LUNCOPYTYPE":"1", "COPYPROGRESS":"0","COPYSPEED":"2", "TYPE":219,"COPYSTARTTIME":"-1"}}""" self.luncopy_id = "7" if url == "LUNCOPY/start": data = """{"error":{"code":0}}""" if url == "LUNCOPY?range=[0-100000]": data = """{"error":{"code":0}, "data":[{"COPYSTOPTIME":"1372209335", "HEALTHSTATUS":"1", "NAME":"w1PSNvu6RumcZMmSh4/l+Q==", "RUNNINGSTATUS":"40", "DESCRIPTION":"w1PSNvu6RumcZMmSh4/l+Q==", "ID":"0","LUNCOPYTYPE":"1", "COPYPROGRESS":"100", "COPYSPEED":"2", "TYPE":219, "COPYSTARTTIME":"1372209329"}]}""" if url == "LUNCOPY/0": data = '{"error":{"code":0}}' if url == "eth_port": data = """{"error":{"code":0}, "data":[{"PARENTTYPE":209, "MACADDRESS":"00:22:a1:0a:79:57", "ETHNEGOTIATE":"-1","ERRORPACKETS":"0", "IPV4ADDR":"100.115.10.68", "IPV6GATEWAY":"","IPV6MASK":"0", "OVERFLOWEDPACKETS":"0","ISCSINAME":"P0", "HEALTHSTATUS":"1","ETHDUPLEX":"2", "ID":"16909568","LOSTPACKETS":"0", "TYPE":213,"NAME":"P0","INIORTGT":"4", "RUNNINGSTATUS":"10","IPV4GATEWAY":"", "BONDNAME":"","STARTTIME":"1371684218", "SPEED":"1000","ISCSITCPPORT":"0", "IPV4MASK":"255.255.0.0","IPV6ADDR":"", "LOGICTYPE":"0","LOCATION":"ENG0.B5.P0", "MTU":"1500","PARENTID":"1.5"}]}""" if url == "iscsidevicename": data = """{"error":{"code":0}, "data":[{"CMO_ISCSI_DEVICE_NAME": "iqn.2006-08.com.huawei:oceanstor:21000022a10a2a39:iscsinametest"}]}""" if url == "hostgroup": if method is None: data = """{"error":{"code":0}, "data":{"NAME":"ubuntuc", "DESCRIPTION":"", "ID":"0", "TYPE":14}}""" if method == "GET": data = """{"error":{"code":0}, "data":[{"NAME":"ubuntuc", "DESCRIPTION":"", "ID":"0", "TYPE":14}]}""" if url == "host": if method is None: data = """{"error":{"code":0}, "data":{"PARENTTYPE":245, "NAME":"Default Host", "DESCRIPTION":"", "RUNNINGSTATUS":"1", "IP":"","PARENTNAME":"0", "OPERATIONSYSTEM":"1","LOCATION":"", "HEALTHSTATUS":"1","MODEL":"", "ID":"0","PARENTID":"0", "NETWORKNAME":"","TYPE":21}} """ if method == "GET": data = """{"error":{"code":0}, "data":[{"PARENTTYPE":245, "NAME":"ubuntuc", "DESCRIPTION":"", "RUNNINGSTATUS":"1", "IP":"","PARENTNAME":"", "OPERATIONSYSTEM":"0", "LOCATION":"", "HEALTHSTATUS":"1", "MODEL":"", "ID":"1","PARENTID":"", "NETWORKNAME":"","TYPE":21}, {"PARENTTYPE":245, "NAME":"ubuntu", "DESCRIPTION":"", "RUNNINGSTATUS":"1", "IP":"","PARENTNAME":"", "OPERATIONSYSTEM":"0", "LOCATION":"", "HEALTHSTATUS":"1", "MODEL":"","ID":"2", "PARENTID":"", "NETWORKNAME":"","TYPE":21}]} """ if url == "host/associate": if method is None: data = """{"error":{"code":0}}""" if method == "GET": data = """{"error":{"code":0}}""" if url == "iscsi_initiator/iqn.1993-08.debian:01:ec2bff7ac3a3": data = """{"error":{"code":0}, "data":{"ID":"iqn.1993-08.win:01:ec2bff7ac3a3", "NAME":"iqn.1993-08.win:01:ec2bff7ac3a3", "ISFREE":"True"}}""" if url == "iscsi_initiator/": data = """{"error":{"code":0}}""" if url == "iscsi_initiator": data = """{"error":{"code":0}}""" if url == "mappingview": self.termin_flag = True if method is None: data = """{"error":{"code":0}, "data":{"WORKMODE":"255", "HEALTHSTATUS":"1", "NAME":"mOWtSXnaQKi3hpB3tdFRIQ", "RUNNINGSTATUS":"27","DESCRIPTION":"", "ENABLEINBANDCOMMAND":"true", "ID":"1","INBANDLUNWWN":"", "TYPE":245}}""" if method == "GET": if self.other_flag: data = """{"error":{"code":0}, "data":[{"WORKMODE":"255", "HEALTHSTATUS":"1", "NAME":"mOWtSXnaQKi3hpB3tdFRIQ", "RUNNINGSTATUS":"27", "DESCRIPTION":"", "ENABLEINBANDCOMMAND": "true","ID":"1", "INBANDLUNWWN":"", "TYPE":245}, {"WORKMODE":"255", "HEALTHSTATUS":"1", "NAME":"YheUoRwbSX2BxN767nvLSw", "RUNNINGSTATUS":"27", "DESCRIPTION":"", "ENABLEINBANDCOMMAND":"true", "ID":"2", "INBANDLUNWWN":"", "TYPE":245}]}""" else: data = """{"error":{"code":0}, "data":[{"WORKMODE":"255", "HEALTHSTATUS":"1", "NAME":"IexzQZJWSXuX2e9I7c8GNQ", "RUNNINGSTATUS":"27", "DESCRIPTION":"", "ENABLEINBANDCOMMAND":"true", "ID":"1", "INBANDLUNWWN":"", "TYPE":245}, {"WORKMODE":"255", "HEALTHSTATUS":"1", "NAME":"YheUoRwbSX2BxN767nvLSw", "RUNNINGSTATUS":"27", "DESCRIPTION":"", "ENABLEINBANDCOMMAND":"true", "ID":"2", "INBANDLUNWWN":"", "TYPE":245}]}""" if url == "MAPPINGVIEW/CREATE_ASSOCIATE": data = """{"error":{"code":0}}""" if url == ("lun/associate?TYPE=11&" "ASSOCIATEOBJTYPE=21&ASSOCIATEOBJID=0"): data = """{"error":{"code":0}}""" if url == "fc_initiator?ISFREE=true&range=[0-1000]": data = """{"error":{"code":0}, "data":[{"HEALTHSTATUS":"1", "NAME":"", "MULTIPATHTYPE":"1", "ISFREE":"true", "RUNNINGSTATUS":"27", "ID":"10000090fa0d6754", "OPERATIONSYSTEM":"255", "TYPE":223}, {"HEALTHSTATUS":"1", "NAME":"", "MULTIPATHTYPE":"1", "ISFREE":"true", "RUNNINGSTATUS":"27", "ID":"10000090fa0d6755", "OPERATIONSYSTEM":"255", "TYPE":223}]}""" if url == "host_link?INITIATOR_TYPE=223&INITIATOR_PORT_WWN="\ "10000090fa0d6754": data = """{"error":{"code":0}, "data":[{"PARENTTYPE":21, "TARGET_ID":"0000000000000000", "INITIATOR_NODE_WWN":"20000090fa0d6754", "INITIATOR_TYPE":"223", "RUNNINGSTATUS":"27", "PARENTNAME":"ubuntuc", "INITIATOR_ID":"10000090fa0d6754", "TARGET_PORT_WWN":"24000022a10a2a39", "HEALTHSTATUS":"1", "INITIATOR_PORT_WWN":"10000090fa0d6754", "ID":"010000090fa0d675-0000000000110400", "TARGET_NODE_WWN":"21000022a10a2a39", "PARENTID":"1","CTRL_ID":"0", "TYPE":255,"TARGET_TYPE":"212"}]}""" if url == ("mappingview/associate?TYPE=245&" "ASSOCIATEOBJTYPE=14&ASSOCIATEOBJID=0"): data = """{"error":{"code":0}, "data":[{"ID":11,"NAME":"test"}]}""" if url == ("mappingview/associate?TYPE=245&" "ASSOCIATEOBJTYPE=256&ASSOCIATEOBJID=11"): data = """{"error":{"code":0}, "data":[{"ID":11,"NAME":"test"}]}""" if url == "fc_initiator/10000090fa0d6754": data = """{"error":{"code":0}}""" if url == "mappingview/REMOVE_ASSOCIATE": data = """{"error":{"code":0}}""" self.termin_flag = True if url == "mappingview/1": data = """{"error":{"code":0}}""" if url == "ioclass": data = """{"error":{"code":0}, "data":[{"NAME":"OpenStack_Qos_High", "ID":"0", "LUNLIST":"[]", "TYPE":230}]}""" if url == "ioclass/0": data = """{"error":{"code":0}}""" if url == "lun/expand": data = """{"error":{"code":0}}""" self.lun_id = '0' else: data = """{"error":{"code":31755596}}""" res_json = json.loads(data) return res_json class FakeHVSiSCSIStorage(huawei_hvs.HuaweiHVSISCSIDriver): def __init__(self, configuration): super(FakeHVSiSCSIStorage, self).__init__(configuration) self.configuration = configuration def do_setup(self, context): self.common = FakeHVSCommon(configuration=self.configuration) class FakeHVSFCStorage(huawei_hvs.HuaweiHVSFCDriver): def __init__(self, configuration): super(FakeHVSFCStorage, self).__init__(configuration) self.configuration = configuration def do_setup(self, context): self.common = FakeHVSCommon(configuration=self.configuration) class HVSRESTiSCSIDriverTestCase(test.TestCase): def setUp(self): super(HVSRESTiSCSIDriverTestCase, self).setUp() self.tmp_dir = tempfile.mkdtemp() self.fake_conf_file = self.tmp_dir + '/cinder_huawei_conf.xml' self.create_fake_conf_file() self.configuration = mox.MockObject(conf.Configuration) self.configuration.cinder_huawei_conf_file = self.fake_conf_file self.configuration.append_config_values(mox.IgnoreArg()) self.stubs.Set(time, 'sleep', Fake_sleep) #self.stubs.Set(greenthread, 'sleep', Fake_sleep) self.driver = FakeHVSiSCSIStorage(configuration=self.configuration) self.driver.do_setup({}) self.driver.common.test_normal = True def tearDown(self): if os.path.exists(self.fake_conf_file): os.remove(self.fake_conf_file) shutil.rmtree(self.tmp_dir) super(HVSRESTiSCSIDriverTestCase, self).tearDown() def test_log_in_success(self): deviceid = self.driver.common.login() self.assertIsNotNone(deviceid) def test_log_out_success(self): self.driver.common.login() self.driver.common.login_out() def test_create_volume_success(self): self.driver.common.login() self.driver.create_volume(test_volume) self.assertEqual(self.driver.common.lun_id, "0") def test_extend_volume_success(self): self.driver.common.login() self.driver.extend_volume(test_volume, volume_size) self.assertEqual(self.driver.common.lun_id, "0") def test_create_snapshot_success(self): self.driver.common.login() self.driver.create_snapshot(test_volume) self.assertEqual(self.driver.common.snapshot_id, "3") def test_delete_volume_success(self): self.driver.common.login() self.driver.delete_volume(test_volume) self.assertIsNone(self.driver.common.lun_id) def test_delete_snapshot_success(self): self.driver.common.login() self.driver.delete_snapshot(test_snap) self.assertIsNone(self.driver.common.snapshot_id) def test_colone_volume_success(self): self.driver.common.login() self.driver.create_cloned_volume(test_volume, test_volume) self.assertEqual(self.driver.common.luncopy_id, "7") def test_create_volume_from_snapshot_success(self): self.driver.common.login() self.driver.create_volume_from_snapshot(test_volume, test_volume) self.assertEqual(self.driver.common.luncopy_id, "7") def test_initialize_connection_success(self): self.driver.common.login() conn = self.driver.initialize_connection(test_volume, FakeConnector) self.assertEqual(conn['data']['target_lun'], 1) def test_terminate_connection_success(self): self.driver.common.login() self.driver.terminate_connection(test_volume, FakeConnector) self.assertEqual(self.driver.common.termin_flag, True) def test_initialize_connection_no_view_success(self): self.driver.common.login() self.driver.common.other_flag = False conn = self.driver.initialize_connection(test_volume, FakeConnector) self.assertEqual(conn['data']['target_lun'], 1) def test_terminate_connectio_no_view_success(self): self.driver.common.login() self.driver.common.other_flag = False self.driver.terminate_connection(test_volume, FakeConnector) self.assertEqual(self.driver.common.termin_flag, True) def test_get_volume_stats(self): self.driver.common.login() status = self.driver.get_volume_stats() self.assertIsNotNone(status['free_capacity_gb']) def test_create_snapshot_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.create_snapshot, test_volume) def test_create_volume_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.create_volume, test_volume) def test_delete_volume_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.delete_volume, test_volume) def test_delete_snapshot_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.delete_snapshot, test_volume) def test_initialize_connection_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.initialize_connection, test_volume, FakeConnector) def create_fake_conf_file(self): doc = Document() config = doc.createElement('config') doc.appendChild(config) storage = doc.createElement('Storage') config.appendChild(storage) product = doc.createElement('Product') product_text = doc.createTextNode('HVS') product.appendChild(product_text) storage.appendChild(product) protocol = doc.createElement('Protocol') protocol_text = doc.createTextNode('iSCSI') protocol.appendChild(protocol_text) storage.appendChild(protocol) username = doc.createElement('UserName') username_text = doc.createTextNode('admin') username.appendChild(username_text) storage.appendChild(username) userpassword = doc.createElement('UserPassword') userpassword_text = doc.createTextNode('Admin@storage') userpassword.appendChild(userpassword_text) storage.appendChild(userpassword) url = doc.createElement('HVSURL') url_text = doc.createTextNode('http://100.115.10.69:8082/' 'deviceManager/rest/') url.appendChild(url_text) storage.appendChild(url) lun = doc.createElement('LUN') config.appendChild(lun) storagepool = doc.createElement('StoragePool') pool_text = doc.createTextNode('OpenStack_Pool') storagepool.appendChild(pool_text) lun.appendChild(storagepool) luntype = doc.createElement('LUNType') luntype_text = doc.createTextNode('Thick') luntype.appendChild(luntype_text) lun.appendChild(luntype) writetype = doc.createElement('WriteType') writetype_text = doc.createTextNode('1') writetype.appendChild(writetype_text) lun.appendChild(writetype) prefetchType = doc.createElement('Prefetch') prefetchType.setAttribute('Type', '2') prefetchType.setAttribute('Value', '20') lun.appendChild(prefetchType) iscsi = doc.createElement('iSCSI') config.appendChild(iscsi) defaulttargetip = doc.createElement('DefaultTargetIP') defaulttargetip_text = doc.createTextNode('100.115.10.68') defaulttargetip.appendChild(defaulttargetip_text) iscsi.appendChild(defaulttargetip) initiator = doc.createElement('Initiator') initiator.setAttribute('Name', 'iqn.1993-08.debian:01:ec2bff7ac3a3') initiator.setAttribute('TargetIP', '100.115.10.68') iscsi.appendChild(initiator) newefile = open(self.fake_conf_file, 'w') newefile.write(doc.toprettyxml(indent='')) newefile.close() class HVSRESTFCDriverTestCase(test.TestCase): def setUp(self): super(HVSRESTFCDriverTestCase, self).setUp() self.tmp_dir = tempfile.mkdtemp() self.fake_conf_file = self.tmp_dir + '/cinder_huawei_conf.xml' self.create_fake_conf_file() self.configuration = mox.MockObject(conf.Configuration) self.configuration.cinder_huawei_conf_file = self.fake_conf_file self.configuration.append_config_values(mox.IgnoreArg()) self.stubs.Set(time, 'sleep', Fake_sleep) self.driver = FakeHVSFCStorage(configuration=self.configuration) self.driver.do_setup({}) self.driver.common.test_normal = True def tearDown(self): if os.path.exists(self.fake_conf_file): os.remove(self.fake_conf_file) shutil.rmtree(self.tmp_dir) super(HVSRESTFCDriverTestCase, self).tearDown() def test_log_in_Success(self): deviceid = self.driver.common.login() self.assertIsNotNone(deviceid) def test_create_volume_success(self): self.driver.common.login() self.driver.create_volume(test_volume) self.assertEqual(self.driver.common.lun_id, "0") def test_extend_volume_success(self): self.driver.common.login() self.driver.extend_volume(test_volume, volume_size) self.assertEqual(self.driver.common.lun_id, "0") def test_create_snapshot_success(self): self.driver.common.login() self.driver.create_snapshot(test_volume) self.assertEqual(self.driver.common.snapshot_id, "3") def test_delete_volume_success(self): self.driver.common.login() self.driver.delete_volume(test_volume) self.assertIsNone(self.driver.common.lun_id) def test_delete_snapshot_success(self): self.driver.common.login() self.driver.delete_snapshot(test_snap) self.assertIsNone(self.driver.common.snapshot_id) def test_colone_volume_success(self): self.driver.common.login() self.driver.create_cloned_volume(test_volume, test_volume) self.assertEqual(self.driver.common.luncopy_id, "7") def test_create_volume_from_snapshot_success(self): self.driver.common.login() self.driver.create_volume_from_snapshot(test_volume, test_volume) self.assertEqual(self.driver.common.luncopy_id, "7") def test_initialize_connection_success(self): self.driver.common.login() conn = self.driver.initialize_connection(test_volume, FakeConnector) self.assertEqual(conn['data']['target_lun'], 1) def test_terminate_connection_success(self): self.driver.common.login() self.driver.terminate_connection(test_volume, FakeConnector) self.assertEqual(self.driver.common.termin_flag, True) def test_initialize_connection_no_view_success(self): self.driver.common.login() self.driver.common.other_flag = False conn = self.driver.initialize_connection(test_volume, FakeConnector) self.assertEqual(conn['data']['target_lun'], 1) def test_terminate_connection_no_viewn_success(self): self.driver.common.login() self.driver.common.other_flag = False self.driver.terminate_connection(test_volume, FakeConnector) self.assertEqual(self.driver.common.termin_flag, True) def test_get_volume_stats(self): self.driver.common.login() status = self.driver.get_volume_stats() self.assertIsNotNone(status['free_capacity_gb']) def test_create_snapshot_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.create_snapshot, test_volume) def test_create_volume_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.create_volume, test_volume) def test_delete_volume_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.delete_volume, test_volume) def test_delete_snapshot_fail(self): self.driver.common.login() self.driver.common.test_normal = False self.assertRaises(exception.CinderException, self.driver.delete_snapshot, test_volume) def create_fake_conf_file(self): doc = Document() config = doc.createElement('config') doc.appendChild(config) storage = doc.createElement('Storage') config.appendChild(storage) product = doc.createElement('Product') product_text = doc.createTextNode('HVS') product.appendChild(product_text) storage.appendChild(product) protocol = doc.createElement('Protocol') protocol_text = doc.createTextNode('FC') protocol.appendChild(protocol_text) storage.appendChild(protocol) username = doc.createElement('UserName') username_text = doc.createTextNode('admin') username.appendChild(username_text) storage.appendChild(username) userpassword = doc.createElement('UserPassword') userpassword_text = doc.createTextNode('Admin@storage') userpassword.appendChild(userpassword_text) storage.appendChild(userpassword) url = doc.createElement('HVSURL') url_text = doc.createTextNode('http://100.115.10.69:8082/' 'deviceManager/rest/') url.appendChild(url_text) storage.appendChild(url) lun = doc.createElement('LUN') config.appendChild(lun) storagepool = doc.createElement('StoragePool') pool_text = doc.createTextNode('OpenStack_Pool') storagepool.appendChild(pool_text) lun.appendChild(storagepool) luntype = doc.createElement('LUNType') luntype_text = doc.createTextNode('Thick') luntype.appendChild(luntype_text) lun.appendChild(luntype) writetype = doc.createElement('WriteType') writetype_text = doc.createTextNode('1') writetype.appendChild(writetype_text) lun.appendChild(writetype) prefetchType = doc.createElement('Prefetch') prefetchType.setAttribute('Type', '2') prefetchType.setAttribute('Value', '20') lun.appendChild(prefetchType) newfile = open(self.fake_conf_file, 'w') newfile.write(doc.toprettyxml(indent='')) newfile.close() cinder-2014.1.5/cinder/tests/test_netapp_nfs.py0000664000567000056700000014347712540642606022551 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2012 NetApp, Inc. # All Rights Reserved. # # 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. """Unit tests for the NetApp-specific NFS driver module.""" from lxml import etree import mock import mox from mox import IgnoreArg from mox import IsA import os from cinder import context from cinder import exception from cinder.image import image_utils from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.netapp import api from cinder.volume.drivers.netapp import nfs as netapp_nfs from cinder.volume.drivers.netapp import utils from oslo.config import cfg CONF = cfg.CONF LOG = logging.getLogger(__name__) def create_configuration(): configuration = mox.MockObject(conf.Configuration) configuration.append_config_values(mox.IgnoreArg()) configuration.nfs_mount_point_base = '/mnt/test' configuration.nfs_mount_options = None return configuration class FakeVolume(object): def __init__(self, size=0): self.size = size self.id = hash(self) self.name = None def __getitem__(self, key): return self.__dict__[key] def __setitem__(self, key, val): self.__dict__[key] = val class FakeSnapshot(object): def __init__(self, volume_size=0): self.volume_name = None self.name = None self.volume_id = None self.volume_size = volume_size self.user_id = None self.status = None def __getitem__(self, key): return self.__dict__[key] class FakeResponse(object): def __init__(self, status): """Initialize FakeResponse. :param status: Either 'failed' or 'passed' """ self.Status = status if status == 'failed': self.Reason = 'Sample error' class NetappDirectCmodeNfsDriverTestCase(test.TestCase): """Test direct NetApp C Mode driver.""" def setUp(self): super(NetappDirectCmodeNfsDriverTestCase, self).setUp() self._custom_setup() def test_create_snapshot(self): """Test snapshot can be created and deleted.""" mox = self.mox drv = self._driver mox.StubOutWithMock(drv, '_clone_volume') drv._clone_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) mox.ReplayAll() drv.create_snapshot(FakeSnapshot()) mox.VerifyAll() def test_create_volume_from_snapshot(self): """Tests volume creation from snapshot.""" drv = self._driver mox = self.mox volume = FakeVolume(1) snapshot = FakeSnapshot(1) location = '127.0.0.1:/nfs' expected_result = {'provider_location': location} mox.StubOutWithMock(drv, '_clone_volume') mox.StubOutWithMock(drv, '_get_volume_location') mox.StubOutWithMock(drv, 'local_path') mox.StubOutWithMock(drv, '_discover_file_till_timeout') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') drv._clone_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) drv._get_volume_location(IgnoreArg()).AndReturn(location) drv.local_path(IgnoreArg()).AndReturn('/mnt') drv._discover_file_till_timeout(IgnoreArg()).AndReturn(True) drv._set_rw_permissions_for_all(IgnoreArg()) mox.ReplayAll() loc = drv.create_volume_from_snapshot(volume, snapshot) self.assertEqual(loc, expected_result) mox.VerifyAll() def _prepare_delete_snapshot_mock(self, snapshot_exists): drv = self._driver mox = self.mox mox.StubOutWithMock(drv, '_get_provider_location') mox.StubOutWithMock(drv, '_volume_not_present') mox.StubOutWithMock(drv, '_post_prov_deprov_in_ssc') if snapshot_exists: mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_get_volume_path') drv._get_provider_location(IgnoreArg()) drv._get_provider_location(IgnoreArg()) drv._volume_not_present(IgnoreArg(), IgnoreArg())\ .AndReturn(not snapshot_exists) if snapshot_exists: drv._get_volume_path(IgnoreArg(), IgnoreArg()) drv._execute('rm', None, run_as_root=True) drv._post_prov_deprov_in_ssc(IgnoreArg()) mox.ReplayAll() return mox def test_delete_existing_snapshot(self): drv = self._driver mox = self._prepare_delete_snapshot_mock(True) drv.delete_snapshot(FakeSnapshot()) mox.VerifyAll() def test_delete_missing_snapshot(self): drv = self._driver mox = self._prepare_delete_snapshot_mock(False) drv.delete_snapshot(FakeSnapshot()) mox.VerifyAll() def _custom_setup(self): kwargs = {} kwargs['netapp_mode'] = 'proxy' kwargs['configuration'] = create_configuration() self._driver = netapp_nfs.NetAppDirectCmodeNfsDriver(**kwargs) def test_check_for_setup_error(self): mox = self.mox drv = self._driver required_flags = [ 'netapp_transport_type', 'netapp_login', 'netapp_password', 'netapp_server_hostname', 'netapp_server_port'] # set required flags for flag in required_flags: setattr(drv.configuration, flag, None) # check exception raises when flags are not set self.assertRaises(exception.CinderException, drv.check_for_setup_error) # set required flags for flag in required_flags: setattr(drv.configuration, flag, 'val') setattr(drv, 'ssc_enabled', False) mox.StubOutWithMock(netapp_nfs.NetAppDirectNfsDriver, '_check_flags') netapp_nfs.NetAppDirectNfsDriver._check_flags() mox.ReplayAll() drv.check_for_setup_error() mox.VerifyAll() # restore initial FLAGS for flag in required_flags: delattr(drv.configuration, flag) def test_do_setup(self): mox = self.mox drv = self._driver mox.StubOutWithMock(netapp_nfs.NetAppNFSDriver, 'do_setup') mox.StubOutWithMock(drv, '_get_client') mox.StubOutWithMock(drv, '_do_custom_setup') netapp_nfs.NetAppNFSDriver.do_setup(IgnoreArg()) drv._get_client() drv._do_custom_setup(IgnoreArg()) mox.ReplayAll() drv.do_setup(IsA(context.RequestContext)) mox.VerifyAll() def _prepare_clone_mock(self, status): drv = self._driver mox = self.mox volume = FakeVolume() setattr(volume, 'provider_location', '127.0.0.1:/nfs') mox.StubOutWithMock(drv, '_get_host_ip') mox.StubOutWithMock(drv, '_get_export_path') mox.StubOutWithMock(drv, '_get_if_info_by_ip') mox.StubOutWithMock(drv, '_get_vol_by_junc_vserver') mox.StubOutWithMock(drv, '_clone_file') mox.StubOutWithMock(drv, '_post_prov_deprov_in_ssc') drv._get_host_ip(IgnoreArg()).AndReturn('127.0.0.1') drv._get_export_path(IgnoreArg()).AndReturn('/nfs') drv._get_if_info_by_ip('127.0.0.1').AndReturn( self._prepare_info_by_ip_response()) drv._get_vol_by_junc_vserver('openstack', '/nfs').AndReturn('nfsvol') drv._clone_file('nfsvol', 'volume_name', 'clone_name', 'openstack') drv._post_prov_deprov_in_ssc(IgnoreArg()) return mox def _prepare_info_by_ip_response(self): res = """
127.0.0.1
up fas3170rre-cmode-01 e1b-1165 nfs none disabled data fas3170rre-cmode-01 e1b-1165 nfs_data1 false true 255.255.255.0 24 up data c10.63.165.0/24 disabled openstack
""" response_el = etree.XML(res) return api.NaElement(response_el).get_children() def test_clone_volume(self): drv = self._driver mox = self._prepare_clone_mock('pass') mox.ReplayAll() volume_name = 'volume_name' clone_name = 'clone_name' volume_id = volume_name + str(hash(volume_name)) share = 'ip:/share' drv._clone_volume(volume_name, clone_name, volume_id, share) mox.VerifyAll() def test_register_img_in_cache_noshare(self): volume = {'id': '1', 'name': 'testvol'} volume['provider_location'] = '10.61.170.1:/share/path' drv = self._driver mox = self.mox mox.StubOutWithMock(drv, '_do_clone_rel_img_cache') drv._do_clone_rel_img_cache('testvol', 'img-cache-12345', '10.61.170.1:/share/path', 'img-cache-12345') mox.ReplayAll() drv._register_image_in_cache(volume, '12345') mox.VerifyAll() def test_register_img_in_cache_with_share(self): volume = {'id': '1', 'name': 'testvol'} volume['provider_location'] = '10.61.170.1:/share/path' drv = self._driver mox = self.mox mox.StubOutWithMock(drv, '_do_clone_rel_img_cache') drv._do_clone_rel_img_cache('testvol', 'img-cache-12345', '10.61.170.1:/share/path', 'img-cache-12345') mox.ReplayAll() drv._register_image_in_cache(volume, '12345') mox.VerifyAll() def test_find_image_in_cache_no_shares(self): drv = self._driver drv._mounted_shares = [] result = drv._find_image_in_cache('image_id') if not result: pass else: self.fail('Return result is unexpected') def test_find_image_in_cache_shares(self): drv = self._driver mox = self.mox drv._mounted_shares = ['testshare'] mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(os.path, 'exists') drv._get_mount_point_for_share('testshare').AndReturn('/mnt') os.path.exists('/mnt/img-cache-id').AndReturn(True) mox.ReplayAll() result = drv._find_image_in_cache('id') (share, file_name) = result[0] mox.VerifyAll() drv._mounted_shares.remove('testshare') if (share == 'testshare' and file_name == 'img-cache-id'): pass else: LOG.warn(_("Share %(share)s and file name %(file_name)s") % {'share': share, 'file_name': file_name}) self.fail('Return result is unexpected') def test_find_old_cache_files_notexists(self): drv = self._driver mox = self.mox cmd = ['find', '/mnt', '-maxdepth', '1', '-name', 'img-cache*', '-amin', '+720'] setattr(drv.configuration, 'expiry_thres_minutes', 720) mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(drv, '_execute') drv._get_mount_point_for_share(IgnoreArg()).AndReturn('/mnt') drv._execute(*cmd, run_as_root=True).AndReturn((None, '')) mox.ReplayAll() res = drv._find_old_cache_files('share') mox.VerifyAll() if len(res) == 0: pass else: self.fail('No files expected but got return values.') def test_find_old_cache_files_exists(self): drv = self._driver mox = self.mox cmd = ['find', '/mnt', '-maxdepth', '1', '-name', 'img-cache*', '-amin', '+720'] setattr(drv.configuration, 'expiry_thres_minutes', '720') files = '/mnt/img-id1\n/mnt/img-id2\n' r_files = ['img-id1', 'img-id2'] mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_shortlist_del_eligible_files') drv._get_mount_point_for_share('share').AndReturn('/mnt') drv._execute(*cmd, run_as_root=True).AndReturn((files, None)) drv._shortlist_del_eligible_files( IgnoreArg(), r_files).AndReturn(r_files) mox.ReplayAll() res = drv._find_old_cache_files('share') mox.VerifyAll() if len(res) == len(r_files): for f in res: r_files.remove(f) else: self.fail('Returned files not same as expected.') def test_delete_files_till_bytes_free_success(self): drv = self._driver mox = self.mox files = [('img-cache-1', 230), ('img-cache-2', 380)] mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(drv, '_delete_file') drv._get_mount_point_for_share(IgnoreArg()).AndReturn('/mnt') drv._delete_file('/mnt/img-cache-2').AndReturn(True) drv._delete_file('/mnt/img-cache-1').AndReturn(True) mox.ReplayAll() drv._delete_files_till_bytes_free(files, 'share', bytes_to_free=1024) mox.VerifyAll() def test_clean_image_cache_exec(self): drv = self._driver mox = self.mox drv.configuration.thres_avl_size_perc_start = 20 drv.configuration.thres_avl_size_perc_stop = 50 drv._mounted_shares = ['testshare'] mox.StubOutWithMock(drv, '_find_old_cache_files') mox.StubOutWithMock(drv, '_delete_files_till_bytes_free') mox.StubOutWithMock(drv, '_get_capacity_info') drv._get_capacity_info('testshare').AndReturn((100, 19, 81)) drv._find_old_cache_files('testshare').AndReturn(['f1', 'f2']) drv._delete_files_till_bytes_free( ['f1', 'f2'], 'testshare', bytes_to_free=31) mox.ReplayAll() drv._clean_image_cache() mox.VerifyAll() drv._mounted_shares.remove('testshare') if not drv.cleaning: pass else: self.fail('Clean image cache failed.') def test_clean_image_cache_noexec(self): drv = self._driver mox = self.mox drv.configuration.thres_avl_size_perc_start = 20 drv.configuration.thres_avl_size_perc_stop = 50 drv._mounted_shares = ['testshare'] mox.StubOutWithMock(drv, '_get_capacity_info') drv._get_capacity_info('testshare').AndReturn((100, 30, 70)) mox.ReplayAll() drv._clean_image_cache() mox.VerifyAll() drv._mounted_shares.remove('testshare') if not drv.cleaning: pass else: self.fail('Clean image cache failed.') def test_clone_image_fromcache(self): drv = self._driver mox = self.mox volume = {'name': 'vol', 'size': '20'} mox.StubOutWithMock(drv, '_find_image_in_cache') mox.StubOutWithMock(drv, '_do_clone_rel_img_cache') mox.StubOutWithMock(drv, '_post_clone_image') mox.StubOutWithMock(drv, '_is_share_vol_compatible') drv._find_image_in_cache(IgnoreArg()).AndReturn( [('share', 'file_name')]) drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(True) drv._do_clone_rel_img_cache('file_name', 'vol', 'share', 'file_name') drv._post_clone_image(volume) mox.ReplayAll() drv.clone_image(volume, ('image_location', None), 'image_id', {}) mox.VerifyAll() def get_img_info(self, format): class img_info(object): def __init__(self, fmt): self.file_format = fmt return img_info(format) def test_clone_image_cloneableshare_nospace(self): drv = self._driver mox = self.mox volume = {'name': 'vol', 'size': '20'} mox.StubOutWithMock(drv, '_find_image_in_cache') mox.StubOutWithMock(drv, '_is_cloneable_share') mox.StubOutWithMock(drv, '_is_share_vol_compatible') drv._find_image_in_cache(IgnoreArg()).AndReturn([]) drv._is_cloneable_share(IgnoreArg()).AndReturn('127.0.0.1:/share') drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(False) mox.ReplayAll() (prop, cloned) = drv. clone_image( volume, ('nfs://127.0.0.1:/share/img-id', None), 'image_id', {}) mox.VerifyAll() if not cloned and not prop['provider_location']: pass else: self.fail('Expected not cloned, got cloned.') def test_clone_image_cloneableshare_raw(self): drv = self._driver mox = self.mox volume = {'name': 'vol', 'size': '20'} mox.StubOutWithMock(drv, '_find_image_in_cache') mox.StubOutWithMock(drv, '_is_cloneable_share') mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_clone_volume') mox.StubOutWithMock(drv, '_discover_file_till_timeout') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') mox.StubOutWithMock(drv, '_resize_image_file') mox.StubOutWithMock(drv, '_is_share_vol_compatible') drv._find_image_in_cache(IgnoreArg()).AndReturn([]) drv._is_cloneable_share(IgnoreArg()).AndReturn('127.0.0.1:/share') drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(True) drv._get_mount_point_for_share(IgnoreArg()).AndReturn('/mnt') image_utils.qemu_img_info('/mnt/img-id').AndReturn( self.get_img_info('raw')) drv._clone_volume( 'img-id', 'vol', share='127.0.0.1:/share', volume_id=None) drv._get_mount_point_for_share(IgnoreArg()).AndReturn('/mnt') drv._discover_file_till_timeout(IgnoreArg()).AndReturn(True) drv._set_rw_permissions_for_all('/mnt/vol') drv._resize_image_file({'name': 'vol'}, IgnoreArg()) mox.ReplayAll() drv. clone_image( volume, ('nfs://127.0.0.1:/share/img-id', None), 'image_id', {}) mox.VerifyAll() def test_clone_image_cloneableshare_notraw(self): drv = self._driver mox = self.mox volume = {'name': 'vol', 'size': '20'} mox.StubOutWithMock(drv, '_find_image_in_cache') mox.StubOutWithMock(drv, '_is_cloneable_share') mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_clone_volume') mox.StubOutWithMock(drv, '_discover_file_till_timeout') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') mox.StubOutWithMock(drv, '_resize_image_file') mox.StubOutWithMock(image_utils, 'convert_image') mox.StubOutWithMock(drv, '_register_image_in_cache') mox.StubOutWithMock(drv, '_is_share_vol_compatible') drv._find_image_in_cache(IgnoreArg()).AndReturn([]) drv._is_cloneable_share('nfs://127.0.0.1/share/img-id').AndReturn( '127.0.0.1:/share') drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(True) drv._get_mount_point_for_share('127.0.0.1:/share').AndReturn('/mnt') image_utils.qemu_img_info('/mnt/img-id').AndReturn( self.get_img_info('notraw')) image_utils.convert_image(IgnoreArg(), IgnoreArg(), 'raw') image_utils.qemu_img_info('/mnt/vol').AndReturn( self.get_img_info('raw')) drv._register_image_in_cache(IgnoreArg(), IgnoreArg()) drv._get_mount_point_for_share('127.0.0.1:/share').AndReturn('/mnt') drv._discover_file_till_timeout(IgnoreArg()).AndReturn(True) drv._set_rw_permissions_for_all('/mnt/vol') drv._resize_image_file({'name': 'vol'}, IgnoreArg()) mox.ReplayAll() drv. clone_image( volume, ('nfs://127.0.0.1/share/img-id', None), 'image_id', {}) mox.VerifyAll() def test_clone_image_file_not_discovered(self): drv = self._driver mox = self.mox volume = {'name': 'vol', 'size': '20'} mox.StubOutWithMock(drv, '_find_image_in_cache') mox.StubOutWithMock(drv, '_is_cloneable_share') mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_clone_volume') mox.StubOutWithMock(drv, '_discover_file_till_timeout') mox.StubOutWithMock(image_utils, 'convert_image') mox.StubOutWithMock(drv, '_register_image_in_cache') mox.StubOutWithMock(drv, '_is_share_vol_compatible') mox.StubOutWithMock(drv, 'local_path') mox.StubOutWithMock(os.path, 'exists') mox.StubOutWithMock(drv, '_delete_file') drv._find_image_in_cache(IgnoreArg()).AndReturn([]) drv._is_cloneable_share('nfs://127.0.0.1/share/img-id').AndReturn( '127.0.0.1:/share') drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(True) drv._get_mount_point_for_share('127.0.0.1:/share').AndReturn('/mnt') image_utils.qemu_img_info('/mnt/img-id').AndReturn( self.get_img_info('notraw')) image_utils.convert_image(IgnoreArg(), IgnoreArg(), 'raw') image_utils.qemu_img_info('/mnt/vol').AndReturn( self.get_img_info('raw')) drv._register_image_in_cache(IgnoreArg(), IgnoreArg()) drv.local_path(IgnoreArg()).AndReturn('/mnt/vol') drv._discover_file_till_timeout(IgnoreArg()).AndReturn(False) drv.local_path(IgnoreArg()).AndReturn('/mnt/vol') os.path.exists('/mnt/vol').AndReturn(True) drv._delete_file('/mnt/vol') mox.ReplayAll() vol_dict, result = drv. clone_image( volume, ('nfs://127.0.0.1/share/img-id', None), 'image_id', {}) mox.VerifyAll() self.assertFalse(result) self.assertFalse(vol_dict['bootable']) self.assertIsNone(vol_dict['provider_location']) def test_clone_image_resizefails(self): drv = self._driver mox = self.mox volume = {'name': 'vol', 'size': '20'} mox.StubOutWithMock(drv, '_find_image_in_cache') mox.StubOutWithMock(drv, '_is_cloneable_share') mox.StubOutWithMock(drv, '_get_mount_point_for_share') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_clone_volume') mox.StubOutWithMock(drv, '_discover_file_till_timeout') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') mox.StubOutWithMock(drv, '_resize_image_file') mox.StubOutWithMock(image_utils, 'convert_image') mox.StubOutWithMock(drv, '_register_image_in_cache') mox.StubOutWithMock(drv, '_is_share_vol_compatible') mox.StubOutWithMock(drv, 'local_path') mox.StubOutWithMock(os.path, 'exists') mox.StubOutWithMock(drv, '_delete_file') drv._find_image_in_cache(IgnoreArg()).AndReturn([]) drv._is_cloneable_share('nfs://127.0.0.1/share/img-id').AndReturn( '127.0.0.1:/share') drv._is_share_vol_compatible(IgnoreArg(), IgnoreArg()).AndReturn(True) drv._get_mount_point_for_share('127.0.0.1:/share').AndReturn('/mnt') image_utils.qemu_img_info('/mnt/img-id').AndReturn( self.get_img_info('notraw')) image_utils.convert_image(IgnoreArg(), IgnoreArg(), 'raw') image_utils.qemu_img_info('/mnt/vol').AndReturn( self.get_img_info('raw')) drv._register_image_in_cache(IgnoreArg(), IgnoreArg()) drv.local_path(IgnoreArg()).AndReturn('/mnt/vol') drv._discover_file_till_timeout(IgnoreArg()).AndReturn(True) drv._set_rw_permissions_for_all('/mnt/vol') drv._resize_image_file( IgnoreArg(), IgnoreArg()).AndRaise(exception.InvalidResults()) drv.local_path(IgnoreArg()).AndReturn('/mnt/vol') os.path.exists('/mnt/vol').AndReturn(True) drv._delete_file('/mnt/vol') mox.ReplayAll() vol_dict, result = drv. clone_image( volume, ('nfs://127.0.0.1/share/img-id', None), 'image_id', {}) mox.VerifyAll() self.assertFalse(result) self.assertFalse(vol_dict['bootable']) self.assertIsNone(vol_dict['provider_location']) def test_is_cloneable_share_badformats(self): drv = self._driver strgs = ['10.61.666.22:/share/img', 'nfs://10.61.666.22:/share/img', 'nfs://10.61.666.22//share/img', 'nfs://com.netapp.com:/share/img', 'nfs://com.netapp.com//share/img', 'com.netapp.com://share/im\g', 'http://com.netapp.com://share/img', 'nfs://com.netapp.com:/share/img', 'nfs://com.netapp.com:8080//share/img' 'nfs://com.netapp.com//img', 'nfs://[ae::sr::ty::po]/img'] for strg in strgs: res = drv._is_cloneable_share(strg) if res: msg = 'Invalid format matched for url %s.' % strg self.fail(msg) def test_is_cloneable_share_goodformat1(self): drv = self._driver mox = self.mox strg = 'nfs://10.61.222.333/share/img' mox.StubOutWithMock(drv, '_check_share_in_use') drv._check_share_in_use(IgnoreArg(), IgnoreArg()).AndReturn('share') mox.ReplayAll() drv._is_cloneable_share(strg) mox.VerifyAll() def test_is_cloneable_share_goodformat2(self): drv = self._driver mox = self.mox strg = 'nfs://10.61.222.333:8080/share/img' mox.StubOutWithMock(drv, '_check_share_in_use') drv._check_share_in_use(IgnoreArg(), IgnoreArg()).AndReturn('share') mox.ReplayAll() drv._is_cloneable_share(strg) mox.VerifyAll() def test_is_cloneable_share_goodformat3(self): drv = self._driver mox = self.mox strg = 'nfs://com.netapp:8080/share/img' mox.StubOutWithMock(drv, '_check_share_in_use') drv._check_share_in_use(IgnoreArg(), IgnoreArg()).AndReturn('share') mox.ReplayAll() drv._is_cloneable_share(strg) mox.VerifyAll() def test_is_cloneable_share_goodformat4(self): drv = self._driver mox = self.mox strg = 'nfs://netapp.com/share/img' mox.StubOutWithMock(drv, '_check_share_in_use') drv._check_share_in_use(IgnoreArg(), IgnoreArg()).AndReturn('share') mox.ReplayAll() drv._is_cloneable_share(strg) mox.VerifyAll() def test_is_cloneable_share_goodformat5(self): drv = self._driver mox = self.mox strg = 'nfs://netapp.com/img' mox.StubOutWithMock(drv, '_check_share_in_use') drv._check_share_in_use(IgnoreArg(), IgnoreArg()).AndReturn('share') mox.ReplayAll() drv._is_cloneable_share(strg) mox.VerifyAll() def test_check_share_in_use_no_conn(self): drv = self._driver share = drv._check_share_in_use(None, '/dir') if share: self.fail('Unexpected share detected.') def test_check_share_in_use_invalid_conn(self): drv = self._driver share = drv._check_share_in_use(':8989', '/dir') if share: self.fail('Unexpected share detected.') def test_check_share_in_use_incorrect_host(self): drv = self._driver mox = self.mox mox.StubOutWithMock(utils, 'resolve_hostname') utils.resolve_hostname(IgnoreArg()).AndRaise(Exception()) mox.ReplayAll() share = drv._check_share_in_use('incorrect:8989', '/dir') mox.VerifyAll() if share: self.fail('Unexpected share detected.') def test_check_share_in_use_success(self): drv = self._driver mox = self.mox drv._mounted_shares = ['127.0.0.1:/dir/share'] mox.StubOutWithMock(utils, 'resolve_hostname') mox.StubOutWithMock(drv, '_share_match_for_ip') utils.resolve_hostname(IgnoreArg()).AndReturn('10.22.33.44') drv._share_match_for_ip( '10.22.33.44', ['127.0.0.1:/dir/share']).AndReturn('share') mox.ReplayAll() share = drv._check_share_in_use('127.0.0.1:8989', '/dir/share') mox.VerifyAll() if not share: self.fail('Expected share not detected') def test_construct_image_url_loc(self): drv = self._driver img_loc = (None, [{'metadata': {'share_location': 'nfs://host/path', 'mount_point': '/opt/stack/data/glance', 'type': 'nfs'}, 'url': 'file:///opt/stack/data/glance/image-id'}]) location = drv._construct_image_nfs_url(img_loc) if location != "nfs://host/path/image-id": self.fail("Unexpected direct url.") def test_construct_image_url_direct(self): drv = self._driver img_loc = ("nfs://host/path/image-id", None) location = drv._construct_image_nfs_url(img_loc) if location != "nfs://host/path/image-id": self.fail("Unexpected direct url.") class NetappDirectCmodeNfsDriverOnlyTestCase(test.TestCase): """Test direct NetApp C Mode driver only and not inherit.""" def setUp(self): super(NetappDirectCmodeNfsDriverOnlyTestCase, self).setUp() self._custom_setup() def _custom_setup(self): kwargs = {} kwargs['netapp_mode'] = 'proxy' kwargs['configuration'] = create_configuration() self._driver = netapp_nfs.NetAppDirectCmodeNfsDriver(**kwargs) self._driver.ssc_enabled = True self._driver.configuration.netapp_copyoffload_tool_path = 'cof_path' @mock.patch.object(netapp_nfs, 'get_volume_extra_specs') def test_create_volume(self, mock_volume_extra_specs): drv = self._driver drv.ssc_enabled = False extra_specs = {} mock_volume_extra_specs.return_value = extra_specs fake_share = 'localhost:myshare' fake_qos_policy = 'qos_policy_1' with mock.patch.object(drv, '_ensure_shares_mounted'): with mock.patch.object(drv, '_find_shares', return_value=['localhost:myshare']): with mock.patch.object(drv, '_do_create_volume'): volume_info = self._driver.create_volume(FakeVolume(1)) self.assertEqual(volume_info.get('provider_location'), fake_share) @mock.patch.object(netapp_nfs, 'get_volume_extra_specs') def test_create_volume_with_qos_policy(self, mock_volume_extra_specs): drv = self._driver drv.ssc_enabled = False extra_specs = {'netapp:qos_policy_group': 'qos_policy_1'} fake_volume = FakeVolume(1) fake_share = 'localhost:myshare' fake_qos_policy = 'qos_policy_1' mock_volume_extra_specs.return_value = extra_specs with mock.patch.object(drv, '_ensure_shares_mounted'): with mock.patch.object(drv, '_find_shares', return_value=['localhost:myshare']): with mock.patch.object(drv, '_do_create_volume'): with mock.patch.object(drv, '_set_qos_policy_group_on_volume' ) as mock_set_qos: volume_info = self._driver.create_volume(fake_volume) self.assertEqual(volume_info.get('provider_location'), 'localhost:myshare') mock_set_qos.assert_called_once_with(fake_volume, fake_share, fake_qos_policy) def test_copy_img_to_vol_copyoffload_success(self): drv = self._driver context = object() volume = {'id': 'vol_id', 'name': 'name'} image_service = object() image_id = 'image_id' drv._client = mock.Mock() drv._client.get_api_version = mock.Mock(return_value=(1, 20)) drv._try_copyoffload = mock.Mock() drv._get_provider_location = mock.Mock(return_value='share') drv._get_vol_for_share = mock.Mock(return_value='vol') drv._update_stale_vols = mock.Mock() drv.copy_image_to_volume(context, volume, image_service, image_id) drv._try_copyoffload.assert_called_once_with(context, volume, image_service, image_id) drv._update_stale_vols.assert_called_once_with('vol') def test_copy_img_to_vol_copyoffload_failure(self): drv = self._driver context = object() volume = {'id': 'vol_id', 'name': 'name'} image_service = object() image_id = 'image_id' drv._client = mock.Mock() drv._client.get_api_version = mock.Mock(return_value=(1, 20)) drv._try_copyoffload = mock.Mock(side_effect=Exception()) netapp_nfs.NetAppNFSDriver.copy_image_to_volume = mock.Mock() drv._get_provider_location = mock.Mock(return_value='share') drv._get_vol_for_share = mock.Mock(return_value='vol') drv._update_stale_vols = mock.Mock() drv.copy_image_to_volume(context, volume, image_service, image_id) drv._try_copyoffload.assert_called_once_with(context, volume, image_service, image_id) netapp_nfs.NetAppNFSDriver.copy_image_to_volume.\ assert_called_once_with(context, volume, image_service, image_id) drv._update_stale_vols.assert_called_once_with('vol') def test_copy_img_to_vol_copyoffload_nonexistent_binary_path(self): drv = self._driver context = object() volume = {'id': 'vol_id', 'name': 'name'} image_service = mock.Mock() image_service.get_location.return_value = (mock.Mock(), mock.Mock()) image_service.show.return_value = {'size': 0} image_id = 'image_id' drv._client = mock.Mock() drv._client.get_api_version = mock.Mock(return_value=(1, 20)) drv._find_image_in_cache = mock.Mock(return_value=[]) drv._construct_image_nfs_url = mock.Mock(return_value="") drv._check_get_nfs_path_segs = mock.Mock(return_value=("test:test", "dr")) drv._get_ip_verify_on_cluster = mock.Mock(return_value="192.1268.1.1") drv._get_mount_point_for_share = mock.Mock(return_value='mnt_point') drv._get_host_ip = mock.Mock() drv._get_provider_location = mock.Mock() drv._get_export_path = mock.Mock(return_value="dr") drv._check_share_can_hold_size = mock.Mock() # Raise error as if the copyoffload file can not be found drv._clone_file_dst_exists = mock.Mock(side_effect=OSError()) # Verify the orignal error is propagated self.assertRaises(OSError, drv._try_copyoffload, context, volume, image_service, image_id) def test_copyoffload_frm_cache_success(self): drv = self._driver context = object() volume = {'id': 'vol_id', 'name': 'name'} image_service = object() image_id = 'image_id' drv._find_image_in_cache = mock.Mock(return_value=[('share', 'img')]) drv._copy_from_cache = mock.Mock(return_value=True) drv._try_copyoffload(context, volume, image_service, image_id) drv._copy_from_cache.assert_called_once_with(volume, image_id, [('share', 'img')]) def test_copyoffload_frm_img_service_success(self): drv = self._driver context = object() volume = {'id': 'vol_id', 'name': 'name'} image_service = object() image_id = 'image_id' drv._client = mock.Mock() drv._client.get_api_version = mock.Mock(return_value=(1, 20)) drv._find_image_in_cache = mock.Mock(return_value=[]) drv._copy_from_img_service = mock.Mock() drv._try_copyoffload(context, volume, image_service, image_id) drv._copy_from_img_service.assert_called_once_with(context, volume, image_service, image_id) def test_cache_copyoffload_workflow_success(self): drv = self._driver volume = {'id': 'vol_id', 'name': 'name', 'size': 1} image_id = 'image_id' cache_result = [('ip1:/openstack', 'img-cache-imgid')] drv._get_ip_verify_on_cluster = mock.Mock(return_value='ip1') drv._get_host_ip = mock.Mock(return_value='ip2') drv._get_export_path = mock.Mock(return_value='/exp_path') drv._execute = mock.Mock() drv._register_image_in_cache = mock.Mock() drv._get_provider_location = mock.Mock(return_value='/share') drv._post_clone_image = mock.Mock() copied = drv._copy_from_cache(volume, image_id, cache_result) self.assertTrue(copied) drv._get_ip_verify_on_cluster.assert_any_call('ip1') drv._get_export_path.assert_called_with('vol_id') drv._execute.assert_called_once_with('cof_path', 'ip1', 'ip1', '/openstack/img-cache-imgid', '/exp_path/name', run_as_root=False, check_exit_code=0) drv._post_clone_image.assert_called_with(volume) drv._get_provider_location.assert_called_with('vol_id') @mock.patch.object(image_utils, 'qemu_img_info') def test_img_service_raw_copyoffload_workflow_success(self, mock_qemu_img_info): drv = self._driver volume = {'id': 'vol_id', 'name': 'name', 'size': 1} image_id = 'image_id' context = object() image_service = mock.Mock() image_service.get_location.return_value = ('nfs://ip1/openstack/img', None) image_service.show.return_value = {'size': 1, 'disk_format': 'raw'} drv._check_get_nfs_path_segs = mock.Mock(return_value= ('ip1', '/openstack')) drv._get_ip_verify_on_cluster = mock.Mock(return_value='ip1') drv._get_host_ip = mock.Mock(return_value='ip2') drv._get_export_path = mock.Mock(return_value='/exp_path') drv._get_provider_location = mock.Mock(return_value='share') drv._execute = mock.Mock() drv._get_mount_point_for_share = mock.Mock(return_value='mnt_point') drv._discover_file_till_timeout = mock.Mock(return_value=True) img_inf = mock.Mock() img_inf.file_format = 'raw' mock_qemu_img_info.return_value = img_inf drv._check_share_can_hold_size = mock.Mock() drv._move_nfs_file = mock.Mock(return_value=True) drv._delete_file = mock.Mock() drv._clone_file_dst_exists = mock.Mock() drv._post_clone_image = mock.Mock() drv._copy_from_img_service(context, volume, image_service, image_id) drv._get_ip_verify_on_cluster.assert_any_call('ip1') drv._get_export_path.assert_called_with('vol_id') drv._check_share_can_hold_size.assert_called_with('share', 1) assert drv._execute.call_count == 1 drv._post_clone_image.assert_called_with(volume) @mock.patch.object(image_utils, 'convert_image') @mock.patch.object(image_utils, 'qemu_img_info') @mock.patch('os.path.exists') def test_img_service_qcow2_copyoffload_workflow_success(self, mock_exists, mock_qemu_img_info, mock_cvrt_image): drv = self._driver volume = {'id': 'vol_id', 'name': 'name', 'size': 1} image_id = 'image_id' context = object() image_service = mock.Mock() image_service.get_location.return_value = ('nfs://ip1/openstack/img', None) image_service.show.return_value = {'size': 1, 'disk_format': 'qcow2'} drv._check_get_nfs_path_segs = mock.Mock(return_value= ('ip1', '/openstack')) drv._get_ip_verify_on_cluster = mock.Mock(return_value='ip1') drv._get_host_ip = mock.Mock(return_value='ip2') drv._get_export_path = mock.Mock(return_value='/exp_path') drv._get_provider_location = mock.Mock(return_value='share') drv._execute = mock.Mock() drv._get_mount_point_for_share = mock.Mock(return_value='mnt_point') img_inf = mock.Mock() img_inf.file_format = 'raw' mock_qemu_img_info.return_value = img_inf drv._check_share_can_hold_size = mock.Mock() drv._move_nfs_file = mock.Mock(return_value=True) drv._delete_file = mock.Mock() drv._clone_file_dst_exists = mock.Mock() drv._post_clone_image = mock.Mock() drv._copy_from_img_service(context, volume, image_service, image_id) drv._get_ip_verify_on_cluster.assert_any_call('ip1') drv._get_export_path.assert_called_with('vol_id') drv._check_share_can_hold_size.assert_called_with('share', 1) assert mock_cvrt_image.call_count == 1 assert drv._execute.call_count == 1 assert drv._delete_file.call_count == 2 drv._clone_file_dst_exists.call_count == 1 drv._post_clone_image.assert_called_with(volume) class NetappDirect7modeNfsDriverTestCase(NetappDirectCmodeNfsDriverTestCase): """Test direct NetApp C Mode driver.""" def _custom_setup(self): self._driver = netapp_nfs.NetAppDirect7modeNfsDriver( configuration=create_configuration()) def _prepare_delete_snapshot_mock(self, snapshot_exists): drv = self._driver mox = self.mox mox.StubOutWithMock(drv, '_get_provider_location') mox.StubOutWithMock(drv, '_volume_not_present') if snapshot_exists: mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_get_volume_path') drv._get_provider_location(IgnoreArg()) drv._volume_not_present(IgnoreArg(), IgnoreArg())\ .AndReturn(not snapshot_exists) if snapshot_exists: drv._get_volume_path(IgnoreArg(), IgnoreArg()) drv._execute('rm', None, run_as_root=True) mox.ReplayAll() return mox def test_check_for_setup_error_version(self): drv = self._driver drv._client = api.NaServer("127.0.0.1") # check exception raises when version not found self.assertRaises(exception.VolumeBackendAPIException, drv.check_for_setup_error) drv._client.set_api_version(1, 8) # check exception raises when not supported version self.assertRaises(exception.VolumeBackendAPIException, drv.check_for_setup_error) def test_check_for_setup_error(self): mox = self.mox drv = self._driver drv._client = api.NaServer("127.0.0.1") drv._client.set_api_version(1, 9) required_flags = [ 'netapp_transport_type', 'netapp_login', 'netapp_password', 'netapp_server_hostname', 'netapp_server_port'] # set required flags for flag in required_flags: setattr(drv.configuration, flag, None) # check exception raises when flags are not set self.assertRaises(exception.CinderException, drv.check_for_setup_error) # set required flags for flag in required_flags: setattr(drv.configuration, flag, 'val') mox.ReplayAll() drv.check_for_setup_error() mox.VerifyAll() # restore initial FLAGS for flag in required_flags: delattr(drv.configuration, flag) def test_do_setup(self): mox = self.mox drv = self._driver mox.StubOutWithMock(netapp_nfs.NetAppNFSDriver, 'do_setup') mox.StubOutWithMock(drv, '_get_client') mox.StubOutWithMock(drv, '_do_custom_setup') netapp_nfs.NetAppNFSDriver.do_setup(IgnoreArg()) drv._get_client() drv._do_custom_setup(IgnoreArg()) mox.ReplayAll() drv.do_setup(IsA(context.RequestContext)) mox.VerifyAll() def _prepare_clone_mock(self, status): drv = self._driver mox = self.mox volume = FakeVolume() setattr(volume, 'provider_location', '127.0.0.1:/nfs') mox.StubOutWithMock(drv, '_get_export_ip_path') mox.StubOutWithMock(drv, '_get_actual_path_for_export') mox.StubOutWithMock(drv, '_start_clone') mox.StubOutWithMock(drv, '_wait_for_clone_finish') if status == 'fail': mox.StubOutWithMock(drv, '_clear_clone') drv._get_export_ip_path( IgnoreArg(), IgnoreArg()).AndReturn(('127.0.0.1', '/nfs')) drv._get_actual_path_for_export(IgnoreArg()).AndReturn('/vol/vol1/nfs') drv._start_clone(IgnoreArg(), IgnoreArg()).AndReturn(('1', '2')) if status == 'fail': drv._wait_for_clone_finish('1', '2').AndRaise( api.NaApiError('error', 'error')) drv._clear_clone('1') else: drv._wait_for_clone_finish('1', '2') return mox def test_clone_volume_clear(self): drv = self._driver mox = self._prepare_clone_mock('fail') mox.ReplayAll() volume_name = 'volume_name' clone_name = 'clone_name' volume_id = volume_name + str(hash(volume_name)) try: drv._clone_volume(volume_name, clone_name, volume_id) except Exception as e: if isinstance(e, api.NaApiError): pass else: raise mox.VerifyAll() def test_get_actual_path_for_export_no_vfiler(self): drv = self._driver drv.vfiler = None test_path = '/vol/test/path' mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) drv._get_actual_path_for_export(test_path) mock_invoke.assert_called_once_with(mock.ANY, None) def test_get_actual_path_for_export_with_vfiler(self): test_vfiler = 'foo' drv = self._driver test_path = '/vol/test/path' drv.vfiler = test_vfiler mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) drv._get_actual_path_for_export(test_path) mock_invoke.assert_called_once_with(mock.ANY, test_vfiler) def test_start_clone_no_vfiler(self): drv = self._driver drv.vfiler = None src_path = '/vol/test/src' dest_path = '/vol/test/dest' mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) drv._start_clone(src_path, dest_path) mock_invoke.assert_called_once_with(mock.ANY, None) def test_start_clone_with_vfiler(self): test_vfiler = 'foo' drv = self._driver src_path = '/vol/test/src' dest_path = '/vol/test/dest' drv.vfiler = test_vfiler mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) drv._start_clone(src_path, dest_path) mock_invoke.assert_called_once_with(mock.ANY, test_vfiler) def test_wait_for_clone_finish_no_vfiler(self): drv = self._driver drv.vfiler = None src_path = '/vol/test/src' dest_path = '/vol/test/dest' mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) self.mock_object(drv, "_is_clone_still_running", False) drv._start_clone(src_path, dest_path) mock_invoke.assert_called_once_with(mock.ANY, None) def test_wait_for_clone_finish_with_vfiler(self): test_vfiler = 'foo' drv = self._driver src_path = '/vol/test/src' dest_path = '/vol/test/dest' drv.vfiler = test_vfiler mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) self.mock_object(drv, "_is_clone_still_running", False) drv._start_clone(src_path, dest_path) mock_invoke.assert_called_once_with(mock.ANY, test_vfiler) def test_clear_clone_no_vfiler(self): drv = self._driver drv.vfiler = None fake_clone_id = '1234' mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) drv._clear_clone(fake_clone_id) mock_invoke.assert_called_once_with(mock.ANY, None) def test_clear_clone_with_vfiler(self): test_vfiler = 'foo' drv = self._driver fake_clone_id = '1234' drv.vfiler = test_vfiler mock_invoke = mock.Mock() self.mock_object(drv, "_invoke_successfully", mock_invoke) drv._clear_clone(fake_clone_id) mock_invoke.assert_called_once_with(mock.ANY, test_vfiler) cinder-2014.1.5/cinder/tests/test_test_utils.py0000664000567000056700000000201612540642606022572 0ustar jenkinsjenkins00000000000000# # Copyright 2010 OpenStack Foundation # # 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. from cinder import test from cinder.tests import utils as test_utils class TestUtilsTestCase(test.TestCase): def test_get_test_admin_context(self): """get_test_admin_context's return value behaves like admin context.""" ctxt = test_utils.get_test_admin_context() # TODO(soren): This should verify the full interface context # objects expose. self.assertTrue(ctxt.is_admin) cinder-2014.1.5/cinder/tests/test_test.py0000664000567000056700000000304212540642606021352 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """Tests for the testing base code.""" from oslo.config import cfg from oslo import messaging from cinder import rpc from cinder import test class IsolationTestCase(test.TestCase): """Ensure that things are cleaned up after failed tests. These tests don't really do much here, but if isolation fails a bunch of other tests should fail. """ def test_service_isolation(self): self.start_service('volume') def test_rpc_consumer_isolation(self): class NeverCalled(object): def __getattribute__(*args): assert False, "I should never get called." server = rpc.get_server(messaging.Target(topic='volume', server=cfg.CONF.host), endpoints=[NeverCalled()]) server.start() cinder-2014.1.5/cinder/tests/fake_utils.py0000664000567000056700000000672412540642606021474 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Citrix Systems, Inc. # # 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. """This modules stubs out functions in cinder.utils.""" import re from eventlet import greenthread from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import utils LOG = logging.getLogger(__name__) _fake_execute_repliers = [] _fake_execute_log = [] def fake_execute_get_log(): return _fake_execute_log def fake_execute_clear_log(): global _fake_execute_log _fake_execute_log = [] def fake_execute_set_repliers(repliers): """Allows the client to configure replies to commands.""" global _fake_execute_repliers _fake_execute_repliers = repliers def fake_execute_default_reply_handler(*ignore_args, **ignore_kwargs): """A reply handler for commands that haven't been added to the reply list. Returns empty strings for stdout and stderr. """ return '', '' def fake_execute(*cmd_parts, **kwargs): """This function stubs out execute. It optionally executes a preconfigued function to return expected data. """ global _fake_execute_repliers process_input = kwargs.get('process_input', None) check_exit_code = kwargs.get('check_exit_code', 0) delay_on_retry = kwargs.get('delay_on_retry', True) attempts = kwargs.get('attempts', 1) run_as_root = kwargs.get('run_as_root', False) cmd_str = ' '.join(str(part) for part in cmd_parts) LOG.debug(_("Faking execution of cmd (subprocess): %s"), cmd_str) _fake_execute_log.append(cmd_str) reply_handler = fake_execute_default_reply_handler for fake_replier in _fake_execute_repliers: if re.match(fake_replier[0], cmd_str): reply_handler = fake_replier[1] LOG.debug(_('Faked command matched %s') % fake_replier[0]) break if isinstance(reply_handler, basestring): # If the reply handler is a string, return it as stdout reply = reply_handler, '' else: try: # Alternative is a function, so call it reply = reply_handler(cmd_parts, process_input=process_input, delay_on_retry=delay_on_retry, attempts=attempts, run_as_root=run_as_root, check_exit_code=check_exit_code) except processutils.ProcessExecutionError as e: LOG.debug(_('Faked command raised an exception %s'), e) raise LOG.debug(_("Reply to faked command is stdout='%(stdout)s' " "stderr='%(stderr)s'") % {'stdout': reply[0], 'stderr': reply[1]}) # Replicate the sleep call in the real function greenthread.sleep(0) return reply def stub_out_utils_execute(stubs): fake_execute_set_repliers([]) fake_execute_clear_log() stubs.Set(utils, 'execute', fake_execute) cinder-2014.1.5/cinder/tests/__init__.py0000664000567000056700000000263312540642606021100 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ :mod:`cinder.tests` -- Cinder Unittests ===================================================== .. automodule:: cinder.tests :platform: Unix .. moduleauthor:: Jesse Andrews .. moduleauthor:: Devin Carlen .. moduleauthor:: Vishvananda Ishaya .. moduleauthor:: Joshua McKenty .. moduleauthor:: Manish Singh .. moduleauthor:: Andy Smith """ import eventlet eventlet.monkey_patch() # See http://code.google.com/p/python-nose/issues/detail?id=373 # The code below enables nosetests to work with i18n _() blocks import __builtin__ setattr(__builtin__, '_', lambda x: x) cinder-2014.1.5/cinder/tests/test_backup_driver_base.py0000664000567000056700000002360512540642606024214 0ustar jenkinsjenkins00000000000000# Copyright 2013 Canonical Ltd. # All Rights Reserved. # # 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. """ Tests for the backup service base driver. """ import mock import uuid from cinder.backup import driver from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import jsonutils from cinder import test _backup_db_fields = ['id', 'user_id', 'project_id', 'volume_id', 'host', 'availability_zone', 'display_name', 'display_description', 'container', 'status', 'fail_reason', 'service_metadata', 'service', 'size', 'object_count'] class BackupBaseDriverTestCase(test.TestCase): def _create_volume_db_entry(self, id, size): vol = {'id': id, 'size': size, 'status': 'available'} return db.volume_create(self.ctxt, vol)['id'] def _create_backup_db_entry(self, backupid, volid, size): backup = {'id': backupid, 'size': size, 'volume_id': volid} return db.backup_create(self.ctxt, backup)['id'] def setUp(self): super(BackupBaseDriverTestCase, self).setUp() self.ctxt = context.get_admin_context() self.volume_id = str(uuid.uuid4()) self.backup_id = str(uuid.uuid4()) self._create_backup_db_entry(self.backup_id, self.volume_id, 1) self._create_volume_db_entry(self.volume_id, 1) self.backup = db.backup_get(self.ctxt, self.backup_id) self.driver = driver.BackupDriver(self.ctxt) def test_backup(self): self.assertRaises(NotImplementedError, self.driver.backup, self.backup, self.volume_id) def test_restore(self): self.assertRaises(NotImplementedError, self.driver.restore, self.backup, self.volume_id, None) def test_delete(self): self.assertRaises(NotImplementedError, self.driver.delete, self.backup) def test_get_metadata(self): json_metadata = self.driver.get_metadata(self.volume_id) metadata = jsonutils.loads(json_metadata) self.assertEqual(metadata['version'], 1) def test_put_metadata(self): metadata = {'version': 1} self.driver.put_metadata(self.volume_id, jsonutils.dumps(metadata)) def test_get_put_metadata(self): json_metadata = self.driver.get_metadata(self.volume_id) self.driver.put_metadata(self.volume_id, json_metadata) def test_export_record(self): export_string = self.driver.export_record(self.backup) export_dict = jsonutils.loads(export_string.decode("base64")) # Make sure we don't lose data when converting to string for key in _backup_db_fields: self.assertTrue(key in export_dict) self.assertEqual(self.backup[key], export_dict[key]) def test_import_record(self): export_string = self.driver.export_record(self.backup) imported_backup = self.driver.import_record(export_string) # Make sure we don't lose data when converting from string for key in _backup_db_fields: self.assertTrue(key in imported_backup) self.assertEqual(imported_backup[key], self.backup[key]) def test_verify(self): self.assertRaises(NotImplementedError, self.driver.verify, self.backup) def tearDown(self): super(BackupBaseDriverTestCase, self).tearDown() class BackupMetadataAPITestCase(test.TestCase): def _create_volume_db_entry(self, id, size): vol = {'id': id, 'size': size, 'status': 'available'} return db.volume_create(self.ctxt, vol)['id'] def setUp(self): super(BackupMetadataAPITestCase, self).setUp() self.ctxt = context.get_admin_context() self.volume_id = str(uuid.uuid4()) self._create_volume_db_entry(self.volume_id, 1) self.bak_meta_api = driver.BackupMetadataAPI(self.ctxt) def _add_metadata(self, vol_meta=False, vol_glance_meta=False): if vol_meta: # Add some VolumeMetadata db.volume_metadata_update(self.ctxt, self.volume_id, {'fee': 'fi'}, False) db.volume_metadata_update(self.ctxt, self.volume_id, {'fo': 'fum'}, False) if vol_glance_meta: # Add some GlanceMetadata db.volume_glance_metadata_create(self.ctxt, self.volume_id, 'disk_format', 'bare') db.volume_glance_metadata_create(self.ctxt, self.volume_id, 'container_type', 'ovf') def test_get(self): # Volume won't have anything other than base by default meta = self.bak_meta_api.get(self.volume_id) s1 = set(jsonutils.loads(meta).keys()) s2 = ['version', self.bak_meta_api.TYPE_TAG_VOL_BASE_META] self.assertEqual(s1.symmetric_difference(s2), set()) self._add_metadata(vol_glance_meta=True) meta = self.bak_meta_api.get(self.volume_id) s1 = set(jsonutils.loads(meta).keys()) s2 = ['version', self.bak_meta_api.TYPE_TAG_VOL_BASE_META, self.bak_meta_api.TYPE_TAG_VOL_GLANCE_META] self.assertEqual(s1.symmetric_difference(s2), set()) self._add_metadata(vol_meta=True) meta = self.bak_meta_api.get(self.volume_id) s1 = set(jsonutils.loads(meta).keys()) s2 = ['version', self.bak_meta_api.TYPE_TAG_VOL_BASE_META, self.bak_meta_api.TYPE_TAG_VOL_GLANCE_META, self.bak_meta_api.TYPE_TAG_VOL_META] self.assertEqual(s1.symmetric_difference(s2), set()) def test_put(self): meta = self.bak_meta_api.get(self.volume_id) self.bak_meta_api.put(self.volume_id, meta) self._add_metadata(vol_glance_meta=True) meta = self.bak_meta_api.get(self.volume_id) self.bak_meta_api.put(self.volume_id, meta) self._add_metadata(vol_meta=True) meta = self.bak_meta_api.get(self.volume_id) self.bak_meta_api.put(self.volume_id, meta) def test_put_invalid_version(self): container = jsonutils.dumps({'version': 2}) self.assertRaises(exception.BackupMetadataUnsupportedVersion, self.bak_meta_api.put, self.volume_id, container) def test_v1_restore_factory(self): fact = self.bak_meta_api._v1_restore_factory() keys = [self.bak_meta_api.TYPE_TAG_VOL_BASE_META, self.bak_meta_api.TYPE_TAG_VOL_META, self.bak_meta_api.TYPE_TAG_VOL_GLANCE_META] self.assertEqual(set(keys).symmetric_difference(set(fact.keys())), set([])) for f in fact: func = fact[f][0] fields = fact[f][1] func({}, self.volume_id, fields) def test_restore_vol_glance_meta(self): fields = {} container = {} self.bak_meta_api._save_vol_glance_meta(container, self.volume_id) self.bak_meta_api._restore_vol_glance_meta(container, self.volume_id, fields) self._add_metadata(vol_glance_meta=True) self.bak_meta_api._save_vol_glance_meta(container, self.volume_id) self.bak_meta_api._restore_vol_glance_meta(container, self.volume_id, fields) def test_restore_vol_meta(self): fields = {} container = {} self.bak_meta_api._save_vol_meta(container, self.volume_id) self.bak_meta_api._restore_vol_meta(container, self.volume_id, fields) self._add_metadata(vol_meta=True) self.bak_meta_api._save_vol_meta(container, self.volume_id) self.bak_meta_api._restore_vol_meta(container, self.volume_id, fields) def test_restore_vol_base_meta(self): fields = {} container = {} self.bak_meta_api._save_vol_base_meta(container, self.volume_id) self.bak_meta_api._restore_vol_base_meta(container, self.volume_id, fields) def test_filter(self): metadata = {'a': 1, 'b': 2, 'c': 3} self.assertEqual(metadata, self.bak_meta_api._filter(metadata, [])) self.assertEqual({'b': 2}, self.bak_meta_api._filter(metadata, ['b'])) self.assertEqual({}, self.bak_meta_api._filter(metadata, ['d'])) self.assertEqual({'a': 1, 'b': 2}, self.bak_meta_api._filter(metadata, ['a', 'b'])) def test_save_vol_glance_meta(self): container = {} self.bak_meta_api._save_vol_glance_meta(container, self.volume_id) def test_save_vol_meta(self): container = {} self.bak_meta_api._save_vol_meta(container, self.volume_id) def test_save_vol_base_meta(self): container = {} self.bak_meta_api._save_vol_base_meta(container, self.volume_id) def test_is_serializable(self): data = {'foo': 'bar'} if self.bak_meta_api._is_serializable(data): jsonutils.dumps(data) def test_is_not_serializable(self): data = {'foo': 'bar'} with mock.patch.object(jsonutils, 'dumps') as mock_dumps: mock_dumps.side_effect = TypeError self.assertFalse(self.bak_meta_api._is_serializable(data)) mock_dumps.assert_called_once() def tearDown(self): super(BackupMetadataAPITestCase, self).tearDown() cinder-2014.1.5/cinder/tests/test_backup_tsm.py0000664000567000056700000003074612540642606022536 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp # All Rights Reserved. # # 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. # """ Tests for volume backup to IBM Tivoli Storage Manager (TSM). """ import datetime import json import os import posix from cinder.backup.drivers import tsm from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils as putils from cinder import test from cinder import utils LOG = logging.getLogger(__name__) SIM = None VOLUME_PATH = '/dev/null' class TSMBackupSimulator: """Simulates TSM dsmc command. The simulator simulates the execution of the 'dsmc' command. This allows the TSM backup test to succeed even if TSM is not installed. """ def __init__(self): self._backup_list = {} self._hardlinks = [] self._next_cmd_error = { 'backup': '', } self._intro_msg = ('IBM Tivoli Storage Manager\n' 'Command Line Backup-Archive Client Interface\n' '...\n\n') def _cmd_backup(self, **kwargs): # simulates the execution of the dsmc backup command ret_msg = self._intro_msg path = kwargs['path'] ret_msg += ('Image backup of volume \'%s\'\n\n' 'Total number of objects inspected: 1\n' % path) if self._next_cmd_error['backup'] == 'fail': ret_msg += ('ANS1228E Sending of object \'%s\' ' 'failed\n' % path) ret_msg += ('ANS1063E The specified path is not a valid file ' 'system or logical volume name.') self._next_cmd_error['backup'] = '' retcode = 12 else: ret_msg += 'Total number of objects backed up: 1' if path not in self._backup_list: self._backup_list[path] = [] else: self._backup_list[path][-1]['active'] = False date = datetime.datetime.now() datestr = date.strftime("%m/%d/%Y %H:%M:%S") self._backup_list[path].append({'date': datestr, 'active': True}) retcode = 0 return (ret_msg, '', retcode) def _backup_exists(self, path): if path not in self._backup_list: return ('ANS4000E Error processing \'%s\': file space does ' 'not exist.' % path) return 'OK' def _cmd_restore(self, **kwargs): ret_msg = self._intro_msg path = kwargs['path'] exists = self._backup_exists(path) if exists == 'OK': ret_msg += ('Total number of objects restored: 1\n' 'Total number of objects failed: 0') retcode = 0 else: ret_msg += exists retcode = 12 return (ret_msg, '', retcode) def _cmd_delete(self, **kwargs): # simulates the execution of the dsmc delete command ret_msg = self._intro_msg path = kwargs['path'] exists = self._backup_exists(path) if exists == 'OK': ret_msg += ('Total number of objects deleted: 1\n' 'Total number of objects failed: 0') retcode = 0 index = len(self._backup_list[path]) - 1 del self._backup_list[path][index] if not len(self._backup_list[path]): del self._backup_list[path] else: ret_msg += exists retcode = 12 return (ret_msg, '', retcode) def _cmd_to_dict(self, arg_list): """Convert command for kwargs (assumes a properly formed command).""" path = arg_list[-1] other = arg_list[-2] ret = {'cmd': arg_list[0], 'type': arg_list[1], 'path': arg_list[-1]} for i in range(2, len(arg_list) - 1): arg = arg_list[i].split('=') if len(arg) == 1: ret[arg[0]] = True else: ret[arg[0]] = arg[1] return ret def _exec_dsmc_cmd(self, cmd): """Simulates the execution of the dsmc command.""" cmd_switch = {'backup': self._cmd_backup, 'restore': self._cmd_restore, 'delete': self._cmd_delete} kwargs = self._cmd_to_dict(cmd) if kwargs['cmd'] != 'dsmc' or kwargs['type'] not in cmd_switch: raise putils.ProcessExecutionError(exit_code=1, stdout='', stderr='Not dsmc command', cmd=' '.join(cmd)) out, err, ret = cmd_switch[kwargs['type']](**kwargs) return (out, err, ret) def exec_cmd(self, cmd): """Simulates the execution of dsmc, rm, and ln commands.""" if cmd[0] == 'dsmc': out, err, ret = self._exec_dsmc_cmd(cmd) elif cmd[0] == 'ln': dest = cmd[2] out = '' if dest in self._hardlinks: err = ('ln: failed to create hard link `%s\': ' 'File exists' % dest) ret = 1 else: self._hardlinks.append(dest) err = '' ret = 0 elif cmd[0] == 'rm': dest = cmd[2] out = '' if dest not in self._hardlinks: err = ('rm: cannot remove `%s\': No such file or ' 'directory' % dest) ret = 1 else: index = self._hardlinks.index(dest) del self._hardlinks[index] err = '' ret = 0 else: raise putils.ProcessExecutionError(exit_code=1, stdout='', stderr='Unsupported command', cmd=' '.join(cmd)) return (out, err, ret) def error_injection(self, cmd, error): self._next_cmd_error[cmd] = error def fake_exec(*cmd, **kwargs): # Support only bool check_exit_code = kwargs.pop('check_exit_code', True) global SIM out, err, ret = SIM.exec_cmd(cmd) if ret and check_exit_code: raise putils.ProcessExecutionError( exit_code=-1, stdout=out, stderr=err, cmd=' '.join(cmd)) return (out, err) def fake_stat_image(path): # Simulate stat to return the mode of a block device # make sure that st_mode (the first in the sequence( # matches the mode of a block device return posix.stat_result((25008, 5753, 5L, 1, 0, 6, 0, 1375881199, 1375881197, 1375881197)) def fake_stat_file(path): # Simulate stat to return the mode of a block device # make sure that st_mode (the first in the sequence( # matches the mode of a block device return posix.stat_result((33188, 5753, 5L, 1, 0, 6, 0, 1375881199, 1375881197, 1375881197)) def fake_stat_illegal(path): # Simulate stat to return the mode of a block device # make sure that st_mode (the first in the sequence( # matches the mode of a block device return posix.stat_result((17407, 5753, 5L, 1, 0, 6, 0, 1375881199, 1375881197, 1375881197)) class BackupTSMTestCase(test.TestCase): def setUp(self): super(BackupTSMTestCase, self).setUp() global SIM SIM = TSMBackupSimulator() self.sim = SIM self.ctxt = context.get_admin_context() self.driver = tsm.TSMBackupDriver(self.ctxt) self.stubs.Set(utils, 'execute', fake_exec) self.stubs.Set(os, 'stat', fake_stat_image) def tearDown(self): super(BackupTSMTestCase, self).tearDown() def _create_volume_db_entry(self, volume_id): vol = {'id': volume_id, 'size': 1, 'status': 'available'} return db.volume_create(self.ctxt, vol)['id'] def _create_backup_db_entry(self, backup_id, mode): if mode == 'file': backup_path = VOLUME_PATH else: backup_path = '/dev/backup-%s' % backup_id service_metadata = json.dumps({'backup_mode': mode, 'backup_path': backup_path}) backup = {'id': backup_id, 'size': 1, 'container': 'test-container', 'volume_id': '1234-5678-1234-8888', 'service_metadata': service_metadata} return db.backup_create(self.ctxt, backup)['id'] def test_backup_image(self): volume_id = '1234-5678-1234-7777' mode = 'image' self._create_volume_db_entry(volume_id) backup_id1 = 123 backup_id2 = 456 backup_id3 = 666 self._create_backup_db_entry(backup_id1, mode) self._create_backup_db_entry(backup_id2, mode) self._create_backup_db_entry(backup_id3, mode) with open(VOLUME_PATH, 'rw') as volume_file: # Create two backups of the volume backup1 = db.backup_get(self.ctxt, backup_id1) self.driver.backup(backup1, volume_file) backup2 = db.backup_get(self.ctxt, backup_id2) self.driver.backup(backup2, volume_file) # Create a backup that fails fail_back = db.backup_get(self.ctxt, backup_id3) self.sim.error_injection('backup', 'fail') self.assertRaises(exception.InvalidBackup, self.driver.backup, fail_back, volume_file) # Try to restore one, then the other self.driver.restore(backup1, volume_id, volume_file) self.driver.restore(backup2, volume_id, volume_file) # Delete both backups self.driver.delete(backup2) self.driver.delete(backup1) def test_backup_file(self): volume_id = '1234-5678-1234-8888' mode = 'file' self.stubs.Set(os, 'stat', fake_stat_file) self._create_volume_db_entry(volume_id) backup_id1 = 123 backup_id2 = 456 self._create_backup_db_entry(backup_id1, mode) self._create_backup_db_entry(backup_id2, mode) with open(VOLUME_PATH, 'rw') as volume_file: # Create two backups of the volume backup1 = db.backup_get(self.ctxt, 123) self.driver.backup(backup1, volume_file) backup2 = db.backup_get(self.ctxt, 456) self.driver.backup(backup2, volume_file) # Create a backup that fails self._create_backup_db_entry(666, mode) fail_back = db.backup_get(self.ctxt, 666) self.sim.error_injection('backup', 'fail') self.assertRaises(exception.InvalidBackup, self.driver.backup, fail_back, volume_file) # Try to restore one, then the other self.driver.restore(backup1, volume_id, volume_file) self.driver.restore(backup2, volume_id, volume_file) # Delete both backups self.driver.delete(backup1) self.driver.delete(backup2) def test_backup_invalid_mode(self): volume_id = '1234-5678-1234-9999' mode = 'illegal' self.stubs.Set(os, 'stat', fake_stat_illegal) self._create_volume_db_entry(volume_id) backup_id1 = 123 self._create_backup_db_entry(backup_id1, mode) with open(VOLUME_PATH, 'rw') as volume_file: # Create two backups of the volume backup1 = db.backup_get(self.ctxt, 123) self.assertRaises(exception.InvalidBackup, self.driver.backup, backup1, volume_file) self.assertRaises(exception.InvalidBackup, self.driver.restore, backup1, volume_id, volume_file) self.assertRaises(exception.InvalidBackup, self.driver.delete, backup1) cinder-2014.1.5/cinder/tests/test_xenapi_sm.py0000664000567000056700000004227612540642606022372 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import contextlib import mock import mox import six from cinder.db import api as db_api from cinder import exception from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.xenapi import lib from cinder.volume.drivers.xenapi import sm as driver from cinder.volume.drivers.xenapi import tools class MockContext(object): def __init__(ctxt, auth_token): ctxt.auth_token = auth_token @contextlib.contextmanager def simple_context(value): yield value def get_configured_driver(server='ignore_server', path='ignore_path'): configuration = mox.MockObject(conf.Configuration) configuration.xenapi_nfs_server = server configuration.xenapi_nfs_serverpath = path configuration.append_config_values(mox.IgnoreArg()) configuration.volume_dd_blocksize = '1M' return driver.XenAPINFSDriver(configuration=configuration) class DriverTestCase(test.TestCase): def assert_flag(self, flagname): self.assertTrue(hasattr(driver.CONF, flagname)) def test_config_options(self): self.assert_flag('xenapi_connection_url') self.assert_flag('xenapi_connection_username') self.assert_flag('xenapi_connection_password') self.assert_flag('xenapi_nfs_server') self.assert_flag('xenapi_nfs_serverpath') self.assert_flag('xenapi_sr_base_path') def test_do_setup(self): mock = mox.Mox() mock.StubOutWithMock(driver, 'xenapi_lib') mock.StubOutWithMock(driver, 'xenapi_opts') configuration = mox.MockObject(conf.Configuration) configuration.xenapi_connection_url = 'url' configuration.xenapi_connection_username = 'user' configuration.xenapi_connection_password = 'pass' configuration.append_config_values(mox.IgnoreArg()) session_factory = object() nfsops = object() driver.xenapi_lib.SessionFactory('url', 'user', 'pass').AndReturn( session_factory) driver.xenapi_lib.NFSBasedVolumeOperations( session_factory).AndReturn(nfsops) drv = driver.XenAPINFSDriver(configuration=configuration) mock.ReplayAll() drv.do_setup('context') mock.VerifyAll() self.assertEqual(nfsops, drv.nfs_ops) def test_create_volume(self): mock = mox.Mox() ops = mock.CreateMock(lib.NFSBasedVolumeOperations) drv = get_configured_driver('server', 'path') drv.nfs_ops = ops volume_details = dict( sr_uuid='sr_uuid', vdi_uuid='vdi_uuid' ) ops.create_volume( 'server', 'path', 1, 'name', 'desc').AndReturn(volume_details) mock.ReplayAll() result = drv.create_volume(dict( size=1, display_name='name', display_description='desc')) mock.VerifyAll() self.assertEqual(dict(provider_location='sr_uuid/vdi_uuid'), result) def test_delete_volume(self): mock = mox.Mox() ops = mock.CreateMock(lib.NFSBasedVolumeOperations) drv = get_configured_driver('server', 'path') drv.nfs_ops = ops ops.delete_volume('server', 'path', 'sr_uuid', 'vdi_uuid') mock.ReplayAll() result = drv.delete_volume(dict( provider_location='sr_uuid/vdi_uuid')) mock.VerifyAll() def test_create_export_does_not_raise_exception(self): configuration = conf.Configuration([]) drv = driver.XenAPINFSDriver(configuration=configuration) drv.create_export('context', 'volume') def test_remove_export_does_not_raise_exception(self): configuration = conf.Configuration([]) drv = driver.XenAPINFSDriver(configuration=configuration) drv.remove_export('context', 'volume') def test_initialize_connection(self): mock = mox.Mox() drv = get_configured_driver('server', 'path') mock.ReplayAll() result = drv.initialize_connection( dict( display_name='name', display_description='desc', provider_location='sr_uuid/vdi_uuid'), 'connector' ) mock.VerifyAll() self.assertEqual( dict( driver_volume_type='xensm', data=dict( name_label='name', name_description='desc', sr_uuid='sr_uuid', vdi_uuid='vdi_uuid', sr_type='nfs', server='server', serverpath='path', introduce_sr_keys=['sr_type', 'server', 'serverpath'] ) ), result ) def test_initialize_connection_null_values(self): mock = mox.Mox() drv = get_configured_driver('server', 'path') mock.ReplayAll() result = drv.initialize_connection( dict( display_name=None, display_description=None, provider_location='sr_uuid/vdi_uuid'), 'connector' ) mock.VerifyAll() self.assertEqual( dict( driver_volume_type='xensm', data=dict( name_label='', name_description='', sr_uuid='sr_uuid', vdi_uuid='vdi_uuid', sr_type='nfs', server='server', serverpath='path', introduce_sr_keys=['sr_type', 'server', 'serverpath'] ) ), result ) def _setup_mock_driver(self, server, serverpath, sr_base_path="_srbp"): mock = mox.Mox() drv = get_configured_driver(server, serverpath) ops = mock.CreateMock(lib.NFSBasedVolumeOperations) db = mock.CreateMock(db_api) drv.nfs_ops = ops drv.db = db mock.StubOutWithMock(driver, 'CONF') driver.CONF.xenapi_nfs_server = server driver.CONF.xenapi_nfs_serverpath = serverpath driver.CONF.xenapi_sr_base_path = sr_base_path return mock, drv def test_create_snapshot(self): mock, drv = self._setup_mock_driver('server', 'serverpath') snapshot = dict( volume_id="volume-id", display_name="snapshot-name", display_description="snapshot-desc", volume=dict(provider_location="sr-uuid/vdi-uuid")) drv.nfs_ops.copy_volume( "server", "serverpath", "sr-uuid", "vdi-uuid", "snapshot-name", "snapshot-desc" ).AndReturn(dict(sr_uuid="copied-sr", vdi_uuid="copied-vdi")) mock.ReplayAll() result = drv.create_snapshot(snapshot) mock.VerifyAll() self.assertEqual( dict(provider_location="copied-sr/copied-vdi"), result) def test_create_volume_from_snapshot(self): mock, drv = self._setup_mock_driver('server', 'serverpath') snapshot = dict( provider_location='src-sr-uuid/src-vdi-uuid') volume = dict( display_name='tgt-name', name_description='tgt-desc') drv.nfs_ops.copy_volume( "server", "serverpath", "src-sr-uuid", "src-vdi-uuid", "tgt-name", "tgt-desc" ).AndReturn(dict(sr_uuid="copied-sr", vdi_uuid="copied-vdi")) mock.ReplayAll() result = drv.create_volume_from_snapshot(volume, snapshot) mock.VerifyAll() self.assertEqual( dict(provider_location='copied-sr/copied-vdi'), result) def test_delete_snapshot(self): mock, drv = self._setup_mock_driver('server', 'serverpath') snapshot = dict( provider_location='src-sr-uuid/src-vdi-uuid') drv.nfs_ops.delete_volume( "server", "serverpath", "src-sr-uuid", "src-vdi-uuid") mock.ReplayAll() drv.delete_snapshot(snapshot) mock.VerifyAll() def test_copy_volume_to_image_xenserver_case(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_glance_plugin_to_upload_volume') mock.StubOutWithMock(driver.image_utils, 'is_xenserver_format') context = MockContext('token') driver.image_utils.is_xenserver_format('image_meta').AndReturn(True) drv._use_glance_plugin_to_upload_volume( context, 'volume', 'image_service', 'image_meta').AndReturn( 'result') mock.ReplayAll() result = drv.copy_volume_to_image( context, "volume", "image_service", "image_meta") self.assertEqual('result', result) mock.VerifyAll() def test_copy_volume_to_image_non_xenserver_case(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_image_utils_to_upload_volume') mock.StubOutWithMock(driver.image_utils, 'is_xenserver_format') context = MockContext('token') driver.image_utils.is_xenserver_format('image_meta').AndReturn(False) drv._use_image_utils_to_upload_volume( context, 'volume', 'image_service', 'image_meta').AndReturn( 'result') mock.ReplayAll() result = drv.copy_volume_to_image( context, "volume", "image_service", "image_meta") self.assertEqual('result', result) mock.VerifyAll() def test_use_image_utils_to_upload_volume(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid') context = MockContext('token') mock.StubOutWithMock(driver.image_utils, 'upload_volume') drv.nfs_ops.volume_attached_here( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', True).AndReturn( simple_context('device')) driver.image_utils.upload_volume( context, 'image_service', 'image_meta', 'device') mock.ReplayAll() drv._use_image_utils_to_upload_volume( context, volume, "image_service", "image_meta") mock.VerifyAll() def test_use_glance_plugin_to_upload_volume(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid') context = MockContext('token') mock.StubOutWithMock(driver.glance, 'get_api_servers') driver.glance.get_api_servers().AndReturn((x for x in ['glancesrv'])) drv.nfs_ops.use_glance_plugin_to_upload_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 'glancesrv', 'image-id', 'token', '/var/run/sr-mount') mock.ReplayAll() drv._use_glance_plugin_to_upload_volume( context, volume, "image_service", {"id": "image-id"}) mock.VerifyAll() def test_copy_image_to_volume_xenserver_case(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_glance_plugin_to_copy_image_to_volume') mock.StubOutWithMock(driver.image_utils, 'is_xenserver_image') context = MockContext('token') driver.image_utils.is_xenserver_image( context, 'image_service', 'image_id').AndReturn(True) drv._use_glance_plugin_to_copy_image_to_volume( context, 'volume', 'image_service', 'image_id').AndReturn('result') mock.ReplayAll() result = drv.copy_image_to_volume( context, "volume", "image_service", "image_id") self.assertEqual('result', result) mock.VerifyAll() def test_copy_image_to_volume_non_xenserver_case(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_image_utils_to_pipe_bytes_to_volume') mock.StubOutWithMock(driver.image_utils, 'is_xenserver_image') context = MockContext('token') driver.image_utils.is_xenserver_image( context, 'image_service', 'image_id').AndReturn(False) drv._use_image_utils_to_pipe_bytes_to_volume( context, 'volume', 'image_service', 'image_id').AndReturn(True) mock.ReplayAll() drv.copy_image_to_volume( context, "volume", "image_service", "image_id") mock.VerifyAll() def test_use_image_utils_to_pipe_bytes_to_volume(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid', size=1) context = MockContext('token') mock.StubOutWithMock(driver.image_utils, 'fetch_to_raw') drv.nfs_ops.volume_attached_here( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', False).AndReturn( simple_context('device')) driver.image_utils.fetch_to_raw( context, 'image_service', 'image_id', 'device', mox.IgnoreArg(), size=1) mock.ReplayAll() drv._use_image_utils_to_pipe_bytes_to_volume( context, volume, "image_service", "image_id") mock.VerifyAll() def test_use_glance_plugin_to_copy_image_to_volume_success(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') volume = dict( provider_location='sr-uuid/vdi-uuid', size=2) mock.StubOutWithMock(driver.glance, 'get_api_servers') driver.glance.get_api_servers().AndReturn((x for x in ['glancesrv'])) drv.nfs_ops.use_glance_plugin_to_overwrite_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 'glancesrv', 'image_id', 'token', '/var/run/sr-mount').AndReturn(True) drv.nfs_ops.resize_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 2) mock.ReplayAll() drv._use_glance_plugin_to_copy_image_to_volume( MockContext('token'), volume, "ignore", "image_id") mock.VerifyAll() def test_use_glance_plugin_to_copy_image_to_volume_fail(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') volume = dict( provider_location='sr-uuid/vdi-uuid', size=2) mock.StubOutWithMock(driver.glance, 'get_api_servers') driver.glance.get_api_servers().AndReturn((x for x in ['glancesrv'])) drv.nfs_ops.use_glance_plugin_to_overwrite_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 'glancesrv', 'image_id', 'token', '/var/run/sr-mount').AndReturn(False) mock.ReplayAll() self.assertRaises( exception.ImageCopyFailure, lambda: drv._use_glance_plugin_to_copy_image_to_volume( MockContext('token'), volume, "ignore", "image_id")) mock.VerifyAll() def test_get_volume_stats_reports_required_keys(self): drv = get_configured_driver() stats = drv.get_volume_stats() required_metrics = [ 'volume_backend_name', 'vendor_name', 'driver_version', 'storage_protocol', 'total_capacity_gb', 'free_capacity_gb', 'reserved_percentage' ] for metric in required_metrics: self.assertIn(metric, stats) def test_get_volume_stats_reports_unknown_cap(self): drv = get_configured_driver() stats = drv.get_volume_stats() self.assertEqual('unknown', stats['free_capacity_gb']) def test_reported_driver_type(self): drv = get_configured_driver() stats = drv.get_volume_stats() self.assertEqual('xensm', stats['storage_protocol']) class ToolsTest(test.TestCase): @mock.patch('cinder.volume.drivers.xenapi.tools._stripped_first_line_of') def test_get_this_vm_uuid(self, mock_read_first_line): mock_read_first_line.return_value = 'someuuid' self.assertEqual('someuuid', tools.get_this_vm_uuid()) mock_read_first_line.assert_called_once_with('/sys/hypervisor/uuid') def test_stripped_first_line_of(self): mock_context_manager = mock.Mock() mock_context_manager.__enter__ = mock.Mock( return_value=six.StringIO(' blah \n second line \n')) mock_context_manager.__exit__ = mock.Mock(return_value=False) mock_open = mock.Mock(return_value=mock_context_manager) with mock.patch('__builtin__.open', mock_open): self.assertEqual( 'blah', tools._stripped_first_line_of('/somefile')) mock_open.assert_called_once_with('/somefile', 'rb') cinder-2014.1.5/cinder/tests/volume/0000775000567000056700000000000012540643114020265 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/__init__.py0000664000567000056700000000000012540642606022371 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/drivers/0000775000567000056700000000000012540643114021743 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/drivers/__init__.py0000664000567000056700000000000012540642606024047 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/drivers/netapp/0000775000567000056700000000000012540643114023232 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/drivers/netapp/__init__.py0000664000567000056700000000000012540642606025336 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/drivers/netapp/eseries/0000775000567000056700000000000012540643114024671 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/volume/drivers/netapp/eseries/test_client.py0000664000567000056700000000362712540642606027575 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 Alex Meade # Copyright (c) 2014 Rushil Chugh # All Rights Reserved. # # 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. import mock from cinder import test from cinder.volume.drivers.netapp.eseries import client class NetAppEseriesClientDriverTestCase(test.TestCase): """Test case for NetApp e-series client.""" def setUp(self): super(NetAppEseriesClientDriverTestCase, self).setUp() self.mock_log = mock.Mock() self.mock_object(client, 'LOG', self.mock_log) self.fake_password = 'mysecret' self.my_client = client.RestClient('http', 'host', '80', '/test', 'user', self.fake_password, system_id='fake_sys_id') self.my_client.invoke_service = mock.Mock() def test_register_storage_system_does_not_log_password(self): self.my_client.register_storage_system([], password=self.fake_password) for call in self.mock_log.debug.mock_calls: __, args, __ = call self.assertNotIn(self.fake_password, args[0]) def test_update_stored_system_password_does_not_log_password(self): self.my_client.update_stored_system_password( password=self.fake_password) for call in self.mock_log.debug.mock_calls: __, args, __ = call self.assertNotIn(self.fake_password, args[0]) cinder-2014.1.5/cinder/tests/volume/drivers/netapp/test_iscsi.py0000664000567000056700000002704112540642606025766 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 NetApp, Inc. # All Rights Reserved. # # 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. """ Mock unit tests for the NetApp iSCSI driver """ import mock import uuid from cinder import test import cinder.volume.drivers.netapp.api as ntapi import cinder.volume.drivers.netapp.iscsi as ntap_iscsi class NetAppDirectISCSIDriverTestCase(test.TestCase): def setUp(self): super(NetAppDirectISCSIDriverTestCase, self).setUp() self.driver = ntap_iscsi.NetAppDirectISCSIDriver( configuration=mock.Mock()) self.driver.client = mock.Mock() self.fake_volume = str(uuid.uuid4()) self.fake_lun = str(uuid.uuid4()) self.fake_size = '1024' self.fake_metadata = { 'OsType': 'linux', 'SpaceReserved': 'true', } self.mock_request = mock.Mock() def tearDown(self): super(NetAppDirectISCSIDriverTestCase, self).tearDown() def test_create_lun(self): expected_path = '/vol/%s/%s' % (self.fake_volume, self.fake_lun) with mock.patch.object(ntapi.NaElement, 'create_node_with_children', return_value=self.mock_request ) as mock_create_node: self.driver.create_lun(self.fake_volume, self.fake_lun, self.fake_size, self.fake_metadata) mock_create_node.assert_called_once_with( 'lun-create-by-size', **{'path': expected_path, 'size': self.fake_size, 'ostype': self.fake_metadata['OsType'], 'space-reservation-enabled': self.fake_metadata['SpaceReserved']}) self.driver.client.invoke_successfully.assert_called_once_with( mock.ANY, True) def test_create_lun_with_qos_policy_group(self): expected_path = '/vol/%s/%s' % (self.fake_volume, self.fake_lun) expected_qos_group = 'qos_1' with mock.patch.object(ntapi.NaElement, 'create_node_with_children', return_value=self.mock_request ) as mock_create_node: self.driver.create_lun(self.fake_volume, self.fake_lun, self.fake_size, self.fake_metadata, qos_policy_group=expected_qos_group) mock_create_node.assert_called_once_with( 'lun-create-by-size', **{'path': expected_path, 'size': self.fake_size, 'ostype': self.fake_metadata['OsType'], 'space-reservation-enabled': self.fake_metadata['SpaceReserved']}) self.mock_request.add_new_child.assert_called_once_with( 'qos-policy-group', expected_qos_group) self.driver.client.invoke_successfully.assert_called_once_with( mock.ANY, True) class NetAppiSCSICModeTestCase(test.TestCase): """Test case for NetApp's C-Mode iSCSI driver.""" def setUp(self): super(NetAppiSCSICModeTestCase, self).setUp() self.driver = ntap_iscsi.NetAppDirectCmodeISCSIDriver( configuration=mock.Mock()) self.driver.client = mock.Mock() self.driver.vserver = mock.Mock() def tearDown(self): super(NetAppiSCSICModeTestCase, self).tearDown() def test_clone_lun_multiple_zapi_calls(self): """Test for when lun clone requires more than one zapi call.""" # Max block-ranges per call = 32, max blocks per range = 2^24 # Force 2 calls bc = 2 ** 24 * 32 * 2 self.driver._get_lun_attr = mock.Mock(return_value={'Volume': 'fakeLUN'}) self.driver.client.invoke_successfully = mock.Mock() lun = ntapi.NaElement.create_node_with_children( 'lun-info', **{'alignment': 'indeterminate', 'block-size': '512', 'comment': '', 'creation-timestamp': '1354536362', 'is-space-alloc-enabled': 'false', 'is-space-reservation-enabled': 'true', 'mapped': 'false', 'multiprotocol-type': 'linux', 'online': 'true', 'path': '/vol/fakeLUN/lun1', 'prefix-size': '0', 'qtree': '', 'read-only': 'false', 'serial-number': '2FfGI$APyN68', 'share-state': 'none', 'size': '20971520', 'size-used': '0', 'staging': 'false', 'suffix-size': '0', 'uuid': 'cec1f3d7-3d41-11e2-9cf4-123478563412', 'volume': 'fakeLUN', 'vserver': 'fake_vserver'}) self.driver._get_lun_by_args = mock.Mock(return_value=[lun]) self.driver._add_lun_to_table = mock.Mock() self.driver._update_stale_vols = mock.Mock() self.driver._clone_lun('fakeLUN', 'newFakeLUN', block_count=bc) self.assertEqual(2, self.driver.client.invoke_successfully.call_count) def test_clone_lun_zero_block_count(self): """Test for when clone lun is not passed a block count.""" self.driver._get_lun_attr = mock.Mock(return_value={'Volume': 'fakeLUN'}) self.driver.client.invoke_successfully = mock.Mock() lun = ntapi.NaElement.create_node_with_children( 'lun-info', **{'alignment': 'indeterminate', 'block-size': '512', 'comment': '', 'creation-timestamp': '1354536362', 'is-space-alloc-enabled': 'false', 'is-space-reservation-enabled': 'true', 'mapped': 'false', 'multiprotocol-type': 'linux', 'online': 'true', 'path': '/vol/fakeLUN/lun1', 'prefix-size': '0', 'qtree': '', 'read-only': 'false', 'serial-number': '2FfGI$APyN68', 'share-state': 'none', 'size': '20971520', 'size-used': '0', 'staging': 'false', 'suffix-size': '0', 'uuid': 'cec1f3d7-3d41-11e2-9cf4-123478563412', 'volume': 'fakeLUN', 'vserver': 'fake_vserver'}) self.driver._get_lun_by_args = mock.Mock(return_value=[lun]) self.driver._add_lun_to_table = mock.Mock() self.driver._update_stale_vols = mock.Mock() self.driver._clone_lun('fakeLUN', 'newFakeLUN') self.assertEqual(1, self.driver.client.invoke_successfully.call_count) class NetAppiSCSI7ModeTestCase(test.TestCase): """Test case for NetApp's 7-Mode iSCSI driver.""" def setUp(self): super(NetAppiSCSI7ModeTestCase, self).setUp() self.driver = ntap_iscsi.NetAppDirect7modeISCSIDriver( configuration=mock.Mock()) self.driver.client = mock.Mock() self.driver.vfiler = mock.Mock() def tearDown(self): super(NetAppiSCSI7ModeTestCase, self).tearDown() def test_clone_lun_multiple_zapi_calls(self): """Test for when lun clone requires more than one zapi call.""" # Max block-ranges per call = 32, max blocks per range = 2^24 # Force 2 calls bc = 2 ** 24 * 32 * 2 self.driver._get_lun_attr = mock.Mock(return_value={'Volume': 'fakeLUN', 'Path': '/vol/fake/lun1'}) self.driver.client.invoke_successfully = mock.Mock( return_value=mock.MagicMock()) lun = ntapi.NaElement.create_node_with_children( 'lun-info', **{'alignment': 'indeterminate', 'block-size': '512', 'comment': '', 'creation-timestamp': '1354536362', 'is-space-alloc-enabled': 'false', 'is-space-reservation-enabled': 'true', 'mapped': 'false', 'multiprotocol-type': 'linux', 'online': 'true', 'path': '/vol/fakeLUN/lun1', 'prefix-size': '0', 'qtree': '', 'read-only': 'false', 'serial-number': '2FfGI$APyN68', 'share-state': 'none', 'size': '20971520', 'size-used': '0', 'staging': 'false', 'suffix-size': '0', 'uuid': 'cec1f3d7-3d41-11e2-9cf4-123478563412', 'volume': 'fakeLUN', 'vserver': 'fake_vserver'}) self.driver._get_lun_by_args = mock.Mock(return_value=[lun]) self.driver._add_lun_to_table = mock.Mock() self.driver._update_stale_vols = mock.Mock() self.driver._check_clone_status = mock.Mock() self.driver._set_space_reserve = mock.Mock() self.driver._clone_lun('fakeLUN', 'newFakeLUN', block_count=bc) self.assertEqual(2, self.driver.client.invoke_successfully.call_count) def test_clone_lun_zero_block_count(self): """Test for when clone lun is not passed a block count.""" self.driver._get_lun_attr = mock.Mock(return_value={'Volume': 'fakeLUN', 'Path': '/vol/fake/lun1'}) self.driver.client.invoke_successfully = mock.Mock( return_value=mock.MagicMock()) lun = ntapi.NaElement.create_node_with_children( 'lun-info', **{'alignment': 'indeterminate', 'block-size': '512', 'comment': '', 'creation-timestamp': '1354536362', 'is-space-alloc-enabled': 'false', 'is-space-reservation-enabled': 'true', 'mapped': 'false', 'multiprotocol-type': 'linux', 'online': 'true', 'path': '/vol/fakeLUN/lun1', 'prefix-size': '0', 'qtree': '', 'read-only': 'false', 'serial-number': '2FfGI$APyN68', 'share-state': 'none', 'size': '20971520', 'size-used': '0', 'staging': 'false', 'suffix-size': '0', 'uuid': 'cec1f3d7-3d41-11e2-9cf4-123478563412', 'volume': 'fakeLUN', 'vserver': 'fake_vserver'}) self.driver._get_lun_by_args = mock.Mock(return_value=[lun]) self.driver._add_lun_to_table = mock.Mock() self.driver._update_stale_vols = mock.Mock() self.driver._check_clone_status = mock.Mock() self.driver._set_space_reserve = mock.Mock() self.driver._clone_lun('fakeLUN', 'newFakeLUN') self.assertEqual(1, self.driver.client.invoke_successfully.call_count) cinder-2014.1.5/cinder/tests/test_sheepdog.py0000664000567000056700000001141512540642606022174 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2013 Zelin.io # All Rights Reserved. # # 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. import contextlib import os import tempfile from cinder.image import image_utils from cinder.openstack.common import processutils from cinder import test from cinder import units from cinder.volume.drivers.sheepdog import SheepdogDriver COLLIE_NODE_INFO = """ 0 107287605248 3623897354 3% Total 107287605248 3623897354 3% 54760833024 """ COLLIE_CLUSTER_INFO_0_5 = """ Cluster status: running Cluster created at Tue Jun 25 19:51:41 2013 Epoch Time Version 2013-06-25 19:51:41 1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002] """ COLLIE_CLUSTER_INFO_0_6 = """ Cluster status: running, auto-recovery enabled Cluster created at Tue Jun 25 19:51:41 2013 Epoch Time Version 2013-06-25 19:51:41 1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002] """ class FakeImageService: def download(self, context, image_id, path): pass class SheepdogTestCase(test.TestCase): def setUp(self): super(SheepdogTestCase, self).setUp() self.driver = SheepdogDriver() def test_update_volume_stats(self): def fake_stats(*args): return COLLIE_NODE_INFO, '' self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict( volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb=float(107287605248) / units.GiB, free_capacity_gb=float(107287605248 - 3623897354) / units.GiB, reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_update_volume_stats_error(self): def fake_stats(*args): raise processutils.ProcessExecutionError() self.stubs.Set(self.driver, '_execute', fake_stats) expected = dict( volume_backend_name='sheepdog', vendor_name='Open Source', dirver_version=self.driver.VERSION, storage_protocol='sheepdog', total_capacity_gb='unknown', free_capacity_gb='unknown', reserved_percentage=0, QoS_support=False) actual = self.driver.get_volume_stats(True) self.assertDictMatch(expected, actual) def test_check_for_setup_error_0_5(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_5, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_check_for_setup_error_0_6(self): def fake_stats(*args): return COLLIE_CLUSTER_INFO_0_6, '' self.stubs.Set(self.driver, '_execute', fake_stats) self.driver.check_for_setup_error() def test_copy_image_to_volume(self): @contextlib.contextmanager def fake_temp_file(dir): class FakeTmp: def __init__(self, name): self.name = name yield FakeTmp('test') def fake_try_execute(obj, *command, **kwargs): return True self.stubs.Set(tempfile, 'NamedTemporaryFile', fake_temp_file) self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(image_utils, 'fetch_verify_image', lambda w, x, y, z: None) self.stubs.Set(image_utils, 'convert_image', lambda x, y, z: None) self.stubs.Set(SheepdogDriver, '_try_execute', fake_try_execute) self.driver.copy_image_to_volume(None, {'name': 'test', 'size': 1}, FakeImageService(), None) def test_extend_volume(self): fake_name = u'volume-00000001' fake_size = '20' fake_vol = {'project_id': 'testprjid', 'name': fake_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'} self.mox.StubOutWithMock(self.driver, '_resize') size = int(fake_size) * units.GiB self.driver._resize(fake_vol, size=size) self.mox.ReplayAll() self.driver.extend_volume(fake_vol, fake_size) self.mox.VerifyAll() cinder-2014.1.5/cinder/tests/test_misc.py0000664000567000056700000000424712540642606021336 0ustar jenkinsjenkins00000000000000 # Copyright 2010 OpenStack Foundation # # 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. import glob import os from cinder import exception from cinder import test class ExceptionTestCase(test.TestCase): @staticmethod def _raise_exc(exc): raise exc() def test_exceptions_raise(self): # NOTE(dprince): disable format errors since we are not passing kwargs self.flags(fatal_exception_format_errors=False) for name in dir(exception): exc = getattr(exception, name) if isinstance(exc, type): self.assertRaises(exc, self._raise_exc, exc) class ProjectTestCase(test.TestCase): def test_all_migrations_have_downgrade(self): topdir = os.path.normpath(os.path.dirname(__file__) + '/../../') py_glob = os.path.join(topdir, "cinder", "db", "sqlalchemy", "migrate_repo", "versions", "*.py") missing_downgrade = [] for path in glob.iglob(py_glob): has_upgrade = False has_downgrade = False with open(path, "r") as f: for line in f: if 'def upgrade(' in line: has_upgrade = True if 'def downgrade(' in line: has_downgrade = True if has_upgrade and not has_downgrade: fname = os.path.basename(path) missing_downgrade.append(fname) helpful_msg = (_("The following migrations are missing a downgrade:" "\n\t%s") % '\n\t'.join(sorted(missing_downgrade))) self.assertFalse(missing_downgrade, msg=helpful_msg) cinder-2014.1.5/cinder/tests/fake_notifier.py0000664000567000056700000000466212540642606022152 0ustar jenkinsjenkins00000000000000# Copyright 2014 Red Hat, Inc. # # 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. import collections import functools import anyjson from oslo import messaging from cinder import rpc NOTIFICATIONS = [] def reset(): del NOTIFICATIONS[:] FakeMessage = collections.namedtuple('Message', ['publisher_id', 'priority', 'event_type', 'payload']) class FakeNotifier(object): def __init__(self, transport, publisher_id, serializer=None): self.transport = transport self.publisher_id = publisher_id for priority in ['debug', 'info', 'warn', 'error', 'critical']: setattr(self, priority, functools.partial(self._notify, priority.upper())) self._serializer = serializer or messaging.serializer.NoOpSerializer() def prepare(self, publisher_id=None): if publisher_id is None: publisher_id = self.publisher_id return self.__class__(self.transport, publisher_id, self._serializer) def _notify(self, priority, ctxt, event_type, payload): payload = self._serializer.serialize_entity(ctxt, payload) # NOTE(sileht): simulate the kombu serializer # this permit to raise an exception if something have not # been serialized correctly anyjson.serialize(payload) msg = dict(publisher_id=self.publisher_id, priority=priority, event_type=event_type, payload=payload) NOTIFICATIONS.append(msg) def stub_notifier(stubs): stubs.Set(messaging, 'Notifier', FakeNotifier) if rpc.NOTIFIER: serializer = getattr(rpc.NOTIFIER, '_serializer', None) stubs.Set(rpc, 'NOTIFIER', FakeNotifier(rpc.NOTIFIER.transport, rpc.NOTIFIER.publisher_id, serializer=serializer)) cinder-2014.1.5/cinder/tests/declare_conf.py0000664000567000056700000000152112540642606021740 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. from oslo.config import cfg CONF = cfg.CONF CONF.register_opt(cfg.IntOpt('answer', default=42, help='test conf')) cinder-2014.1.5/cinder/tests/test_volume.py0000664000567000056700000042432512540642606021715 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. """ Tests for Volume Code. """ import contextlib import datetime import mock import os import shutil import socket import tempfile import eventlet import mox from oslo.config import cfg from stevedore import extension from taskflow.engines.action_engine import engine from cinder.backup import driver as backup_driver from cinder.brick.iscsi import iscsi from cinder.brick.local_dev import lvm as brick_lvm from cinder import context from cinder import db from cinder import exception from cinder.image import image_utils from cinder import keymgr from cinder.openstack.common import fileutils from cinder.openstack.common import importutils from cinder.openstack.common import jsonutils import cinder.policy from cinder import quota from cinder import test from cinder.tests.brick.fake_lvm import FakeBrickLVM from cinder.tests import conf_fixture from cinder.tests import fake_notifier from cinder.tests.image import fake as fake_image from cinder.tests.keymgr import fake as fake_keymgr from cinder.tests import utils as tests_utils from cinder import units from cinder import utils import cinder.volume from cinder.volume import configuration as conf from cinder.volume import driver from cinder.volume.drivers import lvm from cinder.volume.manager import VolumeManager from cinder.volume import rpcapi as volume_rpcapi from cinder.volume import utils as volutils from cinder.volume import volume_types QUOTAS = quota.QUOTAS CONF = cfg.CONF ENCRYPTION_PROVIDER = 'nova.volume.encryptors.cryptsetup.CryptsetupEncryptor' fake_opt = [ cfg.StrOpt('fake_opt', default='fake', help='fake opts') ] FAKE_UUID = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa' class FakeImageService: def __init__(self, db_driver=None, image_service=None): pass def show(self, context, image_id): return {'size': 2 * units.GiB, 'disk_format': 'raw', 'container_format': 'bare'} class BaseVolumeTestCase(test.TestCase): """Test Case for volumes.""" def setUp(self): super(BaseVolumeTestCase, self).setUp() self.extension_manager = extension.ExtensionManager( "BaseVolumeTestCase") vol_tmpdir = tempfile.mkdtemp() self.flags(volumes_dir=vol_tmpdir, notification_driver=["test"]) self.volume = importutils.import_object(CONF.volume_manager) self.context = context.get_admin_context() self.context.user_id = 'fake' self.context.project_id = 'fake' self.volume_params = { 'status': 'creating', 'host': CONF.host, 'size': 1} self.stubs.Set(iscsi.TgtAdm, '_get_target', self.fake_get_target) self.stubs.Set(brick_lvm.LVM, 'get_all_volume_groups', self.fake_get_all_volume_groups) fake_image.stub_out_image_service(self.stubs) self.stubs.Set(brick_lvm.LVM, '_vg_exists', lambda x: True) self.stubs.Set(os.path, 'exists', lambda x: True) self.volume.driver.set_initialized() self.volume.stats = {'allocated_capacity_gb': 0} # keep ordered record of what we execute self.called = [] def tearDown(self): try: shutil.rmtree(CONF.volumes_dir) except OSError: pass fake_notifier.reset() super(BaseVolumeTestCase, self).tearDown() def fake_get_target(obj, iqn): return 1 def fake_get_all_volume_groups(obj, vg_name=None, no_suffix=True): return [{'name': 'cinder-volumes', 'size': '5.00', 'available': '2.50', 'lv_count': '2', 'uuid': 'vR1JU3-FAKE-C4A9-PQFh-Mctm-9FwA-Xwzc1m'}] class VolumeTestCase(BaseVolumeTestCase): def setUp(self): super(VolumeTestCase, self).setUp() self.stubs.Set(volutils, 'clear_volume', lambda a, b, volume_clear=mox.IgnoreArg(), volume_clear_size=mox.IgnoreArg(), lvm_type=mox.IgnoreArg(): None) def test_init_host_clears_downloads(self): """Test that init_host will unwedge a volume stuck in downloading.""" volume = tests_utils.create_volume(self.context, status='downloading', size=0, host=CONF.host) volume_id = volume['id'] self.volume.init_host() volume = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(volume['status'], "error") self.volume.delete_volume(self.context, volume_id) @mock.patch.object(QUOTAS, 'reserve') @mock.patch.object(QUOTAS, 'commit') @mock.patch.object(QUOTAS, 'rollback') def test_create_driver_not_initialized(self, reserve, commit, rollback): self.volume.driver._initialized = False def fake_reserve(context, expire=None, project_id=None, **deltas): return ["RESERVATION"] def fake_commit_and_rollback(context, reservations, project_id=None): pass reserve.return_value = fake_reserve commit.return_value = fake_commit_and_rollback rollback.return_value = fake_commit_and_rollback volume = tests_utils.create_volume( self.context, availability_zone=CONF.storage_availability_zone, **self.volume_params) volume_id = volume['id'] self.assertIsNone(volume['encryption_key_id']) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(exception.DriverNotInitialized, self.volume.create_volume, self.context, volume_id) # NOTE(flaper87): The volume status should be error_deleting. volume = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(volume.status, "error") db.volume_destroy(context.get_admin_context(), volume_id) @mock.patch.object(QUOTAS, 'reserve') @mock.patch.object(QUOTAS, 'commit') @mock.patch.object(QUOTAS, 'rollback') def test_delete_driver_not_initialized(self, reserve, commit, rollback): # NOTE(flaper87): Set initialized to False self.volume.driver._initialized = False def fake_reserve(context, expire=None, project_id=None, **deltas): return ["RESERVATION"] def fake_commit_and_rollback(context, reservations, project_id=None): pass reserve.return_value = fake_reserve commit.return_value = fake_commit_and_rollback rollback.return_value = fake_commit_and_rollback volume = tests_utils.create_volume( self.context, availability_zone=CONF.storage_availability_zone, **self.volume_params) volume_id = volume['id'] self.assertIsNone(volume['encryption_key_id']) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.assertRaises(exception.DriverNotInitialized, self.volume.delete_volume, self.context, volume_id) # NOTE(flaper87): The volume status should be error. volume = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(volume.status, "error_deleting") db.volume_destroy(context.get_admin_context(), volume_id) def test_create_delete_volume(self): """Test volume can be created and deleted.""" # Need to stub out reserve, commit, and rollback def fake_reserve(context, expire=None, project_id=None, **deltas): return ["RESERVATION"] def fake_commit(context, reservations, project_id=None): pass def fake_rollback(context, reservations, project_id=None): pass self.stubs.Set(QUOTAS, "reserve", fake_reserve) self.stubs.Set(QUOTAS, "commit", fake_commit) self.stubs.Set(QUOTAS, "rollback", fake_rollback) volume = tests_utils.create_volume( self.context, availability_zone=CONF.storage_availability_zone, **self.volume_params) volume_id = volume['id'] self.assertIsNone(volume['encryption_key_id']) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.volume.create_volume(self.context, volume_id) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) msg = fake_notifier.NOTIFICATIONS[0] self.assertEqual(msg['event_type'], 'volume.create.start') expected = { 'status': 'creating', 'display_name': 'test_volume', 'availability_zone': 'nova', 'tenant_id': 'fake', 'created_at': 'DONTCARE', 'volume_id': volume_id, 'volume_type': None, 'snapshot_id': None, 'user_id': 'fake', 'launched_at': 'DONTCARE', 'size': 1, } self.assertDictMatch(msg['payload'], expected) msg = fake_notifier.NOTIFICATIONS[1] self.assertEqual(msg['event_type'], 'volume.create.end') expected['status'] = 'available' self.assertDictMatch(msg['payload'], expected) self.assertEqual(volume_id, db.volume_get(context.get_admin_context(), volume_id).id) self.volume.delete_volume(self.context, volume_id) vol = db.volume_get(context.get_admin_context(read_deleted='yes'), volume_id) self.assertEqual(vol['status'], 'deleted') self.assertEqual(len(fake_notifier.NOTIFICATIONS), 4) msg = fake_notifier.NOTIFICATIONS[2] self.assertEqual(msg['event_type'], 'volume.delete.start') self.assertDictMatch(msg['payload'], expected) msg = fake_notifier.NOTIFICATIONS[3] self.assertEqual(msg['event_type'], 'volume.delete.end') self.assertDictMatch(msg['payload'], expected) self.assertRaises(exception.NotFound, db.volume_get, self.context, volume_id) def test_create_delete_volume_with_metadata(self): """Test volume can be created with metadata and deleted.""" test_meta = {'fake_key': 'fake_value'} volume = tests_utils.create_volume(self.context, metadata=test_meta, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) result_meta = { volume.volume_metadata[0].key: volume.volume_metadata[0].value} self.assertEqual(result_meta, test_meta) self.volume.delete_volume(self.context, volume_id) self.assertRaises(exception.NotFound, db.volume_get, self.context, volume_id) def test_create_volume_with_invalid_metadata(self): """Test volume create with too much metadata fails.""" volume_api = cinder.volume.api.API() test_meta = {'fake_key': 'fake_value' * 256} self.assertRaises(exception.InvalidVolumeMetadataSize, volume_api.create, self.context, 1, 'name', 'description', None, None, None, test_meta) def test_create_volume_uses_default_availability_zone(self): """Test setting availability_zone correctly during volume create.""" volume_api = cinder.volume.api.API() def fake_list_availability_zones(): return ({'name': 'az1', 'available': True}, {'name': 'az2', 'available': True}, {'name': 'default-az', 'available': True}) self.stubs.Set(volume_api, 'list_availability_zones', fake_list_availability_zones) # Test backwards compatibility, default_availability_zone not set CONF.set_override('storage_availability_zone', 'az2') volume = volume_api.create(self.context, 1, 'name', 'description') self.assertEqual(volume['availability_zone'], 'az2') CONF.set_override('default_availability_zone', 'default-az') volume = volume_api.create(self.context, 1, 'name', 'description') self.assertEqual(volume['availability_zone'], 'default-az') def test_create_volume_with_volume_type(self): """Test volume creation with default volume type.""" def fake_reserve(context, expire=None, project_id=None, **deltas): return ["RESERVATION"] def fake_commit(context, reservations, project_id=None): pass def fake_rollback(context, reservations, project_id=None): pass self.stubs.Set(QUOTAS, "reserve", fake_reserve) self.stubs.Set(QUOTAS, "commit", fake_commit) self.stubs.Set(QUOTAS, "rollback", fake_rollback) volume_api = cinder.volume.api.API() # Create volume with default volume type while default # volume type doesn't exist, volume_type_id should be NULL volume = volume_api.create(self.context, 1, 'name', 'description') self.assertIsNone(volume['volume_type_id']) self.assertIsNone(volume['encryption_key_id']) # Create default volume type vol_type = conf_fixture.def_vol_type db.volume_type_create(context.get_admin_context(), {'name': vol_type, 'extra_specs': {}}) db_vol_type = db.volume_type_get_by_name(context.get_admin_context(), vol_type) # Create volume with default volume type volume = volume_api.create(self.context, 1, 'name', 'description') self.assertEqual(volume['volume_type_id'], db_vol_type.get('id')) self.assertIsNone(volume['encryption_key_id']) # Create volume with specific volume type vol_type = 'test' db.volume_type_create(context.get_admin_context(), {'name': vol_type, 'extra_specs': {}}) db_vol_type = db.volume_type_get_by_name(context.get_admin_context(), vol_type) volume = volume_api.create(self.context, 1, 'name', 'description', volume_type=db_vol_type) self.assertEqual(volume['volume_type_id'], db_vol_type.get('id')) def test_create_volume_with_encrypted_volume_type(self): self.stubs.Set(keymgr, "API", fake_keymgr.fake_api) ctxt = context.get_admin_context() db.volume_type_create(ctxt, {'id': '61298380-0c12-11e3-bfd6-4b48424183be', 'name': 'LUKS'}) db.volume_type_encryption_create( ctxt, '61298380-0c12-11e3-bfd6-4b48424183be', {'control_location': 'front-end', 'provider': ENCRYPTION_PROVIDER}) volume_api = cinder.volume.api.API() db_vol_type = db.volume_type_get_by_name(ctxt, 'LUKS') volume = volume_api.create(self.context, 1, 'name', 'description', volume_type=db_vol_type) self.assertEqual(volume['volume_type_id'], db_vol_type.get('id')) self.assertIsNotNone(volume['encryption_key_id']) def test_create_delete_volume_with_encrypted_volume_type(self): self.stubs.Set(keymgr, "API", fake_keymgr.fake_api) ctxt = context.get_admin_context() db.volume_type_create(ctxt, {'id': '61298380-0c12-11e3-bfd6-4b48424183be', 'name': 'LUKS'}) db.volume_type_encryption_create( ctxt, '61298380-0c12-11e3-bfd6-4b48424183be', {'control_location': 'front-end', 'provider': ENCRYPTION_PROVIDER}) volume_api = cinder.volume.api.API() db_vol_type = db.volume_type_get_by_name(ctxt, 'LUKS') volume = volume_api.create(self.context, 1, 'name', 'description', volume_type=db_vol_type) self.assertIsNotNone(volume.get('encryption_key_id', None)) self.assertEqual(volume['volume_type_id'], db_vol_type.get('id')) self.assertIsNotNone(volume['encryption_key_id']) volume['host'] = 'fake_host' volume['status'] = 'available' volume_api.delete(self.context, volume) volume = db.volume_get(self.context, volume['id']) self.assertEqual('deleting', volume['status']) db.volume_destroy(self.context, volume['id']) self.assertRaises(exception.NotFound, db.volume_get, self.context, volume['id']) def test_extra_capabilities(self): # Test valid extra_capabilities. fake_capabilities = {'key1': 1, 'key2': 2} with mock.patch.object(jsonutils, 'loads') as mock_loads: mock_loads.return_value = fake_capabilities manager = VolumeManager() manager.driver.set_initialized() manager.publish_service_capabilities(self.context) self.assertTrue(mock_loads.called) volume_stats = manager.last_capabilities self.assertEqual(volume_stats['key1'], fake_capabilities['key1']) self.assertEqual(volume_stats['key2'], fake_capabilities['key2']) def test_extra_capabilities_fail(self): with mock.patch.object(jsonutils, 'loads') as mock_loads: mock_loads.side_effect = exception.CinderException('test') self.assertRaises(exception.CinderException, VolumeManager) def test_delete_busy_volume(self): """Test volume survives deletion if driver reports it as busy.""" volume = tests_utils.create_volume(self.context, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) self.mox.StubOutWithMock(self.volume.driver, 'delete_volume') self.volume.driver.delete_volume( mox.IgnoreArg()).AndRaise(exception.VolumeIsBusy( volume_name='fake')) self.mox.ReplayAll() res = self.volume.delete_volume(self.context, volume_id) self.assertEqual(True, res) volume_ref = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(volume_id, volume_ref.id) self.assertEqual("available", volume_ref.status) self.mox.UnsetStubs() self.volume.delete_volume(self.context, volume_id) def test_get_volume_different_tenant(self): """Test can't get volume of another tenant when viewable_admin_meta.""" volume = tests_utils.create_volume(self.context, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) another_context = context.RequestContext('another_user_id', 'another_project_id', is_admin=False) self.assertNotEqual(another_context.project_id, self.context.project_id) volume_api = cinder.volume.api.API() self.assertRaises(exception.VolumeNotFound, volume_api.get, another_context, volume_id, viewable_admin_meta=True) self.assertEqual(volume_id, volume_api.get(self.context, volume_id)['id']) self.volume.delete_volume(self.context, volume_id) def test_delete_volume_in_error_extending(self): """Test volume can be deleted in error_extending stats.""" # create a volume volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) # delete 'error_extending' volume db.volume_update(self.context, volume['id'], {'status': 'error_extending'}) self.volume.delete_volume(self.context, volume['id']) self.assertRaises(exception.NotFound, db.volume_get, self.context, volume['id']) def test_create_volume_from_snapshot(self): """Test volume can be created from a snapshot.""" volume_src = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume_src['id']) snapshot_id = self._create_snapshot(volume_src['id'])['id'] self.volume.create_snapshot(self.context, volume_src['id'], snapshot_id) volume_dst = tests_utils.create_volume(self.context, snapshot_id=snapshot_id, **self.volume_params) self.volume.create_volume(self.context, volume_dst['id'], snapshot_id) self.assertEqual(volume_dst['id'], db.volume_get( context.get_admin_context(), volume_dst['id']).id) self.assertEqual(snapshot_id, db.volume_get(context.get_admin_context(), volume_dst['id']).snapshot_id) self.volume.delete_volume(self.context, volume_dst['id']) self.volume.delete_snapshot(self.context, snapshot_id) self.volume.delete_volume(self.context, volume_src['id']) @mock.patch('cinder.volume.flows.api.create_volume.get_flow') def test_create_volume_from_snapshot_with_types(self, _get_flow): """Test volume create from snapshot with types including mistmatch.""" volume_api = cinder.volume.api.API() db.volume_type_create(context.get_admin_context(), {'name': 'foo', 'extra_specs': {}}) db.volume_type_create(context.get_admin_context(), {'name': 'biz', 'extra_specs': {}}) foo_type = db.volume_type_get_by_name(context.get_admin_context(), 'foo') biz_type = db.volume_type_get_by_name(context.get_admin_context(), 'biz') snapshot = {'id': 1234, 'status': 'available', 'volume_size': 10, 'volume_type_id': biz_type['id']} # Make sure the case of specifying a type that # doesn't match the snapshots type fails self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', volume_type=foo_type, snapshot=snapshot) # Make sure that trying to specify a type # when the snapshots type is None fails snapshot['volume_type_id'] = None self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', volume_type=foo_type, snapshot=snapshot) snapshot['volume_type_id'] = foo_type['id'] volume_api.create(self.context, size=1, name='fake_name', description='fake_desc', volume_type=foo_type, snapshot=snapshot) db.volume_type_destroy(context.get_admin_context(), foo_type['id']) db.volume_type_destroy(context.get_admin_context(), biz_type['id']) @mock.patch('cinder.volume.flows.api.create_volume.get_flow') def test_create_volume_from_source_with_types(self, _get_flow): """Test volume create from source with types including mistmatch.""" volume_api = cinder.volume.api.API() db.volume_type_create(context.get_admin_context(), {'name': 'foo', 'extra_specs': {}}) db.volume_type_create(context.get_admin_context(), {'name': 'biz', 'extra_specs': {}}) foo_type = db.volume_type_get_by_name(context.get_admin_context(), 'foo') biz_type = db.volume_type_get_by_name(context.get_admin_context(), 'biz') source_vol = {'id': 1234, 'status': 'available', 'volume_size': 10, 'volume_type': biz_type, 'volume_type_id': biz_type['id']} # Make sure the case of specifying a type that # doesn't match the snapshots type fails self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', volume_type=foo_type, source_volume=source_vol) # Make sure that trying to specify a type # when the source type is None fails source_vol['volume_type_id'] = None source_vol['volume_type'] = None self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', volume_type=foo_type, source_volume=source_vol) source_vol['volume_type_id'] = biz_type['id'] source_vol['volume_type'] = biz_type volume_api.create(self.context, size=1, name='fake_name', description='fake_desc', volume_type=biz_type, source_volume=source_vol) db.volume_type_destroy(context.get_admin_context(), foo_type['id']) db.volume_type_destroy(context.get_admin_context(), biz_type['id']) def test_create_snapshot_driver_not_initialized(self): volume_src = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume_src['id']) snapshot_id = self._create_snapshot(volume_src['id'])['id'] # NOTE(flaper87): Set initialized to False self.volume.driver._initialized = False self.assertRaises(exception.DriverNotInitialized, self.volume.create_snapshot, self.context, volume_src['id'], snapshot_id) # NOTE(flaper87): The volume status should be error. snapshot = db.snapshot_get(context.get_admin_context(), snapshot_id) self.assertEqual(snapshot.status, "error") # NOTE(flaper87): Set initialized to True, # lets cleanup the mess self.volume.driver._initialized = True self.volume.delete_snapshot(self.context, snapshot_id) self.volume.delete_volume(self.context, volume_src['id']) def _mock_synchronized(self, name, *s_args, **s_kwargs): def inner_sync1(f): def inner_sync2(*args, **kwargs): self.called.append('lock-%s' % (name)) ret = f(*args, **kwargs) self.called.append('unlock-%s' % (name)) return ret return inner_sync2 return inner_sync1 def test_create_volume_from_snapshot_check_locks(self): # mock the synchroniser so we can record events self.stubs.Set(utils, 'synchronized', self._mock_synchronized) self.stubs.Set(self.volume.driver, 'create_volume_from_snapshot', lambda *args, **kwargs: None) orig_flow = engine.ActionEngine.run def mock_flow_run(*args, **kwargs): # ensure the lock has been taken self.assertEqual(len(self.called), 1) # now proceed with the flow. ret = orig_flow(*args, **kwargs) return ret # create source volume src_vol = tests_utils.create_volume(self.context, **self.volume_params) src_vol_id = src_vol['id'] # no lock self.volume.create_volume(self.context, src_vol_id) snap_id = self._create_snapshot(src_vol_id)['id'] # no lock self.volume.create_snapshot(self.context, src_vol_id, snap_id) dst_vol = tests_utils.create_volume(self.context, snapshot_id=snap_id, **self.volume_params) dst_vol_id = dst_vol['id'] admin_ctxt = context.get_admin_context() # mock the flow runner so we can do some checks self.stubs.Set(engine.ActionEngine, 'run', mock_flow_run) # locked self.volume.create_volume(self.context, volume_id=dst_vol_id, snapshot_id=snap_id) self.assertEqual(len(self.called), 2) self.assertEqual(dst_vol_id, db.volume_get(admin_ctxt, dst_vol_id).id) self.assertEqual(snap_id, db.volume_get(admin_ctxt, dst_vol_id).snapshot_id) # locked self.volume.delete_volume(self.context, dst_vol_id) self.assertEqual(len(self.called), 4) # locked self.volume.delete_snapshot(self.context, snap_id) self.assertEqual(len(self.called), 6) # locked self.volume.delete_volume(self.context, src_vol_id) self.assertEqual(len(self.called), 8) self.assertEqual(self.called, ['lock-%s' % ('%s-delete_snapshot' % (snap_id)), 'unlock-%s' % ('%s-delete_snapshot' % (snap_id)), 'lock-%s' % ('%s-delete_volume' % (dst_vol_id)), 'unlock-%s' % ('%s-delete_volume' % (dst_vol_id)), 'lock-%s' % ('%s-delete_snapshot' % (snap_id)), 'unlock-%s' % ('%s-delete_snapshot' % (snap_id)), 'lock-%s' % ('%s-delete_volume' % (src_vol_id)), 'unlock-%s' % ('%s-delete_volume' % (src_vol_id))]) def test_create_volume_from_volume_check_locks(self): # mock the synchroniser so we can record events self.stubs.Set(utils, 'synchronized', self._mock_synchronized) orig_flow = engine.ActionEngine.run def mock_flow_run(*args, **kwargs): # ensure the lock has been taken self.assertEqual(len(self.called), 1) # now proceed with the flow. ret = orig_flow(*args, **kwargs) return ret # create source volume src_vol = tests_utils.create_volume(self.context, **self.volume_params) src_vol_id = src_vol['id'] # no lock self.volume.create_volume(self.context, src_vol_id) dst_vol = tests_utils.create_volume(self.context, source_volid=src_vol_id, **self.volume_params) dst_vol_id = dst_vol['id'] admin_ctxt = context.get_admin_context() # mock the flow runner so we can do some checks self.stubs.Set(engine.ActionEngine, 'run', mock_flow_run) # locked self.volume.create_volume(self.context, volume_id=dst_vol_id, source_volid=src_vol_id) self.assertEqual(len(self.called), 2) self.assertEqual(dst_vol_id, db.volume_get(admin_ctxt, dst_vol_id).id) self.assertEqual(src_vol_id, db.volume_get(admin_ctxt, dst_vol_id).source_volid) # locked self.volume.delete_volume(self.context, dst_vol_id) self.assertEqual(len(self.called), 4) # locked self.volume.delete_volume(self.context, src_vol_id) self.assertEqual(len(self.called), 6) self.assertEqual(self.called, ['lock-%s' % ('%s-delete_volume' % (src_vol_id)), 'unlock-%s' % ('%s-delete_volume' % (src_vol_id)), 'lock-%s' % ('%s-delete_volume' % (dst_vol_id)), 'unlock-%s' % ('%s-delete_volume' % (dst_vol_id)), 'lock-%s' % ('%s-delete_volume' % (src_vol_id)), 'unlock-%s' % ('%s-delete_volume' % (src_vol_id))]) def test_create_volume_from_volume_delete_lock_taken(self): # create source volume src_vol = tests_utils.create_volume(self.context, **self.volume_params) src_vol_id = src_vol['id'] # no lock self.volume.create_volume(self.context, src_vol_id) dst_vol = tests_utils.create_volume(self.context, source_volid=src_vol_id, **self.volume_params) dst_vol_id = dst_vol['id'] admin_ctxt = context.get_admin_context() orig_elevated = self.context.elevated ctxt_deepcopy = self.context.deepcopy() gthreads = [] def mock_elevated(*args, **kwargs): # unset mock so it is only called once self.stubs.Set(self.context, 'elevated', orig_elevated) # we expect this to block and then fail t = eventlet.spawn(self.volume.create_volume, ctxt_deepcopy, volume_id=dst_vol_id, source_volid=src_vol_id) gthreads.append(t) return orig_elevated(*args, **kwargs) # mock something from early on in the delete operation and within the # lock so that when we do the create we expect it to block. self.stubs.Set(self.context, 'elevated', mock_elevated) # locked self.volume.delete_volume(self.context, src_vol_id) # we expect the volume create to fail with the following err since the # source volume was deleted while the create was locked. Note that the # volume is still in the db since it was created by the test prior to # calling manager.create_volume. self.assertRaises(exception.VolumeNotFound, gthreads[0].wait) def test_create_volume_from_snapshot_delete_lock_taken(self): # create source volume src_vol = tests_utils.create_volume(self.context, **self.volume_params) src_vol_id = src_vol['id'] # no lock self.volume.create_volume(self.context, src_vol_id) # create snapshot snap_id = self._create_snapshot(src_vol_id)['id'] # no lock self.volume.create_snapshot(self.context, src_vol_id, snap_id) # create vol from snapshot... dst_vol = tests_utils.create_volume(self.context, source_volid=src_vol_id, **self.volume_params) dst_vol_id = dst_vol['id'] admin_ctxt = context.get_admin_context() orig_elevated = self.context.elevated ctxt_deepcopy = self.context.deepcopy() gthreads = [] def mock_elevated(*args, **kwargs): # unset mock so it is only called once self.stubs.Set(self.context, 'elevated', orig_elevated) # We expect this to block and then fail t = eventlet.spawn(self.volume.create_volume, ctxt_deepcopy, volume_id=dst_vol_id, snapshot_id=snap_id) gthreads.append(t) return orig_elevated(*args, **kwargs) # mock something from early on in the delete operation and within the # lock so that when we do the create we expect it to block. self.stubs.Set(self.context, 'elevated', mock_elevated) # locked self.volume.delete_snapshot(self.context, snap_id) # we expect the volume create to fail with the following err since the # snapshot was deleted while the create was locked. Note that the # volume is still in the db since it was created by the test prior to # calling manager.create_volume. self.assertRaises(exception.SnapshotNotFound, gthreads[0].wait) # locked self.volume.delete_volume(self.context, src_vol_id) # make sure it is gone self.assertRaises(exception.VolumeNotFound, db.volume_get, self.context, src_vol_id) def test_create_volume_from_snapshot_with_encryption(self): """Test volume can be created from a snapshot of an encrypted volume. """ self.stubs.Set(keymgr, 'API', fake_keymgr.fake_api) ctxt = context.get_admin_context() db.volume_type_create(ctxt, {'id': '61298380-0c12-11e3-bfd6-4b48424183be', 'name': 'LUKS'}) db.volume_type_encryption_create( ctxt, '61298380-0c12-11e3-bfd6-4b48424183be', {'control_location': 'front-end', 'provider': ENCRYPTION_PROVIDER}) volume_api = cinder.volume.api.API() db_vol_type = db.volume_type_get_by_name(context.get_admin_context(), 'LUKS') volume_src = volume_api.create(self.context, 1, 'name', 'description', volume_type=db_vol_type) snapshot_ref = volume_api.create_snapshot_force(self.context, volume_src, 'name', 'description') snapshot_ref['status'] = 'available' # status must be available volume_dst = volume_api.create(self.context, 1, 'name', 'description', snapshot=snapshot_ref) self.assertEqual(volume_dst['id'], db.volume_get( context.get_admin_context(), volume_dst['id']).id) self.assertEqual(snapshot_ref['id'], db.volume_get(context.get_admin_context(), volume_dst['id']).snapshot_id) # ensure encryption keys match self.assertIsNotNone(volume_src['encryption_key_id']) self.assertIsNotNone(volume_dst['encryption_key_id']) key_manager = volume_api.key_manager # must use *same* key manager volume_src_key = key_manager.get_key(self.context, volume_src['encryption_key_id']) volume_dst_key = key_manager.get_key(self.context, volume_dst['encryption_key_id']) self.assertEqual(volume_src_key, volume_dst_key) def test_create_volume_from_encrypted_volume(self): """Test volume can be created from an encrypted volume.""" self.stubs.Set(keymgr, 'API', fake_keymgr.fake_api) volume_api = cinder.volume.api.API() ctxt = context.get_admin_context() db.volume_type_create(ctxt, {'id': '61298380-0c12-11e3-bfd6-4b48424183be', 'name': 'LUKS'}) db.volume_type_encryption_create( ctxt, '61298380-0c12-11e3-bfd6-4b48424183be', {'control_location': 'front-end', 'provider': ENCRYPTION_PROVIDER}) db_vol_type = db.volume_type_get_by_name(context.get_admin_context(), 'LUKS') volume_src = volume_api.create(self.context, 1, 'name', 'description', volume_type=db_vol_type) volume_src['status'] = 'available' # status must be available volume_dst = volume_api.create(self.context, 1, 'name', 'description', source_volume=volume_src) self.assertEqual(volume_dst['id'], db.volume_get(context.get_admin_context(), volume_dst['id']).id) self.assertEqual(volume_src['id'], db.volume_get(context.get_admin_context(), volume_dst['id']).source_volid) # ensure encryption keys match self.assertIsNotNone(volume_src['encryption_key_id']) self.assertIsNotNone(volume_dst['encryption_key_id']) key_manager = volume_api.key_manager # must use *same* key manager volume_src_key = key_manager.get_key(self.context, volume_src['encryption_key_id']) volume_dst_key = key_manager.get_key(self.context, volume_dst['encryption_key_id']) self.assertEqual(volume_src_key, volume_dst_key) def test_create_volume_from_snapshot_fail_bad_size(self): """Test volume can't be created from snapshot with bad volume size.""" volume_api = cinder.volume.api.API() snapshot = {'id': 1234, 'status': 'available', 'volume_size': 10} self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', snapshot=snapshot) def test_create_volume_from_snapshot_fail_wrong_az(self): """Test volume can't be created from snapshot in a different az.""" volume_api = cinder.volume.api.API() def fake_list_availability_zones(): return ({'name': 'nova', 'available': True}, {'name': 'az2', 'available': True}) self.stubs.Set(volume_api, 'list_availability_zones', fake_list_availability_zones) volume_src = tests_utils.create_volume(self.context, availability_zone='az2', **self.volume_params) self.volume.create_volume(self.context, volume_src['id']) snapshot = self._create_snapshot(volume_src['id']) self.volume.create_snapshot(self.context, volume_src['id'], snapshot['id']) snapshot = db.snapshot_get(self.context, snapshot['id']) volume_dst = volume_api.create(self.context, size=1, name='fake_name', description='fake_desc', snapshot=snapshot) self.assertEqual(volume_dst['availability_zone'], 'az2') self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', snapshot=snapshot, availability_zone='nova') def test_create_volume_with_invalid_exclusive_options(self): """Test volume create with multiple exclusive options fails.""" volume_api = cinder.volume.api.API() self.assertRaises(exception.InvalidInput, volume_api.create, self.context, 1, 'name', 'description', snapshot='fake_id', image_id='fake_id', source_volume='fake_id') @mock.patch.object(db, 'volume_admin_metadata_get') @mock.patch.object(db, 'volume_get') @mock.patch.object(db, 'volume_update') def test_initialize_connection_fetchqos(self, _mock_volume_update, _mock_volume_get, _mock_volume_admin_metadata_get): """Make sure initialize_connection returns correct information.""" _fake_admin_meta = {'fake-key': 'fake-value'} _fake_volume = {'volume_type_id': 'fake_type_id', 'name': 'fake_name', 'host': 'fake_host', 'id': 'fake_volume_id', 'volume_admin_metadata': _fake_admin_meta} _mock_volume_get.return_value = _fake_volume _mock_volume_update.return_value = _fake_volume _mock_volume_admin_metadata_get.return_value = _fake_admin_meta connector = {'ip': 'IP', 'initiator': 'INITIATOR'} qos_values = {'consumer': 'front-end', 'specs': { 'key1': 'value1', 'key2': 'value2'} } with contextlib.nested( mock.patch.object(cinder.volume.volume_types, 'get_volume_type_qos_specs'), mock.patch.object(cinder.tests.fake_driver.FakeISCSIDriver, 'initialize_connection') ) as (type_qos, driver_init): type_qos.return_value = dict(qos_specs=qos_values) driver_init.return_value = {'data': {}} qos_specs_expected = {'key1': 'value1', 'key2': 'value2'} # initialize_connection() passes qos_specs that is designated to # be consumed by front-end or both front-end and back-end conn_info = self.volume.initialize_connection(self.context, 'fake_volume_id', connector) self.assertDictMatch(qos_specs_expected, conn_info['data']['qos_specs']) qos_values.update({'consumer': 'both'}) conn_info = self.volume.initialize_connection(self.context, 'fake_volume_id', connector) self.assertDictMatch(qos_specs_expected, conn_info['data']['qos_specs']) # initialize_connection() skips qos_specs that is designated to be # consumed by back-end only qos_values.update({'consumer': 'back-end'}) type_qos.return_value = dict(qos_specs=qos_values) conn_info = self.volume.initialize_connection(self.context, 'fake_volume_id', connector) self.assertIsNone(conn_info['data']['qos_specs']) def test_run_attach_detach_volume_for_instance(self): """Make sure volume can be attached and detached from instance.""" mountpoint = "/dev/sdf" # attach volume to the instance then to detach instance_uuid = '12345678-1234-5678-1234-567812345678' volume = tests_utils.create_volume(self.context, admin_metadata={'readonly': 'True'}, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) self.volume.attach_volume(self.context, volume_id, instance_uuid, None, mountpoint, 'ro') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") self.assertEqual(vol['mountpoint'], mountpoint) self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertIsNone(vol['attached_host']) admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'ro') connector = {'initiator': 'iqn.2012-07.org.fake:01'} conn_info = self.volume.initialize_connection(self.context, volume_id, connector) self.assertEqual(conn_info['data']['access_mode'], 'ro') self.assertRaises(exception.VolumeAttached, self.volume.delete_volume, self.context, volume_id) self.volume.detach_volume(self.context, volume_id) vol = db.volume_get(self.context, volume_id) self.assertEqual(vol['status'], "available") self.volume.delete_volume(self.context, volume_id) self.assertRaises(exception.VolumeNotFound, db.volume_get, self.context, volume_id) def test_run_attach_detach_volume_for_host(self): """Make sure volume can be attached and detached from host.""" mountpoint = "/dev/sdf" volume = tests_utils.create_volume( self.context, admin_metadata={'readonly': 'False'}, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) self.volume.attach_volume(self.context, volume_id, None, 'fake_host', mountpoint, 'rw') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") self.assertEqual(vol['mountpoint'], mountpoint) self.assertIsNone(vol['instance_uuid']) # sanitized, conforms to RFC-952 and RFC-1123 specs. self.assertEqual(vol['attached_host'], 'fake-host') admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'False') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'rw') connector = {'initiator': 'iqn.2012-07.org.fake:01'} conn_info = self.volume.initialize_connection(self.context, volume_id, connector) self.assertEqual(conn_info['data']['access_mode'], 'rw') self.assertRaises(exception.VolumeAttached, self.volume.delete_volume, self.context, volume_id) self.volume.detach_volume(self.context, volume_id) vol = db.volume_get(self.context, volume_id) self.assertEqual(vol['status'], "available") self.volume.delete_volume(self.context, volume_id) self.assertRaises(exception.VolumeNotFound, db.volume_get, self.context, volume_id) def test_run_attach_detach_volume_with_attach_mode(self): instance_uuid = '12345678-1234-5678-1234-567812345678' mountpoint = "/dev/sdf" volume = tests_utils.create_volume(self.context, admin_metadata={'readonly': 'True'}, **self.volume_params) volume_id = volume['id'] db.volume_update(self.context, volume_id, {'status': 'available', 'mountpoint': None, 'instance_uuid': None, 'attached_host': None, 'attached_mode': None}) self.volume.attach_volume(self.context, volume_id, instance_uuid, None, mountpoint, 'ro') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") self.assertEqual(vol['mountpoint'], mountpoint) self.assertEqual(vol['instance_uuid'], instance_uuid) self.assertIsNone(vol['attached_host']) admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'ro') connector = {'initiator': 'iqn.2012-07.org.fake:01'} conn_info = self.volume.initialize_connection(self.context, volume_id, connector) self.assertEqual(conn_info['data']['access_mode'], 'ro') self.volume.detach_volume(self.context, volume_id) vol = db.volume_get(self.context, volume_id) self.assertEqual(vol['status'], "available") self.assertEqual(vol['attach_status'], "detached") self.assertIsNone(vol['mountpoint']) self.assertIsNone(vol['instance_uuid']) self.assertIsNone(vol['attached_host']) admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.volume.attach_volume(self.context, volume_id, None, 'fake_host', mountpoint, 'ro') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "in-use") self.assertEqual(vol['attach_status'], "attached") self.assertEqual(vol['mountpoint'], mountpoint) self.assertIsNone(vol['instance_uuid']) self.assertEqual(vol['attached_host'], 'fake-host') admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'ro') connector = {'initiator': 'iqn.2012-07.org.fake:01'} conn_info = self.volume.initialize_connection(self.context, volume_id, connector) self.assertEqual(conn_info['data']['access_mode'], 'ro') self.volume.detach_volume(self.context, volume_id) vol = db.volume_get(self.context, volume_id) self.assertEqual(vol['status'], "available") self.assertEqual(vol['attach_status'], "detached") self.assertIsNone(vol['mountpoint']) self.assertIsNone(vol['instance_uuid']) self.assertIsNone(vol['attached_host']) admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.volume.delete_volume(self.context, volume_id) self.assertRaises(exception.VolumeNotFound, db.volume_get, self.context, volume_id) def test_run_manager_attach_detach_volume_with_wrong_attach_mode(self): # Not allow using 'read-write' mode attach readonly volume instance_uuid = '12345678-1234-5678-1234-567812345678' mountpoint = "/dev/sdf" volume = tests_utils.create_volume(self.context, admin_metadata={'readonly': 'True'}, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) self.assertRaises(exception.InvalidVolumeAttachMode, self.volume.attach_volume, self.context, volume_id, instance_uuid, None, mountpoint, 'rw') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "error_attaching") self.assertEqual(vol['attach_status'], "detached") admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'rw') db.volume_update(self.context, volume_id, {'status': 'available'}) self.assertRaises(exception.InvalidVolumeAttachMode, self.volume.attach_volume, self.context, volume_id, None, 'fake_host', mountpoint, 'rw') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['status'], "error_attaching") self.assertEqual(vol['attach_status'], "detached") admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 2) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') self.assertEqual(admin_metadata[1]['key'], 'attached_mode') self.assertEqual(admin_metadata[1]['value'], 'rw') def test_run_api_attach_detach_volume_with_wrong_attach_mode(self): # Not allow using 'read-write' mode attach readonly volume instance_uuid = '12345678-1234-5678-1234-567812345678' mountpoint = "/dev/sdf" volume = tests_utils.create_volume(self.context, admin_metadata={'readonly': 'True'}, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) volume_api = cinder.volume.api.API() self.assertRaises(exception.InvalidVolumeAttachMode, volume_api.attach, self.context, volume, instance_uuid, None, mountpoint, 'rw') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['attach_status'], "detached") admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') db.volume_update(self.context, volume_id, {'status': 'available'}) self.assertRaises(exception.InvalidVolumeAttachMode, volume_api.attach, self.context, volume, None, 'fake_host', mountpoint, 'rw') vol = db.volume_get(context.get_admin_context(), volume_id) self.assertEqual(vol['attach_status'], "detached") admin_metadata = vol['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'True') @mock.patch.object(db, 'volume_get') @mock.patch.object(cinder.volume.api.API, 'update') def test_reserve_volume_success(self, volume_get, volume_update): fake_volume = { 'id': FAKE_UUID, 'status': 'available' } volume_get.return_value = fake_volume volume_update.return_value = fake_volume self.assertIsNone(cinder.volume.api.API().reserve_volume( self.context, fake_volume, )) self.assertTrue(volume_get.called) self.assertTrue(volume_update.called) def test_reserve_volume_bad_status(self): fake_volume = { 'id': FAKE_UUID, 'status': 'in-use' } with mock.patch.object(db, 'volume_get') as mock_volume_get: mock_volume_get.return_value = fake_volume self.assertRaises(exception.InvalidVolume, cinder.volume.api.API().reserve_volume, self.context, fake_volume) self.assertTrue(mock_volume_get.called) def test_unreserve_volume_success(self): fake_volume = { 'id': FAKE_UUID, 'status': 'attaching' } with mock.patch.object(cinder.volume.api.API, 'update') as mock_volume_update: mock_volume_update.return_value = fake_volume self.assertIsNone(cinder.volume.api.API().unreserve_volume( self.context, fake_volume )) self.assertTrue(mock_volume_update.called) def test_concurrent_volumes_get_different_targets(self): """Ensure multiple concurrent volumes get different targets.""" volume_ids = [] targets = [] def _check(volume_id): """Make sure targets aren't duplicated.""" volume_ids.append(volume_id) admin_context = context.get_admin_context() iscsi_target = db.volume_get_iscsi_target_num(admin_context, volume_id) self.assertNotIn(iscsi_target, targets) targets.append(iscsi_target) total_slots = CONF.iscsi_num_targets for _index in xrange(total_slots): tests_utils.create_volume(self.context, **self.volume_params) for volume_id in volume_ids: self.volume.delete_volume(self.context, volume_id) def test_multi_node(self): # TODO(termie): Figure out how to test with two nodes, # each of them having a different FLAG for storage_node # This will allow us to test cross-node interactions pass @staticmethod def _create_snapshot(volume_id, size='0', metadata=None): """Create a snapshot object.""" snap = {} snap['volume_size'] = size snap['user_id'] = 'fake' snap['project_id'] = 'fake' snap['volume_id'] = volume_id snap['status'] = "creating" if metadata is not None: snap['metadata'] = metadata return db.snapshot_create(context.get_admin_context(), snap) def test_create_delete_snapshot(self): """Test snapshot can be created and deleted.""" volume = tests_utils.create_volume( self.context, availability_zone=CONF.storage_availability_zone, **self.volume_params) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0) self.volume.create_volume(self.context, volume['id']) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2) snapshot_id = self._create_snapshot(volume['id'])['id'] self.volume.create_snapshot(self.context, volume['id'], snapshot_id) self.assertEqual(snapshot_id, db.snapshot_get(context.get_admin_context(), snapshot_id).id) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 4) msg = fake_notifier.NOTIFICATIONS[2] self.assertEqual(msg['event_type'], 'snapshot.create.start') expected = { 'created_at': 'DONTCARE', 'deleted': '', 'display_name': None, 'snapshot_id': snapshot_id, 'status': 'creating', 'tenant_id': 'fake', 'user_id': 'fake', 'volume_id': volume['id'], 'volume_size': 0, 'availability_zone': 'nova' } self.assertDictMatch(msg['payload'], expected) msg = fake_notifier.NOTIFICATIONS[3] self.assertEqual(msg['event_type'], 'snapshot.create.end') self.assertDictMatch(msg['payload'], expected) self.volume.delete_snapshot(self.context, snapshot_id) self.assertEqual(len(fake_notifier.NOTIFICATIONS), 6) msg = fake_notifier.NOTIFICATIONS[4] self.assertEqual(msg['event_type'], 'snapshot.delete.start') expected['status'] = 'available' self.assertDictMatch(msg['payload'], expected) msg = fake_notifier.NOTIFICATIONS[5] self.assertEqual(msg['event_type'], 'snapshot.delete.end') self.assertDictMatch(msg['payload'], expected) snap = db.snapshot_get(context.get_admin_context(read_deleted='yes'), snapshot_id) self.assertEqual(snap['status'], 'deleted') self.assertRaises(exception.NotFound, db.snapshot_get, self.context, snapshot_id) self.volume.delete_volume(self.context, volume['id']) def test_create_delete_snapshot_with_metadata(self): """Test snapshot can be created with metadata and deleted.""" test_meta = {'fake_key': 'fake_value'} volume = tests_utils.create_volume(self.context, **self.volume_params) snapshot = self._create_snapshot(volume['id'], metadata=test_meta) snapshot_id = snapshot['id'] snap = db.snapshot_get(context.get_admin_context(), snapshot_id) result_dict = dict(snap.iteritems()) result_meta = { result_dict['snapshot_metadata'][0].key: result_dict['snapshot_metadata'][0].value} self.assertEqual(result_meta, test_meta) self.volume.delete_snapshot(self.context, snapshot_id) self.assertRaises(exception.NotFound, db.snapshot_get, self.context, snapshot_id) def test_cannot_delete_volume_in_use(self): """Test volume can't be deleted in invalid stats.""" # create a volume and assign to host volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) volume['status'] = 'in-use' volume['host'] = 'fakehost' volume_api = cinder.volume.api.API() # 'in-use' status raises InvalidVolume self.assertRaises(exception.InvalidVolume, volume_api.delete, self.context, volume) # clean up self.volume.delete_volume(self.context, volume['id']) def test_force_delete_volume(self): """Test volume can be forced to delete.""" # create a volume and assign to host volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) volume['status'] = 'error_deleting' volume['host'] = 'fakehost' volume_api = cinder.volume.api.API() # 'error_deleting' volumes can't be deleted self.assertRaises(exception.InvalidVolume, volume_api.delete, self.context, volume) # delete with force volume_api.delete(self.context, volume, force=True) # status is deleting volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['status'], 'deleting') # clean up self.volume.delete_volume(self.context, volume['id']) def test_cannot_force_delete_attached_volume(self): """Test volume can't be force delete in attached state.""" volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) volume['status'] = 'in-use' volume['attach_status'] = 'attached' volume['host'] = 'fakehost' volume_api = cinder.volume.api.API() self.assertRaises(exception.VolumeAttached, volume_api.delete, self.context, volume, force=True) self.volume.delete_volume(self.context, volume['id']) def test_cannot_delete_volume_with_snapshots(self): """Test volume can't be deleted with dependent snapshots.""" volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) snapshot_id = self._create_snapshot(volume['id'])['id'] self.volume.create_snapshot(self.context, volume['id'], snapshot_id) self.assertEqual(snapshot_id, db.snapshot_get(context.get_admin_context(), snapshot_id).id) volume['status'] = 'available' volume['host'] = 'fakehost' volume_api = cinder.volume.api.API() self.assertRaises(exception.InvalidVolume, volume_api.delete, self.context, volume) self.volume.delete_snapshot(self.context, snapshot_id) self.volume.delete_volume(self.context, volume['id']) def test_can_delete_errored_snapshot(self): """Test snapshot can be created and deleted.""" volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) snapshot_id = self._create_snapshot(volume['id'])['id'] self.volume.create_snapshot(self.context, volume['id'], snapshot_id) snapshot = db.snapshot_get(context.get_admin_context(), snapshot_id) volume_api = cinder.volume.api.API() snapshot['status'] = 'badstatus' self.assertRaises(exception.InvalidSnapshot, volume_api.delete_snapshot, self.context, snapshot) snapshot['status'] = 'error' self.volume.delete_snapshot(self.context, snapshot_id) self.volume.delete_volume(self.context, volume['id']) def test_create_snapshot_force(self): """Test snapshot in use can be created forcibly.""" instance_uuid = '12345678-1234-5678-1234-567812345678' # create volume and attach to the instance volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) db.volume_attached(self.context, volume['id'], instance_uuid, None, '/dev/sda1') volume_api = cinder.volume.api.API() volume = volume_api.get(self.context, volume['id']) self.assertRaises(exception.InvalidVolume, volume_api.create_snapshot, self.context, volume, 'fake_name', 'fake_description') snapshot_ref = volume_api.create_snapshot_force(self.context, volume, 'fake_name', 'fake_description') db.snapshot_destroy(self.context, snapshot_ref['id']) db.volume_destroy(self.context, volume['id']) # create volume and attach to the host volume = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume['id']) db.volume_attached(self.context, volume['id'], None, 'fake_host', '/dev/sda1') volume_api = cinder.volume.api.API() volume = volume_api.get(self.context, volume['id']) self.assertRaises(exception.InvalidVolume, volume_api.create_snapshot, self.context, volume, 'fake_name', 'fake_description') snapshot_ref = volume_api.create_snapshot_force(self.context, volume, 'fake_name', 'fake_description') db.snapshot_destroy(self.context, snapshot_ref['id']) db.volume_destroy(self.context, volume['id']) def test_delete_busy_snapshot(self): """Test snapshot can be created and deleted.""" self.volume.driver.vg = FakeBrickLVM('cinder-volumes', False, None, 'default') volume = tests_utils.create_volume(self.context, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) snapshot_id = self._create_snapshot(volume_id)['id'] self.volume.create_snapshot(self.context, volume_id, snapshot_id) self.mox.StubOutWithMock(self.volume.driver, 'delete_snapshot') self.volume.driver.delete_snapshot( mox.IgnoreArg()).AndRaise( exception.SnapshotIsBusy(snapshot_name='fake')) self.mox.ReplayAll() self.volume.delete_snapshot(self.context, snapshot_id) snapshot_ref = db.snapshot_get(self.context, snapshot_id) self.assertEqual(snapshot_id, snapshot_ref.id) self.assertEqual("available", snapshot_ref.status) self.mox.UnsetStubs() self.volume.delete_snapshot(self.context, snapshot_id) self.volume.delete_volume(self.context, volume_id) def test_delete_no_dev_fails(self): """Test delete snapshot with no dev file fails.""" self.stubs.Set(os.path, 'exists', lambda x: False) self.volume.driver.vg = FakeBrickLVM('cinder-volumes', False, None, 'default') volume = tests_utils.create_volume(self.context, **self.volume_params) volume_id = volume['id'] self.volume.create_volume(self.context, volume_id) snapshot_id = self._create_snapshot(volume_id)['id'] self.volume.create_snapshot(self.context, volume_id, snapshot_id) self.mox.StubOutWithMock(self.volume.driver, 'delete_snapshot') self.volume.driver.delete_snapshot( mox.IgnoreArg()).AndRaise( exception.SnapshotIsBusy(snapshot_name='fake')) self.mox.ReplayAll() self.volume.delete_snapshot(self.context, snapshot_id) snapshot_ref = db.snapshot_get(self.context, snapshot_id) self.assertEqual(snapshot_id, snapshot_ref.id) self.assertEqual("available", snapshot_ref.status) self.mox.UnsetStubs() self.assertRaises(exception.VolumeBackendAPIException, self.volume.delete_snapshot, self.context, snapshot_id) self.assertRaises(exception.VolumeBackendAPIException, self.volume.delete_volume, self.context, volume_id) def _create_volume_from_image(self, fakeout_copy_image_to_volume=False, fakeout_clone_image=False): """Test function of create_volume_from_image. Test cases call this function to create a volume from image, caller can choose whether to fake out copy_image_to_volume and conle_image, after calling this, test cases should check status of the volume. """ def fake_local_path(volume): return dst_path def fake_copy_image_to_volume(context, volume, image_service, image_id): pass def fake_fetch_to_raw(ctx, image_service, image_id, path, blocksize, size=None): pass def fake_clone_image(volume_ref, image_location, image_id, image_meta): return {'provider_location': None}, True dst_fd, dst_path = tempfile.mkstemp() os.close(dst_fd) self.stubs.Set(self.volume.driver, 'local_path', fake_local_path) if fakeout_clone_image: self.stubs.Set(self.volume.driver, 'clone_image', fake_clone_image) self.stubs.Set(image_utils, 'fetch_to_raw', fake_fetch_to_raw) if fakeout_copy_image_to_volume: self.stubs.Set(self.volume, '_copy_image_to_volume', fake_copy_image_to_volume) image_id = 'c905cedb-7281-47e4-8a62-f26bc5fc4c77' volume_id = tests_utils.create_volume(self.context, **self.volume_params)['id'] # creating volume testdata try: self.volume.create_volume(self.context, volume_id, image_id=image_id) finally: # cleanup os.unlink(dst_path) volume = db.volume_get(self.context, volume_id) return volume def test_create_volume_from_image_cloned_status_available(self): """Test create volume from image via cloning. Verify that after cloning image to volume, it is in available state and is bootable. """ volume = self._create_volume_from_image() self.assertEqual(volume['status'], 'available') self.assertEqual(volume['bootable'], True) self.volume.delete_volume(self.context, volume['id']) def test_create_volume_from_image_not_cloned_status_available(self): """Test create volume from image via full copy. Verify that after copying image to volume, it is in available state and is bootable. """ volume = self._create_volume_from_image(fakeout_clone_image=True) self.assertEqual(volume['status'], 'available') self.assertEqual(volume['bootable'], True) self.volume.delete_volume(self.context, volume['id']) def test_create_volume_from_image_exception(self): """Verify that create volume from a non-existing image, the volume status is 'error' and is not bootable. """ dst_fd, dst_path = tempfile.mkstemp() os.close(dst_fd) self.stubs.Set(self.volume.driver, 'local_path', lambda x: dst_path) # creating volume testdata volume_id = 1 db.volume_create(self.context, {'id': volume_id, 'updated_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'display_description': 'Test Desc', 'size': 20, 'status': 'creating', 'host': 'dummy'}) self.assertRaises(exception.ImageNotFound, self.volume.create_volume, self.context, volume_id, None, None, None, None, FAKE_UUID) volume = db.volume_get(self.context, volume_id) self.assertEqual(volume['status'], "error") self.assertEqual(volume['bootable'], False) # cleanup db.volume_destroy(self.context, volume_id) os.unlink(dst_path) def test_create_volume_from_exact_sized_image(self): """Verify that an image which is exactly the same size as the volume, will work correctly. """ try: volume_id = None volume_api = cinder.volume.api.API( image_service=FakeImageService()) volume = volume_api.create(self.context, 2, 'name', 'description', image_id=1) volume_id = volume['id'] self.assertEqual(volume['status'], 'creating') finally: # cleanup db.volume_destroy(self.context, volume_id) def test_create_volume_from_oversized_image(self): """Verify that an image which is too big will fail correctly.""" class _ModifiedFakeImageService(FakeImageService): def show(self, context, image_id): return {'size': 2 * units.GiB + 1, 'disk_format': 'raw', 'container_format': 'bare'} volume_api = cinder.volume.api.API(image_service= _ModifiedFakeImageService()) self.assertRaises(exception.InvalidInput, volume_api.create, self.context, 2, 'name', 'description', image_id=1) def test_create_volume_with_mindisk_error(self): """Verify volumes smaller than image minDisk will cause an error.""" class _ModifiedFakeImageService(FakeImageService): def show(self, context, image_id): return {'size': 2 * units.GiB, 'disk_format': 'raw', 'container_format': 'bare', 'min_disk': 5} volume_api = cinder.volume.api.API(image_service= _ModifiedFakeImageService()) self.assertRaises(exception.InvalidInput, volume_api.create, self.context, 2, 'name', 'description', image_id=1) def _do_test_create_volume_with_size(self, size): def fake_reserve(context, expire=None, project_id=None, **deltas): return ["RESERVATION"] def fake_commit(context, reservations, project_id=None): pass def fake_rollback(context, reservations, project_id=None): pass self.stubs.Set(QUOTAS, "reserve", fake_reserve) self.stubs.Set(QUOTAS, "commit", fake_commit) self.stubs.Set(QUOTAS, "rollback", fake_rollback) volume_api = cinder.volume.api.API() volume = volume_api.create(self.context, size, 'name', 'description') self.assertEqual(volume['size'], int(size)) def test_create_volume_int_size(self): """Test volume creation with int size.""" self._do_test_create_volume_with_size(2) def test_create_volume_string_size(self): """Test volume creation with string size.""" self._do_test_create_volume_with_size('2') def test_create_volume_with_bad_size(self): def fake_reserve(context, expire=None, project_id=None, **deltas): return ["RESERVATION"] def fake_commit(context, reservations, project_id=None): pass def fake_rollback(context, reservations, project_id=None): pass self.stubs.Set(QUOTAS, "reserve", fake_reserve) self.stubs.Set(QUOTAS, "commit", fake_commit) self.stubs.Set(QUOTAS, "rollback", fake_rollback) volume_api = cinder.volume.api.API() self.assertRaises(exception.InvalidInput, volume_api.create, self.context, '2Gb', 'name', 'description') def test_begin_roll_detaching_volume(self): """Test begin_detaching and roll_detaching functions.""" volume = tests_utils.create_volume(self.context, **self.volume_params) volume_api = cinder.volume.api.API() volume_api.begin_detaching(self.context, volume) volume = db.volume_get(self.context, volume['id']) self.assertEqual(volume['status'], "detaching") volume_api.roll_detaching(self.context, volume) volume = db.volume_get(self.context, volume['id']) self.assertEqual(volume['status'], "in-use") def test_volume_api_update(self): # create a raw vol volume = tests_utils.create_volume(self.context, **self.volume_params) # use volume.api to update name volume_api = cinder.volume.api.API() update_dict = {'display_name': 'test update name'} volume_api.update(self.context, volume, update_dict) # read changes from db vol = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(vol['display_name'], 'test update name') def test_volume_api_update_snapshot(self): # create raw snapshot volume = tests_utils.create_volume(self.context, **self.volume_params) snapshot = self._create_snapshot(volume['id']) self.assertIsNone(snapshot['display_name']) # use volume.api to update name volume_api = cinder.volume.api.API() update_dict = {'display_name': 'test update name'} volume_api.update_snapshot(self.context, snapshot, update_dict) # read changes from db snap = db.snapshot_get(context.get_admin_context(), snapshot['id']) self.assertEqual(snap['display_name'], 'test update name') @mock.patch.object(QUOTAS, 'reserve') def test_extend_volume(self, reserve): """Test volume can be extended at API level.""" # create a volume and assign to host volume = tests_utils.create_volume(self.context, size=2, status='creating', host=CONF.host) self.volume.create_volume(self.context, volume['id']) volume['status'] = 'in-use' volume['host'] = 'fakehost' volume_api = cinder.volume.api.API() # Extend fails when status != available self.assertRaises(exception.InvalidVolume, volume_api.extend, self.context, volume, 3) volume['status'] = 'available' # Extend fails when new_size < orig_size self.assertRaises(exception.InvalidInput, volume_api.extend, self.context, volume, 1) # Extend fails when new_size == orig_size self.assertRaises(exception.InvalidInput, volume_api.extend, self.context, volume, 2) # works when new_size > orig_size reserve.return_value = ["RESERVATION"] volume_api.extend(self.context, volume, 3) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['status'], 'extending') # Test the quota exceeded volume['status'] = 'available' reserve.side_effect = exception.OverQuota(overs=['gigabytes'], quotas={'gigabytes': 20}, usages={'gigabytes': {'reserved': 5, 'in_use': 15}}) self.assertRaises(exception.VolumeSizeExceedsAvailableQuota, volume_api.extend, self.context, volume, 3) # clean up self.volume.delete_volume(self.context, volume['id']) def test_extend_volume_driver_not_initialized(self): """Test volume can be extended at API level.""" # create a volume and assign to host fake_reservations = ['RESERVATION'] volume = tests_utils.create_volume(self.context, size=2, status='available', host=CONF.host) self.volume.create_volume(self.context, volume['id']) # NOTE(flaper87): Set initialized to False self.volume.driver._initialized = False self.assertRaises(exception.DriverNotInitialized, self.volume.extend_volume, self.context, volume['id'], 3, fake_reservations) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume.status, 'error_extending') # NOTE(flaper87): Set initialized to True, # lets cleanup the mess. self.volume.driver._initialized = True self.volume.delete_volume(self.context, volume['id']) def test_extend_volume_manager(self): """Test volume can be extended at the manager level.""" def fake_extend(volume, new_size): volume['size'] = new_size fake_reservations = ['RESERVATION'] volume = tests_utils.create_volume(self.context, size=2, status='creating', host=CONF.host) self.volume.create_volume(self.context, volume['id']) # Test driver exception with mock.patch.object(self.volume.driver, 'extend_volume') as extend_volume: extend_volume.side_effect =\ exception.CinderException('fake exception') volume['status'] = 'extending' self.volume.extend_volume(self.context, volume['id'], '4', fake_reservations) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['size'], 2) self.assertEqual(volume['status'], 'error_extending') # Test driver success with mock.patch.object(self.volume.driver, 'extend_volume') as extend_volume: extend_volume.return_value = fake_extend volume['status'] = 'extending' self.volume.extend_volume(self.context, volume['id'], '4', fake_reservations) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['size'], 4) self.assertEqual(volume['status'], 'available') # clean up self.volume.delete_volume(self.context, volume['id']) def test_create_volume_from_unelevated_context(self): """Test context does't change after volume creation failure.""" def fake_create_volume(*args, **kwargs): raise exception.CinderException('fake exception') #create context for testing ctxt = self.context.deepcopy() if 'admin' in ctxt.roles: ctxt.roles.remove('admin') ctxt.is_admin = False #create one copy of context for future comparison self.saved_ctxt = ctxt.deepcopy() self.stubs.Set(self.volume.driver, 'create_volume', fake_create_volume) volume_src = tests_utils.create_volume(self.context, **self.volume_params) self.assertRaises(exception.CinderException, self.volume.create_volume, ctxt, volume_src['id']) def test_create_volume_from_sourcevol(self): """Test volume can be created from a source volume.""" def fake_create_cloned_volume(volume, src_vref): pass self.stubs.Set(self.volume.driver, 'create_cloned_volume', fake_create_cloned_volume) volume_src = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume_src['id']) volume_dst = tests_utils.create_volume(self.context, source_volid=volume_src['id'], **self.volume_params) self.volume.create_volume(self.context, volume_dst['id'], source_volid=volume_src['id']) self.assertEqual('available', db.volume_get(context.get_admin_context(), volume_dst['id']).status) self.volume.delete_volume(self.context, volume_dst['id']) self.volume.delete_volume(self.context, volume_src['id']) def test_create_volume_from_sourcevol_fail_wrong_az(self): """Test volume can't be cloned from an other volume in different az.""" volume_api = cinder.volume.api.API() def fake_list_availability_zones(): return ({'name': 'nova', 'available': True}, {'name': 'az2', 'available': True}) self.stubs.Set(volume_api, 'list_availability_zones', fake_list_availability_zones) volume_src = tests_utils.create_volume(self.context, availability_zone='az2', **self.volume_params) self.volume.create_volume(self.context, volume_src['id']) volume_src = db.volume_get(self.context, volume_src['id']) volume_dst = volume_api.create(self.context, size=1, name='fake_name', description='fake_desc', source_volume=volume_src) self.assertEqual(volume_dst['availability_zone'], 'az2') self.assertRaises(exception.InvalidInput, volume_api.create, self.context, size=1, name='fake_name', description='fake_desc', source_volume=volume_src, availability_zone='nova') def test_create_volume_from_sourcevol_with_glance_metadata(self): """Test glance metadata can be correctly copied to new volume.""" def fake_create_cloned_volume(volume, src_vref): pass self.stubs.Set(self.volume.driver, 'create_cloned_volume', fake_create_cloned_volume) volume_src = self._create_volume_from_image() self.volume.create_volume(self.context, volume_src['id']) volume_dst = tests_utils.create_volume(self.context, source_volid=volume_src['id'], **self.volume_params) self.volume.create_volume(self.context, volume_dst['id'], source_volid=volume_src['id']) self.assertEqual('available', db.volume_get(context.get_admin_context(), volume_dst['id']).status) src_glancemeta = db.volume_get(context.get_admin_context(), volume_src['id']).volume_glance_metadata dst_glancemeta = db.volume_get(context.get_admin_context(), volume_dst['id']).volume_glance_metadata for meta_src in src_glancemeta: for meta_dst in dst_glancemeta: if meta_dst.key == meta_src.key: self.assertEqual(meta_dst.value, meta_src.value) self.volume.delete_volume(self.context, volume_src['id']) self.volume.delete_volume(self.context, volume_dst['id']) def test_create_volume_from_sourcevol_failed_clone(self): """Test src vol status will be restore by error handling code.""" def fake_error_create_cloned_volume(volume, src_vref): db.volume_update(self.context, src_vref['id'], {'status': 'error'}) raise exception.CinderException('fake exception') self.stubs.Set(self.volume.driver, 'create_cloned_volume', fake_error_create_cloned_volume) volume_src = tests_utils.create_volume(self.context, **self.volume_params) self.volume.create_volume(self.context, volume_src['id']) volume_dst = tests_utils.create_volume(self.context, source_volid=volume_src['id'], **self.volume_params) self.assertRaises(exception.CinderException, self.volume.create_volume, self.context, volume_dst['id'], None, None, None, None, None, volume_src['id']) self.assertEqual(volume_src['status'], 'creating') self.volume.delete_volume(self.context, volume_dst['id']) self.volume.delete_volume(self.context, volume_src['id']) def test_list_availability_zones_enabled_service(self): services = [ {'availability_zone': 'ping', 'disabled': 0}, {'availability_zone': 'ping', 'disabled': 1}, {'availability_zone': 'pong', 'disabled': 0}, {'availability_zone': 'pung', 'disabled': 1}, ] def stub_service_get_all_by_topic(*args, **kwargs): return services self.stubs.Set(db, 'service_get_all_by_topic', stub_service_get_all_by_topic) volume_api = cinder.volume.api.API() azs = volume_api.list_availability_zones() expected = ( {'name': 'pung', 'available': False}, {'name': 'pong', 'available': True}, {'name': 'ping', 'available': True}, ) self.assertEqual(expected, azs) def test_migrate_volume_driver(self): """Test volume migration done by driver.""" # stub out driver and rpc functions self.stubs.Set(self.volume.driver, 'migrate_volume', lambda x, y, z, new_type_id=None: (True, {'user_id': 'foo'})) volume = tests_utils.create_volume(self.context, size=0, host=CONF.host, migration_status='migrating') host_obj = {'host': 'newhost', 'capabilities': {}} self.volume.migrate_volume(self.context, volume['id'], host_obj, False) # check volume properties volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['host'], 'newhost') self.assertIsNone(volume['migration_status']) def test_migrate_volume_generic(self): def fake_migr(vol, host): raise Exception('should not be called') def fake_delete_volume_rpc(self, ctxt, vol_id): raise Exception('should not be called') def fake_create_volume(self, ctxt, volume, host, req_spec, filters, allow_reschedule=True): db.volume_update(ctxt, volume['id'], {'status': 'available'}) self.stubs.Set(self.volume.driver, 'migrate_volume', fake_migr) self.stubs.Set(volume_rpcapi.VolumeAPI, 'create_volume', fake_create_volume) self.stubs.Set(self.volume.driver, 'copy_volume_data', lambda x, y, z, remote='dest': True) self.stubs.Set(volume_rpcapi.VolumeAPI, 'delete_volume', fake_delete_volume_rpc) volume = tests_utils.create_volume(self.context, size=0, host=CONF.host) host_obj = {'host': 'newhost', 'capabilities': {}} self.volume.migrate_volume(self.context, volume['id'], host_obj, True) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['host'], 'newhost') self.assertIsNone(volume['migration_status']) def test_retype_setup_fail_volume_is_available(self): """Verify volume is still available if retype prepare failed.""" elevated = context.get_admin_context() project_id = self.context.project_id db.volume_type_create(elevated, {'name': 'old', 'extra_specs': {}}) old_vol_type = db.volume_type_get_by_name(elevated, 'old') db.volume_type_create(elevated, {'name': 'new', 'extra_specs': {}}) new_vol_type = db.volume_type_get_by_name(elevated, 'new') db.quota_create(elevated, project_id, 'volumes_new', 0) volume = tests_utils.create_volume(self.context, size=1, host=CONF.host, status='available', volume_type_id=old_vol_type['id']) api = cinder.volume.api.API() self.assertRaises(exception.VolumeLimitExceeded, api.retype, self.context, volume, new_vol_type['id']) volume = db.volume_get(elevated, volume.id) self.assertEqual(volume['status'], 'available') def _retype_volume_exec(self, driver, snap=False, policy='on-demand', migrate_exc=False, exc=None, diff_equal=False): elevated = context.get_admin_context() project_id = self.context.project_id db.volume_type_create(elevated, {'name': 'old', 'extra_specs': {}}) old_vol_type = db.volume_type_get_by_name(elevated, 'old') db.volume_type_create(elevated, {'name': 'new', 'extra_specs': {}}) vol_type = db.volume_type_get_by_name(elevated, 'new') db.quota_create(elevated, project_id, 'volumes_new', 10) volume = tests_utils.create_volume(self.context, size=1, host=CONF.host, status='retyping', volume_type_id=old_vol_type['id']) if snap: self._create_snapshot(volume['id'], size=volume['size']) host_obj = {'host': 'newhost', 'capabilities': {}} reserve_opts = {'volumes': 1, 'gigabytes': volume['size']} QUOTAS.add_volume_type_opts(self.context, reserve_opts, vol_type['id']) reservations = QUOTAS.reserve(self.context, project_id=project_id, **reserve_opts) with mock.patch.object(self.volume.driver, 'retype') as _retype: with mock.patch.object(volume_types, 'volume_types_diff') as _diff: with mock.patch.object(self.volume, 'migrate_volume') as _mig: _retype.return_value = driver _diff.return_value = ({}, diff_equal) if migrate_exc: _mig.side_effect = KeyError else: _mig.return_value = True if not exc: self.volume.retype(self.context, volume['id'], vol_type['id'], host_obj, migration_policy=policy, reservations=reservations) else: self.assertRaises(exc, self.volume.retype, self.context, volume['id'], vol_type['id'], host_obj, migration_policy=policy, reservations=reservations) # get volume/quota properties volume = db.volume_get(elevated, volume['id']) try: usage = db.quota_usage_get(elevated, project_id, 'volumes_new') volumes_in_use = usage.in_use except exception.QuotaUsageNotFound: volumes_in_use = 0 # check properties if not exc: self.assertEqual(volume['volume_type_id'], vol_type['id']) self.assertEqual(volume['status'], 'available') self.assertEqual(volume['host'], 'newhost') self.assertEqual(volumes_in_use, 1) else: self.assertEqual(volume['volume_type_id'], old_vol_type['id']) self.assertEqual(volume['status'], 'available') self.assertEqual(volume['host'], CONF.host) self.assertEqual(volumes_in_use, 0) def test_retype_volume_driver_success(self): self._retype_volume_exec(True) def test_retype_volume_migration_bad_policy(self): # Test volume retype that requires migration by not allowed self._retype_volume_exec(False, policy='never', exc=exception.VolumeMigrationFailed) def test_retype_volume_migration_with_snaps(self): self._retype_volume_exec(False, snap=True, exc=exception.InvalidVolume) def test_retype_volume_migration_failed(self): self._retype_volume_exec(False, migrate_exc=True, exc=KeyError) def test_retype_volume_migration_success(self): self._retype_volume_exec(False, migrate_exc=False, exc=None) def test_retype_volume_migration_equal_types(self): self._retype_volume_exec(False, diff_equal=True) def test_migrate_driver_not_initialized(self): volume = tests_utils.create_volume(self.context, size=0, host=CONF.host) host_obj = {'host': 'newhost', 'capabilities': {}} self.volume.driver._initialized = False self.assertRaises(exception.DriverNotInitialized, self.volume.migrate_volume, self.context, volume['id'], host_obj, True) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume.migration_status, 'error') # NOTE(flaper87): Set initialized to True, # lets cleanup the mess. self.volume.driver._initialized = True self.volume.delete_volume(self.context, volume['id']) def test_update_volume_readonly_flag(self): """Test volume readonly flag can be updated at API level.""" # create a volume and assign to host volume = tests_utils.create_volume(self.context, admin_metadata={'readonly': 'True'}, **self.volume_params) self.volume.create_volume(self.context, volume['id']) volume['status'] = 'in-use' volume_api = cinder.volume.api.API() # Update fails when status != available self.assertRaises(exception.InvalidVolume, volume_api.update_readonly_flag, self.context, volume, False) volume['status'] = 'available' # works when volume in 'available' status volume_api.update_readonly_flag(self.context, volume, False) volume = db.volume_get(context.get_admin_context(), volume['id']) self.assertEqual(volume['status'], 'available') admin_metadata = volume['volume_admin_metadata'] self.assertEqual(len(admin_metadata), 1) self.assertEqual(admin_metadata[0]['key'], 'readonly') self.assertEqual(admin_metadata[0]['value'], 'False') # clean up self.volume.delete_volume(self.context, volume['id']) class CopyVolumeToImageTestCase(BaseVolumeTestCase): def fake_local_path(self, volume): return self.dst_path def setUp(self): super(CopyVolumeToImageTestCase, self).setUp() self.dst_fd, self.dst_path = tempfile.mkstemp() os.close(self.dst_fd) self.stubs.Set(self.volume.driver, 'local_path', self.fake_local_path) self.image_meta = { 'id': '70a599e0-31e7-49b7-b260-868f441e862b', 'container_format': 'bare', 'disk_format': 'raw' } self.volume_id = 1 self.volume_attrs = { 'id': self.volume_id, 'updated_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'display_description': 'Test Desc', 'size': 20, 'status': 'uploading', 'host': 'dummy' } def tearDown(self): db.volume_destroy(self.context, self.volume_id) os.unlink(self.dst_path) super(CopyVolumeToImageTestCase, self).tearDown() def test_copy_volume_to_image_status_available(self): # creating volume testdata self.volume_attrs['instance_uuid'] = None db.volume_create(self.context, self.volume_attrs) # start test self.volume.copy_volume_to_image(self.context, self.volume_id, self.image_meta) volume = db.volume_get(self.context, self.volume_id) self.assertEqual(volume['status'], 'available') def test_copy_volume_to_image_status_use(self): self.image_meta['id'] = 'a440c04b-79fa-479c-bed1-0b816eaec379' # creating volume testdata self.volume_attrs['instance_uuid'] = 'b21f957d-a72f-4b93-b5a5-' \ '45b1161abb02' db.volume_create(self.context, self.volume_attrs) # start test self.volume.copy_volume_to_image(self.context, self.volume_id, self.image_meta) volume = db.volume_get(self.context, self.volume_id) self.assertEqual(volume['status'], 'in-use') def test_copy_volume_to_image_exception(self): self.image_meta['id'] = FAKE_UUID # creating volume testdata self.volume_attrs['status'] = 'in-use' db.volume_create(self.context, self.volume_attrs) # start test self.assertRaises(exception.ImageNotFound, self.volume.copy_volume_to_image, self.context, self.volume_id, self.image_meta) volume = db.volume_get(self.context, self.volume_id) self.assertEqual(volume['status'], 'available') class GetActiveByWindowTestCase(BaseVolumeTestCase): def setUp(self): super(GetActiveByWindowTestCase, self).setUp() self.ctx = context.get_admin_context(read_deleted="yes") self.db_attrs = [ { 'id': 1, 'host': 'devstack', 'project_id': 'p1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'deleted': True, 'status': 'deleted', 'deleted_at': datetime.datetime(1, 2, 1, 1, 1, 1), }, { 'id': 2, 'host': 'devstack', 'project_id': 'p1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'deleted': True, 'status': 'deleted', 'deleted_at': datetime.datetime(1, 3, 10, 1, 1, 1), }, { 'id': 3, 'host': 'devstack', 'project_id': 'p1', 'created_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'deleted': True, 'status': 'deleted', 'deleted_at': datetime.datetime(1, 5, 1, 1, 1, 1), }, { 'id': 4, 'host': 'devstack', 'project_id': 'p1', 'created_at': datetime.datetime(1, 3, 10, 1, 1, 1), }, { 'id': 5, 'host': 'devstack', 'project_id': 'p1', 'created_at': datetime.datetime(1, 5, 1, 1, 1, 1), } ] def test_volume_get_active_by_window(self): # Find all all volumes valid within a timeframe window. # Not in window db.volume_create(self.ctx, self.db_attrs[0]) # In - deleted in window db.volume_create(self.ctx, self.db_attrs[1]) # In - deleted after window db.volume_create(self.ctx, self.db_attrs[2]) # In - created in window db.volume_create(self.context, self.db_attrs[3]) # Not of window. db.volume_create(self.context, self.db_attrs[4]) volumes = db.volume_get_active_by_window( self.context, datetime.datetime(1, 3, 1, 1, 1, 1), datetime.datetime(1, 4, 1, 1, 1, 1), project_id='p1') self.assertEqual(len(volumes), 3) self.assertEqual(volumes[0].id, u'2') self.assertEqual(volumes[1].id, u'3') self.assertEqual(volumes[2].id, u'4') def test_snapshot_get_active_by_window(self): # Find all all snapshots valid within a timeframe window. vol = db.volume_create(self.context, {'id': 1}) for i in range(5): self.db_attrs[i]['volume_id'] = 1 # Not in window db.snapshot_create(self.ctx, self.db_attrs[0]) # In - deleted in window db.snapshot_create(self.ctx, self.db_attrs[1]) # In - deleted after window db.snapshot_create(self.ctx, self.db_attrs[2]) # In - created in window db.snapshot_create(self.context, self.db_attrs[3]) # Not of window. db.snapshot_create(self.context, self.db_attrs[4]) snapshots = db.snapshot_get_active_by_window( self.context, datetime.datetime(1, 3, 1, 1, 1, 1), datetime.datetime(1, 4, 1, 1, 1, 1), project_id='p1') self.assertEqual(len(snapshots), 3) self.assertEqual(snapshots[0].id, u'2') self.assertEqual(snapshots[0].volume.id, u'1') self.assertEqual(snapshots[1].id, u'3') self.assertEqual(snapshots[1].volume.id, u'1') self.assertEqual(snapshots[2].id, u'4') self.assertEqual(snapshots[2].volume.id, u'1') class DriverTestCase(test.TestCase): """Base Test class for Drivers.""" driver_name = "cinder.volume.driver.FakeBaseDriver" def setUp(self): super(DriverTestCase, self).setUp() vol_tmpdir = tempfile.mkdtemp() self.flags(volume_driver=self.driver_name, volumes_dir=vol_tmpdir) self.volume = importutils.import_object(CONF.volume_manager) self.context = context.get_admin_context() self.output = "" self.stubs.Set(iscsi.TgtAdm, '_get_target', self.fake_get_target) self.stubs.Set(brick_lvm.LVM, '_vg_exists', lambda x: True) def _fake_execute(_command, *_args, **_kwargs): """Fake _execute.""" return self.output, None self.volume.driver.set_execute(_fake_execute) self.volume.driver.set_initialized() def tearDown(self): try: shutil.rmtree(CONF.volumes_dir) except OSError: pass super(DriverTestCase, self).tearDown() def fake_get_target(obj, iqn): return 1 def _attach_volume(self): """Attach volumes to an instance.""" return [] def _detach_volume(self, volume_id_list): """Detach volumes from an instance.""" for volume_id in volume_id_list: db.volume_detached(self.context, volume_id) self.volume.delete_volume(self.context, volume_id) class GenericVolumeDriverTestCase(DriverTestCase): """Test case for VolumeDriver.""" driver_name = "cinder.tests.fake_driver.LoggingVolumeDriver" def test_backup_volume(self): vol = tests_utils.create_volume(self.context) backup = {'volume_id': vol['id']} properties = {} attach_info = {'device': {'path': '/dev/null'}} backup_service = self.mox.CreateMock(backup_driver.BackupDriver) root_helper = 'sudo cinder-rootwrap /etc/cinder/rootwrap.conf' self.mox.StubOutWithMock(self.volume.driver.db, 'volume_get') self.mox.StubOutWithMock(cinder.brick.initiator.connector, 'get_connector_properties') self.mox.StubOutWithMock(self.volume.driver, '_attach_volume') self.mox.StubOutWithMock(os, 'getuid') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(fileutils, 'file_open') self.mox.StubOutWithMock(self.volume.driver, '_detach_volume') self.mox.StubOutWithMock(self.volume.driver, 'terminate_connection') self.volume.driver.db.volume_get(self.context, vol['id']).\ AndReturn(vol) cinder.brick.initiator.connector.\ get_connector_properties(root_helper, CONF.my_ip).\ AndReturn(properties) self.volume.driver._attach_volume(self.context, vol, properties).\ AndReturn(attach_info) os.getuid() utils.execute('chown', None, '/dev/null', run_as_root=True) f = fileutils.file_open('/dev/null').AndReturn(file('/dev/null')) backup_service.backup(backup, f) utils.execute('chown', 0, '/dev/null', run_as_root=True) self.volume.driver._detach_volume(self.context, attach_info, vol, properties) self.mox.ReplayAll() self.volume.driver.backup_volume(self.context, backup, backup_service) self.mox.UnsetStubs() def test_restore_backup(self): vol = tests_utils.create_volume(self.context) backup = {'volume_id': vol['id'], 'id': 'backup-for-%s' % vol['id']} properties = {} attach_info = {'device': {'path': '/dev/null'}} root_helper = 'sudo cinder-rootwrap /etc/cinder/rootwrap.conf' backup_service = self.mox.CreateMock(backup_driver.BackupDriver) self.mox.StubOutWithMock(cinder.brick.initiator.connector, 'get_connector_properties') self.mox.StubOutWithMock(self.volume.driver, '_attach_volume') self.mox.StubOutWithMock(os, 'getuid') self.mox.StubOutWithMock(utils, 'execute') self.mox.StubOutWithMock(fileutils, 'file_open') self.mox.StubOutWithMock(self.volume.driver, '_detach_volume') self.mox.StubOutWithMock(self.volume.driver, 'terminate_connection') cinder.brick.initiator.connector.\ get_connector_properties(root_helper, CONF.my_ip).\ AndReturn(properties) self.volume.driver._attach_volume(self.context, vol, properties).\ AndReturn(attach_info) os.getuid() utils.execute('chown', None, '/dev/null', run_as_root=True) f = fileutils.file_open('/dev/null', 'wb').AndReturn(file('/dev/null')) backup_service.restore(backup, vol['id'], f) utils.execute('chown', 0, '/dev/null', run_as_root=True) self.volume.driver._detach_volume(self.context, attach_info, vol, properties) self.mox.ReplayAll() self.volume.driver.restore_backup(self.context, backup, vol, backup_service) self.mox.UnsetStubs() class LVMISCSIVolumeDriverTestCase(DriverTestCase): """Test case for VolumeDriver""" driver_name = "cinder.volume.drivers.lvm.LVMISCSIDriver" def test_delete_busy_volume(self): """Test deleting a busy volume.""" self.stubs.Set(self.volume.driver, '_volume_not_present', lambda x: False) self.stubs.Set(self.volume.driver, '_delete_volume', lambda x: False) self.volume.driver.vg = FakeBrickLVM('cinder-volumes', False, None, 'default') self.stubs.Set(self.volume.driver.vg, 'lv_has_snapshot', lambda x: True) self.assertRaises(exception.VolumeIsBusy, self.volume.driver.delete_volume, {'name': 'test1', 'size': 1024}) self.stubs.Set(self.volume.driver.vg, 'lv_has_snapshot', lambda x: False) self.output = 'x' self.volume.driver.delete_volume({'name': 'test1', 'size': 1024}) def test_lvm_migrate_volume_no_loc_info(self): host = {'capabilities': {}} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'available'} moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, False) self.assertIsNone(model_update) def test_lvm_migrate_volume_bad_loc_info(self): capabilities = {'location_info': 'foo'} host = {'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'available'} moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, False) self.assertIsNone(model_update) def test_lvm_migrate_volume_diff_driver(self): capabilities = {'location_info': 'FooDriver:foo:bar:default:0'} host = {'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'available'} moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, False) self.assertIsNone(model_update) def test_lvm_migrate_volume_diff_host(self): capabilities = {'location_info': 'LVMVolumeDriver:foo:bar:default:0'} host = {'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'available'} moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, False) self.assertIsNone(model_update) def test_lvm_migrate_volume_in_use(self): hostname = socket.gethostname() capabilities = {'location_info': 'LVMVolumeDriver:%s:bar' % hostname} host = {'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'in-use'} moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, False) self.assertIsNone(model_update) def test_lvm_volume_group_missing(self): hostname = socket.gethostname() capabilities = {'location_info': 'LVMVolumeDriver:%s:' 'cinder-volumes-3:default:0' % hostname} host = {'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'available'} def get_all_volume_groups(): return [{'name': 'cinder-volumes-2'}] self.stubs.Set(volutils, 'get_all_volume_groups', get_all_volume_groups) self.volume.driver.vg = FakeBrickLVM('cinder-volumes', False, None, 'default') moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, False) self.assertIsNone(model_update) def test_lvm_migrate_volume_proceed(self): hostname = socket.gethostname() capabilities = {'location_info': 'LVMVolumeDriver:%s:' 'cinder-volumes-2:default:0' % hostname} host = {'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1, 'status': 'available'} def fake_execute(*args, **kwargs): pass def get_all_volume_groups(): # NOTE(flaper87) Return just the destination # host to test the check of dest VG existence. return [{'name': 'cinder-volumes-2'}] def _fake_get_all_physical_volumes(obj, root_helper, vg_name): return [{}] self.stubs.Set(brick_lvm.LVM, 'get_all_physical_volumes', _fake_get_all_physical_volumes) self.stubs.Set(self.volume.driver, '_execute', fake_execute) self.stubs.Set(volutils, 'copy_volume', lambda x, y, z, sync=False, execute='foo', blocksize=mox.IgnoreArg(): None) self.stubs.Set(volutils, 'get_all_volume_groups', get_all_volume_groups) self.stubs.Set(self.volume.driver, '_delete_volume', lambda x: None) self.stubs.Set(self.volume.driver, '_create_export', lambda x, y, vg='vg': None) self.volume.driver.vg = FakeBrickLVM('cinder-volumes', False, None, 'default') moved, model_update = self.volume.driver.migrate_volume(self.context, vol, host) self.assertEqual(moved, True) self.assertIsNone(model_update) @staticmethod def _get_manage_existing_lvs(name): """Helper method used by the manage_existing tests below.""" lvs = [{'name': 'fake_lv', 'size': '1.75'}, {'name': 'fake_lv_bad_size', 'size': 'Not a float'}] for lv in lvs: if lv['name'] == name: return lv def _setup_stubs_for_manage_existing(self): """Helper to set up common stubs for the manage_existing tests.""" self.volume.driver.vg = FakeBrickLVM('cinder-volumes', False, None, 'default') self.stubs.Set(self.volume.driver.vg, 'get_volume', self._get_manage_existing_lvs) def test_lvm_manage_existing(self): """Good pass on managing an LVM volume. This test case ensures that, when a logical volume with the specified name exists, and the size is as expected, no error is returned from driver.manage_existing, and that the rename_volume function is called in the Brick LVM code with the correct arguments. """ self._setup_stubs_for_manage_existing() ref = {'lv_name': 'fake_lv'} vol = {'name': 'test', 'id': 1, 'size': 0} def _rename_volume(old_name, new_name): self.assertEqual(old_name, ref['lv_name']) self.assertEqual(new_name, vol['name']) self.stubs.Set(self.volume.driver.vg, 'rename_volume', _rename_volume) size = self.volume.driver.manage_existing_get_size(vol, ref) self.assertEqual(size, 2) model_update = self.volume.driver.manage_existing(vol, ref) self.assertIsNone(model_update) def test_lvm_manage_existing_bad_size(self): """Make sure correct exception on bad size returned from LVM. This test case ensures that the correct exception is raised when the information returned for the existing LVs is not in the format that the manage_existing code expects. """ self._setup_stubs_for_manage_existing() ref = {'lv_name': 'fake_lv_bad_size'} vol = {'name': 'test', 'id': 1, 'size': 2} self.assertRaises(exception.VolumeBackendAPIException, self.volume.driver.manage_existing_get_size, vol, ref) def test_lvm_manage_existing_bad_ref(self): """Error case where specified LV doesn't exist. This test case ensures that the correct exception is raised when the caller attempts to manage a volume that does not exist. """ self._setup_stubs_for_manage_existing() ref = {'lv_name': 'fake_nonexistent_lv'} vol = {'name': 'test', 'id': 1, 'size': 0, 'status': 'available'} self.assertRaises(exception.ManageExistingInvalidReference, self.volume.driver.manage_existing_get_size, vol, ref) class LVMVolumeDriverTestCase(DriverTestCase): """Test case for VolumeDriver""" driver_name = "cinder.volume.drivers.lvm.LVMVolumeDriver" FAKE_VOLUME = {'name': 'test1', 'id': 'test1'} def test_delete_volume_invalid_parameter(self): configuration = conf.Configuration(fake_opt, 'fake_group') configuration.volume_clear = 'zero' configuration.volume_clear_size = 0 lvm_driver = lvm.LVMVolumeDriver(configuration=configuration) self.mox.StubOutWithMock(os.path, 'exists') os.path.exists(mox.IgnoreArg()).AndReturn(True) self.mox.ReplayAll() # Test volume without 'size' field and 'volume_size' field self.assertRaises(exception.InvalidParameterValue, lvm_driver._delete_volume, self.FAKE_VOLUME) def test_delete_volume_bad_path(self): configuration = conf.Configuration(fake_opt, 'fake_group') configuration.volume_clear = 'zero' configuration.volume_clear_size = 0 volume = dict(self.FAKE_VOLUME, size=1) lvm_driver = lvm.LVMVolumeDriver(configuration=configuration) self.mox.StubOutWithMock(os.path, 'exists') os.path.exists(mox.IgnoreArg()).AndReturn(False) self.mox.ReplayAll() self.assertRaises(exception.VolumeBackendAPIException, lvm_driver._delete_volume, volume) def test_delete_volume_thinlvm_snap(self): configuration = conf.Configuration(fake_opt, 'fake_group') configuration.volume_clear = 'zero' configuration.volume_clear_size = 0 configuration.lvm_type = 'thin' lvm_driver = lvm.LVMISCSIDriver(configuration=configuration, vg_obj=mox.MockAnything()) # Ensures that copy_volume is not called for ThinLVM self.mox.StubOutWithMock(volutils, 'copy_volume') self.mox.StubOutWithMock(volutils, 'clear_volume') self.mox.StubOutWithMock(lvm_driver, '_execute') self.mox.ReplayAll() uuid = '00000000-0000-0000-0000-c3aa7ee01536' fake_snapshot = {'name': 'volume-' + uuid, 'id': uuid, 'size': 123} lvm_driver._delete_volume(fake_snapshot, is_snapshot=True) class ISCSITestCase(DriverTestCase): """Test Case for ISCSIDriver""" driver_name = "cinder.volume.drivers.lvm.LVMISCSIDriver" base_driver = driver.ISCSIDriver def setUp(self): super(ISCSITestCase, self).setUp() self.configuration = mox.MockObject(conf.Configuration) self.configuration.num_iscsi_scan_tries = 3 self.configuration.iscsi_num_targets = 100 self.configuration.iscsi_target_prefix = 'iqn.2010-10.org.openstack:' self.configuration.iscsi_ip_address = '0.0.0.0' self.configuration.iscsi_port = 3260 def _attach_volume(self): """Attach volumes to an instance.""" volume_id_list = [] for index in xrange(3): vol = {} vol['size'] = 0 vol_ref = db.volume_create(self.context, vol) self.volume.create_volume(self.context, vol_ref['id']) vol_ref = db.volume_get(self.context, vol_ref['id']) # each volume has a different mountpoint mountpoint = "/dev/sd" + chr((ord('b') + index)) instance_uuid = '12345678-1234-5678-1234-567812345678' db.volume_attached(self.context, vol_ref['id'], instance_uuid, mountpoint) volume_id_list.append(vol_ref['id']) return volume_id_list def test_do_iscsi_discovery(self): self.configuration.append_config_values(mox.IgnoreArg()) iscsi_driver = self.base_driver(configuration=self.configuration) iscsi_driver._execute = lambda *a, **kw: \ ("%s dummy" % CONF.iscsi_ip_address, '') volume = {"name": "dummy", "host": "0.0.0.0"} iscsi_driver._do_iscsi_discovery(volume) def test_get_iscsi_properties(self): volume = {"provider_location": '', "id": "0", "provider_auth": "a b c", "attached_mode": "rw"} iscsi_driver = self.base_driver(configuration=self.configuration) iscsi_driver._do_iscsi_discovery = lambda v: "0.0.0.0:0000,0 iqn:iqn 0" result = iscsi_driver._get_iscsi_properties(volume) self.assertEqual(result["target_portal"], "0.0.0.0:0000") self.assertEqual(result["target_iqn"], "iqn:iqn") self.assertEqual(result["target_lun"], 0) def test_get_volume_stats(self): def _fake_get_all_physical_volumes(obj, root_helper, vg_name): return [{}] def _fake_get_all_volume_groups(obj, vg_name=None, no_suffix=True): return [{'name': 'cinder-volumes', 'size': '5.52', 'available': '0.52', 'lv_count': '2', 'uuid': 'vR1JU3-FAKE-C4A9-PQFh-Mctm-9FwA-Xwzc1m'}] self.stubs.Set(brick_lvm.LVM, 'get_all_volume_groups', _fake_get_all_volume_groups) self.stubs.Set(brick_lvm.LVM, 'get_all_physical_volumes', _fake_get_all_physical_volumes) self.volume.driver.vg = brick_lvm.LVM('cinder-volumes', 'sudo') self.volume.driver._update_volume_stats() stats = self.volume.driver._stats self.assertEqual(stats['total_capacity_gb'], float('5.52')) self.assertEqual(stats['free_capacity_gb'], float('0.52')) def test_validate_connector(self): iscsi_driver = self.base_driver(configuration=self.configuration) # Validate a valid connector connector = {'ip': '10.0.0.2', 'host': 'fakehost', 'initiator': 'iqn.2012-07.org.fake:01'} iscsi_driver.validate_connector(connector) # Validate a connector without the initiator connector = {'ip': '10.0.0.2', 'host': 'fakehost'} self.assertRaises(exception.VolumeBackendAPIException, iscsi_driver.validate_connector, connector) class ISERTestCase(ISCSITestCase): """Test Case for ISERDriver.""" driver_name = "cinder.volume.drivers.lvm.LVMISERDriver" base_driver = driver.ISERDriver def setUp(self): super(ISERTestCase, self).setUp() self.configuration = mox.MockObject(conf.Configuration) self.configuration.num_iser_scan_tries = 3 self.configuration.iser_num_targets = 100 self.configuration.iser_target_prefix = 'iqn.2010-10.org.openstack:' self.configuration.iser_ip_address = '0.0.0.0' self.configuration.iser_port = 3260 def test_get_volume_stats(self): def _fake_get_all_physical_volumes(obj, root_helper, vg_name): return [{}] def _fake_get_all_volume_groups(obj, vg_name=None, no_suffix=True): return [{'name': 'cinder-volumes', 'size': '5.52', 'available': '0.52', 'lv_count': '2', 'uuid': 'vR1JU3-FAKE-C4A9-PQFh-Mctm-9FwA-Xwzc1m'}] self.stubs.Set(brick_lvm.LVM, 'get_all_physical_volumes', _fake_get_all_physical_volumes) self.stubs.Set(brick_lvm.LVM, 'get_all_volume_groups', _fake_get_all_volume_groups) self.volume.driver.vg = brick_lvm.LVM('cinder-volumes', 'sudo') stats = self.volume.driver.get_volume_stats(refresh=True) self.assertEqual(stats['total_capacity_gb'], float('5.52')) self.assertEqual(stats['free_capacity_gb'], float('0.52')) self.assertEqual(stats['storage_protocol'], 'iSER') def test_get_volume_stats2(self): iser_driver = self.base_driver(configuration=self.configuration) stats = iser_driver.get_volume_stats(refresh=True) self.assertEqual(stats['total_capacity_gb'], 'infinite') self.assertEqual(stats['free_capacity_gb'], 'infinite') self.assertEqual(stats['storage_protocol'], 'iSER') class FibreChannelTestCase(DriverTestCase): """Test Case for FibreChannelDriver.""" driver_name = "cinder.volume.driver.FibreChannelDriver" def test_initialize_connection(self): self.driver = driver.FibreChannelDriver() self.driver.do_setup(None) self.assertRaises(NotImplementedError, self.driver.initialize_connection, {}, {}) class VolumePolicyTestCase(test.TestCase): def setUp(self): super(VolumePolicyTestCase, self).setUp() cinder.policy.reset() cinder.policy.init() self.context = context.get_admin_context() self.stubs.Set(brick_lvm.LVM, '_vg_exists', lambda x: True) def tearDown(self): super(VolumePolicyTestCase, self).tearDown() cinder.policy.reset() def _set_rules(self, rules): cinder.common.policy.set_brain(cinder.common.policy.Brain(rules)) def test_check_policy(self): self.mox.StubOutWithMock(cinder.policy, 'enforce') target = { 'project_id': self.context.project_id, 'user_id': self.context.user_id, } cinder.policy.enforce(self.context, 'volume:attach', target) self.mox.ReplayAll() cinder.volume.api.check_policy(self.context, 'attach') def test_check_policy_with_target(self): self.mox.StubOutWithMock(cinder.policy, 'enforce') target = { 'project_id': self.context.project_id, 'user_id': self.context.user_id, 'id': 2, } cinder.policy.enforce(self.context, 'volume:attach', target) self.mox.ReplayAll() cinder.volume.api.check_policy(self.context, 'attach', {'id': 2}) cinder-2014.1.5/cinder/tests/policy.json0000664000567000056700000000644612540642606021167 0ustar jenkinsjenkins00000000000000{ "context_is_admin": [["role:admin"]], "admin_api": [["is_admin:True"]], "admin_or_owner": [["is_admin:True"], ["project_id:%(project_id)s"]], "volume:create": [], "volume:get": [["rule:admin_or_owner"]], "volume:get_all": [], "volume:get_volume_metadata": [], "volume:delete_volume_metadata": [], "volume:update_volume_metadata": [], "volume:get_volume_admin_metadata": [["rule:admin_api"]], "volume:delete_volume_admin_metadata": [["rule:admin_api"]], "volume:update_volume_admin_metadata": [["rule:admin_api"]], "volume:delete": [], "volume:update": [], "volume:attach": [], "volume:detach": [], "volume:reserve_volume": [], "volume:unreserve_volume": [], "volume:begin_detaching": [], "volume:roll_detaching": [], "volume:check_attach": [], "volume:check_detach": [], "volume:initialize_connection": [], "volume:terminate_connection": [], "volume:create_snapshot": [], "volume:delete_snapshot": [], "volume:get_snapshot": [], "volume:get_all_snapshots": [], "volume:update_snapshot": [], "volume:extend": [], "volume:migrate_volume": [["rule:admin_api"]], "volume:migrate_volume_completion": [["rule:admin_api"]], "volume:update_readonly_flag": [], "volume:retype": [], "volume_extension:volume_admin_actions:reset_status": [["rule:admin_api"]], "volume_extension:snapshot_admin_actions:reset_status": [["rule:admin_api"]], "volume_extension:volume_admin_actions:force_delete": [["rule:admin_api"]], "volume_extension:snapshot_admin_actions:force_delete": [["rule:admin_api"]], "volume_extension:volume_admin_actions:force_detach": [["rule:admin_api"]], "volume_extension:volume_admin_actions:migrate_volume": [["rule:admin_api"]], "volume_extension:volume_admin_actions:migrate_volume_completion": [["rule:admin_api"]], "volume_extension:volume_actions:upload_image": [], "volume_extension:types_manage": [], "volume_extension:types_extra_specs": [], "volume_extension:volume_type_encryption": [["rule:admin_api"]], "volume_extension:volume_encryption_metadata": [["rule:admin_or_owner"]], "volume_extension:qos_specs_manage": [], "volume_extension:extended_snapshot_attributes": [], "volume_extension:volume_image_metadata": [], "volume_extension:volume_host_attribute": [["rule:admin_api"]], "volume_extension:volume_tenant_attribute": [["rule:admin_api"]], "volume_extension:volume_mig_status_attribute": [["rule:admin_api"]], "volume_extension:hosts": [["rule:admin_api"]], "volume_extension:quotas:show": [], "volume_extension:quotas:update": [], "volume_extension:quotas:delete": [], "volume_extension:quota_classes": [], "volume_extension:volume_manage": [["rule:admin_api"]], "volume_extension:volume_unmanage": [["rule:admin_api"]], "limits_extension:used_limits": [], "snapshot_extension:snapshot_actions:update_snapshot_status": [], "volume:create_transfer": [], "volume:accept_transfer": [], "volume:delete_transfer": [], "volume:get_all_transfers": [], "backup:create" : [], "backup:delete": [], "backup:get": [], "backup:get_all": [], "backup:restore": [], "backup:backup-import": [["rule:admin_api"]], "backup:backup-export": [["rule:admin_api"]] } cinder-2014.1.5/cinder/tests/keymgr/0000775000567000056700000000000012540643114020254 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/keymgr/test_conf_key_mgr.py0000664000567000056700000001037412540642606024341 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Test cases for the conf key manager. """ import array from oslo.config import cfg from cinder import context from cinder import exception from cinder.keymgr import conf_key_mgr from cinder.keymgr import key from cinder.tests.keymgr import test_key_mgr CONF = cfg.CONF CONF.import_opt('fixed_key', 'cinder.keymgr.conf_key_mgr', group='keymgr') class ConfKeyManagerTestCase(test_key_mgr.KeyManagerTestCase): def __init__(self, *args, **kwargs): super(ConfKeyManagerTestCase, self).__init__(*args, **kwargs) self._hex_key = '1' * 64 def _create_key_manager(self): CONF.set_default('fixed_key', default=self._hex_key, group='keymgr') return conf_key_mgr.ConfKeyManager() def setUp(self): super(ConfKeyManagerTestCase, self).setUp() self.ctxt = context.RequestContext('fake', 'fake') self.key_id = '00000000-0000-0000-0000-000000000000' encoded = array.array('B', self._hex_key.decode('hex')).tolist() self.key = key.SymmetricKey('AES', encoded) def test___init__(self): self.assertEqual(self.key_id, self.key_mgr.key_id) def test_create_key(self): key_id_1 = self.key_mgr.create_key(self.ctxt) key_id_2 = self.key_mgr.create_key(self.ctxt) # ensure that the UUIDs are the same self.assertEqual(key_id_1, key_id_2) def test_create_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.create_key, None) def test_store_key(self): key_id = self.key_mgr.store_key(self.ctxt, self.key) actual_key = self.key_mgr.get_key(self.ctxt, key_id) self.assertEqual(self.key, actual_key) def test_store_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.store_key, None, self.key) def test_store_key_invalid(self): encoded = self.key.get_encoded() inverse_key = key.SymmetricKey('AES', [~b for b in encoded]) self.assertRaises(exception.KeyManagerError, self.key_mgr.store_key, self.ctxt, inverse_key) def test_copy_key(self): key_id = self.key_mgr.create_key(self.ctxt) key = self.key_mgr.get_key(self.ctxt, key_id) copied_key_id = self.key_mgr.copy_key(self.ctxt, key_id) copied_key = self.key_mgr.get_key(self.ctxt, copied_key_id) self.assertEqual(key_id, copied_key_id) self.assertEqual(key, copied_key) def test_copy_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.copy_key, None, None) def test_delete_key(self): key_id = self.key_mgr.create_key(self.ctxt) self.key_mgr.delete_key(self.ctxt, key_id) # cannot delete key -- might have lingering references self.assertEqual(self.key, self.key_mgr.get_key(self.ctxt, self.key_id)) def test_delete_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.delete_key, None, None) def test_delete_unknown_key(self): self.assertRaises(exception.KeyManagerError, self.key_mgr.delete_key, self.ctxt, None) def test_get_key(self): self.assertEqual(self.key, self.key_mgr.get_key(self.ctxt, self.key_id)) def test_get_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.get_key, None, None) def test_get_unknown_key(self): self.assertRaises(KeyError, self.key_mgr.get_key, self.ctxt, None) cinder-2014.1.5/cinder/tests/keymgr/test_key_mgr.py0000664000567000056700000000207312540642606023331 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Test cases for the key manager. """ from cinder import test class KeyManagerTestCase(test.TestCase): def __init__(self, *args, **kwargs): super(KeyManagerTestCase, self).__init__(*args, **kwargs) def _create_key_manager(self): raise NotImplementedError() def setUp(self): super(KeyManagerTestCase, self).setUp() self.key_mgr = self._create_key_manager() cinder-2014.1.5/cinder/tests/keymgr/fake.py0000664000567000056700000000147012540642606021543 0ustar jenkinsjenkins00000000000000# Copyright 2011 Justin Santa Barbara # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. """Implementation of a fake key manager.""" from cinder.tests.keymgr import mock_key_mgr def fake_api(): return mock_key_mgr.MockKeyManager() cinder-2014.1.5/cinder/tests/keymgr/__init__.py0000664000567000056700000000000012540642606022360 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/keymgr/mock_key_mgr.py0000664000567000056700000001022712540642606023303 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ A mock implementation of a key manager that stores keys in a dictionary. This key manager implementation is primarily intended for testing. In particular, it does not store keys persistently. Lack of a centralized key store also makes this implementation unsuitable for use among different services. Note: Instantiating this class multiple times will create separate key stores. Keys created in one instance will not be accessible from other instances of this class. """ import array import uuid from cinder import exception from cinder.keymgr import key from cinder.keymgr import key_mgr from cinder import utils class MockKeyManager(key_mgr.KeyManager): """Mocking manager for integration tests. This mock key manager implementation supports all the methods specified by the key manager interface. This implementation stores keys within a dictionary, and as a result, it is not acceptable for use across different services. Side effects (e.g., raising exceptions) for each method are handled as specified by the key manager interface. This key manager is not suitable for use in production deployments. """ def __init__(self): self.keys = {} def _generate_hex_key(self, **kwargs): key_length = kwargs.get('key_length', 256) # hex digit => 4 bits hex_encoded = utils.generate_password(length=key_length / 4, symbolgroups='0123456789ABCDEF') return hex_encoded def _generate_key(self, **kwargs): _hex = self._generate_hex_key(**kwargs) return key.SymmetricKey('AES', array.array('B', _hex.decode('hex')).tolist()) def create_key(self, ctxt, **kwargs): """Creates a key. This implementation returns a UUID for the created key. A NotAuthorized exception is raised if the specified context is None. """ if ctxt is None: raise exception.NotAuthorized() key = self._generate_key(**kwargs) return self.store_key(ctxt, key) def _generate_key_id(self): key_id = str(uuid.uuid4()) while key_id in self.keys: key_id = str(uuid.uuid4()) return key_id def store_key(self, ctxt, key, **kwargs): """Stores (i.e., registers) a key with the key manager.""" if ctxt is None: raise exception.NotAuthorized() key_id = self._generate_key_id() self.keys[key_id] = key return key_id def copy_key(self, ctxt, key_id, **kwargs): if ctxt is None: raise exception.NotAuthorized() copied_key_id = self._generate_key_id() self.keys[copied_key_id] = self.keys[key_id] return copied_key_id def get_key(self, ctxt, key_id, **kwargs): """Retrieves the key identified by the specified id. This implementation returns the key that is associated with the specified UUID. A NotAuthorized exception is raised if the specified context is None; a KeyError is raised if the UUID is invalid. """ if ctxt is None: raise exception.NotAuthorized() return self.keys[key_id] def delete_key(self, ctxt, key_id, **kwargs): """Deletes the key identified by the specified id. A NotAuthorized exception is raised if the context is None and a KeyError is raised if the UUID is invalid. """ if ctxt is None: raise exception.NotAuthorized() del self.keys[key_id] cinder-2014.1.5/cinder/tests/keymgr/test_mock_key_mgr.py0000664000567000056700000000707612540642606024352 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Test cases for the mock key manager. """ import array from cinder import context from cinder import exception from cinder.keymgr import key as keymgr_key from cinder.tests.keymgr import mock_key_mgr from cinder.tests.keymgr import test_key_mgr class MockKeyManagerTestCase(test_key_mgr.KeyManagerTestCase): def _create_key_manager(self): return mock_key_mgr.MockKeyManager() def setUp(self): super(MockKeyManagerTestCase, self).setUp() self.ctxt = context.RequestContext('fake', 'fake') def test_create_key(self): key_id_1 = self.key_mgr.create_key(self.ctxt) key_id_2 = self.key_mgr.create_key(self.ctxt) # ensure that the UUIDs are unique self.assertNotEqual(key_id_1, key_id_2) def test_create_key_with_length(self): for length in [64, 128, 256]: key_id = self.key_mgr.create_key(self.ctxt, key_length=length) key = self.key_mgr.get_key(self.ctxt, key_id) self.assertEqual(length / 8, len(key.get_encoded())) def test_create_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.create_key, None) def test_store_key(self): secret_key = array.array('B', ('0' * 64).decode('hex')).tolist() _key = keymgr_key.SymmetricKey('AES', secret_key) key_id = self.key_mgr.store_key(self.ctxt, _key) actual_key = self.key_mgr.get_key(self.ctxt, key_id) self.assertEqual(_key, actual_key) def test_store_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.store_key, None, None) def test_copy_key(self): key_id = self.key_mgr.create_key(self.ctxt) key = self.key_mgr.get_key(self.ctxt, key_id) copied_key_id = self.key_mgr.copy_key(self.ctxt, key_id) copied_key = self.key_mgr.get_key(self.ctxt, copied_key_id) self.assertNotEqual(key_id, copied_key_id) self.assertEqual(key, copied_key) def test_copy_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.copy_key, None, None) def test_get_key(self): pass def test_get_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.get_key, None, None) def test_get_unknown_key(self): self.assertRaises(KeyError, self.key_mgr.get_key, self.ctxt, None) def test_delete_key(self): key_id = self.key_mgr.create_key(self.ctxt) self.key_mgr.delete_key(self.ctxt, key_id) self.assertRaises(KeyError, self.key_mgr.get_key, self.ctxt, key_id) def test_delete_null_context(self): self.assertRaises(exception.NotAuthorized, self.key_mgr.delete_key, None, None) def test_delete_unknown_key(self): self.assertRaises(KeyError, self.key_mgr.delete_key, self.ctxt, None) cinder-2014.1.5/cinder/tests/keymgr/test_not_implemented_key_mgr.py0000664000567000056700000000336412540642606026600 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Test cases for the not implemented key manager. """ from cinder.keymgr import not_implemented_key_mgr from cinder.tests.keymgr import test_key_mgr class NotImplementedKeyManagerTestCase(test_key_mgr.KeyManagerTestCase): def _create_key_manager(self): return not_implemented_key_mgr.NotImplementedKeyManager() def setUp(self): super(NotImplementedKeyManagerTestCase, self).setUp() def test_create_key(self): self.assertRaises(NotImplementedError, self.key_mgr.create_key, None) def test_store_key(self): self.assertRaises(NotImplementedError, self.key_mgr.store_key, None, None) def test_copy_key(self): self.assertRaises(NotImplementedError, self.key_mgr.copy_key, None, None) def test_get_key(self): self.assertRaises(NotImplementedError, self.key_mgr.get_key, None, None) def test_delete_key(self): self.assertRaises(NotImplementedError, self.key_mgr.delete_key, None, None) cinder-2014.1.5/cinder/tests/keymgr/test_key.py0000664000567000056700000000356012540642606022466 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory # All Rights Reserved. # # 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. """ Test cases for the key classes. """ import array from cinder.keymgr import key from cinder import test class KeyTestCase(test.TestCase): def _create_key(self): raise NotImplementedError() def setUp(self): super(KeyTestCase, self).setUp() self.key = self._create_key() class SymmetricKeyTestCase(KeyTestCase): def _create_key(self): return key.SymmetricKey(self.algorithm, self.encoded) def setUp(self): self.algorithm = 'AES' self.encoded = array.array('B', ('0' * 64).decode('hex')).tolist() super(SymmetricKeyTestCase, self).setUp() def test_get_algorithm(self): self.assertEqual(self.key.get_algorithm(), self.algorithm) def test_get_format(self): self.assertEqual(self.key.get_format(), 'RAW') def test_get_encoded(self): self.assertEqual(self.key.get_encoded(), self.encoded) def test___eq__(self): self.assertTrue(self.key == self.key) self.assertFalse(self.key == None) self.assertFalse(None == self.key) def test___ne__(self): self.assertFalse(self.key != self.key) self.assertTrue(self.key != None) self.assertTrue(None != self.key) cinder-2014.1.5/cinder/tests/test_context.py0000664000567000056700000000735212540642606022067 0ustar jenkinsjenkins00000000000000 # Copyright 2011 OpenStack Foundation # # 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. from cinder import context from cinder import test class ContextTestCase(test.TestCase): def test_request_context_sets_is_admin(self): ctxt = context.RequestContext('111', '222', roles=['admin', 'weasel']) self.assertEqual(ctxt.is_admin, True) def test_request_context_sets_is_admin_upcase(self): ctxt = context.RequestContext('111', '222', roles=['Admin', 'weasel']) self.assertEqual(ctxt.is_admin, True) def test_request_context_read_deleted(self): ctxt = context.RequestContext('111', '222', read_deleted='yes') self.assertEqual(ctxt.read_deleted, 'yes') ctxt.read_deleted = 'no' self.assertEqual(ctxt.read_deleted, 'no') def test_request_context_read_deleted_invalid(self): self.assertRaises(ValueError, context.RequestContext, '111', '222', read_deleted=True) ctxt = context.RequestContext('111', '222') self.assertRaises(ValueError, setattr, ctxt, 'read_deleted', True) def test_extra_args_to_context_get_logged(self): info = {} def fake_warn(log_msg): info['log_msg'] = log_msg self.stubs.Set(context.LOG, 'warn', fake_warn) c = context.RequestContext('user', 'project', extra_arg1='meow', extra_arg2='wuff') self.assertTrue(c) self.assertIn("'extra_arg1': 'meow'", info['log_msg']) self.assertIn("'extra_arg2': 'wuff'", info['log_msg']) def test_service_catalog_nova_only(self): service_catalog = [ {u'type': u'compute', u'name': u'nova'}, {u'type': u's3', u'name': u's3'}, {u'type': u'image', u'name': u'glance'}, {u'type': u'volume', u'name': u'cinder'}, {u'type': u'ec2', u'name': u'ec2'}, {u'type': u'object-store', u'name': u'swift'}, {u'type': u'identity', u'name': u'keystone'}, {u'type': None, u'name': u'S_withtypeNone'}, {u'type': u'co', u'name': u'S_partofcompute'}] compute_catalog = [{u'type': u'compute', u'name': u'nova'}] ctxt = context.RequestContext('111', '222', service_catalog=service_catalog) self.assertEqual(ctxt.service_catalog, compute_catalog) def test_user_identity(self): ctx = context.RequestContext("user", "tenant", domain="domain", user_domain="user-domain", project_domain="project-domain") self.assertEqual('user tenant domain user-domain project-domain', ctx.to_dict()["user_identity"]) cinder-2014.1.5/cinder/tests/test_windows.py0000664000567000056700000002722612540642606022077 0ustar jenkinsjenkins00000000000000# Copyright 2012 Pedro Navarro Perez # All Rights Reserved. # # 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. """ Unit tests for Windows Server 2012 OpenStack Cinder volume driver """ import os import shutil import tempfile from oslo.config import cfg import mox as mox_lib from mox import IgnoreArg from mox import stubout from cinder import test from cinder.image import image_utils from cinder.tests.windows import db_fakes from cinder.volume import configuration as conf from cinder.volume.drivers.windows import windows from cinder.volume.drivers.windows import windows_utils CONF = cfg.CONF class TestWindowsDriver(test.TestCase): def __init__(self, method): super(TestWindowsDriver, self).__init__(method) def setUp(self): self.lun_path_tempdir = tempfile.mkdtemp() super(TestWindowsDriver, self).setUp() self._mox = mox_lib.Mox() self.stubs = stubout.StubOutForTesting() self.flags( windows_iscsi_lun_path=self.lun_path_tempdir, ) self._setup_stubs() configuration = conf.Configuration(None) configuration.append_config_values(windows.windows_opts) self._driver = windows.WindowsDriver(configuration=configuration) self._driver.do_setup({}) def tearDown(self): self._mox.UnsetStubs() self.stubs.UnsetAll() shutil.rmtree(self.lun_path_tempdir) super(TestWindowsDriver, self).tearDown() def _setup_stubs(self): def fake_wutils__init__(self): pass windows_utils.WindowsUtils.__init__ = fake_wutils__init__ def fake_local_path(self, volume): return os.path.join(CONF.windows_iscsi_lun_path, str(volume['name']) + ".vhd") def test_check_for_setup_errors(self): mox = self._mox drv = self._driver self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'check_for_setup_error') windows_utils.WindowsUtils.check_for_setup_error() mox.ReplayAll() drv.check_for_setup_error() mox.VerifyAll() def test_create_volume(self): mox = self._mox drv = self._driver vol = db_fakes.get_fake_volume_info() self.stubs.Set(drv, 'local_path', self.fake_local_path) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'create_volume') windows_utils.WindowsUtils.create_volume(self.fake_local_path(vol), vol['name'], vol['size']) mox.ReplayAll() drv.create_volume(vol) mox.VerifyAll() def test_delete_volume(self): """delete_volume simple test case.""" mox = self._mox drv = self._driver vol = db_fakes.get_fake_volume_info() mox.StubOutWithMock(drv, 'local_path') drv.local_path(vol).AndReturn(self.fake_local_path(vol)) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'delete_volume') windows_utils.WindowsUtils.delete_volume(vol['name'], self.fake_local_path(vol)) mox.ReplayAll() drv.delete_volume(vol) mox.VerifyAll() def test_create_snapshot(self): mox = self._mox drv = self._driver self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'create_snapshot') volume = db_fakes.get_fake_volume_info() snapshot = db_fakes.get_fake_snapshot_info() self.stubs.Set(drv, 'local_path', self.fake_local_path(snapshot)) windows_utils.WindowsUtils.create_snapshot(volume['name'], snapshot['name']) mox.ReplayAll() drv.create_snapshot(snapshot) mox.VerifyAll() def test_create_volume_from_snapshot(self): mox = self._mox drv = self._driver snapshot = db_fakes.get_fake_snapshot_info() volume = db_fakes.get_fake_volume_info() self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'create_volume_from_snapshot') windows_utils.WindowsUtils.\ create_volume_from_snapshot(volume['name'], snapshot['name']) mox.ReplayAll() drv.create_volume_from_snapshot(volume, snapshot) mox.VerifyAll() def test_delete_snapshot(self): mox = self._mox drv = self._driver snapshot = db_fakes.get_fake_snapshot_info() self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'delete_snapshot') windows_utils.WindowsUtils.delete_snapshot(snapshot['name']) mox.ReplayAll() drv.delete_snapshot(snapshot) mox.VerifyAll() def test_create_export(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() initiator_name = "%s%s" % (CONF.iscsi_target_prefix, volume['name']) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'create_iscsi_target') windows_utils.WindowsUtils.create_iscsi_target(initiator_name, IgnoreArg()) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'add_disk_to_target') windows_utils.WindowsUtils.add_disk_to_target(volume['name'], initiator_name) mox.ReplayAll() export_info = drv.create_export(None, volume) mox.VerifyAll() self.assertEqual(export_info['provider_location'], initiator_name) def test_initialize_connection(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() initiator_name = "%s%s" % (CONF.iscsi_target_prefix, volume['name']) connector = db_fakes.get_fake_connector_info() self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'associate_initiator_with_iscsi_target') windows_utils.WindowsUtils.associate_initiator_with_iscsi_target( volume['provider_location'], initiator_name, ) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'get_host_information') windows_utils.WindowsUtils.get_host_information( volume, volume['provider_location']) mox.ReplayAll() drv.initialize_connection(volume, connector) mox.VerifyAll() def test_terminate_connection(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() initiator_name = "%s%s" % (CONF.iscsi_target_prefix, volume['name']) connector = db_fakes.get_fake_connector_info() self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'delete_iscsi_target') windows_utils.WindowsUtils.delete_iscsi_target( initiator_name, volume['provider_location']) mox.ReplayAll() drv.terminate_connection(volume, connector) mox.VerifyAll() def test_ensure_export(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() initiator_name = "%s%s" % (CONF.iscsi_target_prefix, volume['name']) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'create_iscsi_target') windows_utils.WindowsUtils.create_iscsi_target(initiator_name, True) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'add_disk_to_target') windows_utils.WindowsUtils.add_disk_to_target(volume['name'], initiator_name) mox.ReplayAll() drv.ensure_export(None, volume) mox.VerifyAll() def test_remove_export(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() target_name = volume['provider_location'] self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'remove_iscsi_target') windows_utils.WindowsUtils.remove_iscsi_target(target_name) mox.ReplayAll() drv.remove_export(None, volume) mox.VerifyAll() def test_copy_image_to_volume(self): """resize_image common case usage.""" mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() self.stubs.Set(drv, 'local_path', self.fake_local_path) mox.StubOutWithMock(image_utils, 'fetch_to_vhd') image_utils.fetch_to_vhd(None, None, None, self.fake_local_path(volume), mox_lib.IgnoreArg()) mox.ReplayAll() drv.copy_image_to_volume(None, volume, None, None) mox.VerifyAll() def test_copy_volume_to_image(self): mox = self._mox drv = self._driver vol = db_fakes.get_fake_volume_info() image_meta = db_fakes.get_fake_image_meta() self.stubs.Set(drv, 'local_path', self.fake_local_path) mox.StubOutWithMock(image_utils, 'upload_volume') temp_vhd_path = os.path.join(CONF.image_conversion_dir, str(image_meta['id']) + ".vhd") image_utils.upload_volume(None, None, image_meta, temp_vhd_path, 'vpc') self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'copy_vhd_disk') windows_utils.WindowsUtils.copy_vhd_disk(self.fake_local_path(vol), temp_vhd_path) mox.ReplayAll() drv.copy_volume_to_image(None, vol, None, image_meta) mox.VerifyAll() def test_create_cloned_volume(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() volume_cloned = db_fakes.get_fake_volume_info_cloned() self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'create_volume') windows_utils.WindowsUtils.create_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'copy_vhd_disk') windows_utils.WindowsUtils.copy_vhd_disk(self.fake_local_path( volume_cloned), self.fake_local_path(volume)) mox.ReplayAll() drv.create_cloned_volume(volume, volume_cloned) mox.VerifyAll() def test_extend_volume(self): mox = self._mox drv = self._driver volume = db_fakes.get_fake_volume_info() TEST_VOLUME_ADDITIONAL_SIZE_MB = 1024 TEST_VOLUME_ADDITIONAL_SIZE_GB = 1 self._mox.StubOutWithMock(windows_utils.WindowsUtils, 'extend') windows_utils.WindowsUtils.extend(volume['name'], TEST_VOLUME_ADDITIONAL_SIZE_MB) new_size = volume['size'] + TEST_VOLUME_ADDITIONAL_SIZE_GB mox.ReplayAll() drv.extend_volume(volume, new_size) mox.VerifyAll() cinder-2014.1.5/cinder/tests/test_drivers_compatibility.py0000664000567000056700000001344612540642606025013 0ustar jenkinsjenkins00000000000000# Copyright 2012 OpenStack Foundation # # 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. from oslo.config import cfg from cinder import context from cinder.openstack.common import importutils from cinder import test from cinder.volume.drivers.solidfire import SolidFireDriver CONF = cfg.CONF NEXENTA_MODULE = "cinder.volume.drivers.nexenta.iscsi.NexentaISCSIDriver" SOLIDFIRE_MODULE = "cinder.volume.drivers.solidfire.SolidFireDriver" STORWIZE_MODULE = "cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver" WINDOWS_MODULE = "cinder.volume.drivers.windows.windows.WindowsDriver" XIV_DS8K_MODULE = "cinder.volume.drivers.ibm.xiv_ds8k.XIVDS8KDriver" NETAPP_MODULE = "cinder.volume.drivers.netapp.common.Deprecated" LEFTHAND_REST_MODULE = ("cinder.volume.drivers.san.hp.hp_lefthand_iscsi." "HPLeftHandISCSIDriver") GPFS_MODULE = "cinder.volume.drivers.ibm.gpfs.GPFSDriver" class VolumeDriverCompatibility(test.TestCase): """Test backwards compatibility for volume drivers.""" def fake_update_cluster_status(self): return def setUp(self): super(VolumeDriverCompatibility, self).setUp() self.manager = importutils.import_object(CONF.volume_manager) self.context = context.get_admin_context() def tearDown(self): super(VolumeDriverCompatibility, self).tearDown() def _load_driver(self, driver): if 'SolidFire' in driver: # SolidFire driver does update_cluster stat on init self.stubs.Set(SolidFireDriver, '_update_cluster_status', self.fake_update_cluster_status) self.manager.__init__(volume_driver=driver) def _driver_module_name(self): return "%s.%s" % (self.manager.driver.__class__.__module__, self.manager.driver.__class__.__name__) def test_nexenta_old(self): self._load_driver('cinder.volume.drivers.nexenta.volume.NexentaDriver') self.assertEqual(self._driver_module_name(), NEXENTA_MODULE) def test_nexenta_new(self): self._load_driver(NEXENTA_MODULE) self.assertEqual(self._driver_module_name(), NEXENTA_MODULE) def test_solidfire_old(self): self._load_driver('cinder.volume.drivers.solidfire.SolidFire') self.assertEqual(self._driver_module_name(), SOLIDFIRE_MODULE) def test_solidfire_old2(self): self._load_driver('cinder.volume.drivers.solidfire.SolidFire') self.assertEqual(self._driver_module_name(), SOLIDFIRE_MODULE) def test_solidfire_new(self): self._load_driver(SOLIDFIRE_MODULE) self.assertEqual(self._driver_module_name(), SOLIDFIRE_MODULE) def test_storwize_svc_old(self): self._load_driver( 'cinder.volume.drivers.storwize_svc.StorwizeSVCDriver') self.assertEqual(self._driver_module_name(), STORWIZE_MODULE) def test_storwize_svc_old2(self): self._load_driver('cinder.volume.drivers.storwize_svc.' 'StorwizeSVCDriver') self.assertEqual(self._driver_module_name(), STORWIZE_MODULE) def test_storwize_svc_new(self): self._load_driver(STORWIZE_MODULE) self.assertEqual(self._driver_module_name(), STORWIZE_MODULE) def test_windows_old(self): self._load_driver('cinder.volume.drivers.windows.WindowsDriver') self.assertEqual(self._driver_module_name(), WINDOWS_MODULE) def test_windows_new(self): self._load_driver(WINDOWS_MODULE) self.assertEqual(self._driver_module_name(), WINDOWS_MODULE) def test_xiv_old(self): self._load_driver('cinder.volume.drivers.xiv.XIVDriver') self.assertEqual(self._driver_module_name(), XIV_DS8K_MODULE) def test_xiv_ds8k_new(self): self._load_driver(XIV_DS8K_MODULE) self.assertEqual(self._driver_module_name(), XIV_DS8K_MODULE) def test_netapp_7m_iscsi_old(self): self._load_driver('cinder.volume.drivers.netapp.iscsi.' 'NetAppISCSIDriver') self.assertEqual(self._driver_module_name(), NETAPP_MODULE) def test_netapp_cm_iscsi_old(self): self._load_driver('cinder.volume.drivers.netapp.iscsi.' 'NetAppCmodeISCSIDriver') self.assertEqual(self._driver_module_name(), NETAPP_MODULE) def test_netapp_7m_nfs_old(self): self._load_driver('cinder.volume.drivers.netapp.nfs.NetAppNFSDriver') self.assertEqual(self._driver_module_name(), NETAPP_MODULE) def test_netapp_cm_nfs_old(self): self._load_driver('cinder.volume.drivers.netapp.nfs.' 'NetAppCmodeNfsDriver') self.assertEqual(self._driver_module_name(), NETAPP_MODULE) def test_hp_lefthand_rest_old(self): self._load_driver( 'cinder.volume.drivers.san.hp_lefthand.HpSanISCSIDriver') self.assertEqual(self._driver_module_name(), LEFTHAND_REST_MODULE) def test_hp_lefthand_rest_new(self): self._load_driver(LEFTHAND_REST_MODULE) self.assertEqual(self._driver_module_name(), LEFTHAND_REST_MODULE) def test_gpfs_old(self): self._load_driver('cinder.volume.drivers.gpfs.GPFSDriver') self.assertEqual(self._driver_module_name(), GPFS_MODULE) def test_gpfs_new(self): self._load_driver(GPFS_MODULE) self.assertEqual(self._driver_module_name(), GPFS_MODULE) cinder-2014.1.5/cinder/tests/test_migrations.py0000664000567000056700000014322712540642606022561 0ustar jenkinsjenkins00000000000000 # Copyright 2010-2011 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests for database migrations. This test case reads the configuration file test_migrations.conf for database connection settings to use in the tests. For each connection found in the config file, the test case runs a series of test cases to ensure that migrations work properly both upgrading and downgrading, and that no data loss occurs if possible. """ import ConfigParser import os import subprocess import uuid from migrate.versioning import repository import six.moves.urllib.parse as urlparse import sqlalchemy import testtools import cinder.db.migration as migration import cinder.db.sqlalchemy.migrate_repo from cinder.db.sqlalchemy.migration import versioning_api as migration_api from cinder.openstack.common import log as logging from cinder import test LOG = logging.getLogger('cinder.tests.test_migrations') def _get_connect_string(backend, user="openstack_citest", passwd="openstack_citest", database="openstack_citest"): """Return connect string. Try to get a connection with a very specific set of values, if we get these then we'll run the tests, otherwise they are skipped. """ if backend == "postgres": backend = "postgresql+psycopg2" return ("%(backend)s://%(user)s:%(passwd)s@localhost/%(database)s" % {'backend': backend, 'user': user, 'passwd': passwd, 'database': database}) def _is_mysql_avail(**kwargs): return _is_backend_avail('mysql', **kwargs) def _is_backend_avail(backend, user="openstack_citest", passwd="openstack_citest", database="openstack_citest"): try: if backend == "mysql": connect_uri = _get_connect_string("mysql", user=user, passwd=passwd, database=database) elif backend == "postgres": connect_uri = _get_connect_string("postgres", user=user, passwd=passwd, database=database) engine = sqlalchemy.create_engine(connect_uri) connection = engine.connect() except Exception: # intentionally catch all to handle exceptions even if we don't # have any backend code loaded. LOG.exception("Backend %s is not available", backend) return False else: connection.close() engine.dispose() return True def _have_mysql(): present = os.environ.get('NOVA_TEST_MYSQL_PRESENT') if present is None: return _is_backend_avail('mysql') return present.lower() in ('', 'true') def get_table(engine, name): """Returns an sqlalchemy table dynamically from db. Needed because the models don't work for us in migrations as models will be far out of sync with the current data. """ metadata = sqlalchemy.schema.MetaData() metadata.bind = engine return sqlalchemy.Table(name, metadata, autoload=True) class TestMigrations(test.TestCase): """Test sqlalchemy-migrate migrations.""" DEFAULT_CONFIG_FILE = os.path.join(os.path.dirname(__file__), 'test_migrations.conf') # Test machines can set the CINDER_TEST_MIGRATIONS_CONF variable # to override the location of the config file for migration testing CONFIG_FILE_PATH = os.environ.get('CINDER_TEST_MIGRATIONS_CONF', DEFAULT_CONFIG_FILE) MIGRATE_FILE = cinder.db.sqlalchemy.migrate_repo.__file__ REPOSITORY = repository.Repository( os.path.abspath(os.path.dirname(MIGRATE_FILE))) def setUp(self): super(TestMigrations, self).setUp() self.snake_walk = False self.test_databases = {} # Load test databases from the config file. Only do this # once. No need to re-run this on each test... LOG.debug('config_path is %s' % TestMigrations.CONFIG_FILE_PATH) if not self.test_databases: if os.path.exists(TestMigrations.CONFIG_FILE_PATH): cp = ConfigParser.RawConfigParser() try: cp.read(TestMigrations.CONFIG_FILE_PATH) defaults = cp.defaults() for key, value in defaults.items(): self.test_databases[key] = value self.snake_walk = cp.getboolean('walk_style', 'snake_walk') except ConfigParser.ParsingError as e: self.fail("Failed to read test_migrations.conf config " "file. Got error: %s" % e) else: self.fail("Failed to find test_migrations.conf config " "file.") self.engines = {} for key, value in self.test_databases.items(): self.engines[key] = sqlalchemy.create_engine(value) # Set-up a dict of types for those column types that # are not uniform for all databases. self.bool_type = {} self.time_type = {} for (key, engine) in self.engines.items(): self.bool_type[engine.name] = sqlalchemy.types.BOOLEAN self.time_type[engine.name] = sqlalchemy.types.DATETIME if engine.name == 'mysql': self.bool_type[engine.name] = sqlalchemy.dialects.mysql.TINYINT if engine.name == 'postgresql': self.time_type[engine.name] = sqlalchemy.types.TIMESTAMP # We start each test case with a completely blank slate. self._reset_databases() def tearDown(self): # We destroy the test data store between each test case, # and recreate it, which ensures that we have no side-effects # from the tests self._reset_databases() super(TestMigrations, self).tearDown() def _reset_databases(self): def execute_cmd(cmd=None): proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) output = proc.communicate()[0] LOG.debug(output) self.assertEqual(0, proc.returncode) for key, engine in self.engines.items(): conn_string = self.test_databases[key] conn_pieces = urlparse.urlparse(conn_string) engine.dispose() if conn_string.startswith('sqlite'): # We can just delete the SQLite database, which is # the easiest and cleanest solution db_path = conn_pieces.path.strip('/') if os.path.exists(db_path): os.unlink(db_path) # No need to recreate the SQLite DB. SQLite will # create it for us if it's not there... elif conn_string.startswith('mysql'): # We can execute the MySQL client to destroy and re-create # the MYSQL database, which is easier and less error-prone # than using SQLAlchemy to do this via MetaData...trust me. database = conn_pieces.path.strip('/') loc_pieces = conn_pieces.netloc.split('@') host = loc_pieces[1] auth_pieces = loc_pieces[0].split(':') user = auth_pieces[0] password = "" if len(auth_pieces) > 1: if auth_pieces[1].strip(): password = "-p\"%s\"" % auth_pieces[1] sql = ("drop database if exists %(database)s; create database " "%(database)s;") % {'database': database} cmd = ("mysql -u \"%(user)s\" %(password)s -h %(host)s " "-e \"%(sql)s\"") % {'user': user, 'password': password, 'host': host, 'sql': sql} execute_cmd(cmd) elif conn_string.startswith('postgresql'): database = conn_pieces.path.strip('/') loc_pieces = conn_pieces.netloc.split('@') host = loc_pieces[1] auth_pieces = loc_pieces[0].split(':') user = auth_pieces[0] password = "" if len(auth_pieces) > 1: password = auth_pieces[1].strip() # note(krtaylor): File creation problems with tests in # venv using .pgpass authentication, changed to # PGPASSWORD environment variable which is no longer # planned to be deprecated os.environ['PGPASSWORD'] = password os.environ['PGUSER'] = user # note(boris-42): We must create and drop database, we can't # drop database which we have connected to, so for such # operations there is a special database template1. sqlcmd = ("psql -w -U %(user)s -h %(host)s -c" " '%(sql)s' -d template1") sql = ("drop database if exists %(database)s;") % {'database': database} droptable = sqlcmd % {'user': user, 'host': host, 'sql': sql} execute_cmd(droptable) sql = ("create database %(database)s;") % {'database': database} createtable = sqlcmd % {'user': user, 'host': host, 'sql': sql} execute_cmd(createtable) os.unsetenv('PGPASSWORD') os.unsetenv('PGUSER') def test_walk_versions(self): """Test walk versions. Walks all version scripts for each tested database, ensuring that there are no errors in the version scripts for each engine """ for key, engine in self.engines.items(): self._walk_versions(engine, self.snake_walk) def test_mysql_connect_fail(self): """Test for mysql connection failure. Test that we can trigger a mysql connection failure and we fail gracefully to ensure we don't break people without mysql """ if _is_mysql_avail(user="openstack_cifail"): self.fail("Shouldn't have connected") @testtools.skipUnless(_have_mysql(), "mysql not available") def test_mysql_innodb(self): """Test that table creation on mysql only builds InnoDB tables.""" # add this to the global lists to make reset work with it, it's removed # automatically in tearDown so no need to clean it up here. connect_string = _get_connect_string('mysql') engine = sqlalchemy.create_engine(connect_string) self.engines["mysqlcitest"] = engine self.test_databases["mysqlcitest"] = connect_string # build a fully populated mysql database with all the tables self._reset_databases() self._walk_versions(engine, False, False) uri = _get_connect_string('mysql', database="information_schema") connection = sqlalchemy.create_engine(uri).connect() # sanity check total = connection.execute("SELECT count(*) " "from information_schema.TABLES " "where TABLE_SCHEMA='openstack_citest'") self.assertGreater(total.scalar(), 0, msg="No tables found. Wrong schema?") noninnodb = connection.execute("SELECT count(*) " "from information_schema.TABLES " "where TABLE_SCHEMA='openstack_citest' " "and ENGINE!='InnoDB' " "and TABLE_NAME!='migrate_version'") count = noninnodb.scalar() self.assertEqual(count, 0, "%d non InnoDB tables created" % count) def test_postgresql_connect_fail(self): """Test connection failure on PostgrSQL. Test that we can trigger a postgres connection failure and we fail gracefully to ensure we don't break people without postgres. """ if _is_backend_avail('postgres', user="openstack_cifail"): self.fail("Shouldn't have connected") @testtools.skipUnless(_is_backend_avail('postgres'), "postgresql not available") def test_postgresql_opportunistically(self): # add this to the global lists to make reset work with it, it's removed # automatically in tearDown so no need to clean it up here. connect_string = _get_connect_string("postgres") engine = sqlalchemy.create_engine(connect_string) self.engines["postgresqlcitest"] = engine self.test_databases["postgresqlcitest"] = connect_string # build a fully populated postgresql database with all the tables self._reset_databases() self._walk_versions(engine, False, False) def _walk_versions(self, engine=None, snake_walk=False, downgrade=True): # Determine latest version script from the repo, then # upgrade from 1 through to the latest, with no data # in the databases. This just checks that the schema itself # upgrades successfully. # Place the database under version control migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) self.assertEqual(migration.db_initial_version(), migration_api.db_version(engine, TestMigrations.REPOSITORY)) migration_api.upgrade(engine, TestMigrations.REPOSITORY, migration.db_initial_version() + 1) LOG.debug('latest version is %s' % TestMigrations.REPOSITORY.latest) for version in xrange(migration.db_initial_version() + 2, TestMigrations.REPOSITORY.latest + 1): # upgrade -> downgrade -> upgrade self._migrate_up(engine, version, with_data=True) if snake_walk: self._migrate_down(engine, version - 1) self._migrate_up(engine, version) if downgrade: # Now walk it back down to 0 from the latest, testing # the downgrade paths. for version in reversed( xrange(migration.db_initial_version() + 1, TestMigrations.REPOSITORY.latest)): # downgrade -> upgrade -> downgrade self._migrate_down(engine, version) if snake_walk: self._migrate_up(engine, version + 1) self._migrate_down(engine, version) def _migrate_down(self, engine, version): migration_api.downgrade(engine, TestMigrations.REPOSITORY, version) self.assertEqual(version, migration_api.db_version(engine, TestMigrations.REPOSITORY)) def _migrate_up(self, engine, version, with_data=False): """Migrate up to a new version of the db. We allow for data insertion and post checks at every migration version with special _prerun_### and _check_### functions in the main test. """ # NOTE(sdague): try block is here because it's impossible to debug # where a failed data migration happens otherwise try: if with_data: data = None prerun = getattr(self, "_prerun_%3.3d" % version, None) if prerun: data = prerun(engine) migration_api.upgrade(engine, TestMigrations.REPOSITORY, version) self.assertEqual( version, migration_api.db_version(engine, TestMigrations.REPOSITORY)) if with_data: check = getattr(self, "_check_%3.3d" % version, None) if check: check(engine, data) except Exception: LOG.error("Failed to migrate to version %s on engine %s" % (version, engine)) raise # migration 004 - change volume types to UUID def _prerun_004(self, engine): data = { 'volumes': [{'id': str(uuid.uuid4()), 'host': 'test1', 'volume_type_id': 1}, {'id': str(uuid.uuid4()), 'host': 'test2', 'volume_type_id': 1}, {'id': str(uuid.uuid4()), 'host': 'test3', 'volume_type_id': 3}, ], 'volume_types': [{'name': 'vtype1'}, {'name': 'vtype2'}, {'name': 'vtype3'}, ], 'volume_type_extra_specs': [{'volume_type_id': 1, 'key': 'v1', 'value': 'hotep', }, {'volume_type_id': 1, 'key': 'v2', 'value': 'bending rodrigez', }, {'volume_type_id': 2, 'key': 'v3', 'value': 'bending rodrigez', }, ]} volume_types = get_table(engine, 'volume_types') for vtype in data['volume_types']: r = volume_types.insert().values(vtype).execute() vtype['id'] = r.inserted_primary_key[0] volume_type_es = get_table(engine, 'volume_type_extra_specs') for vtes in data['volume_type_extra_specs']: r = volume_type_es.insert().values(vtes).execute() vtes['id'] = r.inserted_primary_key[0] volumes = get_table(engine, 'volumes') for vol in data['volumes']: r = volumes.insert().values(vol).execute() vol['id'] = r.inserted_primary_key[0] return data def _check_004(self, engine, data): volumes = get_table(engine, 'volumes') v1 = volumes.select(volumes.c.id == data['volumes'][0]['id'] ).execute().first() v2 = volumes.select(volumes.c.id == data['volumes'][1]['id'] ).execute().first() v3 = volumes.select(volumes.c.id == data['volumes'][2]['id'] ).execute().first() volume_types = get_table(engine, 'volume_types') vt1 = volume_types.select(volume_types.c.name == data['volume_types'][0]['name'] ).execute().first() vt2 = volume_types.select(volume_types.c.name == data['volume_types'][1]['name'] ).execute().first() vt3 = volume_types.select(volume_types.c.name == data['volume_types'][2]['name'] ).execute().first() vtes = get_table(engine, 'volume_type_extra_specs') vtes1 = vtes.select(vtes.c.key == data['volume_type_extra_specs'][0]['key'] ).execute().first() vtes2 = vtes.select(vtes.c.key == data['volume_type_extra_specs'][1]['key'] ).execute().first() vtes3 = vtes.select(vtes.c.key == data['volume_type_extra_specs'][2]['key'] ).execute().first() self.assertEqual(v1['volume_type_id'], vt1['id']) self.assertEqual(v2['volume_type_id'], vt1['id']) self.assertEqual(v3['volume_type_id'], vt3['id']) self.assertEqual(vtes1['volume_type_id'], vt1['id']) self.assertEqual(vtes2['volume_type_id'], vt1['id']) self.assertEqual(vtes3['volume_type_id'], vt2['id']) def test_migration_005(self): """Test that adding source_volid column works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 4) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 5) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertIsInstance(volumes.c.source_volid.type, sqlalchemy.types.VARCHAR) def _metadatas(self, upgrade_to, downgrade_to=None): for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, upgrade_to) if downgrade_to is not None: migration_api.downgrade( engine, TestMigrations.REPOSITORY, downgrade_to) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine yield metadata def metadatas_upgraded_to(self, revision): return self._metadatas(revision) def metadatas_downgraded_from(self, revision): return self._metadatas(revision, revision - 1) def test_upgrade_006_adds_provider_location(self): for metadata in self.metadatas_upgraded_to(6): snapshots = sqlalchemy.Table('snapshots', metadata, autoload=True) self.assertIsInstance(snapshots.c.provider_location.type, sqlalchemy.types.VARCHAR) def test_downgrade_006_removes_provider_location(self): for metadata in self.metadatas_downgraded_from(6): snapshots = sqlalchemy.Table('snapshots', metadata, autoload=True) self.assertNotIn('provider_location', snapshots.c) def test_upgrade_007_adds_fk(self): for metadata in self.metadatas_upgraded_to(7): snapshots = sqlalchemy.Table('snapshots', metadata, autoload=True) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) fkey, = snapshots.c.volume_id.foreign_keys self.assertEqual(volumes.c.id, fkey.column) def test_downgrade_007_removes_fk(self): for metadata in self.metadatas_downgraded_from(7): snapshots = sqlalchemy.Table('snapshots', metadata, autoload=True) self.assertEqual(0, len(snapshots.c.volume_id.foreign_keys)) def test_migration_008(self): """Test that adding and removing the backups table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 7) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 8) self.assertTrue(engine.dialect.has_table(engine.connect(), "backups")) backups = sqlalchemy.Table('backups', metadata, autoload=True) self.assertIsInstance(backups.c.created_at.type, self.time_type[engine.name]) self.assertIsInstance(backups.c.updated_at.type, self.time_type[engine.name]) self.assertIsInstance(backups.c.deleted_at.type, self.time_type[engine.name]) self.assertIsInstance(backups.c.deleted.type, self.bool_type[engine.name]) self.assertIsInstance(backups.c.id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.volume_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.user_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.project_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.host.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.availability_zone.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.display_name.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.display_description.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.container.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.status.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.fail_reason.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.service_metadata.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.service.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(backups.c.size.type, sqlalchemy.types.INTEGER) self.assertIsInstance(backups.c.object_count.type, sqlalchemy.types.INTEGER) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 7) self.assertFalse(engine.dialect.has_table(engine.connect(), "backups")) def test_migration_009(self): """Test adding snapshot_metadata table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 8) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 9) self.assertTrue(engine.dialect.has_table(engine.connect(), "snapshot_metadata")) snapshot_metadata = sqlalchemy.Table('snapshot_metadata', metadata, autoload=True) self.assertIsInstance(snapshot_metadata.c.created_at.type, self.time_type[engine.name]) self.assertIsInstance(snapshot_metadata.c.updated_at.type, self.time_type[engine.name]) self.assertIsInstance(snapshot_metadata.c.deleted_at.type, self.time_type[engine.name]) self.assertIsInstance(snapshot_metadata.c.deleted.type, self.bool_type[engine.name]) self.assertIsInstance(snapshot_metadata.c.deleted.type, self.bool_type[engine.name]) self.assertIsInstance(snapshot_metadata.c.id.type, sqlalchemy.types.INTEGER) self.assertIsInstance(snapshot_metadata.c.snapshot_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(snapshot_metadata.c.key.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(snapshot_metadata.c.value.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 8) self.assertFalse(engine.dialect.has_table(engine.connect(), "snapshot_metadata")) def test_migration_010(self): """Test adding transfers table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 9) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 10) self.assertTrue(engine.dialect.has_table(engine.connect(), "transfers")) transfers = sqlalchemy.Table('transfers', metadata, autoload=True) self.assertIsInstance(transfers.c.created_at.type, self.time_type[engine.name]) self.assertIsInstance(transfers.c.updated_at.type, self.time_type[engine.name]) self.assertIsInstance(transfers.c.deleted_at.type, self.time_type[engine.name]) self.assertIsInstance(transfers.c.deleted.type, self.bool_type[engine.name]) self.assertIsInstance(transfers.c.id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(transfers.c.volume_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(transfers.c.display_name.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(transfers.c.salt.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(transfers.c.crypt_hash.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(transfers.c.expires_at.type, self.time_type[engine.name]) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 9) self.assertFalse(engine.dialect.has_table(engine.connect(), "transfers")) def test_migration_011(self): """Test adding transfers table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 10) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes_v10 = sqlalchemy.Table('volumes', metadata, autoload=True) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 11) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine self.assertTrue(engine.dialect.has_table(engine.connect(), "volumes")) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) # Make sure we didn't miss any columns in the upgrade for column in volumes_v10.c: self.assertTrue(volumes.c.__contains__(column.name)) self.assertIsInstance(volumes.c.bootable.type, self.bool_type[engine.name]) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 10) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertNotIn('bootable', volumes.c) # Make sure we put all the columns back for column in volumes_v10.c: self.assertTrue(volumes.c.__contains__(column.name)) def test_migration_012(self): """Test that adding attached_host column works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 11) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 12) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertIsInstance(volumes.c.attached_host.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 11) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertNotIn('attached_host', volumes.c) def test_migration_013(self): """Test that adding provider_geometry column works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 12) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 13) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertIsInstance(volumes.c.provider_geometry.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 12) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertNotIn('provider_geometry', volumes.c) def test_migration_014(self): """Test that adding _name_id column works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 13) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 14) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertIsInstance(volumes.c._name_id.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 13) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertNotIn('_name_id', volumes.c) def test_migration_015(self): """Test removing migrations table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 15) self.assertFalse(engine.dialect.has_table(engine.connect(), "migrations")) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 14) self.assertTrue(engine.dialect.has_table(engine.connect(), "migrations")) def test_migration_016(self): """Test that dropping xen storage manager tables works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 15) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 16) self.assertFalse(engine.dialect.has_table(engine.connect(), 'sm_flavors')) self.assertFalse(engine.dialect.has_table(engine.connect(), 'sm_backend_config')) self.assertFalse(engine.dialect.has_table(engine.connect(), 'sm_volume')) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 15) self.assertTrue(engine.dialect.has_table(engine.connect(), 'sm_flavors')) self.assertTrue(engine.dialect.has_table(engine.connect(), 'sm_backend_config')) self.assertTrue(engine.dialect.has_table(engine.connect(), 'sm_volume')) def test_migration_017(self): """Test that added encryption information works correctly.""" # upgrade schema for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 16) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 17) # encryption key UUID volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertIn('encryption_key_id', volumes.c) self.assertIsInstance(volumes.c.encryption_key_id.type, sqlalchemy.types.VARCHAR) snapshots = sqlalchemy.Table('snapshots', metadata, autoload=True) self.assertIn('encryption_key_id', snapshots.c) self.assertIsInstance(snapshots.c.encryption_key_id.type, sqlalchemy.types.VARCHAR) self.assertIn('volume_type_id', snapshots.c) self.assertIsInstance(snapshots.c.volume_type_id.type, sqlalchemy.types.VARCHAR) # encryption types table encryption = sqlalchemy.Table('encryption', metadata, autoload=True) self.assertIsInstance(encryption.c.volume_type_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(encryption.c.cipher.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(encryption.c.key_size.type, sqlalchemy.types.INTEGER) self.assertIsInstance(encryption.c.provider.type, sqlalchemy.types.VARCHAR) # downgrade schema migration_api.downgrade(engine, TestMigrations.REPOSITORY, 16) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertNotIn('encryption_key_id', volumes.c) snapshots = sqlalchemy.Table('snapshots', metadata, autoload=True) self.assertNotIn('encryption_key_id', snapshots.c) self.assertFalse(engine.dialect.has_table(engine.connect(), 'encryption')) def test_migration_018(self): """Test that added qos_specs table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 17) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 18) self.assertTrue(engine.dialect.has_table( engine.connect(), "quality_of_service_specs")) qos_specs = sqlalchemy.Table('quality_of_service_specs', metadata, autoload=True) self.assertIsInstance(qos_specs.c.created_at.type, self.time_type[engine.name]) self.assertIsInstance(qos_specs.c.updated_at.type, self.time_type[engine.name]) self.assertIsInstance(qos_specs.c.deleted_at.type, self.time_type[engine.name]) self.assertIsInstance(qos_specs.c.deleted.type, self.bool_type[engine.name]) self.assertIsInstance(qos_specs.c.id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(qos_specs.c.specs_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(qos_specs.c.key.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(qos_specs.c.value.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 17) self.assertFalse(engine.dialect.has_table( engine.connect(), "quality_of_service_specs")) def test_migration_019(self): """Test that adding migration_status column works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 18) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 19) volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertIsInstance(volumes.c.migration_status.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 18) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine volumes = sqlalchemy.Table('volumes', metadata, autoload=True) self.assertNotIn('migration_status', volumes.c) def test_migration_020(self): """Test adding volume_admin_metadata table works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 19) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 20) self.assertTrue(engine.dialect.has_table(engine.connect(), "volume_admin_metadata")) volume_admin_metadata = sqlalchemy.Table('volume_admin_metadata', metadata, autoload=True) self.assertIsInstance(volume_admin_metadata.c.created_at.type, self.time_type[engine.name]) self.assertIsInstance(volume_admin_metadata.c.updated_at.type, self.time_type[engine.name]) self.assertIsInstance(volume_admin_metadata.c.deleted_at.type, self.time_type[engine.name]) self.assertIsInstance(volume_admin_metadata.c.deleted.type, self.bool_type[engine.name]) self.assertIsInstance(volume_admin_metadata.c.id.type, sqlalchemy.types.INTEGER) self.assertIsInstance(volume_admin_metadata.c.volume_id.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(volume_admin_metadata.c.key.type, sqlalchemy.types.VARCHAR) self.assertIsInstance(volume_admin_metadata.c.value.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 19) self.assertFalse(engine.dialect.has_table(engine.connect(), "volume_admin_metadata")) def test_migration_021(self): """Test adding default data for quota classes works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 20) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 21) quota_class_metadata = sqlalchemy.Table('quota_classes', metadata, autoload=True) num_defaults = quota_class_metadata.count().\ where(quota_class_metadata.c.class_name == 'default').\ execute().scalar() self.assertEqual(3, num_defaults) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 20) # Defaults should not be deleted during downgrade num_defaults = quota_class_metadata.count().\ where(quota_class_metadata.c.class_name == 'default').\ execute().scalar() self.assertEqual(3, num_defaults) def test_migration_022(self): """Test that adding disabled_reason column works correctly.""" for (key, engine) in self.engines.items(): migration_api.version_control(engine, TestMigrations.REPOSITORY, migration.db_initial_version()) migration_api.upgrade(engine, TestMigrations.REPOSITORY, 21) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine migration_api.upgrade(engine, TestMigrations.REPOSITORY, 22) services = sqlalchemy.Table('services', metadata, autoload=True) self.assertIsInstance(services.c.disabled_reason.type, sqlalchemy.types.VARCHAR) migration_api.downgrade(engine, TestMigrations.REPOSITORY, 21) metadata = sqlalchemy.schema.MetaData() metadata.bind = engine services = sqlalchemy.Table('services', metadata, autoload=True) self.assertNotIn('disabled_reason', services.c) cinder-2014.1.5/cinder/tests/test_emc_smis.py0000664000567000056700000015566112540642606022211 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 - 2014 EMC Corporation, Inc. # All Rights Reserved. # # 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. import os import shutil import tempfile import time from xml.dom.minidom import Document import mock from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder import units from cinder.volume.drivers.emc.emc_smis_common import EMCSMISCommon from cinder.volume.drivers.emc.emc_smis_fc import EMCSMISFCDriver from cinder.volume.drivers.emc.emc_smis_iscsi import EMCSMISISCSIDriver from cinder.volume import volume_types CINDER_EMC_CONFIG_FILE = '/etc/cinder/cinder_emc_config.xml' LOG = logging.getLogger(__name__) class EMC_StorageVolume(dict): pass class SE_ConcreteJob(dict): pass class SE_StorageHardwareID(dict): pass class FakeCIMInstanceName(dict): def fake_getinstancename(self, classname, bindings): instancename = FakeCIMInstanceName() for key in bindings: instancename[key] = bindings[key] instancename.classname = classname instancename.namespace = 'root/emc' return instancename class FakeDB(): def volume_update(self, context, volume_id, model_update): pass def snapshot_update(self, context, snapshot_id, model_update): pass def volume_get(self, context, volume_id): conn = FakeEcomConnection() objectpath = {} objectpath['CreationClassName'] = 'Clar_StorageVolume' if volume_id == 'vol1': device_id = '1' objectpath['DeviceID'] = device_id else: objectpath['DeviceID'] = volume_id return conn.GetInstance(objectpath) class EMCSMISCommonData(): connector = {'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'wwpns': ["123456789012345", "123456789054321"], 'wwnns': ["223456789012345", "223456789054321"], 'host': 'fakehost'} config_file_name = 'cinder_emc_config.xml' storage_system = 'CLARiiON+APM00123456789' storage_system_vmax = 'SYMMETRIX+000195900551' lunmaskctrl_id =\ 'CLARiiON+APM00123456789+00aa11bb22cc33dd44ff55gg66hh77ii88jj' initiator1 = 'iqn.1993-08.org.debian:01:1a2b3c4d5f6g' stconf_service_creationclass = 'Clar_StorageConfigurationService' ctrlconf_service_creationclass = 'Clar_ControllerConfigurationService' rep_service_creationclass = 'Clar_ReplicationService' vol_creationclass = 'Clar_StorageVolume' pool_creationclass = 'Clar_UnifiedStoragePool' lunmask_creationclass = 'Clar_LunMaskingSCSIProtocolController' unit_creationclass = 'CIM_ProtocolControllerForUnit' storage_type = 'gold' test_volume = {'name': 'vol1', 'size': 1, 'volume_name': 'vol1', 'id': '1', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'test volume', 'volume_type_id': None} test_failed_volume = {'name': 'failed_vol', 'size': 1, 'volume_name': 'failed_vol', 'id': '4', 'provider_auth': None, 'project_id': 'project', 'display_name': 'failed_vol', 'display_description': 'test failed volume', 'volume_type_id': None} test_snapshot = {'name': 'snapshot1', 'size': 1, 'id': '4444', 'volume_name': 'vol-vol1', 'volume_size': 1, 'project_id': 'project'} test_clone = {'name': 'clone1', 'size': 1, 'volume_name': 'vol1', 'id': '2', 'provider_auth': None, 'project_id': 'project', 'display_name': 'clone1', 'display_description': 'volume created from snapshot', 'volume_type_id': None} test_clone3 = {'name': 'clone3', 'size': 1, 'volume_name': 'vol1', 'id': '3', 'provider_auth': None, 'project_id': 'project', 'display_name': 'clone3', 'display_description': 'cloned volume', 'volume_type_id': None} test_snapshot_vmax = {'name': 'snapshot_vmax', 'size': 1, 'id': '4445', 'volume_name': 'vol-vol1', 'volume_size': 1, 'project_id': 'project'} failed_snapshot_replica = {'name': 'failed_snapshot_replica', 'size': 1, 'volume_name': 'vol-vol1', 'id': '5', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'failed snapshot replica', 'volume_type_id': None} failed_snapshot_sync = {'name': 'failed_snapshot_sync', 'size': 1, 'volume_name': 'vol-vol1', 'id': '6', 'provider_auth': None, 'project_id': 'project', 'display_name': 'failed_snapshot_sync', 'display_description': 'failed snapshot sync', 'volume_type_id': None} failed_clone_replica = {'name': 'failed_clone_replica', 'size': 1, 'volume_name': 'vol1', 'id': '7', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'failed clone replica', 'volume_type_id': None} failed_clone_sync = {'name': 'failed_clone_sync', 'size': 1, 'volume_name': 'vol1', 'id': '8', 'provider_auth': None, 'project_id': 'project', 'display_name': 'vol1', 'display_description': 'failed clone sync', 'volume_type_id': None} failed_delete_vol = {'name': 'failed_delete_vol', 'size': 1, 'volume_name': 'failed_delete_vol', 'id': '99999', 'provider_auth': None, 'project_id': 'project', 'display_name': 'failed delete vol', 'display_description': 'failed delete volume', 'volume_type_id': None} failed_extend_vol = {'name': 'failed_extend_vol', 'size': 1, 'volume_name': 'failed_extend_vol', 'id': '9', 'provider_auth': None, 'project_id': 'project', 'display_name': 'failed_extend_vol', 'display_description': 'test failed extend volume', 'volume_type_id': None} class FakeEcomConnection(): def __init__(self, *args, **kwargs): self.data = EMCSMISCommonData() def InvokeMethod(self, MethodName, Service, ElementName=None, InPool=None, ElementType=None, Size=None, SyncType=None, SourceElement=None, Operation=None, Synchronization=None, TheElements=None, TheElement=None, LUNames=None, InitiatorPortIDs=None, DeviceAccesses=None, ProtocolControllers=None, MaskingGroup=None, Members=None, HardwareId=None): rc = 0L myjob = SE_ConcreteJob() myjob.classname = 'SE_ConcreteJob' myjob['InstanceID'] = '9999' myjob['status'] = 'success' myjob['type'] = ElementName if ElementName == 'failed_vol' and \ MethodName == 'CreateOrModifyElementFromStoragePool': rc = 10L myjob['status'] = 'failure' elif TheElement and TheElement['ElementName'] == 'failed_extend_vol' \ and MethodName == 'CreateOrModifyElementFromStoragePool': rc = 10L myjob['status'] = 'failure' elif MethodName == 'CreateOrModifyElementFromStoragePool': rc = 0L myjob['status'] = 'success' elif ElementName == 'failed_snapshot_replica' and \ MethodName == 'CreateElementReplica': rc = 10L myjob['status'] = 'failure' elif Synchronization and \ Synchronization['SyncedElement']['ElementName'] \ == 'failed_snapshot_sync' and \ MethodName == 'ModifyReplicaSynchronization': rc = 10L myjob['status'] = 'failure' elif ElementName == 'failed_clone_replica' and \ MethodName == 'CreateElementReplica': rc = 10L myjob['status'] = 'failure' elif Synchronization and \ Synchronization['SyncedElement']['ElementName'] \ == 'failed_clone_sync' and \ MethodName == 'ModifyReplicaSynchronization': rc = 10L myjob['status'] = 'failure' elif TheElements and \ TheElements[0]['DeviceID'] == '99999' and \ MethodName == 'EMCReturnToStoragePool': rc = 10L myjob['status'] = 'failure' elif HardwareId: rc = 0L targetendpoints = {} endpoints = [] endpoint = {} endpoint['Name'] = '1234567890123' endpoints.append(endpoint) endpoint2 = {} endpoint2['Name'] = '0987654321321' endpoints.append(endpoint2) targetendpoints['TargetEndpoints'] = endpoints return rc, targetendpoints job = {'Job': myjob} return rc, job def EnumerateInstanceNames(self, name): result = None if name == 'EMC_ReplicationService': result = self._enum_replicationservices() elif name == 'EMC_StorageConfigurationService': result = self._enum_stconfsvcs() elif name == 'EMC_ControllerConfigurationService': result = self._enum_ctrlconfsvcs() elif name == 'EMC_VirtualProvisioningPool': result = self._enum_pools() elif name == 'EMC_UnifiedStoragePool': result = self._enum_pools() elif name == 'EMC_StorageVolume': result = self._enum_storagevolumes() elif name == 'Clar_StorageVolume': result = self._enum_storagevolumes() elif name == 'SE_StorageSynchronized_SV_SV': result = self._enum_syncsvsvs() elif name == 'CIM_ProtocolControllerForUnit': result = self._enum_unitnames() elif name == 'EMC_LunMaskingSCSIProtocolController': result = self._enum_lunmaskctrls() elif name == 'EMC_StorageProcessorSystem': result = self._enum_processors() elif name == 'EMC_StorageHardwareIDManagementService': result = self._enum_hdwidmgmts() else: result = self._default_enum() return result def EnumerateInstances(self, name): result = None if name == 'EMC_VirtualProvisioningPool': result = self._enum_pool_details() elif name == 'EMC_UnifiedStoragePool': result = self._enum_pool_details() elif name == 'SE_StorageHardwareID': result = self._enum_storhdwids() else: result = self._default_enum() return result def GetInstance(self, objectpath, LocalOnly=False): try: name = objectpath['CreationClassName'] except KeyError: name = objectpath.classname result = None if name == 'Clar_StorageVolume' or name == 'Symm_StorageVolume': result = self._getinstance_storagevolume(objectpath) elif name == 'CIM_ProtocolControllerForUnit': result = self._getinstance_unit(objectpath) elif name == 'Clar_LunMaskingSCSIProtocolController': result = self._getinstance_lunmask() elif name == 'SE_ConcreteJob': result = self._getinstance_job(objectpath) elif name == 'SE_StorageSynchronized_SV_SV': result = self._getinstance_syncsvsv(objectpath) else: result = self._default_getinstance(objectpath) return result def Associators(self, objectpath, resultClass='EMC_StorageHardwareID'): result = None if resultClass == 'EMC_StorageHardwareID': result = self._assoc_hdwid() elif resultClass == 'EMC_iSCSIProtocolEndpoint': result = self._assoc_endpoint() # Added test for EMC_StorageVolume elif resultClass == 'EMC_StorageVolume': result = self._assoc_storagevolume(objectpath) else: result = self._default_assoc(objectpath) return result def AssociatorNames(self, objectpath, resultClass='EMC_LunMaskingSCSIProtocolController'): result = None if resultClass == 'EMC_LunMaskingSCSIProtocolController': result = self._assocnames_lunmaskctrl() else: result = self._default_assocnames(objectpath) return result def ReferenceNames(self, objectpath, ResultClass='CIM_ProtocolControllerForUnit'): result = None if ResultClass == 'CIM_ProtocolControllerForUnit': result = self._ref_unitnames() else: result = self._default_ref(objectpath) return result def _ref_unitnames(self): unitnames = [] unitname = {} dependent = {} dependent['CreationClassName'] = self.data.vol_creationclass dependent['DeviceID'] = self.data.test_volume['id'] dependent['ElementName'] = self.data.test_volume['name'] dependent['SystemName'] = self.data.storage_system antecedent = {} antecedent['CreationClassName'] = self.data.lunmask_creationclass antecedent['DeviceID'] = self.data.lunmaskctrl_id antecedent['SystemName'] = self.data.storage_system unitname['Dependent'] = dependent unitname['Antecedent'] = antecedent unitname['CreationClassName'] = self.data.unit_creationclass unitnames.append(unitname) return unitnames def _default_ref(self, objectpath): return objectpath def _assoc_hdwid(self): assocs = [] assoc = {} assoc['StorageID'] = self.data.connector['initiator'] assocs.append(assoc) for wwpn in self.data.connector['wwpns']: assoc2 = {} assoc2['StorageID'] = wwpn assocs.append(assoc2) return assocs def _assoc_endpoint(self): assocs = [] assoc = {} assoc['Name'] = 'iqn.1992-04.com.emc:cx.apm00123907237.a8,t,0x0001' assoc['SystemName'] = self.data.storage_system + '+SP_A+8' assocs.append(assoc) return assocs # Added test for EMC_StorageVolume associators def _assoc_storagevolume(self, objectpath): assocs = [] if objectpath['type'] == 'failed_delete_vol': vol = self.data.failed_delete_vol elif objectpath['type'] == 'vol1': vol = self.data.test_volume elif objectpath['type'] == 'failed_vol': vol = self.data.test_failed_volume elif objectpath['type'] == 'failed_clone_sync': vol = self.data.failed_clone_sync elif objectpath['type'] == 'failed_clone_replica': vol = self.data.failed_clone_replica elif objectpath['type'] == 'failed_snapshot_replica': vol = self.data.failed_snapshot_replica elif objectpath['type'] == 'failed_snapshot_sync': vol = self.data.failed_snapshot_sync elif objectpath['type'] == 'clone1': vol = self.data.test_clone elif objectpath['type'] == 'clone3': vol = self.data.test_clone3 elif objectpath['type'] == 'snapshot1': vol = self.data.test_snapshot elif objectpath['type'] == 'snapshot_vmax': vol = self.data.test_snapshot_vmax elif objectpath['type'] == 'failed_extend_vol': vol = self.data.failed_extend_vol else: return None vol['DeviceID'] = vol['id'] assoc = self._getinstance_storagevolume(vol) assocs.append(assoc) return assocs def _default_assoc(self, objectpath): return objectpath def _assocnames_lunmaskctrl(self): return self._enum_lunmaskctrls() def _default_assocnames(self, objectpath): return objectpath def _getinstance_storagevolume(self, objectpath): foundinstance = None instance = EMC_StorageVolume() vols = self._enum_storagevolumes() for vol in vols: if vol['DeviceID'] == objectpath['DeviceID']: instance = vol break if not instance: foundinstance = None else: foundinstance = instance return foundinstance def _getinstance_syncsvsv(self, objectpath): foundsync = None syncs = self._enum_syncsvsvs() for sync in syncs: if (sync['SyncedElement'] == objectpath['SyncedElement'] and sync['SystemElement'] == objectpath['SystemElement']): foundsync = sync break return foundsync def _getinstance_lunmask(self): lunmask = {} lunmask['CreationClassName'] = self.data.lunmask_creationclass lunmask['DeviceID'] = self.data.lunmaskctrl_id lunmask['SystemName'] = self.data.storage_system return lunmask def _getinstance_unit(self, objectpath): unit = {} dependent = {} dependent['CreationClassName'] = self.data.vol_creationclass dependent['DeviceID'] = self.data.test_volume['id'] dependent['ElementName'] = self.data.test_volume['name'] dependent['SystemName'] = self.data.storage_system antecedent = {} antecedent['CreationClassName'] = self.data.lunmask_creationclass antecedent['DeviceID'] = self.data.lunmaskctrl_id antecedent['SystemName'] = self.data.storage_system unit['Dependent'] = dependent unit['Antecedent'] = antecedent unit['CreationClassName'] = self.data.unit_creationclass unit['DeviceNumber'] = '0' return unit def _getinstance_job(self, jobpath): jobinstance = {} jobinstance['InstanceID'] = '9999' if jobpath['status'] == 'failure': jobinstance['JobState'] = 10 jobinstance['ErrorCode'] = 99 jobinstance['ErrorDescription'] = 'Failure' else: jobinstance['JobState'] = 7 jobinstance['ErrorCode'] = 0 jobinstance['ErrorDescription'] = '' return jobinstance def _default_getinstance(self, objectpath): return objectpath def _enum_replicationservices(self): rep_services = [] rep_service = {} rep_service['SystemName'] = self.data.storage_system rep_service['CreationClassName'] = self.data.rep_service_creationclass rep_services.append(rep_service) return rep_services def _enum_stconfsvcs(self): conf_services = [] conf_service = {} conf_service['SystemName'] = self.data.storage_system conf_service['CreationClassName'] =\ self.data.stconf_service_creationclass conf_services.append(conf_service) return conf_services def _enum_ctrlconfsvcs(self): conf_services = [] conf_service = {} conf_service['SystemName'] = self.data.storage_system conf_service['CreationClassName'] =\ self.data.ctrlconf_service_creationclass conf_services.append(conf_service) return conf_services def _enum_pools(self): pools = [] pool = {} pool['InstanceID'] = self.data.storage_system + '+U+' +\ self.data.storage_type pool['CreationClassName'] = 'Clar_UnifiedStoragePool' pools.append(pool) return pools def _enum_pool_details(self): pools = [] pool = {} pool['InstanceID'] = self.data.storage_system + '+U+' +\ self.data.storage_type pool['CreationClassName'] = 'Clar_UnifiedStoragePool' pool['TotalManagedSpace'] = 12345678 pool['RemainingManagedSpace'] = 123456 pools.append(pool) return pools def _enum_storagevolumes(self): vols = [] vol = EMC_StorageVolume() vol['name'] = self.data.test_volume['name'] vol['CreationClassName'] = 'Clar_StorageVolume' vol['ElementName'] = self.data.test_volume['name'] vol['DeviceID'] = self.data.test_volume['id'] vol['SystemName'] = self.data.storage_system # Added vol to vol.path vol['SystemCreationClassName'] = 'Clar_StorageSystem' vol.path = vol vol.path.classname = vol['CreationClassName'] name = {} name['classname'] = 'Clar_StorageVolume' keys = {} keys['CreationClassName'] = 'Clar_StorageVolume' keys['SystemName'] = self.data.storage_system keys['DeviceID'] = vol['DeviceID'] keys['SystemCreationClassName'] = 'Clar_StorageSystem' name['keybindings'] = keys vol['provider_location'] = str(name) vols.append(vol) snap_vol = EMC_StorageVolume() snap_vol['name'] = self.data.test_snapshot['name'] snap_vol['CreationClassName'] = 'Clar_StorageVolume' snap_vol['ElementName'] = self.data.test_snapshot['name'] snap_vol['DeviceID'] = self.data.test_snapshot['id'] snap_vol['SystemName'] = self.data.storage_system # Added vol to path snap_vol['SystemCreationClassName'] = 'Clar_StorageSystem' snap_vol.path = snap_vol snap_vol.path.classname = snap_vol['CreationClassName'] name2 = {} name2['classname'] = 'Clar_StorageVolume' keys2 = {} keys2['CreationClassName'] = 'Clar_StorageVolume' keys2['SystemName'] = self.data.storage_system keys2['DeviceID'] = snap_vol['DeviceID'] keys2['SystemCreationClassName'] = 'Clar_StorageSystem' name2['keybindings'] = keys2 snap_vol['provider_location'] = str(name2) vols.append(snap_vol) clone_vol = EMC_StorageVolume() clone_vol['name'] = self.data.test_clone['name'] clone_vol['CreationClassName'] = 'Clar_StorageVolume' clone_vol['ElementName'] = self.data.test_clone['name'] clone_vol['DeviceID'] = self.data.test_clone['id'] clone_vol['SystemName'] = self.data.storage_system # Added vol to vol.path clone_vol['SystemCreationClassName'] = 'Clar_StorageSystem' clone_vol.path = clone_vol clone_vol.path.classname = clone_vol['CreationClassName'] vols.append(clone_vol) clone_vol3 = EMC_StorageVolume() clone_vol3['name'] = self.data.test_clone3['name'] clone_vol3['CreationClassName'] = 'Clar_StorageVolume' clone_vol3['ElementName'] = self.data.test_clone3['name'] clone_vol3['DeviceID'] = self.data.test_clone3['id'] clone_vol3['SystemName'] = self.data.storage_system # Added vol to vol.path clone_vol3['SystemCreationClassName'] = 'Clar_StorageSystem' clone_vol3.path = clone_vol3 clone_vol3.path.classname = clone_vol3['CreationClassName'] vols.append(clone_vol3) snap_vol_vmax = EMC_StorageVolume() snap_vol_vmax['name'] = self.data.test_snapshot_vmax['name'] snap_vol_vmax['CreationClassName'] = 'Symm_StorageVolume' snap_vol_vmax['ElementName'] = self.data.test_snapshot_vmax['name'] snap_vol_vmax['DeviceID'] = self.data.test_snapshot_vmax['id'] snap_vol_vmax['SystemName'] = self.data.storage_system_vmax # Added vol to vol.path snap_vol_vmax['SystemCreationClassName'] = 'Symm_StorageSystem' snap_vol_vmax.path = snap_vol_vmax snap_vol_vmax.path.classname = snap_vol_vmax['CreationClassName'] name3 = {} name3['classname'] = 'Clar_StorageVolume' keys3 = {} keys3['CreationClassName'] = 'Clar_StorageVolume' keys3['SystemName'] = self.data.storage_system keys3['DeviceID'] = snap_vol_vmax['DeviceID'] keys3['SystemCreationClassName'] = 'Clar_StorageSystem' name3['keybindings'] = keys3 snap_vol_vmax['provider_location'] = str(name3) vols.append(snap_vol_vmax) failed_snap_replica = EMC_StorageVolume() failed_snap_replica['name'] = self.data.failed_snapshot_replica['name'] failed_snap_replica['CreationClassName'] = 'Clar_StorageVolume' failed_snap_replica['ElementName'] =\ self.data.failed_snapshot_replica['name'] failed_snap_replica['DeviceID'] =\ self.data.failed_snapshot_replica['id'] failed_snap_replica['SystemName'] = self.data.storage_system # Added vol to vol.path failed_snap_replica['SystemCreationClassName'] = 'Clar_StorageSystem' failed_snap_replica.path = failed_snap_replica failed_snap_replica.path.classname =\ failed_snap_replica['CreationClassName'] name4 = {} name4['classname'] = 'Clar_StorageVolume' keys4 = {} keys4['CreationClassName'] = 'Clar_StorageVolume' keys4['SystemName'] = self.data.storage_system keys4['DeviceID'] = failed_snap_replica['DeviceID'] keys4['SystemCreationClassName'] = 'Clar_StorageSystem' name4['keybindings'] = keys4 failed_snap_replica['provider_location'] = str(name4) vols.append(failed_snap_replica) failed_snap_sync = EMC_StorageVolume() failed_snap_sync['name'] = self.data.failed_snapshot_sync['name'] failed_snap_sync['CreationClassName'] = 'Clar_StorageVolume' failed_snap_sync['ElementName'] =\ self.data.failed_snapshot_sync['name'] failed_snap_sync['DeviceID'] = self.data.failed_snapshot_sync['id'] failed_snap_sync['SystemName'] = self.data.storage_system # Added vol to vol.path failed_snap_sync['SystemCreationClassName'] = 'Clar_StorageSystem' failed_snap_sync.path = failed_snap_sync failed_snap_sync.path.classname =\ failed_snap_sync['CreationClassName'] name5 = {} name5['classname'] = 'Clar_StorageVolume' keys5 = {} keys5['CreationClassName'] = 'Clar_StorageVolume' keys5['SystemName'] = self.data.storage_system keys5['DeviceID'] = failed_snap_sync['DeviceID'] keys5['SystemCreationClassName'] = 'Clar_StorageSystem' name5['keybindings'] = keys5 failed_snap_sync['provider_location'] = str(name5) vols.append(failed_snap_sync) failed_clone_rep = EMC_StorageVolume() failed_clone_rep['name'] = self.data.failed_clone_replica['name'] failed_clone_rep['CreationClassName'] = 'Clar_StorageVolume' failed_clone_rep['ElementName'] =\ self.data.failed_clone_replica['name'] failed_clone_rep['DeviceID'] = self.data.failed_clone_replica['id'] failed_clone_rep['SystemName'] = self.data.storage_system # Added vol to vol.path failed_clone_rep['SystemCreationClassName'] = 'Clar_StorageSystem' failed_clone_rep.path = failed_clone_rep failed_clone_rep.path.classname =\ failed_clone_rep['CreationClassName'] vols.append(failed_clone_rep) failed_clone_s = EMC_StorageVolume() failed_clone_s['name'] = self.data.failed_clone_sync['name'] failed_clone_s['CreationClassName'] = 'Clar_StorageVolume' failed_clone_s['ElementName'] = self.data.failed_clone_sync['name'] failed_clone_s['DeviceID'] = self.data.failed_clone_sync['id'] failed_clone_s['SystemName'] = self.data.storage_system # Added vol to vol.path failed_clone_s['SystemCreationClassName'] = 'Clar_StorageSystem' failed_clone_s.path = failed_clone_s failed_clone_s.path.classname =\ failed_clone_s['CreationClassName'] vols.append(failed_clone_s) failed_delete_vol = EMC_StorageVolume() failed_delete_vol['name'] = 'failed_delete_vol' failed_delete_vol['CreationClassName'] = 'Clar_StorageVolume' failed_delete_vol['ElementName'] = 'failed_delete_vol' failed_delete_vol['DeviceID'] = '99999' failed_delete_vol['SystemName'] = self.data.storage_system # Added vol to vol.path failed_delete_vol['SystemCreationClassName'] = 'Clar_StorageSystem' failed_delete_vol.path = failed_delete_vol failed_delete_vol.path.classname =\ failed_delete_vol['CreationClassName'] vols.append(failed_delete_vol) failed_vol = EMC_StorageVolume() failed_vol['name'] = 'failed__vol' failed_vol['CreationClassName'] = 'Clar_StorageVolume' failed_vol['ElementName'] = 'failed_vol' failed_vol['DeviceID'] = '4' failed_vol['SystemName'] = self.data.storage_system # Added vol to vol.path failed_vol['SystemCreationClassName'] = 'Clar_StorageSystem' failed_vol.path = failed_vol failed_vol.path.classname =\ failed_vol['CreationClassName'] name_failed = {} name_failed['classname'] = 'Clar_StorageVolume' keys_failed = {} keys_failed['CreationClassName'] = 'Clar_StorageVolume' keys_failed['SystemName'] = self.data.storage_system keys_failed['DeviceID'] = failed_vol['DeviceID'] keys_failed['SystemCreationClassName'] = 'Clar_StorageSystem' name_failed['keybindings'] = keys_failed failed_vol['provider_location'] = str(name_failed) vols.append(failed_vol) failed_extend_vol = EMC_StorageVolume() failed_extend_vol['name'] = 'failed_extend_vol' failed_extend_vol['CreationClassName'] = 'Clar_StorageVolume' failed_extend_vol['ElementName'] = 'failed_extend_vol' failed_extend_vol['DeviceID'] = '9' failed_extend_vol['SystemName'] = self.data.storage_system # Added vol to vol.path failed_extend_vol['SystemCreationClassName'] = 'Clar_StorageSystem' failed_extend_vol.path = failed_extend_vol failed_extend_vol.path.classname =\ failed_extend_vol['CreationClassName'] name_extend_failed = {} name_extend_failed['classname'] = 'Clar_StorageVolume' keys_extend_failed = {} keys_extend_failed['CreationClassName'] = 'Clar_StorageVolume' keys_extend_failed['SystemName'] = self.data.storage_system keys_extend_failed['DeviceID'] = failed_extend_vol['DeviceID'] keys_extend_failed['SystemCreationClassName'] = 'Clar_StorageSystem' name_extend_failed['keybindings'] = keys_extend_failed failed_extend_vol['provider_location'] = str(name_extend_failed) vols.append(failed_extend_vol) return vols def _enum_syncsvsvs(self): syncs = [] vols = self._enum_storagevolumes() sync = self._create_sync(vols[0], vols[1], 100) syncs.append(sync) sync2 = self._create_sync(vols[1], vols[2], 100) syncs.append(sync2) sync3 = self._create_sync(vols[0], vols[3], 100) syncs.append(sync3) objpath1 = vols[1] for vol in vols: if vol['ElementName'] == 'failed_snapshot_sync': objpath2 = vol break sync4 = self._create_sync(objpath1, objpath2, 100) syncs.append(sync4) objpath1 = vols[0] for vol in vols: if vol['ElementName'] == 'failed_clone_sync': objpath2 = vol break sync5 = self._create_sync(objpath1, objpath2, 100) syncs.append(sync5) return syncs def _create_sync(self, objpath1, objpath2, percentsynced): sync = {} sync['SyncedElement'] = objpath2 sync['SystemElement'] = objpath1 sync['CreationClassName'] = 'SE_StorageSynchronized_SV_SV' sync['PercentSynced'] = percentsynced return sync def _enum_unitnames(self): return self._ref_unitnames() def _enum_lunmaskctrls(self): ctrls = [] ctrl = {} ctrl['CreationClassName'] = self.data.lunmask_creationclass ctrl['DeviceID'] = self.data.lunmaskctrl_id ctrl['SystemName'] = self.data.storage_system ctrls.append(ctrl) return ctrls def _enum_processors(self): ctrls = [] ctrl = {} ctrl['CreationClassName'] = 'Clar_StorageProcessorSystem' ctrl['Name'] = self.data.storage_system + '+SP_A' ctrls.append(ctrl) return ctrls def _enum_hdwidmgmts(self): services = [] srv = {} srv['SystemName'] = self.data.storage_system services.append(srv) return services def _enum_storhdwids(self): storhdwids = [] hdwid = SE_StorageHardwareID() hdwid['StorageID'] = self.data.connector['wwpns'][0] hdwid.path = hdwid storhdwids.append(hdwid) return storhdwids def _default_enum(self): names = [] name = {} name['Name'] = 'default' names.append(name) return names class EMCSMISISCSIDriverTestCase(test.TestCase): def setUp(self): self.data = EMCSMISCommonData() self.tempdir = tempfile.mkdtemp() super(EMCSMISISCSIDriverTestCase, self).setUp() self.config_file_path = None self.create_fake_config_file() configuration = mock.Mock() configuration.cinder_emc_config_file = self.config_file_path self.stubs.Set(EMCSMISISCSIDriver, '_do_iscsi_discovery', self.fake_do_iscsi_discovery) self.stubs.Set(EMCSMISCommon, '_get_ecom_connection', self.fake_ecom_connection) instancename = FakeCIMInstanceName() self.stubs.Set(EMCSMISCommon, '_getinstancename', instancename.fake_getinstancename) self.stubs.Set(time, 'sleep', self.fake_sleep) driver = EMCSMISISCSIDriver(configuration=configuration) driver.db = FakeDB() self.driver = driver def create_fake_config_file(self): doc = Document() emc = doc.createElement("EMC") doc.appendChild(emc) storagetype = doc.createElement("StorageType") storagetypetext = doc.createTextNode("gold") emc.appendChild(storagetype) storagetype.appendChild(storagetypetext) ecomserverip = doc.createElement("EcomServerIp") ecomserveriptext = doc.createTextNode("1.1.1.1") emc.appendChild(ecomserverip) ecomserverip.appendChild(ecomserveriptext) ecomserverport = doc.createElement("EcomServerPort") ecomserverporttext = doc.createTextNode("10") emc.appendChild(ecomserverport) ecomserverport.appendChild(ecomserverporttext) ecomusername = doc.createElement("EcomUserName") ecomusernametext = doc.createTextNode("user") emc.appendChild(ecomusername) ecomusername.appendChild(ecomusernametext) ecompassword = doc.createElement("EcomPassword") ecompasswordtext = doc.createTextNode("pass") emc.appendChild(ecompassword) ecompassword.appendChild(ecompasswordtext) timeout = doc.createElement("Timeout") timeouttext = doc.createTextNode("0") emc.appendChild(timeout) timeout.appendChild(timeouttext) self.config_file_path = self.tempdir + '/' + self.data.config_file_name f = open(self.config_file_path, 'w') doc.writexml(f) f.close() def fake_ecom_connection(self): conn = FakeEcomConnection() return conn def fake_do_iscsi_discovery(self, volume): output = [] item = '10.0.0.3:3260,1 iqn.1992-04.com.emc:cx.apm00123907237.a8' item2 = '10.0.0.4:3260,2 iqn.1992-04.com.emc:cx.apm00123907237.b8' output.append(item) output.append(item2) return output def fake_sleep(self, seconds): return def test_get_volume_stats(self): self.driver.get_volume_stats(True) def test_create_destroy(self): self.driver.create_volume(self.data.test_volume) self.driver.delete_volume(self.data.test_volume) def test_create_volume_snapshot_destroy(self): self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot) self.driver.create_volume_from_snapshot( self.data.test_clone, self.data.test_snapshot) self.driver.create_cloned_volume( self.data.test_clone3, self.data.test_volume) self.driver.delete_volume(self.data.test_clone) self.driver.delete_volume(self.data.test_clone3) self.driver.delete_snapshot(self.data.test_snapshot) self.driver.delete_volume(self.data.test_volume) def test_map_unmap(self): self.driver.create_volume(self.data.test_volume) self.data.test_volume['EMCCurrentOwningStorageProcessor'] = 'SP_A' connection_info = self.driver.initialize_connection( self.data.test_volume, self.data.connector) self.driver.terminate_connection(self.data.test_volume, self.data.connector) self.driver.delete_volume(self.data.test_volume) def test_create_volume_failed(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, self.data.test_failed_volume) def test_create_volume_snapshot_unsupported(self): self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot_vmax) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.data.test_clone, self.data.test_snapshot_vmax) self.driver.delete_snapshot(self.data.test_snapshot_vmax) self.driver.delete_volume(self.data.test_volume) def test_create_volume_snapshot_replica_failed(self): self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.data.failed_snapshot_replica, self.data.test_snapshot) self.driver.delete_snapshot(self.data.test_snapshot) self.driver.delete_volume(self.data.test_volume) def test_create_volume_snapshot_sync_failed(self): self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.data.failed_snapshot_sync, self.data.test_snapshot) self.driver.delete_snapshot(self.data.test_snapshot) self.driver.delete_volume(self.data.test_volume) def test_create_volume_clone_replica_failed(self): self.driver.create_volume(self.data.test_volume) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, self.data.failed_clone_replica, self.data.test_volume) self.driver.delete_volume(self.data.test_volume) def test_create_volume_clone_sync_failed(self): self.driver.create_volume(self.data.test_volume) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, self.data.failed_clone_sync, self.data.test_volume) self.driver.delete_volume(self.data.test_volume) def test_delete_volume_notfound(self): notfound_delete_vol = {} notfound_delete_vol['name'] = 'notfound_delete_vol' notfound_delete_vol['id'] = '10' notfound_delete_vol['CreationClassName'] = 'Clar_StorageVolume' notfound_delete_vol['SystemName'] = self.data.storage_system notfound_delete_vol['DeviceID'] = notfound_delete_vol['id'] notfound_delete_vol['SystemCreationClassName'] = 'Clar_StorageSystem' name = {} name['classname'] = 'Clar_StorageVolume' keys = {} keys['CreationClassName'] = notfound_delete_vol['CreationClassName'] keys['SystemName'] = notfound_delete_vol['SystemName'] keys['DeviceID'] = notfound_delete_vol['DeviceID'] keys['SystemCreationClassName'] =\ notfound_delete_vol['SystemCreationClassName'] name['keybindings'] = keys notfound_delete_vol['provider_location'] = str(name) self.driver.delete_volume(notfound_delete_vol) def test_delete_volume_failed(self): self.driver.create_volume(self.data.failed_delete_vol) self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_volume, self.data.failed_delete_vol) def test_extend_volume(self): self.driver.create_volume(self.data.test_volume) self.driver.extend_volume(self.data.test_volume, '10') self.driver.create_volume(self.data.failed_extend_vol) self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, self.data.failed_extend_vol, '10') def _cleanup(self): bExists = os.path.exists(self.config_file_path) if bExists: os.remove(self.config_file_path) shutil.rmtree(self.tempdir) def tearDown(self): self._cleanup() super(EMCSMISISCSIDriverTestCase, self).tearDown() class EMCSMISFCDriverTestCase(test.TestCase): def setUp(self): self.data = EMCSMISCommonData() self.tempdir = tempfile.mkdtemp() super(EMCSMISFCDriverTestCase, self).setUp() self.config_file_path = None self.create_fake_config_file() configuration = mock.Mock() configuration.cinder_emc_config_file = self.config_file_path self.stubs.Set(EMCSMISCommon, '_get_ecom_connection', self.fake_ecom_connection) instancename = FakeCIMInstanceName() self.stubs.Set(EMCSMISCommon, '_getinstancename', instancename.fake_getinstancename) self.stubs.Set(time, 'sleep', self.fake_sleep) driver = EMCSMISFCDriver(configuration=configuration) driver.db = FakeDB() self.driver = driver def create_fake_config_file(self): doc = Document() emc = doc.createElement("EMC") doc.appendChild(emc) storagetype = doc.createElement("StorageType") storagetypetext = doc.createTextNode("gold") emc.appendChild(storagetype) storagetype.appendChild(storagetypetext) ecomserverip = doc.createElement("EcomServerIp") ecomserveriptext = doc.createTextNode("1.1.1.1") emc.appendChild(ecomserverip) ecomserverip.appendChild(ecomserveriptext) ecomserverport = doc.createElement("EcomServerPort") ecomserverporttext = doc.createTextNode("10") emc.appendChild(ecomserverport) ecomserverport.appendChild(ecomserverporttext) ecomusername = doc.createElement("EcomUserName") ecomusernametext = doc.createTextNode("user") emc.appendChild(ecomusername) ecomusername.appendChild(ecomusernametext) ecompassword = doc.createElement("EcomPassword") ecompasswordtext = doc.createTextNode("pass") emc.appendChild(ecompassword) ecompassword.appendChild(ecompasswordtext) timeout = doc.createElement("Timeout") timeouttext = doc.createTextNode("0") emc.appendChild(timeout) timeout.appendChild(timeouttext) self.config_file_path = self.tempdir + '/' + self.data.config_file_name f = open(self.config_file_path, 'w') doc.writexml(f) f.close() def fake_ecom_connection(self): conn = FakeEcomConnection() return conn def fake_sleep(self, seconds): return def test_get_volume_stats(self): self.driver.get_volume_stats(True) def test_create_destroy(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.driver.delete_volume(self.data.test_volume) def test_create_volume_snapshot_destroy(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot) self.driver.create_volume_from_snapshot( self.data.test_clone, self.data.test_snapshot) self.driver.create_cloned_volume( self.data.test_clone3, self.data.test_volume) self.driver.delete_volume(self.data.test_clone) self.driver.delete_volume(self.data.test_clone3) self.driver.delete_snapshot(self.data.test_snapshot) self.driver.delete_volume(self.data.test_volume) def test_map_unmap(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) output = { 'driver_volume_type': 'fibre_channel', 'data': { 'target_lun': 0, 'target_wwn': ['1234567890123', '0987654321321'], 'target_discovered': True, 'initiator_target_map': {'123456789012345': ['1234567890123', '0987654321321'], '123456789054321': ['1234567890123', '0987654321321'], }}} connection_info = self.driver.initialize_connection( self.data.test_volume, self.data.connector) self.assertEqual(connection_info, output) connection_info = self.driver.terminate_connection( self.data.test_volume, self.data.connector) # Verify calls in terminate_connection are executed conf_service = {} conf_service['SystemName'] = self.data.storage_system conf_service['CreationClassName'] =\ self.data.ctrlconf_service_creationclass vol_instance = self.driver.common._find_lun(self.data.test_volume) expected = [ mock.call._get_ecom_connection(), mock.call.find_device_number(self.data.test_volume), mock.call._find_lun(self.data.test_volume), mock.call.self._find_controller_configuration_service( self.data.storage_system), mock.call._remove_members(conf_service, vol_instance), mock.call.get_target_wwns( self.data.storage_system, self.data.connector)] output = { 'driver_volume_type': 'fibre_channel', 'data': { 'target_wwn': ['1234567890123', '0987654321321'], 'initiator_target_map': {'123456789012345': ['1234567890123', '0987654321321'], '123456789054321': ['1234567890123', '0987654321321'], }}} self.assertEqual(connection_info, output) self.driver.delete_volume(self.data.test_volume) def test_create_volume_failed(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, self.data.test_failed_volume) def test_create_volume_snapshot_unsupported(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot_vmax) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.data.test_clone, self.data.test_snapshot_vmax) self.driver.delete_snapshot(self.data.test_snapshot_vmax) self.driver.delete_volume(self.data.test_volume) def test_create_volume_snapshot_replica_failed(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.data.failed_snapshot_replica, self.data.test_snapshot) self.driver.delete_snapshot(self.data.test_snapshot) self.driver.delete_volume(self.data.test_volume) def test_create_volume_snapshot_sync_failed(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.driver.create_snapshot(self.data.test_snapshot) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, self.data.failed_snapshot_sync, self.data.test_snapshot) self.driver.delete_snapshot(self.data.test_snapshot) self.driver.delete_volume(self.data.test_volume) def test_create_volume_clone_replica_failed(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, self.data.failed_clone_replica, self.data.test_volume) self.driver.delete_volume(self.data.test_volume) def test_create_volume_clone_sync_failed(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, self.data.failed_clone_sync, self.data.test_volume) self.driver.delete_volume(self.data.test_volume) def test_delete_volume_notfound(self): notfound_delete_vol = {} notfound_delete_vol['name'] = 'notfound_delete_vol' notfound_delete_vol['id'] = '10' notfound_delete_vol['CreationClassName'] = 'Clar_StorageVolume' notfound_delete_vol['SystemName'] = self.data.storage_system notfound_delete_vol['DeviceID'] = notfound_delete_vol['id'] notfound_delete_vol['SystemCreationClassName'] = 'Clar_StorageSystem' name = {} name['classname'] = 'Clar_StorageVolume' keys = {} keys['CreationClassName'] = notfound_delete_vol['CreationClassName'] keys['SystemName'] = notfound_delete_vol['SystemName'] keys['DeviceID'] = notfound_delete_vol['DeviceID'] keys['SystemCreationClassName'] =\ notfound_delete_vol['SystemCreationClassName'] name['keybindings'] = keys notfound_delete_vol['provider_location'] = str(name) self.driver.delete_volume(notfound_delete_vol) def test_delete_volume_failed(self): self.driver.create_volume(self.data.failed_delete_vol) self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_volume, self.data.failed_delete_vol) def test_extend_volume(self): self.data.test_volume['volume_type_id'] = None self.driver.create_volume(self.data.test_volume) self.driver.extend_volume(self.data.test_volume, '10') self.driver.create_volume(self.data.failed_extend_vol) self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, self.data.failed_extend_vol, '10') @mock.patch.object( volume_types, 'get_volume_type_extra_specs', return_value={'storagetype:pool': 'gold', 'storagetype:provisioning': 'thick'}) def test_create_volume_with_volume_type(self, _mock_volume_type): volume_with_vt = self.data.test_volume volume_with_vt['volume_type_id'] = 1 self.driver.create_volume(volume_with_vt) configservice = {'CreationClassName': 'Clar_StorageConfigurationService', 'SystemName': 'CLARiiON+APM00123456789'} pool = {'InstanceID': 'CLARiiON+APM00123456789+U+gold', 'CreationClassName': 'Clar_UnifiedStoragePool'} volumesize = int(volume_with_vt['size']) * units.GiB storage_type = {'storagetype:provisioning': 'thick', 'storagetype:pool': 'gold'} expected = [ mock.call._get_storage_type(volume_with_vt), mock.call._find_pool('gold'), mock.call.get_provisioning(storage_type), mock.call.InvokeMethod('CreateOrModifyElementFromStoragePool', configservice, volume_with_vt['name'], pool, self.driver.common._getnum(2, '16'), self.driver.common._getnum(volumesize, '64'))] def _cleanup(self): bExists = os.path.exists(self.config_file_path) if bExists: os.remove(self.config_file_path) shutil.rmtree(self.tempdir) def tearDown(self): self._cleanup() super(EMCSMISFCDriverTestCase, self).tearDown() cinder-2014.1.5/cinder/tests/test_volume_glance_metadata.py0000664000567000056700000001717112540642606025063 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # Copyright 2011 University of Southern California # 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. """ Unit Tests for volume types extra specs code """ from cinder import context from cinder import db from cinder import exception from cinder import test class VolumeGlanceMetadataTestCase(test.TestCase): def setUp(self): super(VolumeGlanceMetadataTestCase, self).setUp() self.ctxt = context.get_admin_context() def test_vol_glance_metadata_bad_vol_id(self): ctxt = context.get_admin_context() self.assertRaises(exception.VolumeNotFound, db.volume_glance_metadata_create, ctxt, 1, 'key1', 'value1') self.assertRaises(exception.VolumeNotFound, db.volume_glance_metadata_get, ctxt, 1) db.volume_glance_metadata_delete_by_volume(ctxt, 10) def test_vol_update_glance_metadata(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': 1}) db.volume_create(ctxt, {'id': 2}) vol_metadata = db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1') vol_metadata = db.volume_glance_metadata_create(ctxt, 2, 'key1', 'value1') vol_metadata = db.volume_glance_metadata_create(ctxt, 2, 'key2', 'value2') vol_metadata = db.volume_glance_metadata_create(ctxt, 2, 'key3', 123) expected_metadata_1 = {'volume_id': '1', 'key': 'key1', 'value': 'value1'} metadata = db.volume_glance_metadata_get(ctxt, 1) self.assertEqual(len(metadata), 1) for key, value in expected_metadata_1.items(): self.assertEqual(metadata[0][key], value) expected_metadata_2 = ({'volume_id': '2', 'key': 'key1', 'value': 'value1'}, {'volume_id': '2', 'key': 'key2', 'value': 'value2'}, {'volume_id': '2', 'key': 'key3', 'value': '123'}) metadata = db.volume_glance_metadata_get(ctxt, 2) self.assertEqual(len(metadata), 3) for expected, meta in zip(expected_metadata_2, metadata): for key, value in expected.iteritems(): self.assertEqual(meta[key], value) self.assertRaises(exception.GlanceMetadataExists, db.volume_glance_metadata_create, ctxt, 1, 'key1', 'value1a') metadata = db.volume_glance_metadata_get(ctxt, 1) self.assertEqual(len(metadata), 1) for key, value in expected_metadata_1.items(): self.assertEqual(metadata[0][key], value) def test_vols_get_glance_metadata(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': '1'}) db.volume_create(ctxt, {'id': '2'}) db.volume_create(ctxt, {'id': '3'}) db.volume_glance_metadata_create(ctxt, '1', 'key1', 'value1') db.volume_glance_metadata_create(ctxt, '2', 'key2', 'value2') db.volume_glance_metadata_create(ctxt, '2', 'key22', 'value22') metadata = db.volume_glance_metadata_get_all(ctxt) self.assertEqual(len(metadata), 3) self._assert_metadata_equals('1', 'key1', 'value1', metadata[0]) self._assert_metadata_equals('2', 'key2', 'value2', metadata[1]) self._assert_metadata_equals('2', 'key22', 'value22', metadata[2]) def _assert_metadata_equals(self, volume_id, key, value, observed): self.assertEqual(volume_id, observed.volume_id) self.assertEqual(key, observed.key) self.assertEqual(value, observed.value) def test_vol_delete_glance_metadata(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': 1}) db.volume_glance_metadata_delete_by_volume(ctxt, 1) vol_metadata = db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1') db.volume_glance_metadata_delete_by_volume(ctxt, 1) self.assertRaises(exception.GlanceMetadataNotFound, db.volume_glance_metadata_get, ctxt, 1) def test_vol_glance_metadata_copy_to_snapshot(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': 1}) db.snapshot_create(ctxt, {'id': 100, 'volume_id': 1}) vol_meta = db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1') db.volume_glance_metadata_copy_to_snapshot(ctxt, 100, 1) expected_meta = {'snapshot_id': '100', 'key': 'key1', 'value': 'value1'} for meta in db.volume_snapshot_glance_metadata_get(ctxt, 100): for (key, value) in expected_meta.items(): self.assertEqual(meta[key], value) def test_vol_glance_metadata_copy_from_volume_to_volume(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': 1}) db.volume_create(ctxt, {'id': 100, 'source_volid': 1}) vol_meta = db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1') db.volume_glance_metadata_copy_from_volume_to_volume(ctxt, 1, 100) expected_meta = {'key': 'key1', 'value': 'value1'} for meta in db.volume_glance_metadata_get(ctxt, 100): for (key, value) in expected_meta.items(): self.assertEqual(meta[key], value) def test_volume_glance_metadata_copy_to_volume(self): vol1 = db.volume_create(self.ctxt, {}) vol2 = db.volume_create(self.ctxt, {}) db.volume_glance_metadata_create(self.ctxt, vol1['id'], 'm1', 'v1') snapshot = db.snapshot_create(self.ctxt, {'volume_id': vol1['id']}) db.volume_glance_metadata_copy_to_snapshot(self.ctxt, snapshot['id'], vol1['id']) db.volume_glance_metadata_copy_to_volume(self.ctxt, vol2['id'], snapshot['id']) metadata = db.volume_glance_metadata_get(self.ctxt, vol2['id']) metadata = dict([(m['key'], m['value']) for m in metadata]) self.assertEqual(metadata, {'m1': 'v1'}) def test_volume_snapshot_glance_metadata_get_nonexistent(self): vol = db.volume_create(self.ctxt, {}) snapshot = db.snapshot_create(self.ctxt, {'volume_id': vol['id']}) self.assertRaises(exception.GlanceMetadataNotFound, db.volume_snapshot_glance_metadata_get, self.ctxt, snapshot['id']) cinder-2014.1.5/cinder/tests/test_ibm_xiv_ds8k.py0000664000567000056700000002205712540642606022770 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. # # Authors: # Erik Zaadi # Avishay Traeger import mox from oslo.config import cfg from cinder import exception from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.ibm import xiv_ds8k FAKE = "fake" VOLUME = {'size': 16, 'name': FAKE, 'id': 1} CONNECTOR = {'initiator': "iqn.2012-07.org.fake:01:948f189c4695", } CONF = cfg.CONF class XIVDS8KFakeProxyDriver(object): """Fake IBM XIV and DS8K Proxy Driver.""" def __init__(self, xiv_ds8k_info, logger, expt, driver=None): """Initialize Proxy.""" self.xiv_ds8k_info = xiv_ds8k_info self.logger = logger self.exception = expt self.xiv_ds8k_portal = \ self.xiv_ds8k_iqn = FAKE self.volumes = {} self.driver = driver def setup(self, context): if self.xiv_ds8k_info['xiv_ds8k_user'] != self.driver\ .configuration.san_login: raise self.exception.NotAuthorized() if self.xiv_ds8k_info['xiv_ds8k_address'] != self.driver\ .configuration.san_ip: raise self.exception.HostNotFound(host='fake') def create_volume(self, volume): if volume['size'] > 100: raise self.exception.VolumeBackendAPIException(data='blah') self.volumes[volume['name']] = volume def volume_exists(self, volume): return self.volumes.get(volume['name'], None) is not None def delete_volume(self, volume): if self.volumes.get(volume['name'], None) is not None: del self.volumes[volume['name']] def initialize_connection(self, volume, connector): if not self.volume_exists(volume): raise self.exception.VolumeNotFound(volume_id=volume['id']) lun_id = volume['id'] self.volumes[volume['name']]['attached'] = connector return {'driver_volume_type': 'iscsi', 'data': {'target_discovered': True, 'target_discovered': True, 'target_portal': self.xiv_ds8k_portal, 'target_iqn': self.xiv_ds8k_iqn, 'target_lun': lun_id, 'volume_id': volume['id'], 'multipath': True, 'provider_location': "%s,1 %s %s" % ( self.xiv_ds8k_portal, self.xiv_ds8k_iqn, lun_id), }, } def terminate_connection(self, volume, connector): if not self.volume_exists(volume): raise self.exception.VolumeNotFound(volume_id=volume['id']) if not self.is_volume_attached(volume, connector): raise self.exception.NotFound(_('Volume not found for ' 'instance %(instance_id)s.') % {'instance_id': 'fake'}) del self.volumes[volume['name']]['attached'] def is_volume_attached(self, volume, connector): if not self.volume_exists(volume): raise self.exception.VolumeNotFound(volume_id=volume['id']) return (self.volumes[volume['name']].get('attached', None) == connector) class XIVDS8KVolumeDriverTest(test.TestCase): """Test IBM XIV and DS8K volume driver.""" def setUp(self): """Initialize IBM XIV and DS8K Driver.""" super(XIVDS8KVolumeDriverTest, self).setUp() configuration = mox.MockObject(conf.Configuration) configuration.san_is_local = False configuration.xiv_ds8k_proxy = \ 'cinder.tests.test_ibm_xiv_ds8k.XIVDS8KFakeProxyDriver' configuration.xiv_ds8k_connection_type = 'iscsi' configuration.xiv_chap = 'disabled' configuration.san_ip = FAKE configuration.san_login = FAKE configuration.san_clustername = FAKE configuration.san_password = FAKE configuration.append_config_values(mox.IgnoreArg()) self.driver = xiv_ds8k.XIVDS8KDriver( configuration=configuration) def test_initialized_should_set_xiv_ds8k_info(self): """Test that the san flags are passed to the IBM proxy.""" self.assertEqual( self.driver.xiv_ds8k_proxy.xiv_ds8k_info['xiv_ds8k_user'], self.driver.configuration.san_login) self.assertEqual( self.driver.xiv_ds8k_proxy.xiv_ds8k_info['xiv_ds8k_pass'], self.driver.configuration.san_password) self.assertEqual( self.driver.xiv_ds8k_proxy.xiv_ds8k_info['xiv_ds8k_address'], self.driver.configuration.san_ip) self.assertEqual( self.driver.xiv_ds8k_proxy.xiv_ds8k_info['xiv_ds8k_vol_pool'], self.driver.configuration.san_clustername) def test_setup_should_fail_if_credentials_are_invalid(self): """Test that the xiv_ds8k_proxy validates credentials.""" self.driver.xiv_ds8k_proxy.xiv_ds8k_info['xiv_ds8k_user'] = 'invalid' self.assertRaises(exception.NotAuthorized, self.driver.do_setup, None) def test_setup_should_fail_if_connection_is_invalid(self): """Test that the xiv_ds8k_proxy validates connection.""" self.driver.xiv_ds8k_proxy.xiv_ds8k_info['xiv_ds8k_address'] = \ 'invalid' self.assertRaises(exception.HostNotFound, self.driver.do_setup, None) def test_create_volume(self): """Test creating a volume.""" self.driver.do_setup(None) self.driver.create_volume(VOLUME) has_volume = self.driver.xiv_ds8k_proxy.volume_exists(VOLUME) self.assertTrue(has_volume) self.driver.delete_volume(VOLUME) def test_volume_exists(self): """Test the volume exist method with a volume that doesn't exist.""" self.driver.do_setup(None) self.assertFalse( self.driver.xiv_ds8k_proxy.volume_exists({'name': FAKE})) def test_delete_volume(self): """Verify that a volume is deleted.""" self.driver.do_setup(None) self.driver.create_volume(VOLUME) self.driver.delete_volume(VOLUME) has_volume = self.driver.xiv_ds8k_proxy.volume_exists(VOLUME) self.assertFalse(has_volume) def test_delete_volume_should_fail_for_not_existing_volume(self): """Verify that deleting a non-existing volume is OK.""" self.driver.do_setup(None) self.driver.delete_volume(VOLUME) def test_create_volume_should_fail_if_no_pool_space_left(self): """Vertify that the xiv_ds8k_proxy validates volume pool space.""" self.driver.do_setup(None) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, {'name': FAKE, 'id': 1, 'size': 12000}) def test_initialize_connection(self): """Test that inititialize connection attaches volume to host.""" self.driver.do_setup(None) self.driver.create_volume(VOLUME) self.driver.initialize_connection(VOLUME, CONNECTOR) self.assertTrue( self.driver.xiv_ds8k_proxy.is_volume_attached(VOLUME, CONNECTOR)) self.driver.terminate_connection(VOLUME, CONNECTOR) self.driver.delete_volume(VOLUME) def test_initialize_connection_should_fail_for_non_existing_volume(self): """Verify that initialize won't work for non-existing volume.""" self.driver.do_setup(None) self.assertRaises(exception.VolumeNotFound, self.driver.initialize_connection, VOLUME, CONNECTOR) def test_terminate_connection(self): """Test terminating a connection.""" self.driver.do_setup(None) self.driver.create_volume(VOLUME) self.driver.initialize_connection(VOLUME, CONNECTOR) self.driver.terminate_connection(VOLUME, CONNECTOR) self.assertFalse(self.driver.xiv_ds8k_proxy.is_volume_attached( VOLUME, CONNECTOR)) self.driver.delete_volume(VOLUME) def test_terminate_connection_should_fail_on_non_existing_volume(self): """Test that terminate won't work for non-existing volumes.""" self.driver.do_setup(None) self.assertRaises(exception.VolumeNotFound, self.driver.terminate_connection, VOLUME, CONNECTOR) cinder-2014.1.5/cinder/tests/test_hp_msa.py0000664000567000056700000006077212540642606021657 0ustar jenkinsjenkins00000000000000# (c) Copyright 2014 Objectif Libre # # 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. """Unit tests for OpenStack Cinder HP MSA driver.""" import lxml.etree as etree import mock import urllib2 from cinder import exception from cinder import test from cinder.volume.drivers.san.hp import hp_msa_client as msa from cinder.volume.drivers.san.hp import hp_msa_common from cinder.volume.drivers.san.hp import hp_msa_fc session_key = 'JSESS0004eb8a82b08fd5' resp_login = ''' success 0 JSESS0004eb8a82b08fd5 1''' resp_badlogin = ''' ''' response_ok = ''' some data 0''' response_not_ok = ''' Error Message 1 ''' response_stats = ''' 1756381184 756381184 ''' response_no_lun = '''''' response_lun = ''' 1 3''' response_ports = ''' FC id1 Up FC id2 Disconnected iSCSI id3 Up''' invalid_xml = '''''' malformed_xml = '''''' fake_xml = '''''' stats_low_space = {'free_capacity_gb': 10, 'total_capacity_gb': 100} stats_large_space = {'free_capacity_gb': 90, 'total_capacity_gb': 100} vol_id = 'ecffc30f-98cb-4cf5-85ee-d7309cc17cd2' test_volume = {'id': vol_id, 'display_name': 'test volume', 'name': 'volume', 'size': 10} test_snap = {'id': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'volume_id': vol_id, 'display_name': 'test volume', 'name': 'volume', 'size': 10} encoded_volid = 'v7P_DD5jLTPWF7tcwnMF' encoded_snapid = 's7P_DD5jLTPWF7tcwnMF' dest_volume = {'id': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'source_volid': vol_id, 'display_name': 'test volume', 'name': 'volume', 'size': 10} attached_volume = {'id': vol_id, 'display_name': 'test volume', 'name': 'volume', 'size': 10, 'status': 'in-use', 'attach_status': 'attached'} attaching_volume = {'id': vol_id, 'display_name': 'test volume', 'name': 'volume', 'size': 10, 'status': 'attaching', 'attach_status': 'attached'} detached_volume = {'id': vol_id, 'display_name': 'test volume', 'name': 'volume', 'size': 10, 'status': 'available', 'attach_status': 'detached'} connector = {'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'wwpns': ["111111111111111", "111111111111112"], 'wwnns': ["211111111111111", "211111111111112"], 'host': 'fakehost'} invalid_connector = {'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'wwpns': [], 'wwnns': [], 'host': 'fakehost'} class TestHPMSAClient(test.TestCase): def setUp(self): super(TestHPMSAClient, self).setUp() self.login = 'manage' self.passwd = '!manage' self.ip = '10.0.0.1' self.client = msa.HPMSAClient(self.ip, self.login, self.passwd) @mock.patch('urllib2.urlopen') def test_login(self, mock_url_open): m = mock.Mock() m.read.side_effect = [resp_login] mock_url_open.return_value = m self.client.login() self.assertEqual(self.client._session_key, session_key) m.read.side_effect = [resp_badlogin] self.assertRaises(msa.HPMSAAuthenticationError, self.client.login) def test_build_request_url(self): url = self.client._build_request_url('/path', None) self.assertEqual(url, 'http://10.0.0.1/api/path') url = self.client._build_request_url('/path', None, arg1='val1') self.assertEqual(url, 'http://10.0.0.1/api/path/arg1/val1') url = self.client._build_request_url('/path', 'arg1') self.assertEqual(url, 'http://10.0.0.1/api/path/arg1') url = self.client._build_request_url('/path', 'arg1', arg2='val2') self.assertEqual(url, 'http://10.0.0.1/api/path/arg2/val2/arg1') url = self.client._build_request_url('/path', ['arg1', 'arg3'], arg2='val2') self.assertEqual(url, 'http://10.0.0.1/api/path/arg2/val2/arg1/arg3') @mock.patch('urllib2.urlopen') def test_request(self, mock_url_open): self.client._session_key = session_key m = mock.Mock() m.read.side_effect = [response_ok, malformed_xml, urllib2.URLError("error")] mock_url_open.return_value = m ret = self.client._request('/path', None) self.assertTrue(type(ret) == etree._Element) self.assertRaises(msa.HPMSAConnectionError, self.client._request, '/path', None) self.assertRaises(msa.HPMSAConnectionError, self.client._request, '/path', None) def test_assert_response_ok(self): ok_tree = etree.XML(response_ok) not_ok_tree = etree.XML(response_not_ok) invalid_tree = etree.XML(invalid_xml) ret = self.client._assert_response_ok(ok_tree) self.assertEqual(ret, None) self.assertRaises(msa.HPMSARequestError, self.client._assert_response_ok, not_ok_tree) self.assertRaises(msa.HPMSARequestError, self.client._assert_response_ok, invalid_tree) @mock.patch.object(msa.HPMSAClient, '_request') def test_vdisk_exists(self, mock_request): mock_request.side_effect = [msa.HPMSARequestError, fake_xml] self.assertEqual(self.client.vdisk_exists('vdisk'), False) self.assertEqual(self.client.vdisk_exists('vdisk'), True) @mock.patch.object(msa.HPMSAClient, '_request') def test_vdisk_stats(self, mock_request): mock_request.return_value = etree.XML(response_stats) ret = self.client.vdisk_stats('OpenStack') self.assertEqual(ret, {'free_capacity_gb': 387, 'total_capacity_gb': 899}) mock_request.assert_called_with('/show/vdisks', 'OpenStack') @mock.patch.object(msa.HPMSAClient, '_request') def test_get_lun(self, mock_request): mock_request.side_effect = [etree.XML(response_no_lun), etree.XML(response_lun)] ret = self.client._get_first_available_lun_for_host("fakehost") self.assertEqual(ret, 1) ret = self.client._get_first_available_lun_for_host("fakehost") self.assertEqual(ret, 2) @mock.patch.object(msa.HPMSAClient, '_request') def test_get_ports(self, mock_request): mock_request.side_effect = [etree.XML(response_ports)] ret = self.client.get_active_target_ports() self.assertEqual(ret, [{'port-type': 'FC', 'target-id': 'id1', 'status': 'Up'}, {'port-type': 'iSCSI', 'target-id': 'id3', 'status': 'Up'}]) @mock.patch.object(msa.HPMSAClient, '_request') def test_get_fc_ports(self, mock_request): mock_request.side_effect = [etree.XML(response_ports)] ret = self.client.get_active_fc_target_ports() self.assertEqual(ret, ['id1']) class FakeConfiguration(object): msa_vdisk = 'OpenStack' san_ip = '10.0.0.1' san_login = 'manage' san_password = '!manage' def safe_get(self, key): return 'fakevalue' class TestHPMSACommon(test.TestCase): def setUp(self): super(TestHPMSACommon, self).setUp() self.config = FakeConfiguration() self.common = hp_msa_common.HPMSACommon(self.config) @mock.patch.object(msa.HPMSAClient, 'vdisk_exists') @mock.patch.object(msa.HPMSAClient, 'logout') @mock.patch.object(msa.HPMSAClient, 'login') def test_do_setup(self, mock_login, mock_logout, mock_vdisk_exists): mock_login.side_effect = [msa.HPMSAConnectionError, msa.HPMSAAuthenticationError, None, None] mock_vdisk_exists.side_effect = [False, True] mock_logout.return_value = None self.assertRaises(exception.HPMSAConnectionError, self.common.do_setup, None) self.assertRaises(exception.HPMSAConnectionError, self.common.do_setup, None) self.assertRaises(exception.HPMSAInvalidVDisk, self.common.do_setup, None) mock_vdisk_exists.assert_called_with(self.config.msa_vdisk) self.assertEqual(self.common.do_setup(None), None) mock_vdisk_exists.assert_called_with(self.config.msa_vdisk) mock_logout.assert_called_with() def test_vol_name(self): self.assertEqual(self.common._get_vol_name(vol_id), encoded_volid) self.assertEqual(self.common._get_snap_name(vol_id), encoded_snapid) def test_check_flags(self): class FakeOptions(): def __init__(self, d): for k, v in d.items(): self.__dict__[k] = v options = FakeOptions({'opt1': 'val1', 'opt2': 'val2'}) required_flags = ['opt1', 'opt2'] ret = self.common.check_flags(options, required_flags) self.assertEqual(ret, None) options = FakeOptions({'opt1': 'val1', 'opt3': 'val3'}) required_flags = ['opt1', 'opt2'] self.assertEqual(ret, None) options = FakeOptions({'opt1': 'val1', 'opt2': 'val2'}) required_flags = ['opt1', 'opt2', 'opt3'] self.assertRaises(exception.Invalid, self.common.check_flags, options, required_flags) def test_assert_connector_ok(self): self.assertRaises(exception.InvalidInput, self.common._assert_connector_ok, invalid_connector) self.assertIsNone(self.common._assert_connector_ok(connector)) @mock.patch.object(msa.HPMSAClient, 'vdisk_stats') def test_update_volume_stats(self, mock_stats): mock_stats.side_effect = [msa.HPMSARequestError, stats_large_space] self.assertRaises(exception.Invalid, self.common._update_volume_stats) mock_stats.assert_called_with(self.config.msa_vdisk) ret = self.common._update_volume_stats() self.assertEqual(ret, None) self.assertEqual(self.common.stats, {'storage_protocol': None, 'vendor_name': 'Hewlett-Packard', 'driver_version': self.common.VERSION, 'volume_backend_name': None, 'free_capacity_gb': 90, 'reserved_percentage': 0, 'total_capacity_gb': 100, 'QoS_support': False}) @mock.patch.object(msa.HPMSAClient, 'create_volume') def test_create_volume(self, mock_create): mock_create.side_effect = [msa.HPMSARequestError, None] self.assertRaises(exception.Invalid, self.common.create_volume, test_volume) ret = self.common.create_volume(test_volume) self.assertEqual(ret, None) mock_create.assert_called_with(self.common.config.msa_vdisk, encoded_volid, "%sGB" % test_volume['size']) @mock.patch.object(msa.HPMSAClient, 'delete_volume') def test_delete_volume(self, mock_delete): not_found_e = msa.HPMSARequestError( 'The volume was not found on this system.') mock_delete.side_effect = [not_found_e, msa.HPMSARequestError, None] self.assertEqual(self.common.delete_volume(test_volume), None) self.assertRaises(exception.Invalid, self.common.delete_volume, test_volume) self.assertEqual(self.common.delete_volume(test_volume), None) mock_delete.assert_called_with(encoded_volid) @mock.patch.object(msa.HPMSAClient, 'copy_volume') @mock.patch.object(msa.HPMSAClient, 'vdisk_stats') def test_create_cloned_volume(self, mock_stats, mock_copy): mock_stats.side_effect = [stats_low_space, stats_large_space, stats_large_space] self.assertRaises(exception.HPMSANotEnoughSpace, self.common.create_cloned_volume, dest_volume, detached_volume) self.assertFalse(mock_copy.called) mock_copy.side_effect = [msa.HPMSARequestError, None] self.assertRaises(exception.Invalid, self.common.create_cloned_volume, dest_volume, detached_volume) ret = self.common.create_cloned_volume(dest_volume, detached_volume) self.assertEqual(ret, None) mock_copy.assert_called_with(encoded_volid, 'vqqqqqqqqqqqqqqqqqqq', self.common.config.msa_vdisk) @mock.patch.object(msa.HPMSAClient, 'copy_volume') @mock.patch.object(msa.HPMSAClient, 'vdisk_stats') def test_create_volume_from_snapshot(self, mock_stats, mock_copy): mock_stats.side_effect = [stats_low_space, stats_large_space, stats_large_space] self.assertRaises(exception.HPMSANotEnoughSpace, self.common.create_volume_from_snapshot, dest_volume, test_snap) mock_copy.side_effect = [msa.HPMSARequestError, None] self.assertRaises(exception.Invalid, self.common.create_volume_from_snapshot, dest_volume, test_snap) ret = self.common.create_volume_from_snapshot(dest_volume, test_snap) self.assertEqual(ret, None) mock_copy.assert_called_with('sqqqqqqqqqqqqqqqqqqq', 'vqqqqqqqqqqqqqqqqqqq', self.common.config.msa_vdisk) @mock.patch.object(msa.HPMSAClient, 'extend_volume') def test_extend_volume(self, mock_extend): mock_extend.side_effect = [msa.HPMSARequestError, None] self.assertRaises(exception.Invalid, self.common.extend_volume, test_volume, 20) ret = self.common.extend_volume(test_volume, 20) self.assertEqual(ret, None) mock_extend.assert_called_with(encoded_volid, '10GB') @mock.patch.object(msa.HPMSAClient, 'create_snapshot') def test_create_snapshot(self, mock_create): mock_create.side_effect = [msa.HPMSARequestError, None] self.assertRaises(exception.Invalid, self.common.create_snapshot, test_snap) ret = self.common.create_snapshot(test_snap) self.assertEqual(ret, None) mock_create.assert_called_with(encoded_volid, 'sqqqqqqqqqqqqqqqqqqq') @mock.patch.object(msa.HPMSAClient, 'delete_snapshot') def test_delete_snapshot(self, mock_delete): not_found_e = msa.HPMSARequestError( 'The volume was not found on this system.') mock_delete.side_effect = [not_found_e, msa.HPMSARequestError, None] self.assertEqual(self.common.delete_snapshot(test_snap), None) self.assertRaises(exception.Invalid, self.common.delete_snapshot, test_snap) self.assertEqual(self.common.delete_snapshot(test_snap), None) mock_delete.assert_called_with('sqqqqqqqqqqqqqqqqqqq') @mock.patch.object(msa.HPMSAClient, 'map_volume') def test_map_volume(self, mock_map): mock_map.side_effect = [msa.HPMSARequestError, 10] self.assertRaises(exception.Invalid, self.common.map_volume, test_volume, connector) lun = self.common.map_volume(test_volume, connector) self.assertEqual(lun, 10) mock_map.assert_called_with(encoded_volid, connector['wwpns']) @mock.patch.object(msa.HPMSAClient, 'unmap_volume') def test_unmap_volume(self, mock_unmap): mock_unmap.side_effect = [msa.HPMSARequestError, None] self.assertRaises(exception.Invalid, self.common.unmap_volume, test_volume, connector) ret = self.common.unmap_volume(test_volume, connector) self.assertEqual(ret, None) mock_unmap.assert_called_with(encoded_volid, connector['wwpns']) class TestHPMSAFC(test.TestCase): @mock.patch.object(hp_msa_common.HPMSACommon, 'do_setup') def setUp(self, mock_setup): super(TestHPMSAFC, self).setUp() mock_setup.return_value = True def fake_init(self, *args, **kwargs): super(hp_msa_fc.HPMSAFCDriver, self).__init__() self.common = None self.configuration = FakeConfiguration() hp_msa_fc.HPMSAFCDriver.__init__ = fake_init self.driver = hp_msa_fc.HPMSAFCDriver() self.driver.do_setup(None) self.driver.common.client_login = mock.MagicMock(return_value=None) self.driver.common.client_logout = mock.MagicMock(return_value=None) def _test_with_mock(self, mock, method, args, expected=None): func = getattr(self.driver, method) mock.side_effect = [exception.Invalid(), None] self.assertRaises(exception.Invalid, func, *args) self.assertEqual(expected, func(*args)) @mock.patch.object(hp_msa_common.HPMSACommon, 'create_volume') def test_create_volume(self, mock_create): self._test_with_mock(mock_create, 'create_volume', [None], {'metadata': None}) @mock.patch.object(hp_msa_common.HPMSACommon, 'create_cloned_volume') def test_create_cloned_volume(self, mock_create): self._test_with_mock(mock_create, 'create_cloned_volume', [None, None], {'metadata': None}) @mock.patch.object(hp_msa_common.HPMSACommon, 'create_volume_from_snapshot') def test_create_volume_from_snapshot(self, mock_create): self._test_with_mock(mock_create, 'create_volume_from_snapshot', [None, None], None) @mock.patch.object(hp_msa_common.HPMSACommon, 'delete_volume') def test_delete_volume(self, mock_delete): self._test_with_mock(mock_delete, 'delete_volume', [None]) @mock.patch.object(hp_msa_common.HPMSACommon, 'create_snapshot') def test_create_snapshot(self, mock_create): self._test_with_mock(mock_create, 'create_snapshot', [None]) @mock.patch.object(hp_msa_common.HPMSACommon, 'delete_snapshot') def test_delete_snapshot(self, mock_delete): self._test_with_mock(mock_delete, 'delete_snapshot', [None]) @mock.patch.object(hp_msa_common.HPMSACommon, 'extend_volume') def test_extend_volume(self, mock_extend): self._test_with_mock(mock_extend, 'extend_volume', [None, 10]) @mock.patch.object(hp_msa_common.HPMSACommon, 'client_logout') @mock.patch.object(hp_msa_common.HPMSACommon, 'get_active_fc_target_ports') @mock.patch.object(hp_msa_common.HPMSACommon, 'map_volume') @mock.patch.object(hp_msa_common.HPMSACommon, 'client_login') def test_initialize_connection(self, mock_login, mock_map, mock_ports, mock_logout): mock_login.return_value = None mock_logout.return_value = None mock_map.side_effect = [exception.Invalid, 1] mock_ports.side_effect = [['id1']] self.assertRaises(exception.Invalid, self.driver.initialize_connection, test_volume, connector) mock_map.assert_called_with(test_volume, connector) ret = self.driver.initialize_connection(test_volume, connector) self.assertEqual(ret, {'driver_volume_type': 'fibre_channel', 'data': {'target_wwn': ['id1'], 'target_lun': 1, 'target_discovered': True}}) mock_ports.assert_called_once() @mock.patch.object(hp_msa_common.HPMSACommon, 'client_logout') @mock.patch.object(hp_msa_common.HPMSACommon, 'unmap_volume') @mock.patch.object(hp_msa_common.HPMSACommon, 'client_login') def test_terminate_connection(self, mock_login, mock_unmap, mock_logout): mock_login.return_value = None mock_logout.return_value = None mock_unmap.side_effect = [exception.Invalid, 1] self.assertRaises(exception.Invalid, self.driver.terminate_connection, test_volume, connector) mock_unmap.assert_called_with(test_volume, connector) ret = self.driver.terminate_connection(test_volume, connector) self.assertEqual(ret, None) @mock.patch.object(hp_msa_common.HPMSACommon, 'client_logout') @mock.patch.object(hp_msa_common.HPMSACommon, 'get_volume_stats') @mock.patch.object(hp_msa_common.HPMSACommon, 'client_login') def test_get_volume_stats(self, mock_login, mock_stats, mock_logout): stats = {'storage_protocol': None, 'driver_version': self.driver.VERSION, 'volume_backend_name': None, 'free_capacity_gb': 90, 'reserved_percentage': 0, 'total_capacity_gb': 100, 'QoS_support': False} mock_stats.side_effect = [exception.Invalid, stats, stats] self.assertRaises(exception.Invalid, self.driver.get_volume_stats, False) ret = self.driver.get_volume_stats(False) self.assertEqual(ret, {'storage_protocol': 'FC', 'driver_version': self.driver.VERSION, 'volume_backend_name': 'fakevalue', 'free_capacity_gb': 90, 'reserved_percentage': 0, 'total_capacity_gb': 100, 'QoS_support': False}) ret = self.driver.get_volume_stats(True) self.assertEqual(ret, {'storage_protocol': 'FC', 'driver_version': self.driver.VERSION, 'volume_backend_name': 'fakevalue', 'free_capacity_gb': 90, 'reserved_percentage': 0, 'total_capacity_gb': 100, 'QoS_support': False}) mock_stats.assert_called_with(True) cinder-2014.1.5/cinder/tests/test_glusterfs.py0000664000567000056700000020234112540642606022414 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Red Hat, Inc. # All Rights Reserved. # # 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. """Unit tests for the GlusterFS driver module.""" import contextlib import errno import mock import os import tempfile import mox as mox_lib from mox import IgnoreArg from mox import IsA from mox import stubout from cinder import brick from cinder import context from cinder import db from cinder import exception from cinder.image import image_utils from cinder.openstack.common import imageutils from cinder.openstack.common import processutils as putils from cinder import test from cinder import units from cinder import utils from cinder.volume import configuration as conf from cinder.volume import driver as base_driver from cinder.volume.drivers import glusterfs class DumbVolume(object): fields = {} def __setitem__(self, key, value): self.fields[key] = value def __getitem__(self, item): return self.fields[item] class FakeDb(object): msg = "Tests are broken: mock this out." def volume_get(self, *a, **kw): raise Exception(self.msg) def snapshot_get_all_for_volume(self, *a, **kw): """Mock this if you want results from it.""" return [] class GlusterFsDriverTestCase(test.TestCase): """Test case for GlusterFS driver.""" TEST_EXPORT1 = 'glusterfs-host1:/export' TEST_EXPORT2 = 'glusterfs-host2:/export' TEST_EXPORT2_OPTIONS = '-o backupvolfile-server=glusterfs-backup1' TEST_SIZE_IN_GB = 1 TEST_MNT_POINT = '/mnt/glusterfs' TEST_MNT_POINT_BASE = '/mnt/test' TEST_LOCAL_PATH = '/mnt/glusterfs/volume-123' TEST_FILE_NAME = 'test.txt' TEST_SHARES_CONFIG_FILE = '/etc/cinder/test-shares.conf' VOLUME_UUID = 'abcdefab-cdef-abcd-efab-cdefabcdefab' VOLUME_NAME = 'volume-%s' % VOLUME_UUID SNAP_UUID = 'bacadaca-baca-daca-baca-dacadacadaca' SNAP_UUID_2 = 'bebedede-bebe-dede-bebe-dedebebedede' def setUp(self): super(GlusterFsDriverTestCase, self).setUp() self._mox = mox_lib.Mox() self._configuration = mox_lib.MockObject(conf.Configuration) self._configuration.append_config_values(mox_lib.IgnoreArg()) self._configuration.glusterfs_shares_config = \ self.TEST_SHARES_CONFIG_FILE self._configuration.glusterfs_mount_point_base = \ self.TEST_MNT_POINT_BASE self._configuration.glusterfs_disk_util = 'df' self._configuration.glusterfs_sparsed_volumes = True self._configuration.glusterfs_qcow2_volumes = False self.stubs = stubout.StubOutForTesting() self._driver =\ glusterfs.GlusterfsDriver(configuration=self._configuration, db=FakeDb()) self._driver.shares = {} def tearDown(self): self._mox.UnsetStubs() self.stubs.UnsetAll() super(GlusterFsDriverTestCase, self).tearDown() def stub_out_not_replaying(self, obj, attr_name): attr_to_replace = getattr(obj, attr_name) stub = mox_lib.MockObject(attr_to_replace) self.stubs.Set(obj, attr_name, stub) def test_set_execute(self): mox = self._mox drv = self._driver rfsclient = brick.remotefs.remotefs.RemoteFsClient mox.StubOutWithMock(rfsclient, 'set_execute') def my_execute(*a, **k): pass rfsclient.set_execute(my_execute) mox.ReplayAll() drv.set_execute(my_execute) def test_local_path(self): """local_path common use case.""" glusterfs.CONF.glusterfs_mount_point_base = self.TEST_MNT_POINT_BASE drv = self._driver volume = DumbVolume() volume['provider_location'] = self.TEST_EXPORT1 volume['name'] = 'volume-123' self.assertEqual( '/mnt/test/ab03ab34eaca46a5fb81878f7e9b91fc/volume-123', drv.local_path(volume)) def test_mount_glusterfs_should_mount_correctly(self): """_mount_glusterfs common case usage.""" mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('mkdir', '-p', self.TEST_MNT_POINT) drv._execute('mount', '-t', 'glusterfs', self.TEST_EXPORT1, self.TEST_MNT_POINT, run_as_root=True) mox.ReplayAll() drv._mount_glusterfs(self.TEST_EXPORT1, self.TEST_MNT_POINT) mox.VerifyAll() def test_mount_glusterfs_should_suppress_already_mounted_error(self): """_mount_glusterfs should suppress already mounted error if ensure=True """ mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('mkdir', '-p', self.TEST_MNT_POINT) drv._execute('mount', '-t', 'glusterfs', self.TEST_EXPORT1, self.TEST_MNT_POINT, run_as_root=True).\ AndRaise(putils.ProcessExecutionError( stderr='is busy or already mounted')) mox.ReplayAll() drv._mount_glusterfs(self.TEST_EXPORT1, self.TEST_MNT_POINT, ensure=True) mox.VerifyAll() def test_mount_glusterfs_should_reraise_already_mounted_error(self): """_mount_glusterfs should not suppress already mounted error if ensure=False """ mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('mkdir', '-p', self.TEST_MNT_POINT) drv._execute( 'mount', '-t', 'glusterfs', self.TEST_EXPORT1, self.TEST_MNT_POINT, run_as_root=True). \ AndRaise(putils.ProcessExecutionError(stderr='is busy or ' 'already mounted')) mox.ReplayAll() self.assertRaises(putils.ProcessExecutionError, drv._mount_glusterfs, self.TEST_EXPORT1, self.TEST_MNT_POINT, ensure=False) mox.VerifyAll() def test_mount_glusterfs_should_create_mountpoint_if_not_yet(self): """_mount_glusterfs should create mountpoint if it doesn't exist.""" mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_execute') drv._execute('mkdir', '-p', self.TEST_MNT_POINT) drv._execute(*([IgnoreArg()] * 5), run_as_root=IgnoreArg()) mox.ReplayAll() drv._mount_glusterfs(self.TEST_EXPORT1, self.TEST_MNT_POINT) mox.VerifyAll() def test_get_hash_str(self): """_get_hash_str should calculation correct value.""" drv = self._driver self.assertEqual('ab03ab34eaca46a5fb81878f7e9b91fc', drv._get_hash_str(self.TEST_EXPORT1)) def test_get_mount_point_for_share(self): """_get_mount_point_for_share should call RemoteFsClient.""" mox = self._mox drv = self._driver hashed_path = '/mnt/test/abcdefabcdef' mox.StubOutWithMock(brick.remotefs.remotefs.RemoteFsClient, 'get_mount_point') glusterfs.CONF.glusterfs_mount_point_base = self.TEST_MNT_POINT_BASE brick.remotefs.remotefs.RemoteFsClient.\ get_mount_point(self.TEST_EXPORT1).AndReturn(hashed_path) mox.ReplayAll() drv._get_mount_point_for_share(self.TEST_EXPORT1) def test_get_available_capacity_with_df(self): """_get_available_capacity should calculate correct value.""" mox = self._mox drv = self._driver df_total_size = 2620544 df_avail = 1490560 df_head = 'Filesystem 1K-blocks Used Available Use% Mounted on\n' df_data = 'glusterfs-host:/export %d 996864 %d 41%% /mnt' % \ (df_total_size, df_avail) df_output = df_head + df_data setattr(glusterfs.CONF, 'glusterfs_disk_util', 'df') mox.StubOutWithMock(drv, '_get_mount_point_for_share') drv._get_mount_point_for_share(self.TEST_EXPORT1).\ AndReturn(self.TEST_MNT_POINT) mox.StubOutWithMock(drv, '_execute') drv._execute('df', '--portability', '--block-size', '1', self.TEST_MNT_POINT, run_as_root=True).AndReturn((df_output, None)) mox.ReplayAll() self.assertEqual((df_avail, df_total_size), drv._get_available_capacity(self.TEST_EXPORT1)) mox.VerifyAll() delattr(glusterfs.CONF, 'glusterfs_disk_util') def test_load_shares_config(self): mox = self._mox drv = self._driver drv.configuration.glusterfs_shares_config = ( self.TEST_SHARES_CONFIG_FILE) mox.StubOutWithMock(drv, '_read_config_file') config_data = [] config_data.append(self.TEST_EXPORT1) config_data.append('#' + self.TEST_EXPORT2) config_data.append(self.TEST_EXPORT2 + ' ' + self.TEST_EXPORT2_OPTIONS) config_data.append('broken:share_format') config_data.append('') drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) mox.ReplayAll() drv._load_shares_config(drv.configuration.glusterfs_shares_config) self.assertIn(self.TEST_EXPORT1, drv.shares) self.assertIn(self.TEST_EXPORT2, drv.shares) self.assertEqual(len(drv.shares), 2) self.assertEqual(drv.shares[self.TEST_EXPORT2], self.TEST_EXPORT2_OPTIONS) mox.VerifyAll() def test_ensure_share_mounted(self): """_ensure_share_mounted simple use case.""" mox = self._mox drv = self._driver mox.StubOutWithMock(utils, 'get_file_mode') mox.StubOutWithMock(utils, 'get_file_gid') mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_ensure_share_writable') mox.StubOutWithMock(drv, '_get_mount_point_for_share') drv._get_mount_point_for_share(self.TEST_EXPORT1).\ AndReturn(self.TEST_MNT_POINT) mox.StubOutWithMock(drv, '_mount_glusterfs') drv._mount_glusterfs(self.TEST_EXPORT1, self.TEST_MNT_POINT, ensure=True) utils.get_file_gid(self.TEST_MNT_POINT).AndReturn(333333) utils.get_file_mode(self.TEST_MNT_POINT).AndReturn(0o777) drv._ensure_share_writable(self.TEST_MNT_POINT) drv._execute('chgrp', IgnoreArg(), self.TEST_MNT_POINT, run_as_root=True) mox.ReplayAll() drv._ensure_share_mounted(self.TEST_EXPORT1) mox.VerifyAll() def test_ensure_shares_mounted_should_save_mounting_successfully(self): """_ensure_shares_mounted should save share if mounted with success.""" mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_read_config_file') config_data = [] config_data.append(self.TEST_EXPORT1) drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) mox.StubOutWithMock(drv, '_ensure_share_mounted') drv._ensure_share_mounted(self.TEST_EXPORT1) mox.ReplayAll() drv._ensure_shares_mounted() self.assertEqual(1, len(drv._mounted_shares)) self.assertEqual(self.TEST_EXPORT1, drv._mounted_shares[0]) mox.VerifyAll() def test_ensure_shares_mounted_should_not_save_mounting_with_error(self): """_ensure_shares_mounted should not save share if failed to mount.""" mox = self._mox drv = self._driver mox.StubOutWithMock(drv, '_read_config_file') config_data = [] config_data.append(self.TEST_EXPORT1) drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\ AndReturn(config_data) mox.StubOutWithMock(drv, '_ensure_share_mounted') drv._ensure_share_mounted(self.TEST_EXPORT1).AndRaise(Exception()) mox.ReplayAll() drv._ensure_shares_mounted() self.assertEqual(0, len(drv._mounted_shares)) mox.VerifyAll() def test_setup_should_throw_error_if_shares_config_not_configured(self): """do_setup should throw error if shares config is not configured.""" drv = self._driver glusterfs.CONF.glusterfs_shares_config = self.TEST_SHARES_CONFIG_FILE self.assertRaises(exception.GlusterfsException, drv.do_setup, IsA(context.RequestContext)) def test_setup_should_throw_exception_if_client_is_not_installed(self): """do_setup should throw exception if client is not installed.""" mox = self._mox drv = self._driver glusterfs.CONF.glusterfs_shares_config = self.TEST_SHARES_CONFIG_FILE mox.StubOutWithMock(os.path, 'exists') os.path.exists(self.TEST_SHARES_CONFIG_FILE).AndReturn(True) mox.StubOutWithMock(drv, '_execute') drv._execute('mount.glusterfs', check_exit_code=False).\ AndRaise(OSError(errno.ENOENT, 'No such file or directory')) mox.ReplayAll() self.assertRaises(exception.GlusterfsException, drv.do_setup, IsA(context.RequestContext)) mox.VerifyAll() def _fake_load_shares_config(self, conf): self._driver.shares = {'127.7.7.7:/gluster1': None} def _fake_NamedTemporaryFile(self, prefix=None, dir=None): raise OSError('Permission denied!') def test_setup_set_share_permissions(self): mox = self._mox drv = self._driver glusterfs.CONF.glusterfs_shares_config = self.TEST_SHARES_CONFIG_FILE self.stubs.Set(drv, '_load_shares_config', self._fake_load_shares_config) self.stubs.Set(tempfile, 'NamedTemporaryFile', self._fake_NamedTemporaryFile) mox.StubOutWithMock(os.path, 'exists') mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(utils, 'get_file_gid') mox.StubOutWithMock(utils, 'get_file_mode') mox.StubOutWithMock(os, 'getegid') drv._execute('mount.glusterfs', check_exit_code=False) drv._execute('mkdir', '-p', mox_lib.IgnoreArg()) os.path.exists(self.TEST_SHARES_CONFIG_FILE).AndReturn(True) drv._execute('mount', '-t', 'glusterfs', '127.7.7.7:/gluster1', mox_lib.IgnoreArg(), run_as_root=True) utils.get_file_gid(mox_lib.IgnoreArg()).AndReturn(33333) # perms not writable utils.get_file_mode(mox_lib.IgnoreArg()).AndReturn(0o000) os.getegid().AndReturn(888) drv._execute('chgrp', 888, mox_lib.IgnoreArg(), run_as_root=True) drv._execute('chmod', 'g+w', mox_lib.IgnoreArg(), run_as_root=True) mox.ReplayAll() drv.do_setup(IsA(context.RequestContext)) mox.VerifyAll() def test_find_share_should_throw_error_if_there_is_no_mounted_shares(self): """_find_share should throw error if there is no mounted shares.""" drv = self._driver drv._mounted_shares = [] self.assertRaises(exception.GlusterfsNoSharesMounted, drv._find_share, self.TEST_SIZE_IN_GB) def test_find_share(self): """_find_share simple use case.""" mox = self._mox drv = self._driver drv._mounted_shares = [self.TEST_EXPORT1, self.TEST_EXPORT2] mox.StubOutWithMock(drv, '_get_available_capacity') drv._get_available_capacity(self.TEST_EXPORT1).\ AndReturn((2 * units.GiB, 5 * units.GiB)) drv._get_available_capacity(self.TEST_EXPORT2).\ AndReturn((3 * units.GiB, 10 * units.GiB)) mox.ReplayAll() self.assertEqual(self.TEST_EXPORT2, drv._find_share(self.TEST_SIZE_IN_GB)) mox.VerifyAll() def test_find_share_should_throw_error_if_there_is_no_enough_place(self): """_find_share should throw error if there is no share to host vol.""" mox = self._mox drv = self._driver drv._mounted_shares = [self.TEST_EXPORT1, self.TEST_EXPORT2] mox.StubOutWithMock(drv, '_get_available_capacity') drv._get_available_capacity(self.TEST_EXPORT1).\ AndReturn((0, 5 * units.GiB)) drv._get_available_capacity(self.TEST_EXPORT2).\ AndReturn((0, 10 * units.GiB)) mox.ReplayAll() self.assertRaises(exception.GlusterfsNoSuitableShareFound, drv._find_share, self.TEST_SIZE_IN_GB) mox.VerifyAll() def _simple_volume(self, id=None): volume = DumbVolume() volume['provider_location'] = self.TEST_EXPORT1 if id is None: volume['id'] = self.VOLUME_UUID else: volume['id'] = id # volume['name'] mirrors format from db/sqlalchemy/models.py volume['name'] = 'volume-%s' % volume['id'] volume['size'] = 10 volume['status'] = 'available' return volume def test_create_sparsed_volume(self): mox = self._mox drv = self._driver volume = self._simple_volume() setattr(glusterfs.CONF, 'glusterfs_sparsed_volumes', True) mox.StubOutWithMock(drv, '_create_sparsed_file') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') drv._create_sparsed_file(IgnoreArg(), IgnoreArg()) drv._set_rw_permissions_for_all(IgnoreArg()) mox.ReplayAll() drv._do_create_volume(volume) mox.VerifyAll() delattr(glusterfs.CONF, 'glusterfs_sparsed_volumes') def test_create_nonsparsed_volume(self): mox = self._mox drv = self._driver volume = self._simple_volume() old_value = self._configuration.glusterfs_sparsed_volumes self._configuration.glusterfs_sparsed_volumes = False mox.StubOutWithMock(drv, '_create_regular_file') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') drv._create_regular_file(IgnoreArg(), IgnoreArg()) drv._set_rw_permissions_for_all(IgnoreArg()) mox.ReplayAll() drv._do_create_volume(volume) mox.VerifyAll() self._configuration.glusterfs_sparsed_volumes = old_value def test_create_qcow2_volume(self): (mox, drv) = self._mox, self._driver volume = self._simple_volume() old_value = self._configuration.glusterfs_qcow2_volumes self._configuration.glusterfs_qcow2_volumes = True mox.StubOutWithMock(drv, '_execute') hashed = drv._get_hash_str(volume['provider_location']) path = '%s/%s/volume-%s' % (self.TEST_MNT_POINT_BASE, hashed, self.VOLUME_UUID) drv._execute('qemu-img', 'create', '-f', 'qcow2', '-o', 'preallocation=metadata', path, str(volume['size'] * units.GiB), run_as_root=True) drv._execute('chmod', 'ugo+rw', path, run_as_root=True) mox.ReplayAll() drv._do_create_volume(volume) mox.VerifyAll() self._configuration.glusterfs_qcow2_volumes = old_value def test_create_volume_should_ensure_glusterfs_mounted(self): """create_volume ensures shares provided in config are mounted.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(glusterfs, 'LOG') self.stub_out_not_replaying(drv, '_find_share') self.stub_out_not_replaying(drv, '_do_create_volume') mox.StubOutWithMock(drv, '_ensure_shares_mounted') drv._ensure_shares_mounted() mox.ReplayAll() volume = DumbVolume() volume['size'] = self.TEST_SIZE_IN_GB drv.create_volume(volume) mox.VerifyAll() def test_create_volume_should_return_provider_location(self): """create_volume should return provider_location with found share.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(glusterfs, 'LOG') self.stub_out_not_replaying(drv, '_ensure_shares_mounted') self.stub_out_not_replaying(drv, '_do_create_volume') mox.StubOutWithMock(drv, '_find_share') drv._find_share(self.TEST_SIZE_IN_GB).AndReturn(self.TEST_EXPORT1) mox.ReplayAll() volume = DumbVolume() volume['size'] = self.TEST_SIZE_IN_GB result = drv.create_volume(volume) self.assertEqual(self.TEST_EXPORT1, result['provider_location']) mox.VerifyAll() def test_create_cloned_volume(self): (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_create_snapshot') mox.StubOutWithMock(drv, '_delete_snapshot') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(image_utils, 'convert_image') mox.StubOutWithMock(drv, '_copy_volume_from_snapshot') volume_file = 'volume-%s' % self.VOLUME_UUID volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, drv._get_hash_str(self.TEST_EXPORT1), volume_file) volume = self._simple_volume() src_vref = self._simple_volume() src_vref['id'] = '375e32b2-804a-49f2-b282-85d1d5a5b9e1' src_vref['name'] = 'volume-%s' % src_vref['id'] volume_file = 'volume-%s' % src_vref['id'] volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, drv._get_hash_str(self.TEST_EXPORT1), volume_file) src_info_path = '%s.info' % volume_path volume_ref = {'id': volume['id'], 'name': volume['name'], 'status': volume['status'], 'provider_location': volume['provider_location'], 'size': volume['size']} snap_ref = {'volume_name': src_vref['name'], 'name': 'clone-snap-%s' % src_vref['id'], 'size': src_vref['size'], 'volume_size': src_vref['size'], 'volume_id': src_vref['id'], 'id': 'tmp-snap-%s' % src_vref['id'], 'volume': src_vref} drv._create_snapshot(snap_ref) snap_info = {'active': volume_file, snap_ref['id']: volume_path + '-clone'} drv._read_info_file(src_info_path).AndReturn(snap_info) drv._copy_volume_from_snapshot(snap_ref, volume_ref, volume['size']) drv._delete_snapshot(mox_lib.IgnoreArg()) mox.ReplayAll() drv.create_cloned_volume(volume, src_vref) @mock.patch('cinder.openstack.common.fileutils.delete_if_exists') def test_delete_volume(self, mock_delete_if_exists): volume = self._simple_volume() volume_filename = 'volume-%s' % self.VOLUME_UUID volume_path = '%s/%s' % (self.TEST_MNT_POINT, volume_filename) info_file = volume_path + '.info' with contextlib.nested( mock.patch.object(self._driver, '_ensure_share_mounted'), mock.patch.object(self._driver, '_local_volume_dir'), mock.patch.object(self._driver, 'get_active_image_from_info'), mock.patch.object(self._driver, '_execute'), mock.patch.object(self._driver, '_local_path_volume_info') ) as (mock_ensure_share_mounted, mock_local_volume_dir, mock_active_image_from_info, mock_execute, mock_local_path_volume_info): mock_local_volume_dir.return_value = self.TEST_MNT_POINT mock_active_image_from_info.return_value = volume_filename mock_local_path_volume_info.return_value = info_file self._driver.delete_volume(volume) mock_ensure_share_mounted.assert_called_once_with( volume['provider_location']) mock_local_volume_dir.assert_called_once_with(volume) mock_active_image_from_info.assert_called_once_with(volume) mock_execute.assert_called_once_with('rm', '-f', volume_path, run_as_root=True) mock_local_path_volume_info.assert_called_once_with(volume) mock_delete_if_exists.assert_called_once_with(info_file) def test_delete_should_ensure_share_mounted(self): """delete_volume should ensure that corresponding share is mounted.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(drv, '_execute') volume = DumbVolume() volume['name'] = 'volume-123' volume['provider_location'] = self.TEST_EXPORT1 mox.StubOutWithMock(drv, '_ensure_share_mounted') drv._ensure_share_mounted(self.TEST_EXPORT1) mox.ReplayAll() drv.delete_volume(volume) mox.VerifyAll() def test_delete_should_not_delete_if_provider_location_not_provided(self): """delete_volume shouldn't delete if provider_location missed.""" mox = self._mox drv = self._driver self.stub_out_not_replaying(drv, '_ensure_share_mounted') volume = DumbVolume() volume['name'] = 'volume-123' volume['provider_location'] = None mox.StubOutWithMock(drv, '_execute') mox.ReplayAll() drv.delete_volume(volume) mox.VerifyAll() def test_create_snapshot(self): (mox, drv) = self._mox, self._driver self.stub_out_not_replaying(drv, '_ensure_share_mounted') mox.StubOutWithMock(drv, '_create_qcow2_snap_file') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_write_info_file') volume = self._simple_volume() snap_ref = {'name': 'test snap', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID} mox.StubOutWithMock(drv, '_execute') vol_filename = 'volume-%s' % self.VOLUME_UUID snap_filename = '%s.%s' % (vol_filename, self.SNAP_UUID) hashed = drv._get_hash_str(self.TEST_EXPORT1) vol_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, vol_filename) snap_path = '%s.%s' % (vol_path, self.SNAP_UUID) info_path = '%s%s' % (vol_path, '.info') info_dict = {'active': vol_filename} drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(info_dict) drv._create_qcow2_snap_file(snap_ref, vol_filename, snap_path) qemu_img_info_output = ("""image: volume-%s file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 152K """ % self.VOLUME_UUID, '') drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(info_dict) # SNAP_UUID_2 has been removed from dict. info_file_dict = {'active': 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID), self.SNAP_UUID: 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID)} drv._write_info_file(info_path, info_file_dict) mox.ReplayAll() drv.create_snapshot(snap_ref) mox.VerifyAll() def test_delete_snapshot_bottom(self): """Multiple snapshots exist. In this test, path (volume-) is backed by snap_path (volume-.) which is backed by snap_path_2 (volume-.). Delete the snapshot identified by SNAP_UUID_2. Chain goes from (SNAP_UUID) (SNAP_UUID_2) volume-abc -> volume-abc.baca -> volume-abc.bebe to (SNAP_UUID) volume-abc -> volume-abc.baca """ (mox, drv) = self._mox, self._driver hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_dir = os.path.join(self.TEST_MNT_POINT_BASE, hashed) volume_path = '%s/%s/volume-%s' % (self.TEST_MNT_POINT_BASE, hashed, self.VOLUME_UUID) volume_filename = 'volume-%s' % self.VOLUME_UUID snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_path_2 = '%s.%s' % (volume_path, self.SNAP_UUID_2) snap_file = '%s.%s' % (volume_filename, self.SNAP_UUID) snap_file_2 = '%s.%s' % (volume_filename, self.SNAP_UUID_2) info_path = '%s%s' % (volume_path, '.info') qemu_img_info_output = """image: volume-%s.%s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %s """ % (self.VOLUME_UUID, self.SNAP_UUID, volume_filename) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_read_file') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_get_backing_chain_for_path') mox.StubOutWithMock(drv, '_get_matching_backing_file') mox.StubOutWithMock(drv, '_write_info_file') mox.StubOutWithMock(drv, '_ensure_share_writable') mox.StubOutWithMock(image_utils, 'qemu_img_info') drv._ensure_share_writable(volume_dir) img_info = imageutils.QemuImgInfo(qemu_img_info_output) image_utils.qemu_img_info(snap_path_2).AndReturn(img_info) info_file_dict = {'active': snap_file_2, self.SNAP_UUID_2: snap_file_2, self.SNAP_UUID: snap_file} snap_ref = {'name': 'test snap', 'volume_id': self.VOLUME_UUID, 'volume': self._simple_volume(), 'id': self.SNAP_UUID_2} snap_path_2_chain = [{self.SNAP_UUID_2: snap_file_2}, {self.SNAP_UUID: snap_file}, {'active': snap_file_2}] snap_path_chain = [{self.SNAP_UUID: snap_file}, {'active': snap_file}] drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(info_file_dict) drv._execute('qemu-img', 'commit', snap_path_2, run_as_root=True) drv._execute('rm', '-f', snap_path_2, run_as_root=True) drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(info_file_dict) drv._read_info_file(info_path).AndReturn(info_file_dict) drv._write_info_file(info_path, info_file_dict) mox.ReplayAll() drv.delete_snapshot(snap_ref) mox.VerifyAll() def test_delete_snapshot_middle(self): """Multiple snapshots exist. In this test, path (volume-) is backed by snap_path (volume-.) which is backed by snap_path_2 (volume-.). Delete the snapshot identified with SNAP_UUID. Chain goes from (SNAP_UUID) (SNAP_UUID_2) volume-abc -> volume-abc.baca -> volume-abc.bebe to (SNAP_UUID_2) volume-abc -> volume-abc.bebe """ (mox, drv) = self._mox, self._driver volume = self._simple_volume() hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_file = 'volume-%s' % self.VOLUME_UUID volume_dir = os.path.join(self.TEST_MNT_POINT_BASE, hashed) volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, volume_file) info_path = '%s%s' % (volume_path, '.info') snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_file = 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID) snap_path_2 = '%s.%s' % (volume_path, self.SNAP_UUID_2) snap_file_2 = 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID_2) qemu_img_info_output_snap_2 = """image: volume-%s.%s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %s """ % (self.VOLUME_UUID, self.SNAP_UUID_2, 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID_2)) qemu_img_info_output_snap_1 = """image: volume-%s.%s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 122K backing file: %s """ % (self.VOLUME_UUID, self.SNAP_UUID, 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID)) qemu_img_info_output = """image: volume-%s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 175K """ % self.VOLUME_UUID mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_write_info_file') mox.StubOutWithMock(drv, '_get_backing_chain_for_path') mox.StubOutWithMock(drv, 'get_active_image_from_info') mox.StubOutWithMock(drv, '_ensure_share_writable') mox.StubOutWithMock(image_utils, 'qemu_img_info') info_file_dict = {self.SNAP_UUID_2: 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID_2), self.SNAP_UUID: 'volume-%s.%s' % (self.VOLUME_UUID, self.SNAP_UUID)} drv._ensure_share_writable(volume_dir) info_path = drv._local_path_volume(volume) + '.info' drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(info_file_dict) img_info = imageutils.QemuImgInfo(qemu_img_info_output_snap_1) image_utils.qemu_img_info(snap_path).AndReturn(img_info) snap_ref = {'name': 'test snap', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID} snap_path_chain = [{'filename': snap_file_2, 'backing-filename': snap_file}, {'filename': snap_file, 'backing-filename': volume_file}] drv.get_active_image_from_info(volume).AndReturn(snap_file_2) drv._get_backing_chain_for_path(volume, snap_path_2).\ AndReturn(snap_path_chain) drv._read_info_file(info_path).AndReturn(info_file_dict) drv._execute('qemu-img', 'commit', snap_path_2, run_as_root=True) drv._execute('rm', '-f', snap_path_2, run_as_root=True) drv._read_info_file(info_path).AndReturn(info_file_dict) drv._write_info_file(info_path, info_file_dict) mox.ReplayAll() drv.delete_snapshot(snap_ref) mox.VerifyAll() def test_delete_snapshot_not_in_info(self): """Snapshot not in info file / info file doesn't exist. Snapshot creation failed so nothing is on-disk. Driver should allow operation to succeed so the manager can remove the snapshot record. (Scenario: Snapshot object created in Cinder db but not on backing storage.) """ (mox, drv) = self._mox, self._driver hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_dir = os.path.join(self.TEST_MNT_POINT_BASE, hashed) volume_filename = 'volume-%s' % self.VOLUME_UUID volume_path = os.path.join(volume_dir, volume_filename) info_path = '%s%s' % (volume_path, '.info') mox.StubOutWithMock(drv, '_read_file') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_ensure_share_writable') snap_ref = {'name': 'test snap', 'volume_id': self.VOLUME_UUID, 'volume': self._simple_volume(), 'id': self.SNAP_UUID_2} drv._ensure_share_writable(volume_dir) drv._read_info_file(info_path, empty_if_missing=True).AndReturn({}) mox.ReplayAll() drv.delete_snapshot(snap_ref) mox.VerifyAll() def test_read_info_file(self): (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_read_file') hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_path = '%s/%s/volume-%s' % (self.TEST_MNT_POINT_BASE, hashed, self.VOLUME_UUID) info_path = '%s%s' % (volume_path, '.info') drv._read_file(info_path).AndReturn('{"%(id)s": "volume-%(id)s"}' % {'id': self.VOLUME_UUID}) mox.ReplayAll() volume = DumbVolume() volume['id'] = self.VOLUME_UUID volume['name'] = 'volume-%s' % self.VOLUME_UUID info = drv._read_info_file(info_path) self.assertEqual(info[self.VOLUME_UUID], 'volume-%s' % self.VOLUME_UUID) mox.VerifyAll() def test_extend_volume(self): (mox, drv) = self._mox, self._driver volume = self._simple_volume() volume_path = '%s/%s/volume-%s' % (self.TEST_MNT_POINT_BASE, drv._get_hash_str( self.TEST_EXPORT1), self.VOLUME_UUID) qemu_img_info_output = """image: volume-%s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 473K """ % self.VOLUME_UUID img_info = imageutils.QemuImgInfo(qemu_img_info_output) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, 'get_active_image_from_info') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(image_utils, 'resize_image') drv.get_active_image_from_info(volume).AndReturn(volume['name']) image_utils.qemu_img_info(volume_path).AndReturn(img_info) image_utils.resize_image(volume_path, 3) mox.ReplayAll() drv.extend_volume(volume, 3) mox.VerifyAll() def test_create_snapshot_online(self): (mox, drv) = self._mox, self._driver volume = self._simple_volume() volume['status'] = 'in-use' hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_file = 'volume-%s' % self.VOLUME_UUID volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, volume_file) info_path = '%s.info' % volume_path ctxt = context.RequestContext('fake_user', 'fake_project') snap_ref = {'name': 'test snap (online)', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID, 'context': ctxt, 'status': 'asdf', 'progress': 'asdf'} snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_file = '%s.%s' % (volume_file, self.SNAP_UUID) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_create_qcow2_snap_file') mox.StubOutWithMock(db, 'snapshot_get') mox.StubOutWithMock(drv, '_write_info_file') mox.StubOutWithMock(drv, '_nova') drv._create_qcow2_snap_file(snap_ref, volume_file, snap_path) create_info = {'snapshot_id': snap_ref['id'], 'type': 'qcow2', 'new_file': snap_file} drv._nova.create_volume_snapshot(ctxt, self.VOLUME_UUID, create_info) snap_ref['status'] = 'creating' snap_ref['progress'] = '0%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '50%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '90%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_info = {'active': snap_file, self.SNAP_UUID: snap_file} drv._write_info_file(info_path, snap_info) mox.ReplayAll() drv.create_snapshot(snap_ref) def test_create_snapshot_online_novafailure(self): (mox, drv) = self._mox, self._driver volume = self._simple_volume() volume['status'] = 'in-use' hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_file = 'volume-%s' % self.VOLUME_UUID volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, volume_file) info_path = '%s.info' % volume_path ctxt = context.RequestContext('fake_user', 'fake_project') snap_ref = {'name': 'test snap (online)', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID, 'context': ctxt} snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_file = '%s.%s' % (volume_file, self.SNAP_UUID) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_create_qcow2_snap_file') mox.StubOutWithMock(drv, '_nova') mox.StubOutWithMock(db, 'snapshot_get') mox.StubOutWithMock(drv, '_write_info_file') drv._create_qcow2_snap_file(snap_ref, volume_file, snap_path) create_info = {'snapshot_id': snap_ref['id'], 'type': 'qcow2', 'new_file': snap_file} drv._nova.create_volume_snapshot(ctxt, self.VOLUME_UUID, create_info) snap_ref['status'] = 'creating' snap_ref['progress'] = '0%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '50%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '99%' snap_ref['status'] = 'error' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_info = {'active': snap_file, self.SNAP_UUID: snap_file} drv._write_info_file(info_path, snap_info) mox.ReplayAll() self.assertRaises(exception.GlusterfsException, drv.create_snapshot, snap_ref) def test_delete_snapshot_online_1(self): """Delete the newest snapshot, with only one snap present.""" (mox, drv) = self._mox, self._driver volume = self._simple_volume() volume['status'] = 'in-use' ctxt = context.RequestContext('fake_user', 'fake_project') snap_ref = {'name': 'test snap to delete (online)', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID, 'context': ctxt} hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_file = 'volume-%s' % self.VOLUME_UUID volume_dir = os.path.join(self.TEST_MNT_POINT_BASE, hashed) volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, volume_file) info_path = '%s.info' % volume_path snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_file = '%s.%s' % (volume_file, self.SNAP_UUID) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_nova') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_write_info_file') mox.StubOutWithMock(os.path, 'exists') mox.StubOutWithMock(db, 'snapshot_get') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_ensure_share_writable') snap_info = {'active': snap_file, self.SNAP_UUID: snap_file} drv._ensure_share_writable(volume_dir) drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(snap_info) os.path.exists(snap_path).AndReturn(True) qemu_img_info_output = """image: %s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %s """ % (snap_file, volume_file) img_info = imageutils.QemuImgInfo(qemu_img_info_output) vol_qemu_img_info_output = """image: %s file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 173K """ % volume_file volume_img_info = imageutils.QemuImgInfo(vol_qemu_img_info_output) image_utils.qemu_img_info(snap_path).AndReturn(img_info) image_utils.qemu_img_info(volume_path).AndReturn(volume_img_info) drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(snap_info) delete_info = { 'type': 'qcow2', 'merge_target_file': None, 'file_to_merge': None, 'volume_id': self.VOLUME_UUID } drv._nova.delete_volume_snapshot(ctxt, self.SNAP_UUID, delete_info) drv._read_info_file(info_path).AndReturn(snap_info) drv._read_info_file(info_path).AndReturn(snap_info) snap_ref['status'] = 'deleting' snap_ref['progress'] = '0%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '50%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '90%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) drv._write_info_file(info_path, snap_info) drv._execute('rm', '-f', volume_path, run_as_root=True) mox.ReplayAll() drv.delete_snapshot(snap_ref) def test_delete_snapshot_online_2(self): """Delete the middle of 3 snapshots.""" (mox, drv) = self._mox, self._driver volume = self._simple_volume() volume['status'] = 'in-use' ctxt = context.RequestContext('fake_user', 'fake_project') snap_ref = {'name': 'test snap to delete (online)', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID, 'context': ctxt} hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_file = 'volume-%s' % self.VOLUME_UUID volume_dir = os.path.join(self.TEST_MNT_POINT_BASE, hashed) volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, volume_file) info_path = '%s.info' % volume_path snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_path_2 = '%s.%s' % (volume_path, self.SNAP_UUID_2) snap_file = '%s.%s' % (volume_file, self.SNAP_UUID) snap_file_2 = '%s.%s' % (volume_file, self.SNAP_UUID_2) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_nova') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_write_info_file') mox.StubOutWithMock(os.path, 'exists') mox.StubOutWithMock(db, 'snapshot_get') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_ensure_share_writable') snap_info = {'active': snap_file_2, self.SNAP_UUID: snap_file, self.SNAP_UUID_2: snap_file_2} drv._ensure_share_writable(volume_dir) drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(snap_info) os.path.exists(snap_path).AndReturn(True) qemu_img_info_output = """image: %s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %s """ % (snap_file, volume_file) img_info = imageutils.QemuImgInfo(qemu_img_info_output) vol_qemu_img_info_output = """image: %s file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 173K """ % volume_file volume_img_info = imageutils.QemuImgInfo(vol_qemu_img_info_output) image_utils.qemu_img_info(snap_path).AndReturn(img_info) image_utils.qemu_img_info(volume_path).AndReturn(volume_img_info) drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(snap_info) delete_info = {'type': 'qcow2', 'merge_target_file': volume_file, 'file_to_merge': snap_file, 'volume_id': self.VOLUME_UUID} drv._nova.delete_volume_snapshot(ctxt, self.SNAP_UUID, delete_info) drv._read_info_file(info_path).AndReturn(snap_info) drv._read_info_file(info_path).AndReturn(snap_info) snap_ref['status'] = 'deleting' snap_ref['progress'] = '0%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '50%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '90%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) drv._write_info_file(info_path, snap_info) drv._execute('rm', '-f', snap_path, run_as_root=True) mox.ReplayAll() drv.delete_snapshot(snap_ref) def test_delete_snapshot_online_novafailure(self): """Delete the newest snapshot.""" (mox, drv) = self._mox, self._driver volume = self._simple_volume() volume['status'] = 'in-use' ctxt = context.RequestContext('fake_user', 'fake_project') snap_ref = {'name': 'test snap to delete (online)', 'volume_id': self.VOLUME_UUID, 'volume': volume, 'id': self.SNAP_UUID, 'context': ctxt} hashed = drv._get_hash_str(self.TEST_EXPORT1) volume_file = 'volume-%s' % self.VOLUME_UUID volume_path = '%s/%s/%s' % (self.TEST_MNT_POINT_BASE, hashed, volume_file) info_path = '%s.info' % volume_path snap_path = '%s.%s' % (volume_path, self.SNAP_UUID) snap_file = '%s.%s' % (volume_file, self.SNAP_UUID) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_nova') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, '_write_info_file') mox.StubOutWithMock(os.path, 'exists') mox.StubOutWithMock(db, 'snapshot_get') mox.StubOutWithMock(image_utils, 'qemu_img_info') snap_info = {'active': snap_file, self.SNAP_UUID: snap_file} drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(snap_info) os.path.exists(snap_path).AndReturn(True) qemu_img_info_output = """image: %s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %s """ % (snap_file, volume_file) img_info = imageutils.QemuImgInfo(qemu_img_info_output) image_utils.qemu_img_info(snap_path).AndReturn(img_info) drv._read_info_file(info_path, empty_if_missing=True).\ AndReturn(snap_info) delete_info = { 'type': 'qcow2', 'merge_target_file': None, 'file_to_merge': volume_file, 'volume_id': self.VOLUME_UUID } drv._nova.delete_volume_snapshot(ctxt, self.SNAP_UUID, delete_info) drv._read_info_file(info_path).AndReturn(snap_info) drv._read_info_file(info_path).AndReturn(snap_info) snap_ref['status'] = 'deleting' snap_ref['progress'] = '0%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['progress'] = '50%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) snap_ref['status'] = 'error_deleting' snap_ref['progress'] = '90%' db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) db.snapshot_get(ctxt, self.SNAP_UUID).AndReturn(snap_ref) drv._write_info_file(info_path, snap_info) drv._execute('rm', '-f', volume_path, run_as_root=True) mox.ReplayAll() self.assertRaises(exception.GlusterfsException, drv.delete_snapshot, snap_ref) def test_get_backing_chain_for_path(self): (mox, drv) = self._mox, self._driver glusterfs.CONF.glusterfs_mount_point_base = self.TEST_MNT_POINT_BASE volume = self._simple_volume() vol_filename = volume['name'] vol_filename_2 = volume['name'] + '.abcd' vol_filename_3 = volume['name'] + '.efef' hashed = drv._get_hash_str(self.TEST_EXPORT1) vol_dir = '%s/%s' % (self.TEST_MNT_POINT_BASE, hashed) vol_path = '%s/%s' % (vol_dir, vol_filename) vol_path_2 = '%s/%s' % (vol_dir, vol_filename_2) vol_path_3 = '%s/%s' % (vol_dir, vol_filename_3) mox.StubOutWithMock(drv, '_execute') mox.StubOutWithMock(drv, '_local_volume_dir') mox.StubOutWithMock(image_utils, 'qemu_img_info') qemu_img_output_base = """image: %(image_name)s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K """ qemu_img_output = """image: %(image_name)s file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %(backing_file)s """ qemu_img_output_1 = qemu_img_output_base % {'image_name': vol_filename} qemu_img_output_2 = qemu_img_output % {'image_name': vol_filename_2, 'backing_file': vol_filename} qemu_img_output_3 = qemu_img_output % {'image_name': vol_filename_3, 'backing_file': vol_filename_2} info_1 = imageutils.QemuImgInfo(qemu_img_output_1) info_2 = imageutils.QemuImgInfo(qemu_img_output_2) info_3 = imageutils.QemuImgInfo(qemu_img_output_3) drv._local_volume_dir(volume).AndReturn(vol_dir) image_utils.qemu_img_info(vol_path_3).\ AndReturn(info_3) drv._local_volume_dir(volume).AndReturn(vol_dir) image_utils.qemu_img_info(vol_path_2).\ AndReturn(info_2) drv._local_volume_dir(volume).AndReturn(vol_dir) image_utils.qemu_img_info(vol_path).\ AndReturn(info_1) mox.ReplayAll() chain = drv._get_backing_chain_for_path(volume, vol_path_3) # Verify chain contains all expected data item_1 = drv._get_matching_backing_file(chain, vol_filename) self.assertEqual(item_1['filename'], vol_filename_2) chain.remove(item_1) item_2 = drv._get_matching_backing_file(chain, vol_filename_2) self.assertEqual(item_2['filename'], vol_filename_3) chain.remove(item_2) self.assertEqual(len(chain), 1) self.assertEqual(chain[0]['filename'], vol_filename) def test_copy_volume_from_snapshot(self): (mox, drv) = self._mox, self._driver mox.StubOutWithMock(image_utils, 'convert_image') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(image_utils, 'qemu_img_info') mox.StubOutWithMock(drv, '_set_rw_permissions_for_all') dest_volume = self._simple_volume( 'c1073000-0000-0000-0000-0000000c1073') src_volume = self._simple_volume() vol_dir = os.path.join(self.TEST_MNT_POINT_BASE, drv._get_hash_str(self.TEST_EXPORT1)) src_vol_path = os.path.join(vol_dir, src_volume['name']) dest_vol_path = os.path.join(vol_dir, dest_volume['name']) info_path = os.path.join(vol_dir, src_volume['name']) + '.info' snapshot = {'volume_name': src_volume['name'], 'name': 'clone-snap-%s' % src_volume['id'], 'size': src_volume['size'], 'volume_size': src_volume['size'], 'volume_id': src_volume['id'], 'id': 'tmp-snap-%s' % src_volume['id'], 'volume': src_volume} snap_file = dest_volume['name'] + '.' + snapshot['id'] snap_path = os.path.join(vol_dir, snap_file) size = dest_volume['size'] drv._read_info_file(info_path).AndReturn( {'active': snap_file, snapshot['id']: snap_file} ) qemu_img_output = """image: %s file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 173K backing file: %s """ % (snap_file, src_volume['name']) img_info = imageutils.QemuImgInfo(qemu_img_output) image_utils.qemu_img_info(snap_path).AndReturn(img_info) image_utils.convert_image(src_vol_path, dest_vol_path, 'raw') drv._set_rw_permissions_for_all(dest_vol_path) mox.ReplayAll() drv._copy_volume_from_snapshot(snapshot, dest_volume, size) def test_create_volume_from_snapshot(self): (mox, drv) = self._mox, self._driver volume = self._simple_volume('c1073000-0000-0000-0000-0000000c1073') src_volume = self._simple_volume() mox.StubOutWithMock(drv, '_create_snapshot') mox.StubOutWithMock(drv, '_copy_volume_from_snapshot') mox.StubOutWithMock(drv, '_delete_snapshot') snap_ref = {'volume_name': src_volume['name'], 'name': 'clone-snap-%s' % src_volume['id'], 'size': src_volume['size'], 'volume_size': src_volume['size'], 'volume_id': src_volume['id'], 'id': 'tmp-snap-%s' % src_volume['id'], 'volume': src_volume} volume_ref = {'id': volume['id'], 'size': volume['size'], 'status': volume['status'], 'provider_location': volume['provider_location'], 'name': 'volume-' + volume['id']} drv._create_snapshot(snap_ref) drv._copy_volume_from_snapshot(snap_ref, volume_ref, src_volume['size']) drv._delete_snapshot(snap_ref) mox.ReplayAll() drv.create_cloned_volume(volume, src_volume) def test_initialize_connection(self): (mox, drv) = self._mox, self._driver volume = self._simple_volume() vol_dir = os.path.join(self.TEST_MNT_POINT_BASE, drv._get_hash_str(self.TEST_EXPORT1)) vol_path = os.path.join(vol_dir, volume['name']) qemu_img_output = """image: %s file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 173K """ % volume['name'] img_info = imageutils.QemuImgInfo(qemu_img_output) mox.StubOutWithMock(drv, 'get_active_image_from_info') mox.StubOutWithMock(image_utils, 'qemu_img_info') drv.get_active_image_from_info(volume).AndReturn(volume['name']) image_utils.qemu_img_info(vol_path).AndReturn(img_info) mox.ReplayAll() conn_info = drv.initialize_connection(volume, None) self.assertEqual(conn_info['data']['format'], 'raw') self.assertEqual(conn_info['driver_volume_type'], 'glusterfs') self.assertEqual(conn_info['data']['name'], volume['name']) self.assertEqual(conn_info['mount_point_base'], self.TEST_MNT_POINT_BASE) def test_get_mount_point_base(self): (mox, drv) = self._mox, self._driver self.assertEqual(drv._get_mount_point_base(), self.TEST_MNT_POINT_BASE) def test_backup_volume(self): """Backup a volume with no snapshots.""" (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_qemu_img_info') mox.StubOutWithMock(drv.db, 'volume_get') mox.StubOutWithMock(base_driver.VolumeDriver, 'backup_volume') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, 'get_active_image_from_info') ctxt = context.RequestContext('fake_user', 'fake_project') volume = self._simple_volume() backup = {'volume_id': volume['id']} drv._read_info_file(IgnoreArg(), empty_if_missing=True).AndReturn({}) drv.get_active_image_from_info(IgnoreArg()).AndReturn('/some/path') info = imageutils.QemuImgInfo() info.file_format = 'raw' drv.db.volume_get(ctxt, volume['id']).AndReturn(volume) drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) mox.ReplayAll() drv.backup_volume(ctxt, backup, IgnoreArg()) def test_backup_volume_previous_snap(self): """Backup a volume that previously had a snapshot. Snapshot was deleted, snap_info is different from above. """ (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_qemu_img_info') mox.StubOutWithMock(drv.db, 'volume_get') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, 'get_active_image_from_info') mox.StubOutWithMock(base_driver.VolumeDriver, 'backup_volume') ctxt = context.RequestContext('fake_user', 'fake_project') volume = self._simple_volume() backup = {'volume_id': volume['id']} drv._read_info_file(IgnoreArg(), empty_if_missing=True).AndReturn( {'active': 'file2'}) drv.get_active_image_from_info(IgnoreArg()).AndReturn('/some/file2') info = imageutils.QemuImgInfo() info.file_format = 'raw' drv.db.volume_get(ctxt, volume['id']).AndReturn(volume) drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) mox.ReplayAll() drv.backup_volume(ctxt, backup, IgnoreArg()) def test_backup_snap_failure_1(self): """Backup fails if snapshot exists (database).""" (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv.db, 'snapshot_get_all_for_volume') mox.StubOutWithMock(base_driver.VolumeDriver, 'backup_volume') ctxt = context.RequestContext('fake_user', 'fake_project') volume = self._simple_volume() backup = {'volume_id': volume['id']} drv.db.snapshot_get_all_for_volume(ctxt, volume['id']).AndReturn( [{'snap1': 'a'}, {'snap2': 'b'}]) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) mox.ReplayAll() self.assertRaises(exception.InvalidVolume, drv.backup_volume, ctxt, backup, IgnoreArg()) def test_backup_snap_failure_2(self): """Backup fails if snapshot exists (on-disk).""" (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv.db, 'volume_get') mox.StubOutWithMock(drv, 'get_active_image_from_info') mox.StubOutWithMock(drv, '_qemu_img_info') mox.StubOutWithMock(base_driver.VolumeDriver, 'backup_volume') ctxt = context.RequestContext('fake_user', 'fake_project') volume = self._simple_volume() backup = {'volume_id': volume['id']} drv.db.volume_get(ctxt, volume['id']).AndReturn(volume) drv._read_info_file(IgnoreArg(), empty_if_missing=True).AndReturn( {'id1': 'file1', 'id2': 'file2', 'active': 'file2'}) drv.get_active_image_from_info(IgnoreArg()).\ AndReturn('/some/path/file2') info = imageutils.QemuImgInfo() info.file_format = 'raw' info.backing_file = 'file1' drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) mox.ReplayAll() self.assertRaises(exception.InvalidVolume, drv.backup_volume, ctxt, backup, IgnoreArg()) def test_backup_failure_unsupported_format(self): """Attempt to backup a volume with a qcow2 base.""" (mox, drv) = self._mox, self._driver mox.StubOutWithMock(drv, '_qemu_img_info') mox.StubOutWithMock(drv.db, 'volume_get') mox.StubOutWithMock(base_driver.VolumeDriver, 'backup_volume') mox.StubOutWithMock(drv, '_read_info_file') mox.StubOutWithMock(drv, 'get_active_image_from_info') ctxt = context.RequestContext('fake_user', 'fake_project') volume = self._simple_volume() backup = {'volume_id': volume['id']} drv._read_info_file(IgnoreArg(), empty_if_missing=True).AndReturn({}) drv.get_active_image_from_info(IgnoreArg()).AndReturn('/some/path') info = imageutils.QemuImgInfo() info.file_format = 'qcow2' drv.db.volume_get(ctxt, volume['id']).AndReturn(volume) drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), IgnoreArg()) mox.ReplayAll() self.assertRaises(exception.InvalidVolume, drv.backup_volume, ctxt, backup, IgnoreArg()) cinder-2014.1.5/cinder/tests/test_vmware_io_util.py0000664000567000056700000000414412540642606023424 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 VMware, Inc. # All Rights Reserved. # # 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. """ Unit tests for image transfer utility classes. """ import math import mock from cinder import test from cinder.volume.drivers.vmware import io_util class ThreadSafePipeTest(test.TestCase): """Tests for ThreadSafePipe.""" def test_read(self): max_size = 10 chunk_size = 10 max_transfer_size = 30 queue = io_util.ThreadSafePipe(max_size, max_transfer_size) def get_side_effect(): return [1] * chunk_size queue.get = mock.Mock(side_effect=get_side_effect) while True: data_item = queue.read(chunk_size) if not data_item: break self.assertEqual(max_transfer_size, queue.transferred) exp_calls = [mock.call()] * int(math.ceil(float(max_transfer_size) / chunk_size)) self.assertEqual(exp_calls, queue.get.call_args_list) def test_write(self): queue = io_util.ThreadSafePipe(10, 30) queue.put = mock.Mock() write_count = 10 for _ in range(0, write_count): queue.write([1]) exp_calls = [mock.call([1])] * write_count self.assertEqual(exp_calls, queue.put.call_args_list) def test_seek(self): queue = io_util.ThreadSafePipe(10, 30) self.assertRaises(IOError, queue.seek, 0) def test_tell(self): max_transfer_size = 30 queue = io_util.ThreadSafePipe(10, 30) self.assertEqual(max_transfer_size, queue.tell()) cinder-2014.1.5/cinder/tests/test_solidfire.py0000664000567000056700000006043612540642606022365 0ustar jenkinsjenkins00000000000000 # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. import mox from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import timeutils from cinder import test from cinder import units from cinder.volume import configuration as conf from cinder.volume.drivers.solidfire import SolidFireDriver from cinder.volume import qos_specs from cinder.volume import volume_types LOG = logging.getLogger(__name__) def create_configuration(): configuration = mox.MockObject(conf.Configuration) configuration.san_is_local = False configuration.append_config_values(mox.IgnoreArg()) return configuration class SolidFireVolumeTestCase(test.TestCase): def setUp(self): self.ctxt = context.get_admin_context() self._mox = mox.Mox() self.configuration = mox.MockObject(conf.Configuration) self.configuration.sf_allow_tenant_qos = True self.configuration.san_is_local = True self.configuration.sf_emulate_512 = True self.configuration.sf_account_prefix = 'cinder' super(SolidFireVolumeTestCase, self).setUp() self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) self.expected_qos_results = {'minIOPS': 1000, 'maxIOPS': 10000, 'burstIOPS': 20000} def fake_issue_api_request(obj, method, params, version='1.0'): if method is 'GetClusterCapacity' and version == '1.0': LOG.info('Called Fake GetClusterCapacity...') data = {'result': {'clusterCapacity': {'maxProvisionedSpace': 99999999, 'usedSpace': 999, 'compressionPercent': 100, 'deDuplicationPercent': 100, 'thinProvisioningPercent': 100}}} return data elif method is 'GetClusterInfo' and version == '1.0': LOG.info('Called Fake GetClusterInfo...') results = {'result': {'clusterInfo': {'name': 'fake-cluster', 'mvip': '1.1.1.1', 'svip': '1.1.1.1', 'uniqueID': 'unqid', 'repCount': 2, 'attributes': {}}}} return results elif method is 'AddAccount' and version == '1.0': LOG.info('Called Fake AddAccount...') return {'result': {'accountID': 25}, 'id': 1} elif method is 'GetAccountByName' and version == '1.0': LOG.info('Called Fake GetAccountByName...') results = {'result': {'account': {'accountID': 25, 'username': params['username'], 'status': 'active', 'initiatorSecret': '123456789012', 'targetSecret': '123456789012', 'attributes': {}, 'volumes': [6, 7, 20]}}, "id": 1} return results elif method is 'CreateVolume' and version == '1.0': LOG.info('Called Fake CreateVolume...') return {'result': {'volumeID': 5}, 'id': 1} elif method is 'DeleteVolume' and version == '1.0': LOG.info('Called Fake DeleteVolume...') return {'result': {}, 'id': 1} elif method is 'ModifyVolume' and version == '5.0': LOG.info('Called Fake ModifyVolume...') return {'result': {}, 'id': 1} elif method is 'CloneVolume': return {'result': {'volumeID': 6}, 'id': 2} elif method is 'ModifyVolume': return elif method is 'ListVolumesForAccount' and version == '1.0': test_name = 'OS-VOLID-a720b3c0-d1f0-11e1-9b23-0800200c9a66' LOG.info('Called Fake ListVolumesForAccount...') result = {'result': { 'volumes': [{'volumeID': 5, 'name': test_name, 'accountID': 25, 'sliceCount': 1, 'totalSize': 1 * units.GiB, 'enable512e': True, 'access': "readWrite", 'status': "active", 'attributes': {}, 'qos': None, 'iqn': test_name}]}} return result else: LOG.error('Crap, unimplemented API call in Fake:%s' % method) def fake_issue_api_request_fails(obj, method, params, version='1.0'): return {'error': {'code': 000, 'name': 'DummyError', 'message': 'This is a fake error response'}, 'id': 1} def fake_set_qos_by_volume_type(self, type_id, ctxt): return {'minIOPS': 500, 'maxIOPS': 1000, 'burstIOPS': 1000} def fake_volume_get(obj, key, default=None): return {'qos': 'fast'} def fake_update_cluster_status(self): return def fake_get_model_info(self, account, vid): return {'fake': 'fake-model'} def test_create_with_qos_type(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) self.stubs.Set(SolidFireDriver, '_set_qos_by_volume_type', self.fake_set_qos_by_volume_type) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': 'fast', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) model_update = sfv.create_volume(testvol) self.assertIsNotNone(model_update) def test_create_volume(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) model_update = sfv.create_volume(testvol) self.assertIsNotNone(model_update) self.assertIsNone(model_update.get('provider_geometry', None)) def test_create_volume_non_512(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'created_at': timeutils.utcnow()} self.configuration.sf_emulate_512 = False sfv = SolidFireDriver(configuration=self.configuration) model_update = sfv.create_volume(testvol) self.assertEqual(model_update.get('provider_geometry', None), '4096 4096') self.configuration.sf_emulate_512 = True def test_create_snapshot(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) self.stubs.Set(SolidFireDriver, '_get_model_info', self.fake_get_model_info) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'created_at': timeutils.utcnow()} testsnap = {'project_id': 'testprjid', 'name': 'testvol', 'volume_size': 1, 'id': 'b831c4d1-d1f0-11e1-9b23-0800200c9a66', 'volume_id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) sfv.create_volume(testvol) sfv.create_snapshot(testsnap) def test_create_clone(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) self.stubs.Set(SolidFireDriver, '_get_model_info', self.fake_get_model_info) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'created_at': timeutils.utcnow()} testvol_b = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'b831c4d1-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) sfv.create_cloned_volume(testvol_b, testvol) def test_initialize_connector_with_blocksizes(self): connector = {'initiator': 'iqn.2012-07.org.fake:01'} testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'volume_type_id': None, 'provider_location': '10.10.7.1:3260 iqn.2010-01.com.' 'solidfire:87hg.uuid-2cc06226-cc' '74-4cb7-bd55-14aed659a0cc.4060 0', 'provider_auth': 'CHAP stack-1-a60e2611875f40199931f2' 'c76370d66b 2FE0CQ8J196R', 'provider_geometry': '4096 4096', 'created_at': timeutils.utcnow(), } sfv = SolidFireDriver(configuration=self.configuration) properties = sfv.initialize_connection(testvol, connector) self.assertEqual(properties['data']['physical_block_size'], '4096') self.assertEqual(properties['data']['logical_block_size'], '4096') def test_create_volume_with_qos(self): preset_qos = {} preset_qos['qos'] = 'fast' self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'metadata': [preset_qos], 'volume_type_id': None, 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) model_update = sfv.create_volume(testvol) self.assertIsNotNone(model_update) def test_create_volume_fails(self): # NOTE(JDG) This test just fakes update_cluster_status # this is inentional for this test self.stubs.Set(SolidFireDriver, '_update_cluster_status', self.fake_update_cluster_status) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request_fails) testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) try: sfv.create_volume(testvol) self.fail("Should have thrown Error") except Exception: pass def test_create_sfaccount(self): sfv = SolidFireDriver(configuration=self.configuration) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) account = sfv._create_sfaccount('project-id') self.assertIsNotNone(account) def test_create_sfaccount_fails(self): sfv = SolidFireDriver(configuration=self.configuration) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request_fails) account = sfv._create_sfaccount('project-id') self.assertIsNone(account) def test_get_sfaccount_by_name(self): sfv = SolidFireDriver(configuration=self.configuration) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) account = sfv._get_sfaccount_by_name('some-name') self.assertIsNotNone(account) def test_get_sfaccount_by_name_fails(self): sfv = SolidFireDriver(configuration=self.configuration) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request_fails) account = sfv._get_sfaccount_by_name('some-name') self.assertIsNone(account) def test_delete_volume(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'test_volume', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) sfv.delete_volume(testvol) def test_delete_volume_fails_no_volume(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'no-name', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) try: sfv.delete_volume(testvol) self.fail("Should have thrown Error") except Exception: pass def test_delete_volume_fails_account_lookup(self): # NOTE(JDG) This test just fakes update_cluster_status # this is inentional for this test self.stubs.Set(SolidFireDriver, '_update_cluster_status', self.fake_update_cluster_status) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request_fails) testvol = {'project_id': 'testprjid', 'name': 'no-name', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) self.assertRaises(exception.SolidFireAccountNotFound, sfv.delete_volume, testvol) def test_get_cluster_info(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) sfv = SolidFireDriver(configuration=self.configuration) sfv._get_cluster_info() def test_get_cluster_info_fail(self): # NOTE(JDG) This test just fakes update_cluster_status # this is inentional for this test self.stubs.Set(SolidFireDriver, '_update_cluster_status', self.fake_update_cluster_status) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request_fails) sfv = SolidFireDriver(configuration=self.configuration) self.assertRaises(exception.SolidFireAPIException, sfv._get_cluster_info) def test_extend_volume(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'test_volume', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) sfv.extend_volume(testvol, 2) def test_extend_volume_fails_no_volume(self): self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'no-name', 'size': 1, 'id': 'not-found'} sfv = SolidFireDriver(configuration=self.configuration) self.assertRaises(exception.VolumeNotFound, sfv.extend_volume, testvol, 2) def test_extend_volume_fails_account_lookup(self): # NOTE(JDG) This test just fakes update_cluster_status # this is intentional for this test self.stubs.Set(SolidFireDriver, '_update_cluster_status', self.fake_update_cluster_status) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request_fails) testvol = {'project_id': 'testprjid', 'name': 'no-name', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) self.assertRaises(exception.SolidFireAccountNotFound, sfv.extend_volume, testvol, 2) def test_set_by_qos_spec_with_scoping(self): sfv = SolidFireDriver(configuration=self.configuration) qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', {'qos:minIOPS': '1000', 'qos:maxIOPS': '10000', 'qos:burstIOPS': '20000'}) type_ref = volume_types.create(self.ctxt, "type1", {"qos:minIOPS": "100", "qos:burstIOPS": "300", "qos:maxIOPS": "200"}) qos_specs.associate_qos_with_type(self.ctxt, qos_ref['id'], type_ref['id']) qos = sfv._set_qos_by_volume_type(self.ctxt, type_ref['id']) self.assertEqual(qos, self.expected_qos_results) def test_set_by_qos_spec(self): sfv = SolidFireDriver(configuration=self.configuration) qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', {'minIOPS': '1000', 'maxIOPS': '10000', 'burstIOPS': '20000'}) type_ref = volume_types.create(self.ctxt, "type1", {"qos:minIOPS": "100", "qos:burstIOPS": "300", "qos:maxIOPS": "200"}) qos_specs.associate_qos_with_type(self.ctxt, qos_ref['id'], type_ref['id']) qos = sfv._set_qos_by_volume_type(self.ctxt, type_ref['id']) self.assertEqual(qos, self.expected_qos_results) def test_set_by_qos_by_type_only(self): sfv = SolidFireDriver(configuration=self.configuration) type_ref = volume_types.create(self.ctxt, "type1", {"qos:minIOPS": "100", "qos:burstIOPS": "300", "qos:maxIOPS": "200"}) qos = sfv._set_qos_by_volume_type(self.ctxt, type_ref['id']) self.assertEqual(qos, {'minIOPS': 100, 'maxIOPS': 200, 'burstIOPS': 300}) def test_accept_transfer(self): sfv = SolidFireDriver(configuration=self.configuration) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) testvol = {'project_id': 'testprjid', 'name': 'test_volume', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} expected = {'provider_auth': 'CHAP cinder-new_project 123456789012'} self.assertEqual(sfv.accept_transfer(self.ctxt, testvol, 'new_user', 'new_project'), expected) def test_retype(self): sfv = SolidFireDriver(configuration=self.configuration) self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) type_ref = volume_types.create(self.ctxt, "type1", {"qos:minIOPS": "500", "qos:burstIOPS": "2000", "qos:maxIOPS": "1000"}) diff = {'encryption': {}, 'qos_specs': {}, 'extra_specs': {'qos:burstIOPS': ('10000', u'2000'), 'qos:minIOPS': ('1000', u'500'), 'qos:maxIOPS': ('10000', u'1000')}} host = None testvol = {'project_id': 'testprjid', 'name': 'test_volume', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} self.assertTrue(sfv.retype(self.ctxt, testvol, type_ref, diff, host)) def test_retype_with_qos_spec(self): test_type = {'name': 'sf-1', 'qos_specs_id': 'fb0576d7-b4b5-4cad-85dc-ca92e6a497d1', 'deleted': False, 'created_at': '2014-02-06 04:58:11', 'updated_at': None, 'extra_specs': {}, 'deleted_at': None, 'id': 'e730e97b-bc7d-4af3-934a-32e59b218e81'} test_qos_spec = {'id': 'asdfafdasdf', 'specs': {'minIOPS': '1000', 'maxIOPS': '2000', 'burstIOPS': '3000'}} def _fake_get_volume_type(ctxt, type_id): return test_type def _fake_get_qos_spec(ctxt, spec_id): return test_qos_spec self.stubs.Set(SolidFireDriver, '_issue_api_request', self.fake_issue_api_request) self.stubs.Set(volume_types, 'get_volume_type', _fake_get_volume_type) self.stubs.Set(qos_specs, 'get_qos_specs', _fake_get_qos_spec) sfv = SolidFireDriver(configuration=self.configuration) diff = {'encryption': {}, 'extra_specs': {}, 'qos_specs': {'burstIOPS': ('10000', '2000'), 'minIOPS': ('1000', '500'), 'maxIOPS': ('10000', '1000')}} host = None testvol = {'project_id': 'testprjid', 'name': 'test_volume', 'size': 1, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66', 'created_at': timeutils.utcnow()} sfv = SolidFireDriver(configuration=self.configuration) self.assertTrue(sfv.retype(self.ctxt, testvol, test_type, diff, host)) cinder-2014.1.5/cinder/tests/test_hp3par.py0000664000567000056700000020467212540642606021604 0ustar jenkinsjenkins00000000000000# # (c) Copyright 2013 Hewlett-Packard Development Company, L.P. # All Rights Reserved. # # 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. """Unit tests for OpenStack Cinder volume drivers.""" import mock from hp3parclient import client from hp3parclient import exceptions as hpexceptions from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder import units from cinder.volume.drivers.san.hp import hp_3par_fc as hpfcdriver from cinder.volume.drivers.san.hp import hp_3par_iscsi as hpdriver from cinder.volume import qos_specs from cinder.volume import volume_types LOG = logging.getLogger(__name__) HP3PAR_CPG = 'OpenStackCPG' HP3PAR_CPG_SNAP = 'OpenStackCPGSnap' HP3PAR_USER_NAME = 'testUser' HP3PAR_USER_PASS = 'testPassword' HP3PAR_SAN_IP = '2.2.2.2' HP3PAR_SAN_SSH_PORT = 999 HP3PAR_SAN_SSH_CON_TIMEOUT = 44 HP3PAR_SAN_SSH_PRIVATE = 'foobar' class HP3PARBaseDriver(object): VOLUME_ID = 'd03338a9-9115-48a3-8dfc-35cdfcdc15a7' CLONE_ID = 'd03338a9-9115-48a3-8dfc-000000000000' VOLUME_NAME = 'volume-' + VOLUME_ID VOLUME_NAME_3PAR = 'osv-0DM4qZEVSKON-DXN-NwVpw' SNAPSHOT_ID = '2f823bdc-e36e-4dc8-bd15-de1c7a28ff31' SNAPSHOT_NAME = 'snapshot-2f823bdc-e36e-4dc8-bd15-de1c7a28ff31' VOLUME_3PAR_NAME = 'osv-0DM4qZEVSKON-DXN-NwVpw' SNAPSHOT_3PAR_NAME = 'oss-L4I73ONuTci9Fd4ceij-MQ' FAKE_HOST = 'fakehost' USER_ID = '2689d9a913974c008b1d859013f23607' PROJECT_ID = 'fac88235b9d64685a3530f73e490348f' VOLUME_ID_SNAP = '761fc5e5-5191-4ec7-aeba-33e36de44156' FAKE_DESC = 'test description name' FAKE_FC_PORTS = [{'portPos': {'node': 7, 'slot': 1, 'cardPort': 1}, 'portWWN': '0987654321234', 'protocol': 1, 'mode': 2, 'linkState': 4}, {'portPos': {'node': 6, 'slot': 1, 'cardPort': 1}, 'portWWN': '123456789000987', 'protocol': 1, 'mode': 2, 'linkState': 4}] QOS = {'qos:maxIOPS': '1000', 'qos:maxBWS': '50', 'qos:minIOPS': '100', 'qos:minBWS': '25', 'qos:latency': '25', 'qos:priority': 'low'} QOS_SPECS = {'maxIOPS': '1000', 'maxBWS': '50', 'minIOPS': '100', 'minBWS': '25', 'latency': '25', 'priority': 'low'} VVS_NAME = "myvvs" FAKE_ISCSI_PORT = {'portPos': {'node': 8, 'slot': 1, 'cardPort': 1}, 'protocol': 2, 'mode': 2, 'IPAddr': '1.1.1.2', 'iSCSIName': ('iqn.2000-05.com.3pardata:' '21810002ac00383d'), 'linkState': 4} volume = {'name': VOLUME_NAME, 'id': VOLUME_ID, 'display_name': 'Foo Volume', 'size': 2, 'host': FAKE_HOST, 'volume_type': None, 'volume_type_id': None} volume_qos = {'name': VOLUME_NAME, 'id': VOLUME_ID, 'display_name': 'Foo Volume', 'size': 2, 'host': FAKE_HOST, 'volume_type': None, 'volume_type_id': 'gold'} snapshot = {'name': SNAPSHOT_NAME, 'id': SNAPSHOT_ID, 'user_id': USER_ID, 'project_id': PROJECT_ID, 'volume_id': VOLUME_ID_SNAP, 'volume_name': VOLUME_NAME, 'status': 'creating', 'progress': '0%', 'volume_size': 2, 'display_name': 'fakesnap', 'display_description': FAKE_DESC} wwn = ["123456789012345", "123456789054321"] connector = {'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'wwpns': [wwn[0], wwn[1]], 'wwnns': ["223456789012345", "223456789054321"], 'host': FAKE_HOST} volume_type = {'name': 'gold', 'deleted': False, 'updated_at': None, 'extra_specs': {'qos:maxIOPS': '1000', 'qos:maxBWS': '50', 'qos:minIOPS': '100', 'qos:minBWS': '25', 'qos:latency': '25', 'qos:priority': 'low'}, 'deleted_at': None, 'id': 'gold'} cpgs = [ {'SAGrowth': {'LDLayout': {'diskPatterns': [{'diskType': 2}]}, 'incrementMiB': 8192}, 'SAUsage': {'rawTotalMiB': 24576, 'rawUsedMiB': 768, 'totalMiB': 8192, 'usedMiB': 256}, 'SDGrowth': {'LDLayout': {'RAIDType': 4, 'diskPatterns': [{'diskType': 2}]}, 'incrementMiB': 32768}, 'SDUsage': {'rawTotalMiB': 49152, 'rawUsedMiB': 1023, 'totalMiB': 36864, 'usedMiB': 768}, 'UsrUsage': {'rawTotalMiB': 57344, 'rawUsedMiB': 43349, 'totalMiB': 43008, 'usedMiB': 32512}, 'additionalStates': [], 'degradedStates': [], 'failedStates': [], 'id': 5, 'name': HP3PAR_CPG, 'numFPVVs': 2, 'numTPVVs': 0, 'state': 1, 'uuid': '29c214aa-62b9-41c8-b198-543f6cf24edf'}] def setup_configuration(self): configuration = mock.Mock() configuration.hp3par_debug = False configuration.hp3par_username = HP3PAR_USER_NAME configuration.hp3par_password = HP3PAR_USER_PASS configuration.hp3par_api_url = 'https://1.1.1.1/api/v1' configuration.hp3par_cpg = HP3PAR_CPG configuration.hp3par_cpg_snap = HP3PAR_CPG_SNAP configuration.iscsi_ip_address = '1.1.1.2' configuration.iscsi_port = '1234' configuration.san_ip = HP3PAR_SAN_IP configuration.san_login = HP3PAR_USER_NAME configuration.san_password = HP3PAR_USER_PASS configuration.san_ssh_port = HP3PAR_SAN_SSH_PORT configuration.ssh_conn_timeout = HP3PAR_SAN_SSH_CON_TIMEOUT configuration.san_private_key = HP3PAR_SAN_SSH_PRIVATE configuration.hp3par_snapshot_expiration = "" configuration.hp3par_snapshot_retention = "" configuration.hp3par_iscsi_ips = [] return configuration @mock.patch( 'hp3parclient.client.HP3ParClient', spec=True, PORT_MODE_TARGET=client.HP3ParClient.PORT_MODE_TARGET, PORT_STATE_READY=client.HP3ParClient.PORT_STATE_READY, PORT_PROTO_ISCSI=client.HP3ParClient.PORT_PROTO_ISCSI, PORT_PROTO_FC=client.HP3ParClient.PORT_PROTO_FC, TASK_DONE=client.HP3ParClient.TASK_DONE, HOST_EDIT_ADD=client.HP3ParClient.HOST_EDIT_ADD) def setup_mock_client(self, _m_client, driver, conf=None, m_conf=None): _m_client = _m_client.return_value if m_conf is not None: _m_client.configure_mock(**m_conf) if conf is None: conf = self.setup_configuration() self.driver = driver(configuration=conf) self.driver.do_setup(None) return _m_client def test_create_volume(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.create_volume(self.volume) comment = ( '{"display_name": "Foo Volume", "type": "OpenStack",' ' "name": "volume-d03338a9-9115-48a3-8dfc-35cdfcdc15a7",' ' "volume_id": "d03338a9-9115-48a3-8dfc-35cdfcdc15a7"}') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.createVolume( self.VOLUME_3PAR_NAME, HP3PAR_CPG, 1907, { 'comment': comment, 'tpvv': True, 'snapCPG': HP3PAR_CPG_SNAP}), mock.call.logout()] mock_client.assert_has_calls(expected) @mock.patch.object(volume_types, 'get_volume_type') def test_create_volume_qos(self, _mock_volume_types): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() _mock_volume_types.return_value = { 'name': 'gold', 'extra_specs': { 'cpg': HP3PAR_CPG, 'snap_cpg': HP3PAR_CPG_SNAP, 'vvs_name': self.VVS_NAME, 'qos': self.QOS, 'tpvv': True, 'volume_type': self.volume_type}} self.driver.create_volume(self.volume_qos) comment = ( '{"volume_type_name": "gold", "display_name": "Foo Volume"' ', "name": "volume-d03338a9-9115-48a3-8dfc-35cdfcdc15a7' '", "volume_type_id": "gold", "volume_id": "d03338a9-91' '15-48a3-8dfc-35cdfcdc15a7", "qos": {}, "type": "OpenStack"}') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.createVolume( self.VOLUME_3PAR_NAME, HP3PAR_CPG, 1907, { 'comment': comment, 'tpvv': True, 'snapCPG': HP3PAR_CPG_SNAP}), mock.call.logout()] mock_client.assert_has_calls(expected) def test_delete_volume(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.delete_volume(self.volume) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.deleteVolume(self.VOLUME_3PAR_NAME), mock.call.logout()] mock_client.assert_has_calls(expected) def test_create_cloned_volume(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.copyVolume.return_value = {'taskid': 1} volume = {'name': HP3PARBaseDriver.VOLUME_NAME, 'id': HP3PARBaseDriver.CLONE_ID, 'display_name': 'Foo Volume', 'size': 2, 'host': HP3PARBaseDriver.FAKE_HOST, 'source_volid': HP3PARBaseDriver.VOLUME_ID} src_vref = {} model_update = self.driver.create_cloned_volume(volume, src_vref) self.assertIsNotNone(model_update) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.copyVolume( self.VOLUME_3PAR_NAME, 'osv-0DM4qZEVSKON-AAAAAAAAA', HP3PAR_CPG, {'snapCPG': 'OpenStackCPGSnap', 'tpvv': True, 'online': True}), mock.call.logout()] mock_client.assert_has_calls(expected) def test_migrate_volume(self): conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getStorageSystemInfo.return_value': { 'serialNumber': '1234'}, 'getTask.return_value': { 'status': 1}, 'getCPG.return_value': {}, 'copyVolume.return_value': {'taskid': 1}, 'getVolume.return_value': {} } mock_client = self.setup_driver(mock_conf=conf) volume = {'name': HP3PARBaseDriver.VOLUME_NAME, 'id': HP3PARBaseDriver.CLONE_ID, 'display_name': 'Foo Volume', 'size': 2, 'status': 'available', 'host': HP3PARBaseDriver.FAKE_HOST, 'source_volid': HP3PARBaseDriver.VOLUME_ID} volume_name_3par = self.driver.common._encode_name(volume['id']) loc_info = 'HP3PARDriver:1234:CPG-FC1' host = {'host': 'stack@3parfc1', 'capabilities': {'location_info': loc_info}} result = self.driver.migrate_volume(context.get_admin_context(), volume, host) self.assertIsNotNone(result) self.assertEqual((True, None), result) osv_matcher = 'osv-' + volume_name_3par omv_matcher = 'omv-' + volume_name_3par expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getStorageSystemInfo(), mock.call.getCPG(HP3PAR_CPG), mock.call.getCPG('CPG-FC1'), mock.call.copyVolume(osv_matcher, omv_matcher, mock.ANY, mock.ANY), mock.call.getTask(mock.ANY), mock.call.getVolume(osv_matcher), mock.call.deleteVolume(osv_matcher), mock.call.modifyVolume(omv_matcher, {'newName': osv_matcher}), mock.call.logout() ] mock_client.assert_has_calls(expected) def test_migrate_volume_diff_host(self): conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getStorageSystemInfo.return_value': { 'serialNumber': 'different'}, } mock_client = self.setup_driver(mock_conf=conf) volume = {'name': HP3PARBaseDriver.VOLUME_NAME, 'id': HP3PARBaseDriver.CLONE_ID, 'display_name': 'Foo Volume', 'size': 2, 'status': 'available', 'host': HP3PARBaseDriver.FAKE_HOST, 'source_volid': HP3PARBaseDriver.VOLUME_ID} loc_info = 'HP3PARDriver:1234:CPG-FC1' host = {'host': 'stack@3parfc1', 'capabilities': {'location_info': loc_info}} result = self.driver.migrate_volume(context.get_admin_context(), volume, host) self.assertIsNotNone(result) self.assertEqual((False, None), result) def test_migrate_volume_diff_domain(self): conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getStorageSystemInfo.return_value': { 'serialNumber': '1234'}, 'getTask.return_value': { 'status': 1}, 'getCPG.side_effect': lambda x: {'OpenStackCPG': {'domain': 'OpenStack'}}.get(x, {}) } mock_client = self.setup_driver(mock_conf=conf) volume = {'name': HP3PARBaseDriver.VOLUME_NAME, 'id': HP3PARBaseDriver.CLONE_ID, 'display_name': 'Foo Volume', 'size': 2, 'status': 'available', 'host': HP3PARBaseDriver.FAKE_HOST, 'source_volid': HP3PARBaseDriver.VOLUME_ID} loc_info = 'HP3PARDriver:1234:CPG-FC1' host = {'host': 'stack@3parfc1', 'capabilities': {'location_info': loc_info}} result = self.driver.migrate_volume(context.get_admin_context(), volume, host) self.assertIsNotNone(result) self.assertEqual((False, None), result) def test_migrate_volume_attached(self): conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getStorageSystemInfo.return_value': { 'serialNumber': '1234'}, 'getTask.return_value': { 'status': 1} } mock_client = self.setup_driver(mock_conf=conf) volume = {'name': HP3PARBaseDriver.VOLUME_NAME, 'id': HP3PARBaseDriver.CLONE_ID, 'display_name': 'Foo Volume', 'size': 2, 'status': 'in-use', 'host': HP3PARBaseDriver.FAKE_HOST, 'source_volid': HP3PARBaseDriver.VOLUME_ID} volume_name_3par = self.driver.common._encode_name(volume['id']) mock_client.getVLUNs.return_value = { 'members': [{'volumeName': 'osv-' + volume_name_3par}]} loc_info = 'HP3PARDriver:1234:CPG-FC1' host = {'host': 'stack@3parfc1', 'capabilities': {'location_info': loc_info}} result = self.driver.migrate_volume(context.get_admin_context(), volume, host) self.assertIsNotNone(result) self.assertEqual((False, None), result) def test_attach_volume(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.attach_volume(context.get_admin_context(), self.volume, 'abcdef', 'newhost', '/dev/vdb') expected = [ mock.call.setVolumeMetaData( self.VOLUME_3PAR_NAME, 'HPQ-CS-instance_uuid', 'abcdef')] mock_client.assert_has_calls(expected) # test the exception mock_client.setVolumeMetaData.side_effect = Exception('Custom ex') self.assertRaises(exception.CinderException, self.driver.attach_volume, context.get_admin_context(), self.volume, 'abcdef', 'newhost', '/dev/vdb') def test_detach_volume(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.detach_volume(context.get_admin_context(), self.volume) expected = [ mock.call.removeVolumeMetaData( self.VOLUME_3PAR_NAME, 'HPQ-CS-instance_uuid')] mock_client.assert_has_calls(expected) # test the exception mock_client.removeVolumeMetaData.side_effect = Exception('Custom ex') self.assertRaises(exception.CinderException, self.driver.detach_volume, context.get_admin_context(), self.volume) def test_create_snapshot(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.create_snapshot(self.snapshot) commet = ( '{"volume_id": "761fc5e5-5191-4ec7-aeba-33e36de44156",' ' "display_name": "fakesnap",' ' "description": "test description name",' ' "volume_name": "volume-d03338a9-9115-48a3-8dfc-35cdfcdc15a7"}') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.createSnapshot( 'oss-L4I73ONuTci9Fd4ceij-MQ', 'osv-dh-F5VGRTseuujPjbeRBVg', { 'comment': commet, 'readOnly': True}), mock.call.logout()] mock_client.assert_has_calls(expected) def test_delete_snapshot(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.delete_snapshot(self.snapshot) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.deleteVolume('oss-L4I73ONuTci9Fd4ceij-MQ'), mock.call.logout()] mock_client.assert_has_calls(expected) def test_delete_snapshot_in_use(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.create_snapshot(self.snapshot) self.driver.create_volume_from_snapshot(self.volume, self.snapshot) ex = hpexceptions.HTTPConflict("In use") mock_client.deleteVolume = mock.Mock(side_effect=ex) # Deleting the snapshot that a volume is dependent on should fail self.assertRaises(exception.SnapshotIsBusy, self.driver.delete_snapshot, self.snapshot) def test_delete_snapshot_not_found(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.create_snapshot(self.snapshot) try: ex = hpexceptions.HTTPNotFound("not found") mock_client.deleteVolume = mock.Mock(side_effect=ex) self.driver.delete_snapshot(self.snapshot) except Exception: self.fail("Deleting a snapshot that is missing should act as if " "it worked.") def test_create_volume_from_snapshot(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() self.driver.create_volume_from_snapshot(self.volume, self.snapshot) comment = ( '{"snapshot_id": "2f823bdc-e36e-4dc8-bd15-de1c7a28ff31",' ' "display_name": "Foo Volume",' ' "volume_id": "d03338a9-9115-48a3-8dfc-35cdfcdc15a7"}') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.createSnapshot( self.VOLUME_3PAR_NAME, 'oss-L4I73ONuTci9Fd4ceij-MQ', { 'comment': comment, 'readOnly': False}), mock.call.logout()] mock_client.assert_has_calls(expected) volume = self.volume.copy() volume['size'] = 1 self.assertRaises(exception.InvalidInput, self.driver.create_volume_from_snapshot, volume, self.snapshot) def test_create_volume_from_snapshot_and_extend(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getTask.return_value': { 'status': 1}, 'copyVolume.return_value': {'taskid': 1}, 'getVolume.return_value': {} } mock_client = self.setup_driver(mock_conf=conf) volume = self.volume.copy() volume['size'] = self.volume['size'] + 10 self.driver.create_volume_from_snapshot(volume, self.snapshot) comment = ( '{"snapshot_id": "2f823bdc-e36e-4dc8-bd15-de1c7a28ff31",' ' "display_name": "Foo Volume",' ' "volume_id": "d03338a9-9115-48a3-8dfc-35cdfcdc15a7"}') volume_name_3par = self.driver.common._encode_name(volume['id']) osv_matcher = 'osv-' + volume_name_3par omv_matcher = 'omv-' + volume_name_3par expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.createSnapshot( self.VOLUME_3PAR_NAME, 'oss-L4I73ONuTci9Fd4ceij-MQ', { 'comment': comment, 'readOnly': False}), mock.call.copyVolume(osv_matcher, omv_matcher, mock.ANY, mock.ANY), mock.call.getTask(mock.ANY), mock.call.getVolume(osv_matcher), mock.call.deleteVolume(osv_matcher), mock.call.modifyVolume(omv_matcher, {'newName': osv_matcher}), mock.call.growVolume(osv_matcher, 10 * 1024), mock.call.logout()] mock_client.assert_has_calls(expected) def test_create_volume_from_snapshot_and_extend_copy_fail(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getTask.return_value': { 'status': 4, 'failure message': 'out of disk space'}, 'copyVolume.return_value': {'taskid': 1}, 'getVolume.return_value': {} } mock_client = self.setup_driver(mock_conf=conf) volume = self.volume.copy() volume['size'] = self.volume['size'] + 10 self.assertRaises(exception.CinderException, self.driver.create_volume_from_snapshot, volume, self.snapshot) @mock.patch.object(volume_types, 'get_volume_type') def test_create_volume_from_snapshot_qos(self, _mock_volume_types): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() _mock_volume_types.return_value = { 'name': 'gold', 'extra_specs': { 'cpg': HP3PAR_CPG, 'snap_cpg': HP3PAR_CPG_SNAP, 'vvs_name': self.VVS_NAME, 'qos': self.QOS, 'tpvv': True, 'volume_type': self.volume_type}} self.driver.create_volume_from_snapshot(self.volume_qos, self.snapshot) comment = ( '{"snapshot_id": "2f823bdc-e36e-4dc8-bd15-de1c7a28ff31",' ' "display_name": "Foo Volume",' ' "volume_id": "d03338a9-9115-48a3-8dfc-35cdfcdc15a7"}') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.createSnapshot( self.VOLUME_3PAR_NAME, 'oss-L4I73ONuTci9Fd4ceij-MQ', { 'comment': comment, 'readOnly': False}), mock.call.logout()] mock_client.assert_has_calls(expected) volume = self.volume.copy() volume['size'] = 1 self.assertRaises(exception.InvalidInput, self.driver.create_volume_from_snapshot, volume, self.snapshot) def test_terminate_connection(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getHostVLUNs.return_value = [ {'active': True, 'volumeName': self.VOLUME_3PAR_NAME, 'lun': None, 'type': 0}] self.driver.terminate_connection( self.volume, self.connector, force=True) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getHostVLUNs(self.FAKE_HOST), mock.call.deleteVLUN( self.VOLUME_3PAR_NAME, None, self.FAKE_HOST), mock.call.deleteHost(self.FAKE_HOST), mock.call.logout()] mock_client.assert_has_calls(expected) def test_update_volume_key_value_pair(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() key = 'a' value = 'b' self.driver.common.update_volume_key_value_pair( self.volume, key, value) expected = [ mock.call.setVolumeMetaData(self.VOLUME_3PAR_NAME, key, value)] mock_client.assert_has_calls(expected) # check exception mock_client.setVolumeMetaData.side_effect = Exception('fake') self.assertRaises(exception.VolumeBackendAPIException, self.driver.common.update_volume_key_value_pair, self.volume, None, 'b') def test_clear_volume_key_value_pair(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() key = 'a' self.driver.common.clear_volume_key_value_pair(self.volume, key) expected = [ mock.call.removeVolumeMetaData(self.VOLUME_3PAR_NAME, key)] mock_client.assert_has_calls(expected) # check the exception mock_client.removeVolumeMetaData.side_effect = Exception('fake') self.assertRaises(exception.VolumeBackendAPIException, self.driver.common.clear_volume_key_value_pair, self.volume, None) def test_extend_volume(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() grow_size = 3 old_size = self.volume['size'] new_size = old_size + grow_size self.driver.extend_volume(self.volume, str(new_size)) growth_size_mib = grow_size * units.KiB expected = [ mock.call.growVolume(self.VOLUME_3PAR_NAME, growth_size_mib)] mock_client.assert_has_calls(expected) def test_extend_volume_non_base(self): extend_ex = hpexceptions.HTTPForbidden(error={'code': 150}) conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getTask.return_value': { 'status': 1}, 'getCPG.return_value': {}, 'copyVolume.return_value': {'taskid': 1}, 'getVolume.return_value': {}, # Throw an exception first time only 'growVolume.side_effect': [extend_ex, None], } mock_client = self.setup_driver(mock_conf=conf) grow_size = 3 old_size = self.volume['size'] new_size = old_size + grow_size self.driver.extend_volume(self.volume, str(new_size)) self.assertEqual(2, mock_client.growVolume.call_count) def test_extend_volume_non_base_failure(self): extend_ex = hpexceptions.HTTPForbidden(error={'code': 150}) conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}, 'getTask.return_value': { 'status': 1}, 'getCPG.return_value': {}, 'copyVolume.return_value': {'taskid': 1}, 'getVolume.return_value': {}, # Always fail 'growVolume.side_effect': extend_ex } mock_client = self.setup_driver(mock_conf=conf) grow_size = 3 old_size = self.volume['size'] new_size = old_size + grow_size self.assertRaises(hpexceptions.HTTPForbidden, self.driver.extend_volume, self.volume, str(new_size)) def test_get_ports(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getPorts.return_value = { 'members': [ {'portPos': {'node': 0, 'slot': 8, 'cardPort': 2}, 'protocol': 2, 'IPAddr': '10.10.120.252', 'linkState': 4, 'device': [], 'iSCSIName': 'iqn.2000-05.com.3pardata:21810002ac00383d', 'mode': 2, 'HWAddr': '2C27D75375D2', 'type': 8}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'protocol': 2, 'IPAddr': '10.10.220.253', 'linkState': 4, 'device': [], 'iSCSIName': 'iqn.2000-05.com.3pardata:21810002ac00383d', 'mode': 2, 'HWAddr': '2C27D75375D6', 'type': 8}, {'portWWN': '20210002AC00383D', 'protocol': 1, 'linkState': 4, 'mode': 2, 'device': ['cage2'], 'nodeWWN': '20210002AC00383D', 'type': 2, 'portPos': {'node': 0, 'slot': 6, 'cardPort': 3}}]} ports = self.driver.common.get_ports()['members'] self.assertEqual(len(ports), 3) def test_get_by_qos_spec_with_scoping(self): self.setup_driver() qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', self.QOS) type_ref = volume_types.create(self.ctxt, "type1", {"qos:maxIOPS": "100", "qos:maxBWS": "50", "qos:minIOPS": "10", "qos:minBWS": "20", "qos:latency": "5", "qos:priority": "high"}) qos_specs.associate_qos_with_type(self.ctxt, qos_ref['id'], type_ref['id']) type_ref = volume_types.get_volume_type(self.ctxt, type_ref['id']) qos = self.driver.common._get_qos_by_volume_type(type_ref) self.assertEqual(qos, {'maxIOPS': '1000', 'maxBWS': '50', 'minIOPS': '100', 'minBWS': '25', 'latency': '25', 'priority': 'low'}) def test_get_by_qos_spec(self): self.setup_driver() qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', self.QOS_SPECS) type_ref = volume_types.create(self.ctxt, "type1", {"qos:maxIOPS": "100", "qos:maxBWS": "50", "qos:minIOPS": "10", "qos:minBWS": "20", "qos:latency": "5", "qos:priority": "high"}) qos_specs.associate_qos_with_type(self.ctxt, qos_ref['id'], type_ref['id']) type_ref = volume_types.get_volume_type(self.ctxt, type_ref['id']) qos = self.driver.common._get_qos_by_volume_type(type_ref) self.assertEqual(qos, {'maxIOPS': '1000', 'maxBWS': '50', 'minIOPS': '100', 'minBWS': '25', 'latency': '25', 'priority': 'low'}) def test_get_by_qos_by_type_only(self): self.setup_driver() type_ref = volume_types.create(self.ctxt, "type1", {"qos:maxIOPS": "100", "qos:maxBWS": "50", "qos:minIOPS": "10", "qos:minBWS": "20", "qos:latency": "5", "qos:priority": "high"}) type_ref = volume_types.get_volume_type(self.ctxt, type_ref['id']) qos = self.driver.common._get_qos_by_volume_type(type_ref) self.assertEqual(qos, {'maxIOPS': '100', 'maxBWS': '50', 'minIOPS': '10', 'minBWS': '20', 'latency': '5', 'priority': 'high'}) class TestHP3PARFCDriver(HP3PARBaseDriver, test.TestCase): properties = { 'driver_volume_type': 'fibre_channel', 'data': { 'target_lun': 90, 'target_wwn': ['0987654321234', '123456789000987'], 'target_discovered': True, 'initiator_target_map': {'123456789012345': ['0987654321234', '123456789000987'], '123456789054321': ['0987654321234', '123456789000987'], }}} def setUp(self): super(TestHP3PARFCDriver, self).setUp() def tearDown(self): super(TestHP3PARFCDriver, self).tearDown() def setup_driver(self, config=None, mock_conf=None): self.ctxt = context.get_admin_context() mock_client = self.setup_mock_client( conf=config, m_conf=mock_conf, driver=hpfcdriver.HP3PARFCDriver) expected = [ mock.call.setSSHOptions( HP3PAR_SAN_IP, HP3PAR_USER_NAME, HP3PAR_USER_PASS, privatekey=HP3PAR_SAN_SSH_PRIVATE, port=HP3PAR_SAN_SSH_PORT, conn_timeout=HP3PAR_SAN_SSH_CON_TIMEOUT), mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getCPG(HP3PAR_CPG), mock.call.logout()] mock_client.assert_has_calls(expected) mock_client.reset_mock() return mock_client def test_initialize_connection(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ hpexceptions.HTTPNotFound('fake'), {'name': self.FAKE_HOST, 'FCPaths': [{'driverVersion': None, 'firmwareVersion': None, 'hostSpeed': 0, 'model': None, 'portPos': {'cardPort': 1, 'node': 1, 'slot': 2}, 'vendor': None, 'wwn': self.wwn[0]}, {'driverVersion': None, 'firmwareVersion': None, 'hostSpeed': 0, 'model': None, 'portPos': {'cardPort': 1, 'node': 0, 'slot': 2}, 'vendor': None, 'wwn': self.wwn[1]}]}] mock_client.findHost.return_value = self.FAKE_HOST mock_client.getHostVLUNs.return_value = [ {'active': True, 'volumeName': self.VOLUME_3PAR_NAME, 'lun': 90, 'type': 0}] mock_client.getPorts.return_value = { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]} result = self.driver.initialize_connection(self.volume, self.connector) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getVolume(self.VOLUME_3PAR_NAME), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost(self.FAKE_HOST), mock.ANY, mock.call.getHost(self.FAKE_HOST), mock.call.createVLUN( self.VOLUME_3PAR_NAME, auto=True, hostname=self.FAKE_HOST), mock.call.getHostVLUNs(self.FAKE_HOST), mock.call.getPorts(), mock.call.logout()] mock_client.assert_has_calls(expected) self.assertDictMatch(result, self.properties) def test_terminate_connection(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getHostVLUNs.return_value = [ {'active': True, 'volumeName': self.VOLUME_3PAR_NAME, 'lun': None, 'type': 0}] mock_client.getPorts.return_value = { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]} self.driver.terminate_connection( self.volume, self.connector, force=True) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getHostVLUNs(self.FAKE_HOST), mock.call.deleteVLUN( self.VOLUME_3PAR_NAME, None, self.FAKE_HOST), mock.call.deleteHost(self.FAKE_HOST), mock.call.getPorts(), mock.call.logout()] mock_client.assert_has_calls(expected) def test_get_volume_stats(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getCPG.return_value = self.cpgs[0] mock_client.getStorageSystemInfo.return_value = {'serialNumber': '1234'} stats = self.driver.get_volume_stats(True) self.assertEqual(stats['storage_protocol'], 'FC') self.assertEqual(stats['total_capacity_gb'], 'infinite') self.assertEqual(stats['free_capacity_gb'], 'infinite') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getCPG(HP3PAR_CPG), mock.call.getStorageSystemInfo(), mock.call.logout()] mock_client.assert_has_calls(expected) stats = self.driver.get_volume_stats(True) self.assertEqual(stats['storage_protocol'], 'FC') self.assertEqual(stats['total_capacity_gb'], 'infinite') self.assertEqual(stats['free_capacity_gb'], 'infinite') cpg2 = self.cpgs[0].copy() cpg2.update({'SDGrowth': {'limitMiB': 8192}}) mock_client.getCPG.return_value = cpg2 const = 0.0009765625 stats = self.driver.get_volume_stats(True) self.assertEqual(stats['storage_protocol'], 'FC') total_capacity_gb = 8192 * const self.assertEqual(stats['total_capacity_gb'], total_capacity_gb) free_capacity_gb = int( (8192 - self.cpgs[0]['UsrUsage']['usedMiB']) * const) self.assertEqual(stats['free_capacity_gb'], free_capacity_gb) self.driver.common.client.deleteCPG(HP3PAR_CPG) self.driver.common.client.createCPG(HP3PAR_CPG, {}) def test_create_host(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ hpexceptions.HTTPNotFound('fake'), {'name': self.FAKE_HOST, 'FCPaths': [{'driverVersion': None, 'firmwareVersion': None, 'hostSpeed': 0, 'model': None, 'portPos': {'cardPort': 1, 'node': 1, 'slot': 2}, 'vendor': None, 'wwn': self.wwn[0]}, {'driverVersion': None, 'firmwareVersion': None, 'hostSpeed': 0, 'model': None, 'portPos': {'cardPort': 1, 'node': 0, 'slot': 2}, 'vendor': None, 'wwn': self.wwn[1]}]}] mock_client.findHost.return_value = None mock_client.getVLUN.return_value = {'lun': 186} host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost(self.FAKE_HOST), mock.call.findHost(wwn='123456789012345'), mock.call.findHost(wwn='123456789054321'), mock.call.createHost( self.FAKE_HOST, FCWwns=['123456789012345', '123456789054321'], optional={'domain': None, 'persona': 1}), mock.call.getHost(self.FAKE_HOST)] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], self.FAKE_HOST) def test_create_invalid_host(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ hpexceptions.HTTPNotFound('Host not found.'), { 'name': 'fakehost.foo', 'FCPaths': [{'wwn': '123456789012345'}, { 'wwn': '123456789054321'}]}] mock_client.findHost.return_value = 'fakehost.foo' host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost('fakehost'), mock.call.findHost(wwn='123456789012345'), mock.call.getHost('fakehost.foo')] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], 'fakehost.foo') def test_create_modify_host(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [{ 'name': self.FAKE_HOST, 'FCPaths': []}, {'name': self.FAKE_HOST, 'FCPaths': [{'wwn': '123456789012345'}, { 'wwn': '123456789054321'}]}] host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost('fakehost'), mock.call.modifyHost( 'fakehost', { 'FCWWNs': ['123456789012345', '123456789054321'], 'pathOperation': 1}), mock.call.getHost('fakehost')] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], self.FAKE_HOST) self.assertEqual(len(host['FCPaths']), 2) def test_modify_host_with_new_wwn(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} getHost_ret1 = { 'name': self.FAKE_HOST, 'FCPaths': [{'wwn': '123456789054321'}]} getHost_ret2 = { 'name': self.FAKE_HOST, 'FCPaths': [{'wwn': '123456789012345'}, {'wwn': '123456789054321'}]} mock_client.getHost.side_effect = [getHost_ret1, getHost_ret2] host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost('fakehost'), mock.call.modifyHost( 'fakehost', { 'FCWWNs': ['123456789012345'], 'pathOperation': 1}), mock.call.getHost('fakehost')] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], self.FAKE_HOST) self.assertEqual(len(host['FCPaths']), 2) def test_modify_host_with_unknown_wwn_and_new_wwn(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} getHost_ret1 = { 'name': self.FAKE_HOST, 'FCPaths': [{'wwn': '123456789054321'}, {'wwn': 'xxxxxxxxxxxxxxx'}]} getHost_ret2 = { 'name': self.FAKE_HOST, 'FCPaths': [{'wwn': '123456789012345'}, {'wwn': '123456789054321'}, {'wwn': 'xxxxxxxxxxxxxxx'}]} mock_client.getHost.side_effect = [getHost_ret1, getHost_ret2] host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost('fakehost'), mock.call.modifyHost( 'fakehost', { 'FCWWNs': ['123456789012345'], 'pathOperation': 1}), mock.call.getHost('fakehost')] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], self.FAKE_HOST) self.assertEqual(len(host['FCPaths']), 3) class TestHP3PARISCSIDriver(HP3PARBaseDriver, test.TestCase): TARGET_IQN = 'iqn.2000-05.com.3pardata:21810002ac00383d' TARGET_LUN = 186 properties = { 'driver_volume_type': 'iscsi', 'data': {'target_discovered': True, 'target_iqn': TARGET_IQN, 'target_lun': TARGET_LUN, 'target_portal': '1.1.1.2:1234'}} def setUp(self): super(TestHP3PARISCSIDriver, self).setUp() def tearDown(self): super(TestHP3PARISCSIDriver, self).tearDown() def setup_driver(self, config=None, mock_conf=None): self.ctxt = context.get_admin_context() # setup_mock_client default config, if necessary if mock_conf is None: mock_conf = { 'getPorts.return_value': { 'members': self.FAKE_FC_PORTS + [self.FAKE_ISCSI_PORT]}} mock_client = self.setup_mock_client( conf=config, m_conf=mock_conf, driver=hpdriver.HP3PARISCSIDriver) expected = [ mock.call.setSSHOptions( HP3PAR_SAN_IP, HP3PAR_USER_NAME, HP3PAR_USER_PASS, privatekey=HP3PAR_SAN_SSH_PRIVATE, port=HP3PAR_SAN_SSH_PORT, conn_timeout=HP3PAR_SAN_SSH_CON_TIMEOUT), mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getCPG(HP3PAR_CPG), mock.call.logout(), mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getPorts(), mock.call.logout()] mock_client.assert_has_calls(expected) mock_client.reset_mock() return mock_client def test_initialize_connection(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ hpexceptions.HTTPNotFound('fake'), {'name': self.FAKE_HOST}] mock_client.findHost.return_value = self.FAKE_HOST mock_client.getHostVLUNs.return_value = [ {'active': True, 'volumeName': self.VOLUME_3PAR_NAME, 'lun': self.TARGET_LUN, 'type': 0}] result = self.driver.initialize_connection(self.volume, self.connector) expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getVolume(self.VOLUME_3PAR_NAME), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost(self.FAKE_HOST), mock.call.findHost(iqn='iqn.1993-08.org.debian:01:222'), mock.call.getHost(self.FAKE_HOST), mock.call.createVLUN( self.VOLUME_3PAR_NAME, auto=True, hostname='fakehost', portPos={'node': 8, 'slot': 1, 'cardPort': 1}), mock.call.getHostVLUNs(self.FAKE_HOST), mock.call.logout()] mock_client.assert_has_calls(expected) self.assertDictMatch(result, self.properties) def test_get_volume_stats(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getCPG.return_value = self.cpgs[0] mock_client.getStorageSystemInfo.return_value = {'serialNumber': '1234'} stats = self.driver.get_volume_stats(True) self.assertEqual(stats['storage_protocol'], 'iSCSI') self.assertEqual(stats['total_capacity_gb'], 'infinite') self.assertEqual(stats['free_capacity_gb'], 'infinite') expected = [ mock.call.login(HP3PAR_USER_NAME, HP3PAR_USER_PASS), mock.call.getCPG(HP3PAR_CPG), mock.call.getStorageSystemInfo(), mock.call.logout()] mock_client.assert_has_calls(expected) self.assertEqual(stats['storage_protocol'], 'iSCSI') self.assertEqual(stats['total_capacity_gb'], 'infinite') self.assertEqual(stats['free_capacity_gb'], 'infinite') cpg2 = self.cpgs[0].copy() cpg2.update({'SDGrowth': {'limitMiB': 8192}}) mock_client.getCPG.return_value = cpg2 const = 0.0009765625 stats = self.driver.get_volume_stats(True) self.assertEqual(stats['storage_protocol'], 'iSCSI') total_capacity_gb = 8192 * const self.assertEqual(stats['total_capacity_gb'], total_capacity_gb) free_capacity_gb = int( (8192 - self.cpgs[0]['UsrUsage']['usedMiB']) * const) self.assertEqual(stats['free_capacity_gb'], free_capacity_gb) def test_create_host(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ hpexceptions.HTTPNotFound('fake'), {'name': self.FAKE_HOST}] mock_client.findHost.return_value = None mock_client.getVLUN.return_value = {'lun': self.TARGET_LUN} host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost(self.FAKE_HOST), mock.call.findHost(iqn='iqn.1993-08.org.debian:01:222'), mock.call.createHost( self.FAKE_HOST, optional={'domain': None, 'persona': 1}, iscsiNames=['iqn.1993-08.org.debian:01:222']), mock.call.getHost(self.FAKE_HOST)] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], self.FAKE_HOST) def test_create_invalid_host(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ hpexceptions.HTTPNotFound('Host not found.'), {'name': 'fakehost.foo'}] mock_client.findHost.return_value = 'fakehost.foo' host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost(self.FAKE_HOST), mock.call.findHost(iqn='iqn.1993-08.org.debian:01:222'), mock.call.getHost('fakehost.foo')] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], 'fakehost.foo') def test_create_modify_host(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getVolume.return_value = {'userCPG': HP3PAR_CPG} mock_client.getCPG.return_value = {} mock_client.getHost.side_effect = [ {'name': self.FAKE_HOST, 'FCPaths': []}, {'name': self.FAKE_HOST, 'FCPaths': [{'wwn': '123456789012345'}, {'wwn': '123456789054321'}]}] host = self.driver._create_host(self.volume, self.connector) expected = [ mock.call.getVolume('osv-0DM4qZEVSKON-DXN-NwVpw'), mock.call.getCPG(HP3PAR_CPG), mock.call.getHost(self.FAKE_HOST), mock.call.modifyHost( self.FAKE_HOST, {'pathOperation': 1, 'iSCSINames': ['iqn.1993-08.org.debian:01:222']}), mock.call.getHost(self.FAKE_HOST)] mock_client.assert_has_calls(expected) self.assertEqual(host['name'], self.FAKE_HOST) self.assertEqual(len(host['FCPaths']), 2) def test_get_least_used_nsp_for_host_single(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getPorts.return_value = PORTS_RET mock_client.getVLUNs.return_value = VLUNS1_RET #Setup a single ISCSI IP iscsi_ips = ["10.10.220.253"] self.driver.configuration.hp3par_iscsi_ips = iscsi_ips self.driver.initialize_iscsi_ports() nsp = self.driver._get_least_used_nsp_for_host('newhost') self.assertEqual(nsp, "1:8:1") def test_get_least_used_nsp_for_host_new(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getPorts.return_value = PORTS_RET mock_client.getVLUNs.return_value = VLUNS1_RET #Setup two ISCSI IPs iscsi_ips = ["10.10.220.252", "10.10.220.253"] self.driver.configuration.hp3par_iscsi_ips = iscsi_ips self.driver.initialize_iscsi_ports() # Host 'newhost' does not yet have any iscsi paths, # so the 'least used' is returned nsp = self.driver._get_least_used_nsp_for_host('newhost') self.assertEqual(nsp, "1:8:2") def test_get_least_used_nsp_for_host_reuse(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getPorts.return_value = PORTS_RET mock_client.getVLUNs.return_value = VLUNS1_RET #Setup two ISCSI IPs iscsi_ips = ["10.10.220.252", "10.10.220.253"] self.driver.configuration.hp3par_iscsi_ips = iscsi_ips self.driver.initialize_iscsi_ports() # hosts 'foo' and 'bar' already have active iscsi paths # the same one should be used nsp = self.driver._get_least_used_nsp_for_host('foo') self.assertEqual(nsp, "1:8:2") nsp = self.driver._get_least_used_nsp_for_host('bar') self.assertEqual(nsp, "1:8:1") def test_get_least_used_nps_for_host_fc(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() mock_client.getPorts.return_value = PORTS1_RET mock_client.getVLUNs.return_value = VLUNS5_RET #Setup two ISCSI IPs iscsi_ips = ["10.10.220.252", "10.10.220.253"] self.driver.configuration.hp3par_iscsi_ips = iscsi_ips self.driver.initialize_iscsi_ports() nsp = self.driver._get_least_used_nsp_for_host('newhost') self.assertNotEqual(nsp, "0:6:3") self.assertEqual(nsp, "1:8:1") def test_invalid_iscsi_ip(self): config = self.setup_configuration() config.hp3par_iscsi_ips = ['10.10.220.250', '10.10.220.251'] config.iscsi_ip_address = '10.10.10.10' mock_conf = { 'getPorts.return_value': { 'members': [ {'portPos': {'node': 1, 'slot': 8, 'cardPort': 2}, 'protocol': 2, 'IPAddr': '10.10.220.252', 'linkState': 4, 'device': [], 'iSCSIName': self.TARGET_IQN, 'mode': 2, 'HWAddr': '2C27D75375D2', 'type': 8}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'protocol': 2, 'IPAddr': '10.10.220.253', 'linkState': 4, 'device': [], 'iSCSIName': self.TARGET_IQN, 'mode': 2, 'HWAddr': '2C27D75375D6', 'type': 8}]}} # no valid ip addr should be configured. self.assertRaises(exception.InvalidInput, self.setup_driver, config=config, mock_conf=mock_conf) def test_get_least_used_nsp(self): # setup_mock_client drive with default configuration # and return the mock HTTP 3PAR client mock_client = self.setup_driver() ports = [ {'portPos': {'node': 1, 'slot': 8, 'cardPort': 2}, 'active': True}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 2}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 2}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}] mock_client.getVLUNs.return_value = {'members': ports} # in use count vluns = self.driver.common.client.getVLUNs() nsp = self.driver._get_least_used_nsp(vluns['members'], ['0:2:1', '1:8:1']) self.assertEqual(nsp, '1:8:1') ports = [ {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}] mock_client.getVLUNs.return_value = {'members': ports} # in use count vluns = self.driver.common.client.getVLUNs() nsp = self.driver._get_least_used_nsp(vluns['members'], ['0:2:1', '1:2:1']) self.assertEqual(nsp, '1:2:1') ports = [ {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 1, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}, {'portPos': {'node': 0, 'slot': 2, 'cardPort': 1}, 'active': True}] mock_client.getVLUNs.return_value = {'members': ports} # in use count vluns = self.driver.common.client.getVLUNs() nsp = self.driver._get_least_used_nsp(vluns['members'], ['1:1:1', '1:2:1']) self.assertEqual(nsp, '1:1:1') VLUNS5_RET = ({'members': [{'portPos': {'node': 0, 'slot': 8, 'cardPort': 2}, 'active': True}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'active': True}]}) PORTS_RET = ({'members': [{'portPos': {'node': 1, 'slot': 8, 'cardPort': 2}, 'protocol': 2, 'IPAddr': '10.10.220.252', 'linkState': 4, 'device': [], 'iSCSIName': 'iqn.2000-05.com.3pardata:21820002ac00383d', 'mode': 2, 'HWAddr': '2C27D75375D2', 'type': 8}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'protocol': 2, 'IPAddr': '10.10.220.253', 'linkState': 4, 'device': [], 'iSCSIName': 'iqn.2000-05.com.3pardata:21810002ac00383d', 'mode': 2, 'HWAddr': '2C27D75375D6', 'type': 8}]}) VLUNS1_RET = ({'members': [{'portPos': {'node': 1, 'slot': 8, 'cardPort': 2}, 'hostname': 'foo', 'active': True}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'hostname': 'bar', 'active': True}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'hostname': 'bar', 'active': True}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'hostname': 'bar', 'active': True}]}) PORTS1_RET = ({'members': [{'portPos': {'node': 0, 'slot': 8, 'cardPort': 2}, 'protocol': 2, 'IPAddr': '10.10.120.252', 'linkState': 4, 'device': [], 'iSCSIName': 'iqn.2000-05.com.3pardata:21820002ac00383d', 'mode': 2, 'HWAddr': '2C27D75375D2', 'type': 8}, {'portPos': {'node': 1, 'slot': 8, 'cardPort': 1}, 'protocol': 2, 'IPAddr': '10.10.220.253', 'linkState': 4, 'device': [], 'iSCSIName': 'iqn.2000-05.com.3pardata:21810002ac00383d', 'mode': 2, 'HWAddr': '2C27D75375D6', 'type': 8}, {'portWWN': '20210002AC00383D', 'protocol': 1, 'linkState': 4, 'mode': 2, 'device': ['cage2'], 'nodeWWN': '20210002AC00383D', 'type': 2, 'portPos': {'node': 0, 'slot': 6, 'cardPort': 3}}]}) cinder-2014.1.5/cinder/tests/test_storwize_svc.py0000664000567000056700000034511712540642606023150 0ustar jenkinsjenkins00000000000000# Copyright 2013 IBM Corp. # Copyright 2012 OpenStack Foundation # All Rights Reserved. # # 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. # """ Tests for the IBM Storwize family and SVC volume driver. """ import mock import random import re from cinder import context from cinder import exception from cinder.openstack.common import excutils from cinder.openstack.common import importutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import test from cinder.tests import utils as testutils from cinder import units from cinder import utils from cinder.volume import configuration as conf from cinder.volume.drivers.ibm import storwize_svc from cinder.volume.drivers.ibm.storwize_svc import helpers from cinder.volume.drivers.ibm.storwize_svc import ssh from cinder.volume import volume_types LOG = logging.getLogger(__name__) class StorwizeSVCManagementSimulator: def __init__(self, pool_name): self._flags = {'storwize_svc_volpool_name': pool_name} self._volumes_list = {} self._hosts_list = {} self._mappings_list = {} self._fcmappings_list = {} self._other_pools = {'openstack2': {}, 'openstack3': {}} self._next_cmd_error = { 'lsportip': '', 'lsfabric': '', 'lsiscsiauth': '', 'lsnodecanister': '', 'mkvdisk': '', 'lsvdisk': '', 'lsfcmap': '', 'prestartfcmap': '', 'startfcmap': '', 'rmfcmap': '', 'lslicense': '', } self._errors = { 'CMMVC5701E': ('', 'CMMVC5701E No object ID was specified.'), 'CMMVC6035E': ('', 'CMMVC6035E The action failed as the ' 'object already exists.'), 'CMMVC5753E': ('', 'CMMVC5753E The specified object does not ' 'exist or is not a suitable candidate.'), 'CMMVC5707E': ('', 'CMMVC5707E Required parameters are missing.'), 'CMMVC6581E': ('', 'CMMVC6581E The command has failed because ' 'the maximum number of allowed iSCSI ' 'qualified names (IQNs) has been reached, ' 'or the IQN is already assigned or is not ' 'valid.'), 'CMMVC5754E': ('', 'CMMVC5754E The specified object does not ' 'exist, or the name supplied does not meet ' 'the naming rules.'), 'CMMVC6071E': ('', 'CMMVC6071E The VDisk-to-host mapping was ' 'not created because the VDisk is already ' 'mapped to a host.'), 'CMMVC5879E': ('', 'CMMVC5879E The VDisk-to-host mapping was ' 'not created because a VDisk is already ' 'mapped to this host with this SCSI LUN.'), 'CMMVC5840E': ('', 'CMMVC5840E The virtual disk (VDisk) was ' 'not deleted because it is mapped to a ' 'host or because it is part of a FlashCopy ' 'or Remote Copy mapping, or is involved in ' 'an image mode migrate.'), 'CMMVC6527E': ('', 'CMMVC6527E The name that you have entered ' 'is not valid. The name can contain letters, ' 'numbers, spaces, periods, dashes, and ' 'underscores. The name must begin with a ' 'letter or an underscore. The name must not ' 'begin or end with a space.'), 'CMMVC5871E': ('', 'CMMVC5871E The action failed because one or ' 'more of the configured port names is in a ' 'mapping.'), 'CMMVC5924E': ('', 'CMMVC5924E The FlashCopy mapping was not ' 'created because the source and target ' 'virtual disks (VDisks) are different sizes.'), 'CMMVC6303E': ('', 'CMMVC6303E The create failed because the ' 'source and target VDisks are the same.'), 'CMMVC7050E': ('', 'CMMVC7050E The command failed because at ' 'least one node in the I/O group does not ' 'support compressed VDisks.'), 'CMMVC6430E': ('', 'CMMVC6430E The command failed because the ' 'target and source managed disk groups must ' 'be different.'), 'CMMVC6353E': ('', 'CMMVC6353E The command failed because the ' 'copy specified does not exist.'), 'CMMVC6446E': ('', 'The command failed because the managed disk ' 'groups have different extent sizes.'), # Catch-all for invalid state transitions: 'CMMVC5903E': ('', 'CMMVC5903E The FlashCopy mapping was not ' 'changed because the mapping or consistency ' 'group is another state.'), 'CMMVC5709E': ('', 'CMMVC5709E [-%(VALUE)s] is not a supported ' 'parameter.'), } self._transitions = {'begin': {'make': 'idle_or_copied'}, 'idle_or_copied': {'prepare': 'preparing', 'delete': 'end', 'delete_force': 'end'}, 'preparing': {'flush_failed': 'stopped', 'wait': 'prepared'}, 'end': None, 'stopped': {'prepare': 'preparing', 'delete_force': 'end'}, 'prepared': {'stop': 'stopped', 'start': 'copying'}, 'copying': {'wait': 'idle_or_copied', 'stop': 'stopping'}, # Assume the worst case where stopping->stopped # rather than stopping idle_or_copied 'stopping': {'wait': 'stopped'}, } def _state_transition(self, function, fcmap): if (function == 'wait' and 'wait' not in self._transitions[fcmap['status']]): return ('', '') if fcmap['status'] == 'copying' and function == 'wait': if fcmap['copyrate'] != '0': if fcmap['progress'] == '0': fcmap['progress'] = '50' else: fcmap['progress'] = '100' fcmap['status'] = 'idle_or_copied' return ('', '') else: try: curr_state = fcmap['status'] fcmap['status'] = self._transitions[curr_state][function] return ('', '') except Exception: return self._errors['CMMVC5903E'] # Find an unused ID @staticmethod def _find_unused_id(d): ids = [] for v in d.itervalues(): ids.append(int(v['id'])) ids.sort() for index, n in enumerate(ids): if n > index: return str(index) return str(len(ids)) # Check if name is valid @staticmethod def _is_invalid_name(name): if re.match(r'^[a-zA-Z_][\w ._-]*$', name): return False return True # Convert argument string to dictionary @staticmethod def _cmd_to_dict(arg_list): no_param_args = [ 'autodelete', 'bytes', 'compressed', 'force', 'nohdr', ] one_param_args = [ 'chapsecret', 'cleanrate', 'copy', 'copyrate', 'delim', 'easytier', 'filtervalue', 'grainsize', 'hbawwpn', 'host', 'iogrp', 'iscsiname', 'mdiskgrp', 'name', 'rsize', 'scsi', 'size', 'source', 'target', 'unit', 'vdisk', 'warning', 'wwpn', ] no_or_one_param_args = [ 'autoexpand', ] # Handle the special case of lsnode which is a two-word command # Use the one word version of the command internally if arg_list[0] in ('svcinfo', 'svctask'): if arg_list[1] == 'lsnode': if len(arg_list) > 4: # e.g. svcinfo lsnode -delim ! ret = {'cmd': 'lsnode', 'node_id': arg_list[-1]} else: ret = {'cmd': 'lsnodecanister'} else: ret = {'cmd': arg_list[1]} arg_list.pop(0) else: ret = {'cmd': arg_list[0]} skip = False for i in range(1, len(arg_list)): if skip: skip = False continue if arg_list[i][0] == '-': if arg_list[i][1:] in no_param_args: ret[arg_list[i][1:]] = True elif arg_list[i][1:] in one_param_args: ret[arg_list[i][1:]] = arg_list[i + 1] skip = True elif arg_list[i][1:] in no_or_one_param_args: if i == (len(arg_list) - 1) or arg_list[i + 1][0] == '-': ret[arg_list[i][1:]] = True else: ret[arg_list[i][1:]] = arg_list[i + 1] skip = True else: raise exception.InvalidInput( reason=_('unrecognized argument %s') % arg_list[i]) else: ret['obj'] = arg_list[i] return ret @staticmethod def _print_info_cmd(rows, delim=' ', nohdr=False, **kwargs): """Generic function for printing information.""" if nohdr: del rows[0] for index in range(len(rows)): rows[index] = delim.join(rows[index]) return ('%s' % '\n'.join(rows), '') @staticmethod def _print_info_obj_cmd(header, row, delim=' ', nohdr=False): """Generic function for printing information for a specific object.""" objrows = [] for idx, val in enumerate(header): objrows.append([val, row[idx]]) if nohdr: for index in range(len(objrows)): objrows[index] = ' '.join(objrows[index][1:]) for index in range(len(objrows)): objrows[index] = delim.join(objrows[index]) return ('%s' % '\n'.join(objrows), '') @staticmethod def _convert_bytes_units(bytestr): num = int(bytestr) unit_array = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'] unit_index = 0 while num > 1024: num = num / 1024 unit_index += 1 return '%d%s' % (num, unit_array[unit_index]) @staticmethod def _convert_units_bytes(num, unit): unit_array = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'] unit_index = 0 while unit.lower() != unit_array[unit_index].lower(): num = num * 1024 unit_index += 1 return str(num) def _cmd_lslicense(self, **kwargs): rows = [None] * 3 rows[0] = ['used_compression_capacity', '0.08'] rows[1] = ['license_compression_capacity', '0'] if self._next_cmd_error['lslicense'] == 'no_compression': self._next_cmd_error['lslicense'] = '' rows[2] = ['license_compression_enclosures', '0'] else: rows[2] = ['license_compression_enclosures', '1'] return self._print_info_cmd(rows=rows, **kwargs) # Print mostly made-up stuff in the correct syntax def _cmd_lssystem(self, **kwargs): rows = [None] * 3 rows[0] = ['id', '0123456789ABCDEF'] rows[1] = ['name', 'storwize-svc-sim'] rows[2] = ['code_level', '7.2.0.0 (build 87.0.1311291000)'] return self._print_info_cmd(rows=rows, **kwargs) # Print mostly made-up stuff in the correct syntax, assume -bytes passed def _cmd_lsmdiskgrp(self, **kwargs): rows = [None] * 4 rows[0] = ['id', 'name', 'status', 'mdisk_count', 'vdisk_count', 'capacity', 'extent_size', 'free_capacity', 'virtual_capacity', 'used_capacity', 'real_capacity', 'overallocation', 'warning', 'easy_tier', 'easy_tier_status'] rows[1] = ['1', self._flags['storwize_svc_volpool_name'], 'online', '1', str(len(self._volumes_list)), '3573412790272', '256', '3529926246400', '1693247906775', '277841182', '38203734097', '47', '80', 'auto', 'inactive'] rows[2] = ['2', 'openstack2', 'online', '1', '0', '3573412790272', '256', '3529432325160', '1693247906775', '277841182', '38203734097', '47', '80', 'auto', 'inactive'] rows[3] = ['3', 'openstack3', 'online', '1', '0', '3573412790272', '128', '3529432325160', '1693247906775', '277841182', '38203734097', '47', '80', 'auto', 'inactive'] if 'obj' not in kwargs: return self._print_info_cmd(rows=rows, **kwargs) else: if kwargs['obj'] == self._flags['storwize_svc_volpool_name']: row = rows[1] elif kwargs['obj'] == 'openstack2': row = rows[2] elif kwargs['obj'] == 'openstack3': row = rows[3] else: return self._errors['CMMVC5754E'] objrows = [] for idx, val in enumerate(rows[0]): objrows.append([val, row[idx]]) if 'nohdr' in kwargs: for index in range(len(objrows)): objrows[index] = ' '.join(objrows[index][1:]) if 'delim' in kwargs: for index in range(len(objrows)): objrows[index] = kwargs['delim'].join(objrows[index]) return ('%s' % '\n'.join(objrows), '') # Print mostly made-up stuff in the correct syntax def _cmd_lsnodecanister(self, **kwargs): rows = [None] * 3 rows[0] = ['id', 'name', 'UPS_serial_number', 'WWNN', 'status', 'IO_group_id', 'IO_group_name', 'config_node', 'UPS_unique_id', 'hardware', 'iscsi_name', 'iscsi_alias', 'panel_name', 'enclosure_id', 'canister_id', 'enclosure_serial_number'] rows[1] = ['1', 'node1', '', '123456789ABCDEF0', 'online', '0', 'io_grp0', 'yes', '123456789ABCDEF0', '100', 'iqn.1982-01.com.ibm:1234.sim.node1', '', '01-1', '1', '1', '0123ABC'] rows[2] = ['2', 'node2', '', '123456789ABCDEF1', 'online', '0', 'io_grp0', 'no', '123456789ABCDEF1', '100', 'iqn.1982-01.com.ibm:1234.sim.node2', '', '01-2', '1', '2', '0123ABC'] if self._next_cmd_error['lsnodecanister'] == 'header_mismatch': rows[0].pop(2) self._next_cmd_error['lsnodecanister'] = '' if self._next_cmd_error['lsnodecanister'] == 'remove_field': for row in rows: row.pop(0) self._next_cmd_error['lsnodecanister'] = '' return self._print_info_cmd(rows=rows, **kwargs) # Print information of every single node of SVC def _cmd_lsnode(self, **kwargs): node_infos = dict() node_infos['1'] = r'''id!1 name!node1 port_id!500507680210C744 port_status!active port_speed!8Gb port_id!500507680220C744 port_status!active port_speed!8Gb ''' node_infos['2'] = r'''id!2 name!node2 port_id!500507680220C745 port_status!active port_speed!8Gb port_id!500507680230C745 port_status!inactive port_speed!N/A ''' node_id = kwargs.get('node_id', None) stdout = node_infos.get(node_id, '') return stdout, '' # Print mostly made-up stuff in the correct syntax def _cmd_lsportip(self, **kwargs): if self._next_cmd_error['lsportip'] == 'ip_no_config': self._next_cmd_error['lsportip'] = '' ip_addr1 = '' ip_addr2 = '' gw = '' else: ip_addr1 = '1.234.56.78' ip_addr2 = '1.234.56.79' gw = '1.234.56.1' rows = [None] * 17 rows[0] = ['id', 'node_id', 'node_name', 'IP_address', 'mask', 'gateway', 'IP_address_6', 'prefix_6', 'gateway_6', 'MAC', 'duplex', 'state', 'speed', 'failover'] rows[1] = ['1', '1', 'node1', ip_addr1, '255.255.255.0', gw, '', '', '', '01:23:45:67:89:00', 'Full', 'online', '1Gb/s', 'no'] rows[2] = ['1', '1', 'node1', '', '', '', '', '', '', '01:23:45:67:89:00', 'Full', 'online', '1Gb/s', 'yes'] rows[3] = ['2', '1', 'node1', '', '', '', '', '', '', '01:23:45:67:89:01', 'Full', 'unconfigured', '1Gb/s', 'no'] rows[4] = ['2', '1', 'node1', '', '', '', '', '', '', '01:23:45:67:89:01', 'Full', 'unconfigured', '1Gb/s', 'yes'] rows[5] = ['3', '1', 'node1', '', '', '', '', '', '', '', '', 'unconfigured', '', 'no'] rows[6] = ['3', '1', 'node1', '', '', '', '', '', '', '', '', 'unconfigured', '', 'yes'] rows[7] = ['4', '1', 'node1', '', '', '', '', '', '', '', '', 'unconfigured', '', 'no'] rows[8] = ['4', '1', 'node1', '', '', '', '', '', '', '', '', 'unconfigured', '', 'yes'] rows[9] = ['1', '2', 'node2', ip_addr2, '255.255.255.0', gw, '', '', '', '01:23:45:67:89:02', 'Full', 'online', '1Gb/s', 'no'] rows[10] = ['1', '2', 'node2', '', '', '', '', '', '', '01:23:45:67:89:02', 'Full', 'online', '1Gb/s', 'yes'] rows[11] = ['2', '2', 'node2', '', '', '', '', '', '', '01:23:45:67:89:03', 'Full', 'unconfigured', '1Gb/s', 'no'] rows[12] = ['2', '2', 'node2', '', '', '', '', '', '', '01:23:45:67:89:03', 'Full', 'unconfigured', '1Gb/s', 'yes'] rows[13] = ['3', '2', 'node2', '', '', '', '', '', '', '', '', 'unconfigured', '', 'no'] rows[14] = ['3', '2', 'node2', '', '', '', '', '', '', '', '', 'unconfigured', '', 'yes'] rows[15] = ['4', '2', 'node2', '', '', '', '', '', '', '', '', 'unconfigured', '', 'no'] rows[16] = ['4', '2', 'node2', '', '', '', '', '', '', '', '', 'unconfigured', '', 'yes'] if self._next_cmd_error['lsportip'] == 'header_mismatch': rows[0].pop(2) self._next_cmd_error['lsportip'] = '' if self._next_cmd_error['lsportip'] == 'remove_field': for row in rows: row.pop(1) self._next_cmd_error['lsportip'] = '' return self._print_info_cmd(rows=rows, **kwargs) def _cmd_lsfabric(self, **kwargs): host_name = kwargs['host'].strip('\'\"') if 'host' in kwargs else None target_wwpn = kwargs['wwpn'] if 'wwpn' in kwargs else None host_infos = [] for hv in self._hosts_list.itervalues(): if (not host_name) or (hv['host_name'] == host_name): for mv in self._mappings_list.itervalues(): if mv['host'] == hv['host_name']: if not target_wwpn or target_wwpn in hv['wwpns']: host_infos.append(hv) break if not len(host_infos): return ('', '') rows = [] rows.append(['remote_wwpn', 'remote_nportid', 'id', 'node_name', 'local_wwpn', 'local_port', 'local_nportid', 'state', 'name', 'cluster_name', 'type']) for host_info in host_infos: for wwpn in host_info['wwpns']: rows.append([wwpn, '123456', host_info['id'], 'nodeN', 'AABBCCDDEEFF0011', '1', '0123ABC', 'active', host_info['host_name'], '', 'host']) if self._next_cmd_error['lsfabric'] == 'header_mismatch': rows[0].pop(0) self._next_cmd_error['lsfabric'] = '' if self._next_cmd_error['lsfabric'] == 'remove_field': for row in rows: row.pop(0) self._next_cmd_error['lsfabric'] = '' return self._print_info_cmd(rows=rows, **kwargs) # Create a vdisk def _cmd_mkvdisk(self, **kwargs): # We only save the id/uid, name, and size - all else will be made up volume_info = {} volume_info['id'] = self._find_unused_id(self._volumes_list) volume_info['uid'] = ('ABCDEF' * 3) + ('0' * 14) + volume_info['id'] if 'name' in kwargs: volume_info['name'] = kwargs['name'].strip('\'\"') else: volume_info['name'] = 'vdisk' + volume_info['id'] # Assume size and unit are given, store it in bytes capacity = int(kwargs['size']) unit = kwargs['unit'] volume_info['capacity'] = self._convert_units_bytes(capacity, unit) volume_info['IO_group_id'] = kwargs['iogrp'] volume_info['IO_group_name'] = 'io_grp%s' % kwargs['iogrp'] if 'easytier' in kwargs: if kwargs['easytier'] == 'on': volume_info['easy_tier'] = 'on' else: volume_info['easy_tier'] = 'off' if 'rsize' in kwargs: # Fake numbers volume_info['used_capacity'] = '786432' volume_info['real_capacity'] = '21474816' volume_info['free_capacity'] = '38219264' if 'warning' in kwargs: volume_info['warning'] = kwargs['warning'].rstrip('%') else: volume_info['warning'] = '80' if 'autoexpand' in kwargs: volume_info['autoexpand'] = 'on' else: volume_info['autoexpand'] = 'off' if 'grainsize' in kwargs: volume_info['grainsize'] = kwargs['grainsize'] else: volume_info['grainsize'] = '32' if 'compressed' in kwargs: volume_info['compressed_copy'] = 'yes' else: volume_info['compressed_copy'] = 'no' else: volume_info['used_capacity'] = volume_info['capacity'] volume_info['real_capacity'] = volume_info['capacity'] volume_info['free_capacity'] = '0' volume_info['warning'] = '' volume_info['autoexpand'] = '' volume_info['grainsize'] = '' volume_info['compressed_copy'] = 'no' vol_cp = {'id': '0', 'status': 'online', 'sync': 'yes', 'primary': 'yes', 'mdisk_grp_id': '1', 'mdisk_grp_name': self._flags['storwize_svc_volpool_name'], 'easy_tier': volume_info['easy_tier'], 'compressed_copy': volume_info['compressed_copy']} volume_info['copies'] = {'0': vol_cp} if volume_info['name'] in self._volumes_list: return self._errors['CMMVC6035E'] else: self._volumes_list[volume_info['name']] = volume_info return ('Virtual Disk, id [%s], successfully created' % (volume_info['id']), '') # Delete a vdisk def _cmd_rmvdisk(self, **kwargs): force = True if 'force' in kwargs else False if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol_name = kwargs['obj'].strip('\'\"') if vol_name not in self._volumes_list: return self._errors['CMMVC5753E'] if not force: for mapping in self._mappings_list.itervalues(): if mapping['vol'] == vol_name: return self._errors['CMMVC5840E'] for fcmap in self._fcmappings_list.itervalues(): if ((fcmap['source'] == vol_name) or (fcmap['target'] == vol_name)): return self._errors['CMMVC5840E'] del self._volumes_list[vol_name] return ('', '') def _cmd_expandvdisksize(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol_name = kwargs['obj'].strip('\'\"') # Assume unit is gb if 'size' not in kwargs: return self._errors['CMMVC5707E'] size = int(kwargs['size']) if vol_name not in self._volumes_list: return self._errors['CMMVC5753E'] curr_size = int(self._volumes_list[vol_name]['capacity']) addition = size * units.GiB self._volumes_list[vol_name]['capacity'] = str(curr_size + addition) return ('', '') def _get_fcmap_info(self, vol_name): ret_vals = { 'fc_id': '', 'fc_name': '', 'fc_map_count': '0', } for fcmap in self._fcmappings_list.itervalues(): if ((fcmap['source'] == vol_name) or (fcmap['target'] == vol_name)): ret_vals['fc_id'] = fcmap['id'] ret_vals['fc_name'] = fcmap['name'] ret_vals['fc_map_count'] = '1' return ret_vals # List information about vdisks def _cmd_lsvdisk(self, **kwargs): rows = [] rows.append(['id', 'name', 'IO_group_id', 'IO_group_name', 'status', 'mdisk_grp_id', 'mdisk_grp_name', 'capacity', 'type', 'FC_id', 'FC_name', 'RC_id', 'RC_name', 'vdisk_UID', 'fc_map_count', 'copy_count', 'fast_write_state', 'se_copy_count', 'RC_change']) for vol in self._volumes_list.itervalues(): if (('filtervalue' not in kwargs) or (kwargs['filtervalue'] == 'name=' + vol['name']) or (kwargs['filtervalue'] == 'vdisk_UID=' + vol['uid'])): fcmap_info = self._get_fcmap_info(vol['name']) if 'bytes' in kwargs: cap = self._convert_bytes_units(vol['capacity']) else: cap = vol['capacity'] rows.append([str(vol['id']), vol['name'], vol['IO_group_id'], vol['IO_group_name'], 'online', '0', self._flags['storwize_svc_volpool_name'], cap, 'striped', fcmap_info['fc_id'], fcmap_info['fc_name'], '', '', vol['uid'], fcmap_info['fc_map_count'], '1', 'empty', '1', 'no']) if 'obj' not in kwargs: return self._print_info_cmd(rows=rows, **kwargs) else: if kwargs['obj'] not in self._volumes_list: return self._errors['CMMVC5754E'] vol = self._volumes_list[kwargs['obj']] fcmap_info = self._get_fcmap_info(vol['name']) cap = vol['capacity'] cap_u = vol['used_capacity'] cap_r = vol['real_capacity'] cap_f = vol['free_capacity'] if 'bytes' not in kwargs: for item in [cap, cap_u, cap_r, cap_f]: item = self._convert_bytes_units(item) rows = [] rows.append(['id', str(vol['id'])]) rows.append(['name', vol['name']]) rows.append(['IO_group_id', vol['IO_group_id']]) rows.append(['IO_group_name', vol['IO_group_name']]) rows.append(['status', 'online']) rows.append(['capacity', cap]) rows.append(['formatted', 'no']) rows.append(['mdisk_id', '']) rows.append(['mdisk_name', '']) rows.append(['FC_id', fcmap_info['fc_id']]) rows.append(['FC_name', fcmap_info['fc_name']]) rows.append(['RC_id', '']) rows.append(['RC_name', '']) rows.append(['vdisk_UID', vol['uid']]) rows.append(['throttling', '0']) if self._next_cmd_error['lsvdisk'] == 'blank_pref_node': rows.append(['preferred_node_id', '']) self._next_cmd_error['lsvdisk'] = '' elif self._next_cmd_error['lsvdisk'] == 'no_pref_node': self._next_cmd_error['lsvdisk'] = '' else: rows.append(['preferred_node_id', '1']) rows.append(['fast_write_state', 'empty']) rows.append(['cache', 'readwrite']) rows.append(['udid', '']) rows.append(['fc_map_count', fcmap_info['fc_map_count']]) rows.append(['sync_rate', '50']) rows.append(['copy_count', '1']) rows.append(['se_copy_count', '0']) rows.append(['mirror_write_priority', 'latency']) rows.append(['RC_change', 'no']) for copy in vol['copies'].itervalues(): rows.append(['copy_id', copy['id']]) rows.append(['status', copy['status']]) rows.append(['primary', copy['primary']]) rows.append(['mdisk_grp_id', copy['mdisk_grp_id']]) rows.append(['mdisk_grp_name', copy['mdisk_grp_name']]) rows.append(['type', 'striped']) rows.append(['used_capacity', cap_u]) rows.append(['real_capacity', cap_r]) rows.append(['free_capacity', cap_f]) rows.append(['easy_tier', copy['easy_tier']]) rows.append(['compressed_copy', copy['compressed_copy']]) rows.append(['autoexpand', vol['autoexpand']]) rows.append(['warning', vol['warning']]) rows.append(['grainsize', vol['grainsize']]) if 'nohdr' in kwargs: for index in range(len(rows)): rows[index] = ' '.join(rows[index][1:]) if 'delim' in kwargs: for index in range(len(rows)): rows[index] = kwargs['delim'].join(rows[index]) return ('%s' % '\n'.join(rows), '') def _cmd_lsiogrp(self, **kwargs): rows = [None] * 6 rows[0] = ['id', 'name', 'node_count', 'vdisk_count', 'host_count'] rows[1] = ['0', 'io_grp0', '2', '0', '4'] rows[2] = ['1', 'io_grp1', '2', '0', '4'] rows[3] = ['2', 'io_grp2', '0', '0', '4'] rows[4] = ['3', 'io_grp3', '0', '0', '4'] rows[5] = ['4', 'recovery_io_grp', '0', '0', '0'] return self._print_info_cmd(rows=rows, **kwargs) def _add_port_to_host(self, host_info, **kwargs): if 'iscsiname' in kwargs: added_key = 'iscsi_names' added_val = kwargs['iscsiname'].strip('\'\"') elif 'hbawwpn' in kwargs: added_key = 'wwpns' added_val = kwargs['hbawwpn'].strip('\'\"') else: return self._errors['CMMVC5707E'] host_info[added_key].append(added_val) for v in self._hosts_list.itervalues(): if v['id'] == host_info['id']: continue for port in v[added_key]: if port == added_val: return self._errors['CMMVC6581E'] return ('', '') # Make a host def _cmd_mkhost(self, **kwargs): host_info = {} host_info['id'] = self._find_unused_id(self._hosts_list) if 'name' in kwargs: host_name = kwargs['name'].strip('\'\"') else: host_name = 'host' + str(host_info['id']) if self._is_invalid_name(host_name): return self._errors['CMMVC6527E'] if host_name in self._hosts_list: return self._errors['CMMVC6035E'] host_info['host_name'] = host_name host_info['iscsi_names'] = [] host_info['wwpns'] = [] out, err = self._add_port_to_host(host_info, **kwargs) if not len(err): self._hosts_list[host_name] = host_info return ('Host, id [%s], successfully created' % (host_info['id']), '') else: return (out, err) # Add ports to an existing host def _cmd_addhostport(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] host_name = kwargs['obj'].strip('\'\"') if host_name not in self._hosts_list: return self._errors['CMMVC5753E'] host_info = self._hosts_list[host_name] return self._add_port_to_host(host_info, **kwargs) # Change host properties def _cmd_chhost(self, **kwargs): if 'chapsecret' not in kwargs: return self._errors['CMMVC5707E'] secret = kwargs['obj'].strip('\'\"') if 'obj' not in kwargs: return self._errors['CMMVC5701E'] host_name = kwargs['obj'].strip('\'\"') if host_name not in self._hosts_list: return self._errors['CMMVC5753E'] self._hosts_list[host_name]['chapsecret'] = secret return ('', '') # Remove a host def _cmd_rmhost(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] host_name = kwargs['obj'].strip('\'\"') if host_name not in self._hosts_list: return self._errors['CMMVC5753E'] for v in self._mappings_list.itervalues(): if (v['host'] == host_name): return self._errors['CMMVC5871E'] del self._hosts_list[host_name] return ('', '') # List information about hosts def _cmd_lshost(self, **kwargs): if 'obj' not in kwargs: rows = [] rows.append(['id', 'name', 'port_count', 'iogrp_count', 'status']) found = False for host in self._hosts_list.itervalues(): filterstr = 'name=' + host['host_name'] if (('filtervalue' not in kwargs) or (kwargs['filtervalue'] == filterstr)): rows.append([host['id'], host['host_name'], '1', '4', 'offline']) found = True if found: return self._print_info_cmd(rows=rows, **kwargs) else: return ('', '') else: host_name = kwargs['obj'].strip('\'\"') if host_name not in self._hosts_list: return self._errors['CMMVC5754E'] host = self._hosts_list[host_name] rows = [] rows.append(['id', host['id']]) rows.append(['name', host['host_name']]) rows.append(['port_count', '1']) rows.append(['type', 'generic']) rows.append(['mask', '1111']) rows.append(['iogrp_count', '4']) rows.append(['status', 'online']) for port in host['iscsi_names']: rows.append(['iscsi_name', port]) rows.append(['node_logged_in_count', '0']) rows.append(['state', 'offline']) for port in host['wwpns']: rows.append(['WWPN', port]) rows.append(['node_logged_in_count', '0']) rows.append(['state', 'active']) if 'nohdr' in kwargs: for index in range(len(rows)): rows[index] = ' '.join(rows[index][1:]) if 'delim' in kwargs: for index in range(len(rows)): rows[index] = kwargs['delim'].join(rows[index]) return ('%s' % '\n'.join(rows), '') # List iSCSI authorization information about hosts def _cmd_lsiscsiauth(self, **kwargs): if self._next_cmd_error['lsiscsiauth'] == 'no_info': self._next_cmd_error['lsiscsiauth'] = '' return ('', '') rows = [] rows.append(['type', 'id', 'name', 'iscsi_auth_method', 'iscsi_chap_secret']) for host in self._hosts_list.itervalues(): method = 'none' secret = '' if 'chapsecret' in host: method = 'chap' secret = host['chapsecret'] rows.append(['host', host['id'], host['host_name'], method, secret]) return self._print_info_cmd(rows=rows, **kwargs) # Create a vdisk-host mapping def _cmd_mkvdiskhostmap(self, **kwargs): mapping_info = {} mapping_info['id'] = self._find_unused_id(self._mappings_list) if 'host' not in kwargs: return self._errors['CMMVC5707E'] mapping_info['host'] = kwargs['host'].strip('\'\"') if 'scsi' not in kwargs: return self._errors['CMMVC5707E'] mapping_info['lun'] = kwargs['scsi'].strip('\'\"') if 'obj' not in kwargs: return self._errors['CMMVC5707E'] mapping_info['vol'] = kwargs['obj'].strip('\'\"') if mapping_info['vol'] not in self._volumes_list: return self._errors['CMMVC5753E'] if mapping_info['host'] not in self._hosts_list: return self._errors['CMMVC5754E'] if mapping_info['vol'] in self._mappings_list: return self._errors['CMMVC6071E'] for v in self._mappings_list.itervalues(): if ((v['host'] == mapping_info['host']) and (v['lun'] == mapping_info['lun'])): return self._errors['CMMVC5879E'] for v in self._mappings_list.itervalues(): if (v['lun'] == mapping_info['lun']) and ('force' not in kwargs): return self._errors['CMMVC6071E'] self._mappings_list[mapping_info['id']] = mapping_info return ('Virtual Disk to Host map, id [%s], successfully created' % (mapping_info['id']), '') # Delete a vdisk-host mapping def _cmd_rmvdiskhostmap(self, **kwargs): if 'host' not in kwargs: return self._errors['CMMVC5707E'] host = kwargs['host'].strip('\'\"') if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol = kwargs['obj'].strip('\'\"') mapping_ids = [] for v in self._mappings_list.itervalues(): if v['vol'] == vol: mapping_ids.append(v['id']) if not mapping_ids: return self._errors['CMMVC5753E'] this_mapping = None for mapping_id in mapping_ids: if self._mappings_list[mapping_id]['host'] == host: this_mapping = mapping_id if this_mapping is None: return self._errors['CMMVC5753E'] del self._mappings_list[this_mapping] return ('', '') # List information about host->vdisk mappings def _cmd_lshostvdiskmap(self, **kwargs): host_name = kwargs['obj'].strip('\'\"') if host_name not in self._hosts_list: return self._errors['CMMVC5754E'] rows = [] rows.append(['id', 'name', 'SCSI_id', 'vdisk_id', 'vdisk_name', 'vdisk_UID']) for mapping in self._mappings_list.itervalues(): if (host_name == '') or (mapping['host'] == host_name): volume = self._volumes_list[mapping['vol']] rows.append([mapping['id'], mapping['host'], mapping['lun'], volume['id'], volume['name'], volume['uid']]) return self._print_info_cmd(rows=rows, **kwargs) # List information about vdisk->host mappings def _cmd_lsvdiskhostmap(self, **kwargs): mappings_found = 0 vdisk_name = kwargs['obj'] if vdisk_name not in self._volumes_list: return self._errors['CMMVC5753E'] rows = [] rows.append(['id name', 'SCSI_id', 'host_id', 'host_name', 'vdisk_UID', 'IO_group_id', 'IO_group_name']) for mapping in self._mappings_list.itervalues(): if (mapping['vol'] == vdisk_name): mappings_found += 1 volume = self._volumes_list[mapping['vol']] host = self._hosts_list[mapping['host']] rows.append([volume['id'], volume['name'], host['id'], host['host_name'], volume['uid'], volume['IO_group_id'], volume['IO_group_name']]) if mappings_found: return self._print_info_cmd(rows=rows, **kwargs) else: return ('', '') # Create a FlashCopy mapping def _cmd_mkfcmap(self, **kwargs): source = '' target = '' copyrate = kwargs['copyrate'] if 'copyrate' in kwargs else '50' if 'source' not in kwargs: return self._errors['CMMVC5707E'] source = kwargs['source'].strip('\'\"') if source not in self._volumes_list: return self._errors['CMMVC5754E'] if 'target' not in kwargs: return self._errors['CMMVC5707E'] target = kwargs['target'].strip('\'\"') if target not in self._volumes_list: return self._errors['CMMVC5754E'] if source == target: return self._errors['CMMVC6303E'] if (self._volumes_list[source]['capacity'] != self._volumes_list[target]['capacity']): return self._errors['CMMVC5924E'] fcmap_info = {} fcmap_info['source'] = source fcmap_info['target'] = target fcmap_info['id'] = self._find_unused_id(self._fcmappings_list) fcmap_info['name'] = 'fcmap' + fcmap_info['id'] fcmap_info['copyrate'] = copyrate fcmap_info['progress'] = '0' fcmap_info['autodelete'] = True if 'autodelete' in kwargs else False fcmap_info['status'] = 'idle_or_copied' self._fcmappings_list[fcmap_info['id']] = fcmap_info return('FlashCopy Mapping, id [' + fcmap_info['id'] + '], successfully created', '') def _cmd_prestartfcmap(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] id_num = kwargs['obj'] if self._next_cmd_error['prestartfcmap'] == 'bad_id': id_num = -1 self._next_cmd_error['prestartfcmap'] = '' try: fcmap = self._fcmappings_list[id_num] except KeyError: return self._errors['CMMVC5753E'] return self._state_transition('prepare', fcmap) def _cmd_startfcmap(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] id_num = kwargs['obj'] if self._next_cmd_error['startfcmap'] == 'bad_id': id_num = -1 self._next_cmd_error['startfcmap'] = '' try: fcmap = self._fcmappings_list[id_num] except KeyError: return self._errors['CMMVC5753E'] return self._state_transition('start', fcmap) def _cmd_stopfcmap(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] id_num = kwargs['obj'] try: fcmap = self._fcmappings_list[id_num] except KeyError: return self._errors['CMMVC5753E'] return self._state_transition('stop', fcmap) def _cmd_rmfcmap(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] id_num = kwargs['obj'] force = True if 'force' in kwargs else False if self._next_cmd_error['rmfcmap'] == 'bad_id': id_num = -1 self._next_cmd_error['rmfcmap'] = '' try: fcmap = self._fcmappings_list[id_num] except KeyError: return self._errors['CMMVC5753E'] function = 'delete_force' if force else 'delete' ret = self._state_transition(function, fcmap) if fcmap['status'] == 'end': del self._fcmappings_list[id_num] return ret def _cmd_lsvdiskfcmappings(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5707E'] vdisk = kwargs['obj'] rows = [] rows.append(['id', 'name']) for v in self._fcmappings_list.itervalues(): if v['source'] == vdisk or v['target'] == vdisk: rows.append([v['id'], v['name']]) return self._print_info_cmd(rows=rows, **kwargs) def _cmd_chfcmap(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5707E'] id_num = kwargs['obj'] try: fcmap = self._fcmappings_list[id_num] except KeyError: return self._errors['CMMVC5753E'] for key in ['name', 'copyrate', 'autodelete']: if key in kwargs: fcmap[key] = kwargs[key] return ('', '') def _cmd_lsfcmap(self, **kwargs): rows = [] rows.append(['id', 'name', 'source_vdisk_id', 'source_vdisk_name', 'target_vdisk_id', 'target_vdisk_name', 'group_id', 'group_name', 'status', 'progress', 'copy_rate', 'clean_progress', 'incremental', 'partner_FC_id', 'partner_FC_name', 'restoring', 'start_time', 'rc_controlled']) # Assume we always get a filtervalue argument filter_key = kwargs['filtervalue'].split('=')[0] filter_value = kwargs['filtervalue'].split('=')[1] to_delete = [] for k, v in self._fcmappings_list.iteritems(): if str(v[filter_key]) == filter_value: source = self._volumes_list[v['source']] target = self._volumes_list[v['target']] self._state_transition('wait', v) if self._next_cmd_error['lsfcmap'] == 'speed_up': self._next_cmd_error['lsfcmap'] = '' curr_state = v['status'] while self._state_transition('wait', v) == ("", ""): if curr_state == v['status']: break curr_state = v['status'] if ((v['status'] == 'idle_or_copied' and v['autodelete'] and v['progress'] == '100') or (v['status'] == 'end')): to_delete.append(k) else: rows.append([v['id'], v['name'], source['id'], source['name'], target['id'], target['name'], '', '', v['status'], v['progress'], v['copyrate'], '100', 'off', '', '', 'no', '', 'no']) for d in to_delete: del self._fcmappings_list[d] return self._print_info_cmd(rows=rows, **kwargs) def _cmd_migratevdisk(self, **kwargs): if 'mdiskgrp' not in kwargs or 'vdisk' not in kwargs: return self._errors['CMMVC5707E'] mdiskgrp = kwargs['mdiskgrp'].strip('\'\"') vdisk = kwargs['vdisk'].strip('\'\"') if vdisk in self._volumes_list: curr_mdiskgrp = self._volumes_list else: for pool in self._other_pools: if vdisk in pool: curr_mdiskgrp = pool break else: return self._errors['CMMVC5754E'] if mdiskgrp == self._flags['storwize_svc_volpool_name']: tgt_mdiskgrp = self._volumes_list elif mdiskgrp == 'openstack2': tgt_mdiskgrp = self._other_pools['openstack2'] elif mdiskgrp == 'openstack3': tgt_mdiskgrp = self._other_pools['openstack3'] else: return self._errors['CMMVC5754E'] if curr_mdiskgrp == tgt_mdiskgrp: return self._errors['CMMVC6430E'] vol = curr_mdiskgrp[vdisk] tgt_mdiskgrp[vdisk] = vol del curr_mdiskgrp[vdisk] return ('', '') def _cmd_addvdiskcopy(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol_name = kwargs['obj'].strip('\'\"') if vol_name not in self._volumes_list: return self._errors['CMMVC5753E'] vol = self._volumes_list[vol_name] if 'mdiskgrp' not in kwargs: return self._errors['CMMVC5707E'] mdiskgrp = kwargs['mdiskgrp'].strip('\'\"') copy_info = {} copy_info['id'] = self._find_unused_id(vol['copies']) copy_info['status'] = 'online' copy_info['sync'] = 'no' copy_info['primary'] = 'no' copy_info['mdisk_grp_name'] = mdiskgrp if mdiskgrp == self._flags['storwize_svc_volpool_name']: copy_info['mdisk_grp_id'] = '1' elif mdiskgrp == 'openstack2': copy_info['mdisk_grp_id'] = '2' elif mdiskgrp == 'openstack3': copy_info['mdisk_grp_id'] = '3' if 'easytier' in kwargs: if kwargs['easytier'] == 'on': copy_info['easy_tier'] = 'on' else: copy_info['easy_tier'] = 'off' if 'rsize' in kwargs: if 'compressed' in kwargs: copy_info['compressed_copy'] = 'yes' else: copy_info['compressed_copy'] = 'no' vol['copies'][copy_info['id']] = copy_info return ('Vdisk [%(vid)s] copy [%(cid)s] successfully created' % {'vid': vol['id'], 'cid': copy_info['id']}, '') def _cmd_lsvdiskcopy(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5804E'] name = kwargs['obj'] vol = self._volumes_list[name] rows = [] rows.append(['vdisk_id', 'vdisk_name', 'copy_id', 'status', 'sync', 'primary', 'mdisk_grp_id', 'mdisk_grp_name', 'capacity', 'type', 'se_copy', 'easy_tier', 'easy_tier_status', 'compressed_copy']) for copy in vol['copies'].itervalues(): rows.append([vol['id'], vol['name'], copy['id'], copy['status'], copy['sync'], copy['primary'], copy['mdisk_grp_id'], copy['mdisk_grp_name'], vol['capacity'], 'striped', 'yes', copy['easy_tier'], 'inactive', copy['compressed_copy']]) if 'copy' not in kwargs: return self._print_info_cmd(rows=rows, **kwargs) else: copy_id = kwargs['copy'].strip('\'\"') if copy_id not in vol['copies']: return self._errors['CMMVC6353E'] copy = vol['copies'][copy_id] rows = [] rows.append(['vdisk_id', vol['id']]) rows.append(['vdisk_name', vol['name']]) rows.append(['capacity', vol['capacity']]) rows.append(['copy_id', copy['id']]) rows.append(['status', copy['status']]) rows.append(['sync', copy['sync']]) copy['sync'] = 'yes' rows.append(['primary', copy['primary']]) rows.append(['mdisk_grp_id', copy['mdisk_grp_id']]) rows.append(['mdisk_grp_name', copy['mdisk_grp_name']]) rows.append(['easy_tier', copy['easy_tier']]) rows.append(['easy_tier_status', 'inactive']) rows.append(['compressed_copy', copy['compressed_copy']]) if 'delim' in kwargs: for index in range(len(rows)): rows[index] = kwargs['delim'].join(rows[index]) return ('%s' % '\n'.join(rows), '') def _cmd_rmvdiskcopy(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol_name = kwargs['obj'].strip('\'\"') if 'copy' not in kwargs: return self._errors['CMMVC5707E'] copy_id = kwargs['copy'].strip('\'\"') if vol_name not in self._volumes_list: return self._errors['CMMVC5753E'] vol = self._volumes_list[vol_name] if copy_id not in vol['copies']: return self._errors['CMMVC6353E'] del vol['copies'][copy_id] return ('', '') def _cmd_chvdisk(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol_name = kwargs['obj'].strip('\'\"') vol = self._volumes_list[vol_name] kwargs.pop('obj') params = ['name', 'warning', 'udid', 'autoexpand', 'easytier'] for key, value in kwargs.iteritems(): if key == 'easytier': vol['easy_tier'] = value continue if key == 'warning': vol['warning'] = value.rstrip('%') continue if key == 'name': vol['name'] = value del self._volumes_list[vol_name] self._volumes_list[value] = vol if key in params: vol[key] = value else: err = self._errors['CMMVC5709E'][1] % {'VALUE': key} return ('', err) return ('', '') def _cmd_movevdisk(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] vol_name = kwargs['obj'].strip('\'\"') vol = self._volumes_list[vol_name] if 'iogrp' not in kwargs: return self._errors['CMMVC5707E'] iogrp = kwargs['iogrp'] if iogrp.isdigit(): vol['IO_group_id'] = iogrp vol['IO_group_name'] = 'io_grp%s' % iogrp else: vol['IO_group_id'] = iogrp[6:] vol['IO_group_name'] = iogrp return ('', '') def _cmd_addvdiskaccess(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] return ('', '') def _cmd_rmvdiskaccess(self, **kwargs): if 'obj' not in kwargs: return self._errors['CMMVC5701E'] return ('', '') def _add_host_to_list(self, connector): host_info = {} host_info['id'] = self._find_unused_id(self._hosts_list) host_info['host_name'] = connector['host'] host_info['iscsi_names'] = [] host_info['wwpns'] = [] if 'initiator' in connector: host_info['iscsi_names'].append(connector['initiator']) if 'wwpns' in connector: host_info['wwpns'] = host_info['wwpns'] + connector['wwpns'] self._hosts_list[connector['host']] = host_info def _host_in_list(self, host_name): for k in self._hosts_list: if k.startswith(host_name): return k return None # The main function to run commands on the management simulator def execute_command(self, cmd, check_exit_code=True): try: kwargs = self._cmd_to_dict(cmd) except IndexError: return self._errors['CMMVC5707E'] command = kwargs['cmd'] del kwargs['cmd'] func = getattr(self, '_cmd_' + command) out, err = func(**kwargs) if (check_exit_code) and (len(err) != 0): raise processutils.ProcessExecutionError(exit_code=1, stdout=out, stderr=err, cmd=' '.join(cmd)) return (out, err) # After calling this function, the next call to the specified command will # result in in the error specified def error_injection(self, cmd, error): self._next_cmd_error[cmd] = error class StorwizeSVCFakeDriver(storwize_svc.StorwizeSVCDriver): def __init__(self, *args, **kwargs): super(StorwizeSVCFakeDriver, self).__init__(*args, **kwargs) def set_fake_storage(self, fake): self.fake_storage = fake def _run_ssh(self, cmd, check_exit_code=True, attempts=1): try: LOG.debug(_('Run CLI command: %s') % cmd) utils.check_ssh_injection(cmd) ret = self.fake_storage.execute_command(cmd, check_exit_code) (stdout, stderr) = ret LOG.debug(_('CLI output:\n stdout: %(stdout)s\n stderr: ' '%(stderr)s') % {'stdout': stdout, 'stderr': stderr}) except processutils.ProcessExecutionError as e: with excutils.save_and_reraise_exception(): LOG.debug(_('CLI Exception output:\n stdout: %(out)s\n ' 'stderr: %(err)s') % {'out': e.stdout, 'err': e.stderr}) return ret class StorwizeSVCDriverTestCase(test.TestCase): def setUp(self): super(StorwizeSVCDriverTestCase, self).setUp() self.USESIM = True if self.USESIM: self.driver = StorwizeSVCFakeDriver( configuration=conf.Configuration(None)) self._def_flags = {'san_ip': 'hostname', 'san_login': 'user', 'san_password': 'pass', 'storwize_svc_volpool_name': 'openstack', 'storwize_svc_flashcopy_timeout': 20, # Test ignore capitalization 'storwize_svc_connection_protocol': 'iScSi', 'storwize_svc_multipath_enabled': False} wwpns = [str(random.randint(0, 9999999999999999)).zfill(16), str(random.randint(0, 9999999999999999)).zfill(16)] initiator = 'test.initiator.%s' % str(random.randint(10000, 99999)) self._connector = {'ip': '1.234.56.78', 'host': 'storwize-svc-test', 'wwpns': wwpns, 'initiator': initiator} self.sim = StorwizeSVCManagementSimulator('openstack') self.driver.set_fake_storage(self.sim) else: self.driver = storwize_svc.StorwizeSVCDriver( configuration=conf.Configuration(None)) self._def_flags = {'san_ip': '1.111.11.11', 'san_login': 'user', 'san_password': 'password', 'storwize_svc_volpool_name': 'openstack', # Test ignore capitalization 'storwize_svc_connection_protocol': 'iScSi', 'storwize_svc_multipath_enabled': False, 'ssh_conn_timeout': 0} config_group = self.driver.configuration.config_group self.driver.configuration.set_override('rootwrap_config', '/etc/cinder/rootwrap.conf', config_group) self._connector = utils.brick_get_connector_properties() self._reset_flags() self.ctxt = context.get_admin_context() db_driver = self.driver.configuration.db_driver self.db = importutils.import_module(db_driver) self.driver.db = self.db self.driver.do_setup(None) self.driver.check_for_setup_error() self.sleeppatch = mock.patch('eventlet.greenthread.sleep') self.sleeppatch.start() self.driver._helpers.check_fcmapping_interval = 0 def tearDown(self): if self.USESIM: self.sleeppatch.stop() super(StorwizeSVCDriverTestCase, self).tearDown() def _set_flag(self, flag, value): group = self.driver.configuration.config_group self.driver.configuration.set_override(flag, value, group) def _reset_flags(self): self.driver.configuration.local_conf.reset() for k, v in self._def_flags.iteritems(): self._set_flag(k, v) def _assert_vol_exists(self, name, exists): is_vol_defined = self.driver._helpers.is_vdisk_defined(name) self.assertEqual(is_vol_defined, exists) def test_storwize_svc_connectivity(self): # Make sure we detect if the pool doesn't exist no_exist_pool = 'i-dont-exist-%s' % random.randint(10000, 99999) self._set_flag('storwize_svc_volpool_name', no_exist_pool) self.assertRaises(exception.InvalidInput, self.driver.do_setup, None) self._reset_flags() # Check the case where the user didn't configure IP addresses # as well as receiving unexpected results from the storage if self.USESIM: self.sim.error_injection('lsnodecanister', 'header_mismatch') self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, None) self.sim.error_injection('lsnodecanister', 'remove_field') self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, None) self.sim.error_injection('lsportip', 'header_mismatch') self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, None) self.sim.error_injection('lsportip', 'remove_field') self.assertRaises(exception.VolumeBackendAPIException, self.driver.do_setup, None) # Check with bad parameters self._set_flag('san_ip', '') self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('san_password', None) self._set_flag('san_private_key', None) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_vol_rsize', 101) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_vol_warning', 101) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_vol_grainsize', 42) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_flashcopy_timeout', 601) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_vol_compression', True) self._set_flag('storwize_svc_vol_rsize', -1) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_connection_protocol', 'foo') self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() self._set_flag('storwize_svc_vol_iogrp', 5) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() if self.USESIM: self.sim.error_injection('lslicense', 'no_compression') self._set_flag('storwize_svc_vol_compression', True) self.driver.do_setup(None) self.assertRaises(exception.InvalidInput, self.driver.check_for_setup_error) self._reset_flags() # Finally, check with good parameters self.driver.do_setup(None) def _generate_vol_info(self, vol_name, vol_id): rand_id = str(random.randint(10000, 99999)) if vol_name: return {'name': 'snap_volume%s' % rand_id, 'volume_name': vol_name, 'id': rand_id, 'volume_id': vol_id, 'volume_size': 10, 'mdisk_grp_name': 'openstack'} else: return {'name': 'test_volume%s' % rand_id, 'size': 10, 'id': '%s' % rand_id, 'volume_type_id': None, 'mdisk_grp_name': 'openstack'} def _create_volume(self, **kwargs): vol = testutils.create_volume(self.ctxt, **kwargs) self.driver.create_volume(vol) return vol def _delete_volume(self, volume): self.driver.delete_volume(volume) self.db.volume_destroy(self.ctxt, volume['id']) def _create_test_vol(self, opts): ctxt = testutils.get_test_admin_context() type_ref = volume_types.create(ctxt, 'testtype', opts) volume = self._generate_vol_info(None, None) type_id = type_ref['id'] type_ref = volume_types.get_volume_type(ctxt, type_id) volume['volume_type_id'] = type_id volume['volume_type'] = type_ref self.driver.create_volume(volume) attrs = self.driver._helpers.get_vdisk_attributes(volume['name']) self.driver.delete_volume(volume) volume_types.destroy(ctxt, type_ref['id']) return attrs def test_storwize_svc_snapshots(self): vol1 = self._create_volume() snap1 = self._generate_vol_info(vol1['name'], vol1['id']) # Test timeout and volume cleanup self._set_flag('storwize_svc_flashcopy_timeout', 1) self.assertRaises(exception.VolumeDriverException, self.driver.create_snapshot, snap1) self._assert_vol_exists(snap1['name'], False) self._reset_flags() # Test prestartfcmap failing with mock.patch.object(ssh.StorwizeSSH, 'prestartfcmap') as prestart: prestart.side_effect = exception.VolumeBackendAPIException self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, snap1) if self.USESIM: self.sim.error_injection('lsfcmap', 'speed_up') self.sim.error_injection('startfcmap', 'bad_id') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, snap1) self._assert_vol_exists(snap1['name'], False) self.sim.error_injection('prestartfcmap', 'bad_id') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, snap1) self._assert_vol_exists(snap1['name'], False) # Test successful snapshot self.driver.create_snapshot(snap1) self._assert_vol_exists(snap1['name'], True) # Try to create a snapshot from an non-existing volume - should fail snap_novol = self._generate_vol_info('undefined-vol', '12345') self.assertRaises(exception.VolumeDriverException, self.driver.create_snapshot, snap_novol) # We support deleting a volume that has snapshots, so delete the volume # first self.driver.delete_volume(vol1) self.driver.delete_snapshot(snap1) def test_storwize_svc_create_volfromsnap_clone(self): vol1 = self._create_volume() snap1 = self._generate_vol_info(vol1['name'], vol1['id']) self.driver.create_snapshot(snap1) vol2 = self._generate_vol_info(None, None) vol3 = self._generate_vol_info(None, None) # Try to create a volume from a non-existing snapshot snap_novol = self._generate_vol_info('undefined-vol', '12345') vol_novol = self._generate_vol_info(None, None) self.assertRaises(exception.VolumeDriverException, self.driver.create_volume_from_snapshot, vol_novol, snap_novol) # Fail the snapshot with mock.patch.object(ssh.StorwizeSSH, 'prestartfcmap') as prestart: prestart.side_effect = exception.VolumeBackendAPIException self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, vol2, snap1) self._assert_vol_exists(vol2['name'], False) # Try to create where source size != target size vol2['size'] += 1 self.assertRaises(exception.VolumeDriverException, self.driver.create_volume_from_snapshot, vol2, snap1) self._assert_vol_exists(vol2['name'], False) vol2['size'] -= 1 # Succeed if self.USESIM: self.sim.error_injection('lsfcmap', 'speed_up') self.driver.create_volume_from_snapshot(vol2, snap1) self._assert_vol_exists(vol2['name'], True) # Try to clone where source size != target size vol3['size'] += 1 self.assertRaises(exception.VolumeDriverException, self.driver.create_cloned_volume, vol3, vol2) self._assert_vol_exists(vol3['name'], False) vol3['size'] -= 1 if self.USESIM: self.sim.error_injection('lsfcmap', 'speed_up') self.driver.create_cloned_volume(vol3, vol2) self._assert_vol_exists(vol3['name'], True) # Delete in the 'opposite' order to make sure it works self.driver.delete_volume(vol3) self._assert_vol_exists(vol3['name'], False) self.driver.delete_volume(vol2) self._assert_vol_exists(vol2['name'], False) self.driver.delete_snapshot(snap1) self._assert_vol_exists(snap1['name'], False) self.driver.delete_volume(vol1) self._assert_vol_exists(vol1['name'], False) def test_storwize_svc_volumes(self): # Create a first volume volume = self._generate_vol_info(None, None) self.driver.create_volume(volume) self.driver.ensure_export(None, volume) # Do nothing self.driver.create_export(None, volume) self.driver.remove_export(None, volume) # Make sure volume attributes are as they should be attributes = self.driver._helpers.get_vdisk_attributes(volume['name']) attr_size = float(attributes['capacity']) / units.GiB # bytes to GB self.assertEqual(attr_size, float(volume['size'])) pool = self.driver.configuration.local_conf.storwize_svc_volpool_name self.assertEqual(attributes['mdisk_grp_name'], pool) # Try to create the volume again (should fail) self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, volume) # Try to delete a volume that doesn't exist (should not fail) vol_no_exist = {'name': 'i_dont_exist', 'id': '111111'} self.driver.delete_volume(vol_no_exist) # Ensure export for volume that doesn't exist (should not fail) self.driver.ensure_export(None, vol_no_exist) # Delete the volume self.driver.delete_volume(volume) def test_storwize_svc_volume_params(self): # Option test matrix # Option Value Covered by test # # rsize -1 1 # rsize 2 2,3 # warning 0 2 # warning 80 3 # autoexpand True 2 # autoexpand False 3 # grainsize 32 2 # grainsize 256 3 # compression True 4 # compression False 2,3 # easytier True 1,3 # easytier False 2 # iogrp 0 1 # iogrp 1 2 opts_list = [] chck_list = [] opts_list.append({'rsize': -1, 'easytier': True, 'iogrp': 0}) chck_list.append({'free_capacity': '0', 'easy_tier': 'on', 'IO_group_id': '0'}) test_iogrp = 1 if self.USESIM else 0 opts_list.append({'rsize': 2, 'compression': False, 'warning': 0, 'autoexpand': True, 'grainsize': 32, 'easytier': False, 'iogrp': test_iogrp}) chck_list.append({'-free_capacity': '0', 'compressed_copy': 'no', 'warning': '0', 'autoexpand': 'on', 'grainsize': '32', 'easy_tier': 'off', 'IO_group_id': str(test_iogrp)}) opts_list.append({'rsize': 2, 'compression': False, 'warning': 80, 'autoexpand': False, 'grainsize': 256, 'easytier': True}) chck_list.append({'-free_capacity': '0', 'compressed_copy': 'no', 'warning': '80', 'autoexpand': 'off', 'grainsize': '256', 'easy_tier': 'on'}) opts_list.append({'rsize': 2, 'compression': True}) chck_list.append({'-free_capacity': '0', 'compressed_copy': 'yes'}) for idx in range(len(opts_list)): attrs = self._create_test_vol(opts_list[idx]) for k, v in chck_list[idx].iteritems(): try: if k[0] == '-': k = k[1:] self.assertNotEqual(attrs[k], v) else: self.assertEqual(attrs[k], v) except processutils.ProcessExecutionError as e: if 'CMMVC7050E' not in e.stderr: raise def test_storwize_svc_unicode_host_and_volume_names(self): # We'll check with iSCSI only - nothing protocol-dependednt here self._set_flag('storwize_svc_connection_protocol', 'iSCSI') self.driver.do_setup(None) rand_id = random.randint(10000, 99999) volume1 = {'name': u'unicode1_volume%s' % rand_id, 'size': 2, 'id': 1, 'volume_type_id': None} self.driver.create_volume(volume1) self._assert_vol_exists(volume1['name'], True) self.assertRaises(exception.VolumeDriverException, self.driver._helpers.create_host, {'host': 12345}) # Add a host first to make life interesting (this host and # conn['host'] should be translated to the same prefix, and the # initiator should differentiate tmpconn1 = {'initiator': u'unicode:initiator1.%s' % rand_id, 'ip': '10.10.10.10', 'host': u'unicode.foo}.bar{.baz-%s' % rand_id} self.driver._helpers.create_host(tmpconn1) # Add a host with a different prefix tmpconn2 = {'initiator': u'unicode:initiator2.%s' % rand_id, 'ip': '10.10.10.11', 'host': u'unicode.hello.world-%s' % rand_id} self.driver._helpers.create_host(tmpconn2) conn = {'initiator': u'unicode:initiator3.%s' % rand_id, 'ip': '10.10.10.12', 'host': u'unicode.foo}.bar}.baz-%s' % rand_id} self.driver.initialize_connection(volume1, conn) host_name = self.driver._helpers.get_host_from_connector(conn) self.assertIsNotNone(host_name) self.driver.terminate_connection(volume1, conn) host_name = self.driver._helpers.get_host_from_connector(conn) self.assertIsNone(host_name) self.driver.delete_volume(volume1) # Clean up temporary hosts for tmpconn in [tmpconn1, tmpconn2]: host_name = self.driver._helpers.get_host_from_connector(tmpconn) self.assertIsNotNone(host_name) self.driver._helpers.delete_host(host_name) def test_storwize_svc_validate_connector(self): conn_neither = {'host': 'host'} conn_iscsi = {'host': 'host', 'initiator': 'foo'} conn_fc = {'host': 'host', 'wwpns': 'bar'} conn_both = {'host': 'host', 'initiator': 'foo', 'wwpns': 'bar'} self.driver._state['enabled_protocols'] = set(['iSCSI']) self.driver.validate_connector(conn_iscsi) self.driver.validate_connector(conn_both) self.assertRaises(exception.VolumeDriverException, self.driver.validate_connector, conn_fc) self.assertRaises(exception.VolumeDriverException, self.driver.validate_connector, conn_neither) self.driver._state['enabled_protocols'] = set(['FC']) self.driver.validate_connector(conn_fc) self.driver.validate_connector(conn_both) self.assertRaises(exception.VolumeDriverException, self.driver.validate_connector, conn_iscsi) self.assertRaises(exception.VolumeDriverException, self.driver.validate_connector, conn_neither) self.driver._state['enabled_protocols'] = set(['iSCSI', 'FC']) self.driver.validate_connector(conn_iscsi) self.driver.validate_connector(conn_fc) self.driver.validate_connector(conn_both) self.assertRaises(exception.VolumeDriverException, self.driver.validate_connector, conn_neither) def test_storwize_svc_host_maps(self): # Create two volumes to be used in mappings ctxt = context.get_admin_context() volume1 = self._generate_vol_info(None, None) self.driver.create_volume(volume1) volume2 = self._generate_vol_info(None, None) self.driver.create_volume(volume2) # Create volume types that we created types = {} for protocol in ['FC', 'iSCSI']: opts = {'storage_protocol': ' ' + protocol} types[protocol] = volume_types.create(ctxt, protocol, opts) expected = {'FC': {'driver_volume_type': 'fibre_channel', 'data': {'target_lun': 0, 'target_wwn': 'AABBCCDDEEFF0011', 'target_discovered': False}}, 'iSCSI': {'driver_volume_type': 'iscsi', 'data': {'target_discovered': False, 'target_iqn': 'iqn.1982-01.com.ibm:1234.sim.node1', 'target_portal': '1.234.56.78:3260', 'target_lun': 0, 'auth_method': 'CHAP'}}} for protocol in ['FC', 'iSCSI']: volume1['volume_type_id'] = types[protocol]['id'] volume2['volume_type_id'] = types[protocol]['id'] # Check case where no hosts exist if self.USESIM: ret = self.driver._helpers.get_host_from_connector( self._connector) self.assertIsNone(ret) # Make sure that the volumes have been created self._assert_vol_exists(volume1['name'], True) self._assert_vol_exists(volume2['name'], True) # Initialize connection from the first volume to a host ret = self.driver.initialize_connection(volume1, self._connector) self.assertEqual(ret['driver_volume_type'], expected[protocol]['driver_volume_type']) for k, v in expected[protocol]['data'].iteritems(): self.assertEqual(ret['data'][k], v) # Initialize again, should notice it and do nothing ret = self.driver.initialize_connection(volume1, self._connector) self.assertEqual(ret['driver_volume_type'], expected[protocol]['driver_volume_type']) for k, v in expected[protocol]['data'].iteritems(): self.assertEqual(ret['data'][k], v) # Try to delete the 1st volume (should fail because it is mapped) self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_volume, volume1) # Check bad output from lsfabric for the 2nd volume if protocol == 'FC' and self.USESIM: for error in ['remove_field', 'header_mismatch']: self.sim.error_injection('lsfabric', error) self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, volume2, self._connector) self.driver.terminate_connection(volume1, self._connector) if self.USESIM: ret = self.driver._helpers.get_host_from_connector( self._connector) self.assertIsNone(ret) # Check cases with no auth set for host if self.USESIM: for auth_enabled in [True, False]: for host_exists in ['yes-auth', 'yes-noauth', 'no']: self._set_flag('storwize_svc_iscsi_chap_enabled', auth_enabled) case = 'en' + str(auth_enabled) + 'ex' + str(host_exists) conn_na = {'initiator': 'test:init:%s' % random.randint(10000, 99999), 'ip': '11.11.11.11', 'host': 'host-%s' % case} if host_exists.startswith('yes'): self.sim._add_host_to_list(conn_na) if host_exists == 'yes-auth': kwargs = {'chapsecret': 'foo', 'obj': conn_na['host']} self.sim._cmd_chhost(**kwargs) volume1['volume_type_id'] = types['iSCSI']['id'] init_ret = self.driver.initialize_connection(volume1, conn_na) host_name = self.sim._host_in_list(conn_na['host']) chap_ret = self.driver._helpers.get_chap_secret_for_host( host_name) if auth_enabled or host_exists == 'yes-auth': self.assertIn('auth_password', init_ret['data']) self.assertIsNotNone(chap_ret) else: self.assertNotIn('auth_password', init_ret['data']) self.assertIsNone(chap_ret) self.driver.terminate_connection(volume1, conn_na) self._set_flag('storwize_svc_iscsi_chap_enabled', True) # Test no preferred node if self.USESIM: self.sim.error_injection('lsvdisk', 'no_pref_node') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, volume1, self._connector) # Initialize connection from the second volume to the host with no # preferred node set if in simulation mode, otherwise, just # another initialize connection. if self.USESIM: self.sim.error_injection('lsvdisk', 'blank_pref_node') self.driver.initialize_connection(volume2, self._connector) # Try to remove connection from host that doesn't exist (should fail) conn_no_exist = self._connector.copy() conn_no_exist['initiator'] = 'i_dont_exist' conn_no_exist['wwpns'] = ['0000000000000000'] self.assertRaises(exception.VolumeDriverException, self.driver.terminate_connection, volume1, conn_no_exist) # Try to remove connection from volume that isn't mapped (should print # message but NOT fail) unmapped_vol = self._generate_vol_info(None, None) self.driver.create_volume(unmapped_vol) self.driver.terminate_connection(unmapped_vol, self._connector) self.driver.delete_volume(unmapped_vol) # Remove the mapping from the 1st volume and delete it self.driver.terminate_connection(volume1, self._connector) self.driver.delete_volume(volume1) self._assert_vol_exists(volume1['name'], False) # Make sure our host still exists host_name = self.driver._helpers.get_host_from_connector( self._connector) self.assertIsNotNone(host_name) # Remove the mapping from the 2nd volume. The host should # be automatically removed because there are no more mappings. self.driver.terminate_connection(volume2, self._connector) # Check if we successfully terminate connections when the host is not # specified (see bug #1244257) fake_conn = {'ip': '127.0.0.1', 'initiator': 'iqn.fake'} self.driver.initialize_connection(volume2, self._connector) host_name = self.driver._helpers.get_host_from_connector( self._connector) self.assertIsNotNone(host_name) self.driver.terminate_connection(volume2, fake_conn) host_name = self.driver._helpers.get_host_from_connector( self._connector) self.assertIsNone(host_name) self.driver.delete_volume(volume2) self._assert_vol_exists(volume2['name'], False) # Delete volume types that we created for protocol in ['FC', 'iSCSI']: volume_types.destroy(ctxt, types[protocol]['id']) # Check if our host still exists (it should not) if self.USESIM: ret = self.driver._helpers.get_host_from_connector(self._connector) self.assertIsNone(ret) def test_storwize_svc_multi_host_maps(self): # We can't test connecting to multiple hosts from a single host when # using real storage if not self.USESIM: return # Create a volume to be used in mappings ctxt = context.get_admin_context() volume = self._generate_vol_info(None, None) self.driver.create_volume(volume) # Create volume types for protocols types = {} for protocol in ['FC', 'iSCSI']: opts = {'storage_protocol': ' ' + protocol} types[protocol] = volume_types.create(ctxt, protocol, opts) # Create a connector for the second 'host' wwpns = [str(random.randint(0, 9999999999999999)).zfill(16), str(random.randint(0, 9999999999999999)).zfill(16)] initiator = 'test.initiator.%s' % str(random.randint(10000, 99999)) conn2 = {'ip': '1.234.56.79', 'host': 'storwize-svc-test2', 'wwpns': wwpns, 'initiator': initiator} for protocol in ['FC', 'iSCSI']: volume['volume_type_id'] = types[protocol]['id'] # Make sure that the volume has been created self._assert_vol_exists(volume['name'], True) self.driver.initialize_connection(volume, self._connector) self._set_flag('storwize_svc_multihostmap_enabled', False) self.assertRaises(exception.CinderException, self.driver.initialize_connection, volume, conn2) self._set_flag('storwize_svc_multihostmap_enabled', True) self.driver.initialize_connection(volume, conn2) self.driver.terminate_connection(volume, conn2) self.driver.terminate_connection(volume, self._connector) def test_storwize_svc_delete_volume_snapshots(self): # Create a volume with two snapshots master = self._create_volume() # Fail creating a snapshot - will force delete the snapshot if self.USESIM and False: snap = self._generate_vol_info(master['name'], master['id']) self.sim.error_injection('startfcmap', 'bad_id') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, snap) self._assert_vol_exists(snap['name'], False) # Delete a snapshot snap = self._generate_vol_info(master['name'], master['id']) self.driver.create_snapshot(snap) self._assert_vol_exists(snap['name'], True) self.driver.delete_snapshot(snap) self._assert_vol_exists(snap['name'], False) # Delete a volume with snapshots (regular) snap = self._generate_vol_info(master['name'], master['id']) self.driver.create_snapshot(snap) self._assert_vol_exists(snap['name'], True) self.driver.delete_volume(master) self._assert_vol_exists(master['name'], False) # Fail create volume from snapshot - will force delete the volume if self.USESIM: volfs = self._generate_vol_info(None, None) self.sim.error_injection('startfcmap', 'bad_id') self.sim.error_injection('lsfcmap', 'speed_up') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, volfs, snap) self._assert_vol_exists(volfs['name'], False) # Create volume from snapshot and delete it volfs = self._generate_vol_info(None, None) if self.USESIM: self.sim.error_injection('lsfcmap', 'speed_up') self.driver.create_volume_from_snapshot(volfs, snap) self._assert_vol_exists(volfs['name'], True) self.driver.delete_volume(volfs) self._assert_vol_exists(volfs['name'], False) # Create volume from snapshot and delete the snapshot volfs = self._generate_vol_info(None, None) if self.USESIM: self.sim.error_injection('lsfcmap', 'speed_up') self.driver.create_volume_from_snapshot(volfs, snap) self.driver.delete_snapshot(snap) self._assert_vol_exists(snap['name'], False) # Fail create clone - will force delete the target volume if self.USESIM: clone = self._generate_vol_info(None, None) self.sim.error_injection('startfcmap', 'bad_id') self.sim.error_injection('lsfcmap', 'speed_up') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, clone, volfs) self._assert_vol_exists(clone['name'], False) # Create the clone, delete the source and target clone = self._generate_vol_info(None, None) if self.USESIM: self.sim.error_injection('lsfcmap', 'speed_up') self.driver.create_cloned_volume(clone, volfs) self._assert_vol_exists(clone['name'], True) self.driver.delete_volume(volfs) self._assert_vol_exists(volfs['name'], False) self.driver.delete_volume(clone) self._assert_vol_exists(clone['name'], False) # Note defined in python 2.6, so define here... def assertLessEqual(self, a, b, msg=None): if not a <= b: self.fail('%s not less than or equal to %s' % (repr(a), repr(b))) def test_storwize_svc_get_volume_stats(self): self._set_flag('reserved_percentage', 25) stats = self.driver.get_volume_stats() self.assertLessEqual(stats['free_capacity_gb'], stats['total_capacity_gb']) self.assertEqual(stats['reserved_percentage'], 25) pool = self.driver.configuration.local_conf.storwize_svc_volpool_name if self.USESIM: expected = 'storwize-svc-sim_' + pool self.assertEqual(stats['volume_backend_name'], expected) self.assertAlmostEqual(stats['total_capacity_gb'], 3328.0) self.assertAlmostEqual(stats['free_capacity_gb'], 3287.5) def test_storwize_svc_extend_volume(self): volume = self._create_volume() self.driver.extend_volume(volume, '13') attrs = self.driver._helpers.get_vdisk_attributes(volume['name']) vol_size = int(attrs['capacity']) / units.GiB self.assertAlmostEqual(vol_size, 13) snap = self._generate_vol_info(volume['name'], volume['id']) self.driver.create_snapshot(snap) self._assert_vol_exists(snap['name'], True) self.assertRaises(exception.VolumeDriverException, self.driver.extend_volume, volume, '16') self.driver.delete_snapshot(snap) self.driver.delete_volume(volume) def _check_loc_info(self, capabilities, expected): host = {'host': 'foo', 'capabilities': capabilities} vol = {'name': 'test', 'id': 1, 'size': 1} ctxt = context.get_admin_context() moved, model_update = self.driver.migrate_volume(ctxt, vol, host) self.assertEqual(moved, expected['moved']) self.assertEqual(model_update, expected['model_update']) def test_storwize_svc_migrate_bad_loc_info(self): self._check_loc_info({}, {'moved': False, 'model_update': None}) cap = {'location_info': 'foo'} self._check_loc_info(cap, {'moved': False, 'model_update': None}) cap = {'location_info': 'FooDriver:foo:bar'} self._check_loc_info(cap, {'moved': False, 'model_update': None}) cap = {'location_info': 'StorwizeSVCDriver:foo:bar'} self._check_loc_info(cap, {'moved': False, 'model_update': None}) def test_storwize_svc_volume_migrate(self): # Make sure we don't call migrate_volume_vdiskcopy self.driver.do_setup(None) loc = ('StorwizeSVCDriver:' + self.driver._state['system_id'] + ':openstack2') cap = {'location_info': loc, 'extent_size': '256'} host = {'host': 'foo', 'capabilities': cap} ctxt = context.get_admin_context() volume = self._create_volume() volume['volume_type_id'] = None self.driver.migrate_volume(ctxt, volume, host) self._delete_volume(volume) def test_storwize_svc_retype_no_copy(self): self.driver.do_setup(None) loc = ('StorwizeSVCDriver:' + self.driver._state['system_id'] + ':openstack') cap = {'location_info': loc, 'extent_size': '128'} self.driver._stats = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} ctxt = context.get_admin_context() key_specs_old = {'easytier': False, 'warning': 2, 'autoexpand': True} key_specs_new = {'easytier': True, 'warning': 5, 'autoexpand': False} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = self._generate_vol_info(None, None) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.create_volume(volume) self.driver.retype(ctxt, volume, new_type, diff, host) attrs = self.driver._helpers.get_vdisk_attributes(volume['name']) self.assertEqual('on', attrs['easy_tier'], 'Volume retype failed') self.assertEqual('5', attrs['warning'], 'Volume retype failed') self.assertEqual('off', attrs['autoexpand'], 'Volume retype failed') self.driver.delete_volume(volume) def test_storwize_svc_retype_only_change_iogrp(self): self.driver.do_setup(None) loc = ('StorwizeSVCDriver:' + self.driver._state['system_id'] + ':openstack') cap = {'location_info': loc, 'extent_size': '128'} self.driver._stats = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} ctxt = context.get_admin_context() key_specs_old = {'iogrp': 0} key_specs_new = {'iogrp': 1} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = self._generate_vol_info(None, None) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.create_volume(volume) self.driver.retype(ctxt, volume, new_type, diff, host) attrs = self.driver._helpers.get_vdisk_attributes(volume['name']) self.assertEqual('1', attrs['IO_group_id'], 'Volume retype ' 'failed') self.driver.delete_volume(volume) def test_storwize_svc_retype_need_copy(self): self.driver.do_setup(None) loc = ('StorwizeSVCDriver:' + self.driver._state['system_id'] + ':openstack') cap = {'location_info': loc, 'extent_size': '128'} self.driver._stats = {'location_info': loc} host = {'host': 'foo', 'capabilities': cap} ctxt = context.get_admin_context() key_specs_old = {'compression': True, 'iogrp': 0} key_specs_new = {'compression': False, 'iogrp': 1} old_type_ref = volume_types.create(ctxt, 'old', key_specs_old) new_type_ref = volume_types.create(ctxt, 'new', key_specs_new) diff, equal = volume_types.volume_types_diff(ctxt, old_type_ref['id'], new_type_ref['id']) volume = self._generate_vol_info(None, None) old_type = volume_types.get_volume_type(ctxt, old_type_ref['id']) volume['volume_type'] = old_type volume['host'] = host new_type = volume_types.get_volume_type(ctxt, new_type_ref['id']) self.driver.create_volume(volume) self.driver.retype(ctxt, volume, new_type, diff, host) attrs = self.driver._helpers.get_vdisk_attributes(volume['name']) self.assertEqual('no', attrs['compressed_copy']) self.assertEqual('1', attrs['IO_group_id'], 'Volume retype ' 'failed') self.driver.delete_volume(volume) def test_set_storage_code_level_success(self): res = self.driver._helpers.get_system_info() if self.USESIM: self.assertEqual((7, 2, 0, 0), res['code_level'], 'Get code level error') def test_storwize_vdisk_copy_ops(self): ctxt = testutils.get_test_admin_context() volume = self._create_volume() driver = self.driver dest_pool = self.driver.configuration.storwize_svc_volpool_name new_ops = driver._helpers.add_vdisk_copy(volume['name'], dest_pool, None, self.driver._state, self.driver.configuration) self.driver._add_vdisk_copy_op(ctxt, volume, new_ops) admin_metadata = self.db.volume_admin_metadata_get(ctxt, volume['id']) self.assertEqual(":".join(x for x in new_ops), admin_metadata['vdiskcopyops'], 'Storwize driver add vdisk copy error.') self.driver._check_volume_copy_ops() self.driver._rm_vdisk_copy_op(ctxt, volume, new_ops[0], new_ops[1]) admin_metadata = self.db.volume_admin_metadata_get(ctxt, volume['id']) self.assertEqual(None, admin_metadata.get('vdiskcopyops', None), 'Storwize driver delete vdisk copy error') self._delete_volume(volume) def test_storwize_initiator_multiple_preferred_nodes_matching(self): # Generate us a test volume volume = self._create_volume() # Fibre Channel volume type extra_spec = {'capabilities:storage_protocol': ' FC'} vol_type = volume_types.create(self.ctxt, 'FC', extra_spec) volume['volume_type_id'] = vol_type['id'] # Make sure that the volumes have been created self._assert_vol_exists(volume['name'], True) #Set up one WWPN that won't match and one that will. self.driver._state['storage_nodes']['1']['WWPN'] = ['123456789ABCDEF0', 'AABBCCDDEEFF0010'] wwpns = ['ff00000000000000', 'ff00000000000001'] connector = {'host': 'storwize-svc-test', 'wwpns': wwpns} with mock.patch.object(helpers.StorwizeHelpers, 'get_conn_fc_wwpns') as get_mappings: get_mappings.return_value = ['AABBCCDDEEFF0001', 'AABBCCDDEEFF0002', 'AABBCCDDEEFF0010', 'AABBCCDDEEFF0012'] # Initialize the connection init_ret = self.driver.initialize_connection(volume, connector) # Make sure we use the preferred WWPN. self.assertEqual(init_ret['data']['target_wwn'], 'AABBCCDDEEFF0010') def test_storwize_initiator_multiple_preferred_nodes_no_matching(self): # Generate us a test volume volume = self._create_volume() # Fibre Channel volume type extra_spec = {'capabilities:storage_protocol': ' FC'} vol_type = volume_types.create(self.ctxt, 'FC', extra_spec) volume['volume_type_id'] = vol_type['id'] # Make sure that the volumes have been created self._assert_vol_exists(volume['name'], True) #Set up WWPNs that will not match what is available. self.driver._state['storage_nodes']['1']['WWPN'] = ['123456789ABCDEF0', '123456789ABCDEF1'] wwpns = ['ff00000000000000', 'ff00000000000001'] connector = {'host': 'storwize-svc-test', 'wwpns': wwpns} with mock.patch.object(helpers.StorwizeHelpers, 'get_conn_fc_wwpns') as get_mappings: get_mappings.return_value = ['AABBCCDDEEFF0001', 'AABBCCDDEEFF0002', 'AABBCCDDEEFF0010', 'AABBCCDDEEFF0012'] # Initialize the connection init_ret = self.driver.initialize_connection(volume, connector) # Make sure we use the first available WWPN. self.assertEqual(init_ret['data']['target_wwn'], 'AABBCCDDEEFF0001') def test_storwize_initiator_single_preferred_node_matching(self): # Generate us a test volume volume = self._create_volume() # Fibre Channel volume type extra_spec = {'capabilities:storage_protocol': ' FC'} vol_type = volume_types.create(self.ctxt, 'FC', extra_spec) volume['volume_type_id'] = vol_type['id'] # Make sure that the volumes have been created self._assert_vol_exists(volume['name'], True) #Set up one WWPN. self.driver._state['storage_nodes']['1']['WWPN'] = ['AABBCCDDEEFF0012'] wwpns = ['ff00000000000000', 'ff00000000000001'] connector = {'host': 'storwize-svc-test', 'wwpns': wwpns} with mock.patch.object(helpers.StorwizeHelpers, 'get_conn_fc_wwpns') as get_mappings: get_mappings.return_value = ['AABBCCDDEEFF0001', 'AABBCCDDEEFF0002', 'AABBCCDDEEFF0010', 'AABBCCDDEEFF0012'] # Initialize the connection init_ret = self.driver.initialize_connection(volume, connector) # Make sure we use the preferred WWPN. self.assertEqual(init_ret['data']['target_wwn'], 'AABBCCDDEEFF0012') def test_storwize_terminate_connection(self): # create a FC volume volume_fc = self._create_volume() extra_spec = {'capabilities:storage_protocol': ' FC'} vol_type_fc = volume_types.create(self.ctxt, 'FC', extra_spec) volume_fc['volume_type_id'] = vol_type_fc['id'] # create a iSCSI volume volume_iSCSI = self._create_volume() extra_spec = {'capabilities:storage_protocol': ' iSCSI'} vol_type_iSCSI = volume_types.create(self.ctxt, 'iSCSI', extra_spec) volume_iSCSI['volume_type_id'] = vol_type_iSCSI['id'] connector = {'host': 'storwize-svc-host', 'wwnns': ['20000090fa17311e', '20000090fa17311f'], 'wwpns': ['ff00000000000000', 'ff00000000000001'], 'initiator': 'iqn.1993-08.org.debian:01:eac5ccc1aaa'} self.driver.initialize_connection(volume_fc, connector) self.driver.initialize_connection(volume_iSCSI, connector) self.driver.terminate_connection(volume_iSCSI, connector) self.driver.terminate_connection(volume_fc, connector) def test_storwize_initiator_target_map(self): # Generate us a test volume volume = self._create_volume() # FIbre Channel volume type extra_spec = {'capabilities:storage_protocol': ' FC'} vol_type = volume_types.create(self.ctxt, 'FC', extra_spec) volume['volume_type_id'] = vol_type['id'] # Make sure that the volumes have been created self._assert_vol_exists(volume['name'], True) wwpns = ['ff00000000000000', 'ff00000000000001'] connector = {'host': 'storwize-svc-test', 'wwpns': wwpns} # Initialise the connection init_ret = self.driver.initialize_connection(volume, connector) # Check that the initiator_target_map is as expected init_data = {'driver_volume_type': 'fibre_channel', 'data': {'initiator_target_map': {'ff00000000000000': ['AABBCCDDEEFF0011'], 'ff00000000000001': ['AABBCCDDEEFF0011']}, 'target_discovered': False, 'target_lun': 0, 'target_wwn': 'AABBCCDDEEFF0011', 'volume_id': volume['id'] } } self.assertEqual(init_data, init_ret) # Terminate connection term_ret = self.driver.terminate_connection(volume, connector) # Check that the initiator_target_map is as expected term_data = {'driver_volume_type': 'fibre_channel', 'data': {'initiator_target_map': {'ff00000000000000': ['AABBCCDDEEFF0011'], 'ff00000000000001': ['AABBCCDDEEFF0011']} } } self.assertEqual(term_data, term_ret) def _get_vdisk_uid(self, vdisk_name): """Return vdisk_UID for given vdisk. Given a vdisk by name, performs an lvdisk command that extracts the vdisk_UID parameter and returns it. Returns None if the specified vdisk does not exist. """ vdisk_properties, err = self.sim._cmd_lsvdisk(obj=vdisk_name, delim='!') # Iterate through each row until we find the vdisk_UID entry for row in vdisk_properties.split('\n'): words = row.split('!') if words[0] == 'vdisk_UID': return words[1] return None def _create_volume_and_return_uid(self, volume_name): """Creates a volume and returns its UID. Creates a volume with the specified name, and returns the UID that the Storwize controller allocated for it. We do this by executing a create_volume and then calling into the simulator to perform an lsvdisk directly. """ volume = self._generate_vol_info(None, None) self.driver.create_volume(volume) return (volume, self._get_vdisk_uid(volume['name'])) def test_manage_existing_bad_ref(self): """Error on manage with bad reference. This test case attempts to manage an existing volume but passes in a bad reference that the Storwize driver doesn't understand. We expect an exception to be raised. """ volume = self._generate_vol_info(None, None) ref = {} self.assertRaises(exception.ManageExistingInvalidReference, self.driver.manage_existing_get_size, volume, ref) def test_manage_existing_bad_uid(self): """Error when the specified UUID does not exist.""" volume = self._generate_vol_info(None, None) ref = {'vdisk_UID': 'bad_uid'} self.assertRaises(exception.ManageExistingInvalidReference, self.driver.manage_existing_get_size, volume, ref) pass def test_manage_existing_good_uid_not_mapped(self): """Tests managing a volume with no mappings. This test case attempts to manage an existing volume by UID, and we expect it to succeed. We verify that the backend volume was renamed to have the name of the Cinder volume that we asked for it to be associated with. """ # Create a volume as a way of getting a vdisk created, and find out the # UID of that vdisk. volume, uid = self._create_volume_and_return_uid('manage_test') # Descriptor of the Cinder volume that we want to own the vdisk # refrerenced by uid. new_volume = self._generate_vol_info(None, None) # Submit the request to manage it. ref = {'vdisk_UID': uid} size = self.driver.manage_existing_get_size(new_volume, ref) self.assertEqual(size, 10) self.driver.manage_existing(new_volume, ref) # Assert that there is a disk named after the new volume that has the # ID that we passed in, indicating that the disk has been renamed. uid_of_new_volume = self._get_vdisk_uid(new_volume['name']) self.assertEqual(uid, uid_of_new_volume) def test_manage_existing_good_uid_mapped(self): """Tests managing a mapped volume with no override. This test case attempts to manage an existing volume by UID, but the volume is mapped to a host, so we expect to see an exception raised. """ # Create a volume as a way of getting a vdisk created, and find out the # UUID of that vdisk. volume, uid = self._create_volume_and_return_uid('manage_test') # Map a host to the disk conn = {'initiator': u'unicode:initiator3', 'ip': '10.10.10.12', 'host': u'unicode.foo}.bar}.baz'} self.driver.initialize_connection(volume, conn) # Descriptor of the Cinder volume that we want to own the vdisk # refrerenced by uid. volume = self._generate_vol_info(None, None) ref = {'vdisk_UID': uid} # Attempt to manage this disk, and except an exception beause the # volume is already mapped. self.assertRaises(exception.ManageExistingInvalidReference, self.driver.manage_existing_get_size, volume, ref) def test_manage_existing_good_uid_mapped_with_override(self): """Tests managing a mapped volume with override. This test case attempts to manage an existing volume by UID, when it it already mapped to a host, but the ref specifies that this is OK. We verify that the backend volume was renamed to have the name of the Cinder volume that we asked for it to be associated with. """ # Create a volume as a way of getting a vdisk created, and find out the # UUID of that vdisk. volume, uid = self._create_volume_and_return_uid('manage_test') # Map a host to the disk conn = {'initiator': u'unicode:initiator3', 'ip': '10.10.10.12', 'host': u'unicode.foo}.bar}.baz'} self.driver.initialize_connection(volume, conn) # Descriptor of the Cinder volume that we want to own the vdisk # refrerenced by uid. new_volume = self._generate_vol_info(None, None) # Submit the request to manage it, specifying that it is OK to # manage a volume that is already attached. ref = {'vdisk_UID': uid, 'manage_if_in_use': True} size = self.driver.manage_existing_get_size(new_volume, ref) self.assertEqual(size, 10) self.driver.manage_existing(new_volume, ref) # Assert that there is a disk named after the new volume that has the # ID that we passed in, indicating that the disk has been renamed. uid_of_new_volume = self._get_vdisk_uid(new_volume['name']) self.assertEqual(uid, uid_of_new_volume) class CLIResponseTestCase(test.TestCase): def test_empty(self): self.assertEqual(0, len(ssh.CLIResponse(''))) self.assertEqual(0, len(ssh.CLIResponse(('', 'stderr')))) def test_header(self): raw = r'''id!name 1!node1 2!node2 ''' resp = ssh.CLIResponse(raw, with_header=True) self.assertEqual(2, len(resp)) self.assertEqual('1', resp[0]['id']) self.assertEqual('2', resp[1]['id']) def test_select(self): raw = r'''id!123 name!Bill name!Bill2 age!30 home address!s1 home address!s2 id! 7 name!John name!John2 age!40 home address!s3 home address!s4 ''' resp = ssh.CLIResponse(raw, with_header=False) self.assertEqual(list(resp.select('home address', 'name', 'home address')), [('s1', 'Bill', 's1'), ('s2', 'Bill2', 's2'), ('s3', 'John', 's3'), ('s4', 'John2', 's4')]) def test_lsnode_all(self): raw = r'''id!name!UPS_serial_number!WWNN!status 1!node1!!500507680200C744!online 2!node2!!500507680200C745!online ''' resp = ssh.CLIResponse(raw) self.assertEqual(2, len(resp)) self.assertEqual('1', resp[0]['id']) self.assertEqual('500507680200C744', resp[0]['WWNN']) self.assertEqual('2', resp[1]['id']) self.assertEqual('500507680200C745', resp[1]['WWNN']) def test_lsnode_single(self): raw = r'''id!1 port_id!500507680210C744 port_status!active port_speed!8Gb port_id!500507680240C744 port_status!inactive port_speed!8Gb ''' resp = ssh.CLIResponse(raw, with_header=False) self.assertEqual(1, len(resp)) self.assertEqual('1', resp[0]['id']) self.assertEqual(list(resp.select('port_id', 'port_status')), [('500507680210C744', 'active'), ('500507680240C744', 'inactive')]) class StorwizeHelpersTestCase(test.TestCase): def setUp(self): super(StorwizeHelpersTestCase, self).setUp() self.helpers = helpers.StorwizeHelpers(None) def test_compression_enabled(self): fake_license_without_keys = {} fake_license = { 'license_compression_enclosures': '1', 'license_compression_capacity': '1' } # Check when keys of return licenses do not contain # 'license_compression_enclosures' and 'license_compression_capacity' with mock.patch.object(ssh.StorwizeSSH, 'lslicense') as lslicense: lslicense.return_value = fake_license_without_keys self.assertFalse(self.helpers.compression_enabled()) with mock.patch.object(ssh.StorwizeSSH, 'lslicense') as lslicense: lslicense.return_value = fake_license self.assertTrue(self.helpers.compression_enabled()) cinder-2014.1.5/cinder/tests/test_quota.py0000664000567000056700000017576212540642606021547 0ustar jenkinsjenkins00000000000000 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. import datetime import mock from oslo.config import cfg from cinder import context from cinder import db from cinder.db.sqlalchemy import api as sqa_api from cinder.db.sqlalchemy import models as sqa_models from cinder import exception from cinder.openstack.common import timeutils from cinder import quota from cinder import test import cinder.tests.image.fake from cinder import volume CONF = cfg.CONF class QuotaIntegrationTestCase(test.TestCase): def setUp(self): super(QuotaIntegrationTestCase, self).setUp() self.volume_type_name = CONF.default_volume_type self.volume_type = db.volume_type_create( context.get_admin_context(), dict(name=self.volume_type_name)) self.flags(quota_volumes=2, quota_snapshots=2, quota_gigabytes=20) self.user_id = 'admin' self.project_id = 'admin' self.context = context.RequestContext(self.user_id, self.project_id, is_admin=True) # Destroy the 'default' quota_class in the database to avoid # conflicts with the test cases here that are setting up their own # defaults. db.quota_class_destroy_all_by_name(self.context, 'default') def tearDown(self): db.volume_type_destroy(context.get_admin_context(), self.volume_type['id']) super(QuotaIntegrationTestCase, self).tearDown() cinder.tests.image.fake.FakeImageService_reset() def _create_volume(self, size=1): """Create a test volume.""" vol = {} vol['user_id'] = self.user_id vol['project_id'] = self.project_id vol['size'] = size vol['status'] = 'available' vol['volume_type_id'] = self.volume_type['id'] return db.volume_create(self.context, vol) def _create_snapshot(self, volume): snapshot = {} snapshot['user_id'] = self.user_id snapshot['project_id'] = self.project_id snapshot['volume_id'] = volume['id'] snapshot['volume_size'] = volume['size'] snapshot['status'] = 'available' return db.snapshot_create(self.context, snapshot) def test_too_many_volumes(self): volume_ids = [] for i in range(CONF.quota_volumes): vol_ref = self._create_volume() volume_ids.append(vol_ref['id']) self.assertRaises(exception.VolumeLimitExceeded, volume.API().create, self.context, 1, '', '', volume_type=self.volume_type) for volume_id in volume_ids: db.volume_destroy(self.context, volume_id) def test_too_many_volumes_of_type(self): resource = 'volumes_%s' % self.volume_type_name db.quota_class_create(self.context, 'default', resource, 1) flag_args = { 'quota_volumes': 2000, 'quota_gigabytes': 2000 } self.flags(**flag_args) vol_ref = self._create_volume() self.assertRaises(exception.VolumeLimitExceeded, volume.API().create, self.context, 1, '', '', volume_type=self.volume_type) db.volume_destroy(self.context, vol_ref['id']) def test_too_many_snapshots_of_type(self): resource = 'snapshots_%s' % self.volume_type_name db.quota_class_create(self.context, 'default', resource, 1) flag_args = { 'quota_volumes': 2000, 'quota_gigabytes': 2000, } self.flags(**flag_args) vol_ref = self._create_volume() snap_ref = self._create_snapshot(vol_ref) self.assertRaises(exception.SnapshotLimitExceeded, volume.API().create_snapshot, self.context, vol_ref, '', '') db.snapshot_destroy(self.context, snap_ref['id']) db.volume_destroy(self.context, vol_ref['id']) def test_too_many_gigabytes(self): volume_ids = [] vol_ref = self._create_volume(size=20) volume_ids.append(vol_ref['id']) self.assertRaises(exception.VolumeSizeExceedsAvailableQuota, volume.API().create, self.context, 1, '', '', volume_type=self.volume_type) for volume_id in volume_ids: db.volume_destroy(self.context, volume_id) def test_too_many_combined_gigabytes(self): vol_ref = self._create_volume(size=10) snap_ref = self._create_snapshot(vol_ref) self.assertRaises(exception.QuotaError, volume.API().create_snapshot, self.context, vol_ref, '', '') usages = db.quota_usage_get_all_by_project(self.context, self.project_id) self.assertEqual(usages['gigabytes']['in_use'], 20) db.snapshot_destroy(self.context, snap_ref['id']) db.volume_destroy(self.context, vol_ref['id']) def test_no_snapshot_gb_quota_flag(self): self.flags(quota_volumes=2, quota_snapshots=2, quota_gigabytes=20, no_snapshot_gb_quota=True) vol_ref = self._create_volume(size=10) snap_ref = self._create_snapshot(vol_ref) snap_ref2 = volume.API().create_snapshot(self.context, vol_ref, '', '') # Make sure no reservation was created for snapshot gigabytes. reservations = db.reservation_get_all_by_project(self.context, self.project_id) self.assertIsNone(reservations.get('gigabytes')) # Make sure the snapshot volume_size isn't included in usage. vol_ref2 = volume.API().create(self.context, 10, '', '') usages = db.quota_usage_get_all_by_project(self.context, self.project_id) self.assertEqual(usages['gigabytes']['in_use'], 20) db.snapshot_destroy(self.context, snap_ref['id']) db.snapshot_destroy(self.context, snap_ref2['id']) db.volume_destroy(self.context, vol_ref['id']) db.volume_destroy(self.context, vol_ref2['id']) def test_too_many_gigabytes_of_type(self): resource = 'gigabytes_%s' % self.volume_type_name db.quota_class_create(self.context, 'default', resource, 10) flag_args = { 'quota_volumes': 2000, 'quota_gigabytes': 2000, } self.flags(**flag_args) vol_ref = self._create_volume(size=10) self.assertRaises(exception.VolumeSizeExceedsAvailableQuota, volume.API().create, self.context, 1, '', '', volume_type=self.volume_type) db.volume_destroy(self.context, vol_ref['id']) class FakeContext(object): def __init__(self, project_id, quota_class): self.is_admin = False self.user_id = 'fake_user' self.project_id = project_id self.quota_class = quota_class def elevated(self): elevated = self.__class__(self.project_id, self.quota_class) elevated.is_admin = True return elevated class FakeDriver(object): def __init__(self, by_project=None, by_class=None, reservations=None): self.called = [] self.by_project = by_project or {} self.by_class = by_class or {} self.reservations = reservations or [] def get_by_project(self, context, project_id, resource): self.called.append(('get_by_project', context, project_id, resource)) try: return self.by_project[project_id][resource] except KeyError: raise exception.ProjectQuotaNotFound(project_id=project_id) def get_by_class(self, context, quota_class, resource): self.called.append(('get_by_class', context, quota_class, resource)) try: return self.by_class[quota_class][resource] except KeyError: raise exception.QuotaClassNotFound(class_name=quota_class) def get_default(self, context, resource): self.called.append(('get_default', context, resource)) return resource.default def get_defaults(self, context, resources): self.called.append(('get_defaults', context, resources)) return resources def get_class_quotas(self, context, resources, quota_class, defaults=True): self.called.append(('get_class_quotas', context, resources, quota_class, defaults)) return resources def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=True): self.called.append(('get_project_quotas', context, resources, project_id, quota_class, defaults, usages)) return resources def limit_check(self, context, resources, values, project_id=None): self.called.append(('limit_check', context, resources, values, project_id)) def reserve(self, context, resources, deltas, expire=None, project_id=None): self.called.append(('reserve', context, resources, deltas, expire, project_id)) return self.reservations def commit(self, context, reservations, project_id=None): self.called.append(('commit', context, reservations, project_id)) def rollback(self, context, reservations, project_id=None): self.called.append(('rollback', context, reservations, project_id)) def destroy_all_by_project(self, context, project_id): self.called.append(('destroy_all_by_project', context, project_id)) def expire(self, context): self.called.append(('expire', context)) class BaseResourceTestCase(test.TestCase): def test_no_flag(self): resource = quota.BaseResource('test_resource') self.assertEqual(resource.name, 'test_resource') self.assertIsNone(resource.flag) self.assertEqual(resource.default, -1) def test_with_flag(self): # We know this flag exists, so use it... self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') self.assertEqual(resource.name, 'test_resource') self.assertEqual(resource.flag, 'quota_volumes') self.assertEqual(resource.default, 10) def test_with_flag_no_quota(self): self.flags(quota_volumes=-1) resource = quota.BaseResource('test_resource', 'quota_volumes') self.assertEqual(resource.name, 'test_resource') self.assertEqual(resource.flag, 'quota_volumes') self.assertEqual(resource.default, -1) def test_quota_no_project_no_class(self): self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') driver = FakeDriver() context = FakeContext(None, None) quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 10) def test_quota_with_project_no_class(self): self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') driver = FakeDriver( by_project=dict( test_project=dict(test_resource=15), )) context = FakeContext('test_project', None) quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 15) def test_quota_no_project_with_class(self): self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') driver = FakeDriver( by_class=dict( test_class=dict(test_resource=20), )) context = FakeContext(None, 'test_class') quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 20) def test_quota_with_project_with_class(self): self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') driver = FakeDriver(by_project=dict( test_project=dict(test_resource=15), ), by_class=dict(test_class=dict(test_resource=20), )) context = FakeContext('test_project', 'test_class') quota_value = resource.quota(driver, context) self.assertEqual(quota_value, 15) def test_quota_override_project_with_class(self): self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') driver = FakeDriver(by_project=dict( test_project=dict(test_resource=15), override_project=dict(test_resource=20), )) context = FakeContext('test_project', 'test_class') quota_value = resource.quota(driver, context, project_id='override_project') self.assertEqual(quota_value, 20) def test_quota_with_project_override_class(self): self.flags(quota_volumes=10) resource = quota.BaseResource('test_resource', 'quota_volumes') driver = FakeDriver(by_class=dict( test_class=dict(test_resource=15), override_class=dict(test_resource=20), )) context = FakeContext('test_project', 'test_class') quota_value = resource.quota(driver, context, quota_class='override_class') self.assertEqual(quota_value, 20) class VolumeTypeResourceTestCase(test.TestCase): def test_name_and_flag(self): volume_type_name = 'foo' volume = {'name': volume_type_name, 'id': 'myid'} resource = quota.VolumeTypeResource('volumes', volume) self.assertEqual(resource.name, 'volumes_%s' % volume_type_name) self.assertIsNone(resource.flag) self.assertEqual(resource.default, -1) class QuotaEngineTestCase(test.TestCase): def test_init(self): quota_obj = quota.QuotaEngine() self.assertEqual(quota_obj.resources, {}) self.assertIsInstance(quota_obj._driver, quota.DbQuotaDriver) def test_init_override_string(self): quota_obj = quota.QuotaEngine( quota_driver_class='cinder.tests.test_quota.FakeDriver') self.assertEqual(quota_obj.resources, {}) self.assertIsInstance(quota_obj._driver, FakeDriver) def test_init_override_obj(self): quota_obj = quota.QuotaEngine(quota_driver_class=FakeDriver) self.assertEqual(quota_obj.resources, {}) self.assertEqual(quota_obj._driver, FakeDriver) def test_register_resource(self): quota_obj = quota.QuotaEngine() resource = quota.AbsoluteResource('test_resource') quota_obj.register_resource(resource) self.assertEqual(quota_obj.resources, dict(test_resource=resource)) def test_register_resources(self): quota_obj = quota.QuotaEngine() resources = [ quota.AbsoluteResource('test_resource1'), quota.AbsoluteResource('test_resource2'), quota.AbsoluteResource('test_resource3'), ] quota_obj.register_resources(resources) self.assertEqual(quota_obj.resources, dict(test_resource1=resources[0], test_resource2=resources[1], test_resource3=resources[2], )) def test_get_by_project(self): context = FakeContext('test_project', 'test_class') driver = FakeDriver( by_project=dict( test_project=dict(test_resource=42))) quota_obj = quota.QuotaEngine(quota_driver_class=driver) result = quota_obj.get_by_project(context, 'test_project', 'test_resource') self.assertEqual(driver.called, [('get_by_project', context, 'test_project', 'test_resource'), ]) self.assertEqual(result, 42) def test_get_by_class(self): context = FakeContext('test_project', 'test_class') driver = FakeDriver( by_class=dict( test_class=dict(test_resource=42))) quota_obj = quota.QuotaEngine(quota_driver_class=driver) result = quota_obj.get_by_class(context, 'test_class', 'test_resource') self.assertEqual(driver.called, [('get_by_class', context, 'test_class', 'test_resource'), ]) self.assertEqual(result, 42) def _make_quota_obj(self, driver): quota_obj = quota.QuotaEngine(quota_driver_class=driver) resources = [ quota.AbsoluteResource('test_resource4'), quota.AbsoluteResource('test_resource3'), quota.AbsoluteResource('test_resource2'), quota.AbsoluteResource('test_resource1'), ] quota_obj.register_resources(resources) return quota_obj def test_get_defaults(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result = quota_obj.get_defaults(context) self.assertEqual(driver.called, [('get_defaults', context, quota_obj.resources), ]) self.assertEqual(result, quota_obj.resources) def test_get_class_quotas(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result1 = quota_obj.get_class_quotas(context, 'test_class') result2 = quota_obj.get_class_quotas(context, 'test_class', False) self.assertEqual(driver.called, [ ('get_class_quotas', context, quota_obj.resources, 'test_class', True), ('get_class_quotas', context, quota_obj.resources, 'test_class', False), ]) self.assertEqual(result1, quota_obj.resources) self.assertEqual(result2, quota_obj.resources) def test_get_project_quotas(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) result1 = quota_obj.get_project_quotas(context, 'test_project') result2 = quota_obj.get_project_quotas(context, 'test_project', quota_class='test_class', defaults=False, usages=False) self.assertEqual(driver.called, [ ('get_project_quotas', context, quota_obj.resources, 'test_project', None, True, True), ('get_project_quotas', context, quota_obj.resources, 'test_project', 'test_class', False, False), ]) self.assertEqual(result1, quota_obj.resources) self.assertEqual(result2, quota_obj.resources) def test_count_no_resource(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) self.assertRaises(exception.QuotaResourceUnknown, quota_obj.count, context, 'test_resource5', True, foo='bar') def test_count_wrong_resource(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) self.assertRaises(exception.QuotaResourceUnknown, quota_obj.count, context, 'test_resource1', True, foo='bar') def test_count(self): def fake_count(context, *args, **kwargs): self.assertEqual(args, (True,)) self.assertEqual(kwargs, dict(foo='bar')) return 5 context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.register_resource(quota.CountableResource('test_resource5', fake_count)) result = quota_obj.count(context, 'test_resource5', True, foo='bar') self.assertEqual(result, 5) def test_limit_check(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.limit_check(context, test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1) self.assertEqual(driver.called, [ ('limit_check', context, quota_obj.resources, dict( test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1,), None), ]) def test_reserve(self): context = FakeContext(None, None) driver = FakeDriver(reservations=['resv-01', 'resv-02', 'resv-03', 'resv-04', ]) quota_obj = self._make_quota_obj(driver) result1 = quota_obj.reserve(context, test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1) result2 = quota_obj.reserve(context, expire=3600, test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4) result3 = quota_obj.reserve(context, project_id='fake_project', test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4) self.assertEqual(driver.called, [ ('reserve', context, quota_obj.resources, dict( test_resource1=4, test_resource2=3, test_resource3=2, test_resource4=1, ), None, None), ('reserve', context, quota_obj.resources, dict( test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4, ), 3600, None), ('reserve', context, quota_obj.resources, dict( test_resource1=1, test_resource2=2, test_resource3=3, test_resource4=4, ), None, 'fake_project'), ]) self.assertEqual(result1, ['resv-01', 'resv-02', 'resv-03', 'resv-04', ]) self.assertEqual(result2, ['resv-01', 'resv-02', 'resv-03', 'resv-04', ]) self.assertEqual(result3, ['resv-01', 'resv-02', 'resv-03', 'resv-04', ]) def test_commit(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.commit(context, ['resv-01', 'resv-02', 'resv-03']) self.assertEqual(driver.called, [('commit', context, ['resv-01', 'resv-02', 'resv-03'], None), ]) def test_rollback(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.rollback(context, ['resv-01', 'resv-02', 'resv-03']) self.assertEqual(driver.called, [('rollback', context, ['resv-01', 'resv-02', 'resv-03'], None), ]) def test_destroy_all_by_project(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.destroy_all_by_project(context, 'test_project') self.assertEqual(driver.called, [('destroy_all_by_project', context, 'test_project'), ]) def test_expire(self): context = FakeContext(None, None) driver = FakeDriver() quota_obj = self._make_quota_obj(driver) quota_obj.expire(context) self.assertEqual(driver.called, [('expire', context), ]) def test_resource_names(self): quota_obj = self._make_quota_obj(None) self.assertEqual(quota_obj.resource_names, ['test_resource1', 'test_resource2', 'test_resource3', 'test_resource4']) class VolumeTypeQuotaEngineTestCase(test.TestCase): def test_default_resources(self): def fake_vtga(context, inactive=False, filters=None): return {} self.stubs.Set(db, 'volume_type_get_all', fake_vtga) engine = quota.VolumeTypeQuotaEngine() self.assertEqual(engine.resource_names, ['gigabytes', 'snapshots', 'volumes']) def test_volume_type_resources(self): ctx = context.RequestContext('admin', 'admin', is_admin=True) vtype = db.volume_type_create(ctx, {'name': 'type1'}) vtype2 = db.volume_type_create(ctx, {'name': 'type_2'}) def fake_vtga(context, inactive=False, filters=None): return { 'type1': { 'id': vtype['id'], 'name': 'type1', 'extra_specs': {}, }, 'type_2': { 'id': vtype['id'], 'name': 'type_2', 'extra_specs': {}, }, } self.stubs.Set(db, 'volume_type_get_all', fake_vtga) engine = quota.VolumeTypeQuotaEngine() self.assertEqual(engine.resource_names, ['gigabytes', 'gigabytes_type1', 'gigabytes_type_2', 'snapshots', 'snapshots_type1', 'snapshots_type_2', 'volumes', 'volumes_type1', 'volumes_type_2']) db.volume_type_destroy(ctx, vtype['id']) db.volume_type_destroy(ctx, vtype2['id']) class DbQuotaDriverTestCase(test.TestCase): def setUp(self): super(DbQuotaDriverTestCase, self).setUp() self.flags(quota_volumes=10, quota_snapshots=10, quota_gigabytes=1000, reservation_expire=86400, until_refresh=0, max_age=0, ) self.driver = quota.DbQuotaDriver() self.calls = [] patcher = mock.patch.object(timeutils, 'utcnow') self.addCleanup(patcher.stop) self.mock_utcnow = patcher.start() self.mock_utcnow.return_value = datetime.datetime.utcnow() def test_get_defaults(self): # Use our pre-defined resources self._stub_quota_class_get_default() self._stub_volume_type_get_all() result = self.driver.get_defaults(None, quota.QUOTAS.resources) self.assertEqual( result, dict( volumes=10, snapshots=10, gigabytes=1000, )) def _stub_quota_class_get_default(self): # Stub out quota_class_get_default def fake_qcgd(context): self.calls.append('quota_class_get_default') return dict(volumes=10, snapshots=10, gigabytes=1000,) self.stubs.Set(db, 'quota_class_get_default', fake_qcgd) def _stub_volume_type_get_all(self): def fake_vtga(context, inactive=False, filters=None): return {} self.stubs.Set(db, 'volume_type_get_all', fake_vtga) def _stub_quota_class_get_all_by_name(self): # Stub out quota_class_get_all_by_name def fake_qcgabn(context, quota_class): self.calls.append('quota_class_get_all_by_name') self.assertEqual(quota_class, 'test_class') return dict(gigabytes=500, volumes=10, snapshots=10, ) self.stubs.Set(db, 'quota_class_get_all_by_name', fake_qcgabn) def test_get_class_quotas(self): self._stub_quota_class_get_all_by_name() self._stub_volume_type_get_all() result = self.driver.get_class_quotas(None, quota.QUOTAS.resources, 'test_class') self.assertEqual(self.calls, ['quota_class_get_all_by_name']) self.assertEqual(result, dict(volumes=10, gigabytes=500, snapshots=10)) def test_get_class_quotas_no_defaults(self): self._stub_quota_class_get_all_by_name() result = self.driver.get_class_quotas(None, quota.QUOTAS.resources, 'test_class', False) self.assertEqual(self.calls, ['quota_class_get_all_by_name']) self.assertEqual(result, dict(volumes=10, gigabytes=500, snapshots=10)) def _stub_get_by_project(self): def fake_qgabp(context, project_id): self.calls.append('quota_get_all_by_project') self.assertEqual(project_id, 'test_project') return dict(volumes=10, gigabytes=50, reserved=0, snapshots=10) def fake_qugabp(context, project_id): self.calls.append('quota_usage_get_all_by_project') self.assertEqual(project_id, 'test_project') return dict(volumes=dict(in_use=2, reserved=0), snapshots=dict(in_use=2, reserved=0), gigabytes=dict(in_use=10, reserved=0), ) self.stubs.Set(db, 'quota_get_all_by_project', fake_qgabp) self.stubs.Set(db, 'quota_usage_get_all_by_project', fake_qugabp) self._stub_quota_class_get_all_by_name() self._stub_quota_class_get_default() def test_get_project_quotas(self): self._stub_get_by_project() self._stub_volume_type_get_all() result = self.driver.get_project_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, 'test_project') self.assertEqual(self.calls, ['quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict(volumes=dict(limit=10, in_use=2, reserved=0, ), snapshots=dict(limit=10, in_use=2, reserved=0, ), gigabytes=dict(limit=50, in_use=10, reserved=0, ), )) def test_get_project_quotas_alt_context_no_class(self): self._stub_get_by_project() self._stub_volume_type_get_all() result = self.driver.get_project_quotas( FakeContext('other_project', 'other_class'), quota.QUOTAS.resources, 'test_project') self.assertEqual(self.calls, ['quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_default', ]) self.assertEqual(result, dict(volumes=dict(limit=10, in_use=2, reserved=0, ), snapshots=dict(limit=10, in_use=2, reserved=0, ), gigabytes=dict(limit=50, in_use=10, reserved=0, ), )) def test_get_project_quotas_alt_context_with_class(self): self._stub_get_by_project() self._stub_volume_type_get_all() result = self.driver.get_project_quotas( FakeContext('other_project', 'other_class'), quota.QUOTAS.resources, 'test_project', quota_class='test_class') self.assertEqual(self.calls, ['quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict(volumes=dict(limit=10, in_use=2, reserved=0, ), snapshots=dict(limit=10, in_use=2, reserved=0, ), gigabytes=dict(limit=50, in_use=10, reserved=0, ), )) def test_get_project_quotas_no_defaults(self): self._stub_get_by_project() self._stub_volume_type_get_all() result = self.driver.get_project_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, 'test_project', defaults=False) self.assertEqual(self.calls, ['quota_get_all_by_project', 'quota_usage_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict(gigabytes=dict(limit=50, in_use=10, reserved=0, ), snapshots=dict(limit=10, in_use=2, reserved=0, ), volumes=dict(limit=10, in_use=2, reserved=0, ), )) def test_get_project_quotas_no_usages(self): self._stub_get_by_project() self._stub_volume_type_get_all() result = self.driver.get_project_quotas( FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, 'test_project', usages=False) self.assertEqual(self.calls, ['quota_get_all_by_project', 'quota_class_get_all_by_name', 'quota_class_get_default', ]) self.assertEqual(result, dict(volumes=dict(limit=10, ), snapshots=dict(limit=10, ), gigabytes=dict(limit=50, ), )) def _stub_get_project_quotas(self): def fake_get_project_quotas(context, resources, project_id, quota_class=None, defaults=True, usages=True): self.calls.append('get_project_quotas') return dict((k, dict(limit=v.default)) for k, v in resources.items()) self.stubs.Set(self.driver, 'get_project_quotas', fake_get_project_quotas) def test_get_quotas_has_sync_unknown(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS.resources, ['unknown'], True) self.assertEqual(self.calls, []) def test_get_quotas_no_sync_unknown(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS.resources, ['unknown'], False) self.assertEqual(self.calls, []) def test_get_quotas_has_sync_no_sync_resource(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS.resources, ['metadata_items'], True) self.assertEqual(self.calls, []) def test_get_quotas_no_sync_has_sync_resource(self): self._stub_get_project_quotas() self.assertRaises(exception.QuotaResourceUnknown, self.driver._get_quotas, None, quota.QUOTAS.resources, ['volumes'], False) self.assertEqual(self.calls, []) def test_get_quotas_has_sync(self): self._stub_get_project_quotas() result = self.driver._get_quotas(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, ['volumes', 'gigabytes'], True) self.assertEqual(self.calls, ['get_project_quotas']) self.assertEqual(result, dict(volumes=10, gigabytes=1000, )) def _stub_quota_reserve(self): def fake_quota_reserve(context, resources, quotas, deltas, expire, until_refresh, max_age, project_id=None): self.calls.append(('quota_reserve', expire, until_refresh, max_age)) return ['resv-1', 'resv-2', 'resv-3'] self.stubs.Set(db, 'quota_reserve', fake_quota_reserve) def test_reserve_bad_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() self.assertRaises(exception.InvalidReservationExpiration, self.driver.reserve, FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2), expire='invalid') self.assertEqual(self.calls, []) def test_reserve_default_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2)) expire = timeutils.utcnow() + datetime.timedelta(seconds=86400) self.assertEqual(self.calls, ['get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_int_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2), expire=3600) expire = timeutils.utcnow() + datetime.timedelta(seconds=3600) self.assertEqual(self.calls, ['get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_timedelta_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() expire_delta = datetime.timedelta(seconds=60) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2), expire=expire_delta) expire = timeutils.utcnow() + expire_delta self.assertEqual(self.calls, ['get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_datetime_expire(self): self._stub_get_project_quotas() self._stub_quota_reserve() expire = timeutils.utcnow() + datetime.timedelta(seconds=120) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2), expire=expire) self.assertEqual(self.calls, ['get_project_quotas', ('quota_reserve', expire, 0, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_until_refresh(self): self._stub_get_project_quotas() self._stub_quota_reserve() self.flags(until_refresh=500) expire = timeutils.utcnow() + datetime.timedelta(seconds=120) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2), expire=expire) self.assertEqual(self.calls, ['get_project_quotas', ('quota_reserve', expire, 500, 0), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def test_reserve_max_age(self): self._stub_get_project_quotas() self._stub_quota_reserve() self.flags(max_age=86400) expire = timeutils.utcnow() + datetime.timedelta(seconds=120) result = self.driver.reserve(FakeContext('test_project', 'test_class'), quota.QUOTAS.resources, dict(volumes=2), expire=expire) self.assertEqual(self.calls, ['get_project_quotas', ('quota_reserve', expire, 0, 86400), ]) self.assertEqual(result, ['resv-1', 'resv-2', 'resv-3']) def _stub_quota_destroy_all_by_project(self): def fake_quota_destroy_all_by_project(context, project_id): self.calls.append(('quota_destroy_all_by_project', project_id)) return None self.stubs.Set(sqa_api, 'quota_destroy_all_by_project', fake_quota_destroy_all_by_project) def test_destroy_by_project(self): self._stub_quota_destroy_all_by_project() self.driver.destroy_all_by_project(FakeContext('test_project', 'test_class'), 'test_project') self.assertEqual(self.calls, [('quota_destroy_all_by_project', ('test_project')), ]) class FakeSession(object): def begin(self): return self def __enter__(self): return self def __exit__(self, exc_type, exc_value, exc_traceback): return False class FakeUsage(sqa_models.QuotaUsage): def save(self, *args, **kwargs): pass class QuotaReserveSqlAlchemyTestCase(test.TestCase): # cinder.db.sqlalchemy.api.quota_reserve is so complex it needs its # own test case, and since it's a quota manipulator, this is the # best place to put it... def setUp(self): super(QuotaReserveSqlAlchemyTestCase, self).setUp() self.sync_called = set() def make_sync(res_name): def fake_sync(context, project_id, volume_type_id=None, volume_type_name=None, session=None): self.sync_called.add(res_name) if res_name in self.usages: if self.usages[res_name].in_use < 0: return {res_name: 2} else: return {res_name: self.usages[res_name].in_use - 1} return {res_name: 0} return fake_sync self.resources = {} QUOTA_SYNC_FUNCTIONS = {} for res_name in ('volumes', 'gigabytes'): res = quota.ReservableResource(res_name, '_sync_%s' % res_name) QUOTA_SYNC_FUNCTIONS['_sync_%s' % res_name] = make_sync(res_name) self.resources[res_name] = res self.stubs.Set(sqa_api, 'QUOTA_SYNC_FUNCTIONS', QUOTA_SYNC_FUNCTIONS) self.expire = timeutils.utcnow() + datetime.timedelta(seconds=3600) self.usages = {} self.usages_created = {} self.reservations_created = {} def fake_get_session(): return FakeSession() def fake_get_quota_usages(context, session, project_id): return self.usages.copy() def fake_quota_usage_create(context, project_id, resource, in_use, reserved, until_refresh, session=None, save=True): quota_usage_ref = self._make_quota_usage( project_id, resource, in_use, reserved, until_refresh, timeutils.utcnow(), timeutils.utcnow()) self.usages_created[resource] = quota_usage_ref return quota_usage_ref def fake_reservation_create(context, uuid, usage_id, project_id, resource, delta, expire, session=None): reservation_ref = self._make_reservation( uuid, usage_id, project_id, resource, delta, expire, timeutils.utcnow(), timeutils.utcnow()) self.reservations_created[resource] = reservation_ref return reservation_ref self.stubs.Set(sqa_api, 'get_session', fake_get_session) self.stubs.Set(sqa_api, '_get_quota_usages', fake_get_quota_usages) self.stubs.Set(sqa_api, '_quota_usage_create', fake_quota_usage_create) self.stubs.Set(sqa_api, '_reservation_create', fake_reservation_create) patcher = mock.patch.object(timeutils, 'utcnow') self.addCleanup(patcher.stop) self.mock_utcnow = patcher.start() self.mock_utcnow.return_value = datetime.datetime.utcnow() def _make_quota_usage(self, project_id, resource, in_use, reserved, until_refresh, created_at, updated_at): quota_usage_ref = FakeUsage() quota_usage_ref.id = len(self.usages) + len(self.usages_created) quota_usage_ref.project_id = project_id quota_usage_ref.resource = resource quota_usage_ref.in_use = in_use quota_usage_ref.reserved = reserved quota_usage_ref.until_refresh = until_refresh quota_usage_ref.created_at = created_at quota_usage_ref.updated_at = updated_at quota_usage_ref.deleted_at = None quota_usage_ref.deleted = False return quota_usage_ref def init_usage(self, project_id, resource, in_use, reserved, until_refresh=None, created_at=None, updated_at=None): if created_at is None: created_at = timeutils.utcnow() if updated_at is None: updated_at = timeutils.utcnow() quota_usage_ref = self._make_quota_usage(project_id, resource, in_use, reserved, until_refresh, created_at, updated_at) self.usages[resource] = quota_usage_ref def compare_usage(self, usage_dict, expected): for usage in expected: resource = usage['resource'] for key, value in usage.items(): actual = getattr(usage_dict[resource], key) self.assertEqual(actual, value, "%s != %s on usage for resource %s" % (actual, value, resource)) def _make_reservation(self, uuid, usage_id, project_id, resource, delta, expire, created_at, updated_at): reservation_ref = sqa_models.Reservation() reservation_ref.id = len(self.reservations_created) reservation_ref.uuid = uuid reservation_ref.usage_id = usage_id reservation_ref.project_id = project_id reservation_ref.resource = resource reservation_ref.delta = delta reservation_ref.expire = expire reservation_ref.created_at = created_at reservation_ref.updated_at = updated_at reservation_ref.deleted_at = None reservation_ref.deleted = False return reservation_ref def compare_reservation(self, reservations, expected): reservations = set(reservations) for resv in expected: resource = resv['resource'] resv_obj = self.reservations_created[resource] self.assertIn(resv_obj.uuid, reservations) reservations.discard(resv_obj.uuid) for key, value in resv.items(): actual = getattr(resv_obj, key) self.assertEqual(actual, value, "%s != %s on reservation for resource %s" % (actual, value, resource)) self.assertEqual(len(reservations), 0) def test_quota_reserve_create_usages(self): context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=2, gigabytes=2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set(['volumes', 'gigabytes'])) self.compare_usage(self.usages_created, [dict(resource='volumes', project_id='test_project', in_use=0, reserved=2, until_refresh=None), dict(resource='gigabytes', project_id='test_project', in_use=0, reserved=2 * 1024, until_refresh=None), ]) self.compare_reservation( result, [dict(resource='volumes', usage_id=self.usages_created['volumes'], project_id='test_project', delta=2), dict(resource='gigabytes', usage_id=self.usages_created['gigabytes'], delta=2 * 1024), ]) def test_quota_reserve_negative_in_use(self): self.init_usage('test_project', 'volumes', -1, 0, until_refresh=1) self.init_usage('test_project', 'gigabytes', -1, 0, until_refresh=1) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=2, gigabytes=2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 5, 0) self.assertEqual(self.sync_called, set(['volumes', 'gigabytes'])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=2, reserved=2, until_refresh=5), dict(resource='gigabytes', project_id='test_project', in_use=2, reserved=2 * 1024, until_refresh=5), ]) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, [dict(resource='volumes', usage_id=self.usages['volumes'], project_id='test_project', delta=2), dict(resource='gigabytes', usage_id=self.usages['gigabytes'], delta=2 * 1024), ]) def test_quota_reserve_until_refresh(self): self.init_usage('test_project', 'volumes', 3, 0, until_refresh=1) self.init_usage('test_project', 'gigabytes', 3, 0, until_refresh=1) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=2, gigabytes=2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 5, 0) self.assertEqual(self.sync_called, set(['volumes', 'gigabytes'])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=2, reserved=2, until_refresh=5), dict(resource='gigabytes', project_id='test_project', in_use=2, reserved=2 * 1024, until_refresh=5), ]) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, [dict(resource='volumes', usage_id=self.usages['volumes'], project_id='test_project', delta=2), dict(resource='gigabytes', usage_id=self.usages['gigabytes'], delta=2 * 1024), ]) def test_quota_reserve_max_age(self): max_age = 3600 record_created = (timeutils.utcnow() - datetime.timedelta(seconds=max_age)) self.init_usage('test_project', 'volumes', 3, 0, created_at=record_created, updated_at=record_created) self.init_usage('test_project', 'gigabytes', 3, 0, created_at=record_created, updated_at=record_created) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=2, gigabytes=2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 0, max_age) self.assertEqual(self.sync_called, set(['volumes', 'gigabytes'])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=2, reserved=2, until_refresh=None), dict(resource='gigabytes', project_id='test_project', in_use=2, reserved=2 * 1024, until_refresh=None), ]) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, [dict(resource='volumes', usage_id=self.usages['volumes'], project_id='test_project', delta=2), dict(resource='gigabytes', usage_id=self.usages['gigabytes'], delta=2 * 1024), ]) def test_quota_reserve_no_refresh(self): self.init_usage('test_project', 'volumes', 3, 0) self.init_usage('test_project', 'gigabytes', 3, 0) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=2, gigabytes=2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=3, reserved=2, until_refresh=None), dict(resource='gigabytes', project_id='test_project', in_use=3, reserved=2 * 1024, until_refresh=None), ]) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, [dict(resource='volumes', usage_id=self.usages['volumes'], project_id='test_project', delta=2), dict(resource='gigabytes', usage_id=self.usages['gigabytes'], delta=2 * 1024), ]) def test_quota_reserve_unders(self): self.init_usage('test_project', 'volumes', 1, 0) self.init_usage('test_project', 'gigabytes', 1 * 1024, 0) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=-2, gigabytes=-2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=1, reserved=0, until_refresh=None), dict(resource='gigabytes', project_id='test_project', in_use=1 * 1024, reserved=0, until_refresh=None), ]) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, [dict(resource='volumes', usage_id=self.usages['volumes'], project_id='test_project', delta=-2), dict(resource='gigabytes', usage_id=self.usages['gigabytes'], delta=-2 * 1024), ]) def test_quota_reserve_overs(self): self.init_usage('test_project', 'volumes', 4, 0) self.init_usage('test_project', 'gigabytes', 10 * 1024, 0) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=2, gigabytes=2 * 1024, ) self.assertRaises(exception.OverQuota, sqa_api.quota_reserve, context, self.resources, quotas, deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=4, reserved=0, until_refresh=None), dict(resource='gigabytes', project_id='test_project', in_use=10 * 1024, reserved=0, until_refresh=None), ]) self.assertEqual(self.usages_created, {}) self.assertEqual(self.reservations_created, {}) def test_quota_reserve_reduction(self): self.init_usage('test_project', 'volumes', 10, 0) self.init_usage('test_project', 'gigabytes', 20 * 1024, 0) context = FakeContext('test_project', 'test_class') quotas = dict(volumes=5, gigabytes=10 * 1024, ) deltas = dict(volumes=-2, gigabytes=-2 * 1024, ) result = sqa_api.quota_reserve(context, self.resources, quotas, deltas, self.expire, 0, 0) self.assertEqual(self.sync_called, set([])) self.compare_usage(self.usages, [dict(resource='volumes', project_id='test_project', in_use=10, reserved=0, until_refresh=None), dict(resource='gigabytes', project_id='test_project', in_use=20 * 1024, reserved=0, until_refresh=None), ]) self.assertEqual(self.usages_created, {}) self.compare_reservation(result, [dict(resource='volumes', usage_id=self.usages['volumes'], project_id='test_project', delta=-2), dict(resource='gigabytes', usage_id=self.usages['gigabytes'], project_id='test_project', delta=-2 * 1024), ]) cinder-2014.1.5/cinder/tests/test_vmware_vmdk.py0000664000567000056700000025612412540642606022730 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 VMware, Inc. # All Rights Reserved. # # 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. """ Test suite for VMware VMDK driver. """ from distutils.version import LooseVersion import os import mock import mox from cinder import exception from cinder.image import glance from cinder import test from cinder import units from cinder.volume import configuration from cinder.volume.drivers.vmware import api from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import vim from cinder.volume.drivers.vmware import vim_util from cinder.volume.drivers.vmware import vmdk from cinder.volume.drivers.vmware import vmware_images from cinder.volume.drivers.vmware import volumeops class FakeVim(object): @property def service_content(self): return mox.MockAnything() @property def client(self): return mox.MockAnything() def Login(self, session_manager, userName, password): return mox.MockAnything() def Logout(self, session_manager): pass def TerminateSession(self, session_manager, sessionId): pass def SessionIsActive(self, session_manager, sessionID, userName): pass class FakeTaskInfo(object): def __init__(self, state, result=None): self.state = state self.result = result class FakeError(object): def __init__(self): self.localizedMessage = None self.error = FakeError() class FakeMor(object): def __init__(self, type, val): self._type = type self.value = val class FakeObject(object): def __init__(self): self._fields = {} def __setitem__(self, key, value): self._fields[key] = value def __getitem__(self, item): return self._fields[item] class FakeManagedObjectReference(object): def __init__(self, lis=[]): self.ManagedObjectReference = lis class FakeDatastoreSummary(object): def __init__(self, freeSpace, capacity, datastore=None, name=None): self.freeSpace = freeSpace self.capacity = capacity self.datastore = datastore self.name = name class FakeSnapshotTree(object): def __init__(self, tree=None, name=None, snapshot=None, childSnapshotList=None): self.rootSnapshotList = tree self.name = name self.snapshot = snapshot self.childSnapshotList = childSnapshotList class FakeElem(object): def __init__(self, prop_set=None): self.propSet = prop_set class FakeProp(object): def __init__(self, name=None, val=None): self.name = name self.val = val class FakeRetrieveResult(object): def __init__(self, objects, token): self.objects = objects self.token = token class FakeObj(object): def __init__(self, obj=None): self.obj = obj class VMwareEsxVmdkDriverTestCase(test.TestCase): """Test class for VMwareEsxVmdkDriver.""" IP = 'localhost' USERNAME = 'username' PASSWORD = 'password' VOLUME_FOLDER = 'cinder-volumes' API_RETRY_COUNT = 3 TASK_POLL_INTERVAL = 5.0 IMG_TX_TIMEOUT = 10 MAX_OBJECTS = 100 VMDK_DRIVER = vmdk.VMwareEsxVmdkDriver def setUp(self): super(VMwareEsxVmdkDriverTestCase, self).setUp() self._config = mox.MockObject(configuration.Configuration) self._config.append_config_values(mox.IgnoreArg()) self._config.vmware_host_ip = self.IP self._config.vmware_host_username = self.USERNAME self._config.vmware_host_password = self.PASSWORD self._config.vmware_wsdl_location = None self._config.vmware_volume_folder = self.VOLUME_FOLDER self._config.vmware_api_retry_count = self.API_RETRY_COUNT self._config.vmware_task_poll_interval = self.TASK_POLL_INTERVAL self._config.vmware_image_transfer_timeout_secs = self.IMG_TX_TIMEOUT self._config.vmware_max_objects_retrieval = self.MAX_OBJECTS self._driver = vmdk.VMwareEsxVmdkDriver(configuration=self._config) api_retry_count = self._config.vmware_api_retry_count, task_poll_interval = self._config.vmware_task_poll_interval, self._session = api.VMwareAPISession(self.IP, self.USERNAME, self.PASSWORD, api_retry_count, task_poll_interval, create_session=False) self._volumeops = volumeops.VMwareVolumeOps(self._session, self.MAX_OBJECTS) self._vim = FakeVim() def test_retry(self): """Test Retry.""" class TestClass(object): def __init__(self): self.counter1 = 0 self.counter2 = 0 @api.Retry(max_retry_count=2, inc_sleep_time=0.001, exceptions=(Exception)) def fail(self): self.counter1 += 1 raise exception.CinderException('Fail') @api.Retry(max_retry_count=2) def success(self): self.counter2 += 1 return self.counter2 test_obj = TestClass() self.assertRaises(exception.CinderException, test_obj.fail) self.assertEqual(test_obj.counter1, 3) ret = test_obj.success() self.assertEqual(1, ret) def test_create_session(self): """Test create_session.""" m = self.mox m.StubOutWithMock(api.VMwareAPISession, 'vim') self._session.vim = self._vim m.ReplayAll() self._session.create_session() m.UnsetStubs() m.VerifyAll() def test_do_setup(self): """Test do_setup.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'session') self._driver.session = self._session m.ReplayAll() self._driver.do_setup(mox.IgnoreArg()) m.UnsetStubs() m.VerifyAll() def test_check_for_setup_error(self): """Test check_for_setup_error.""" self._driver.check_for_setup_error() def test_get_volume_stats(self): """Test get_volume_stats.""" stats = self._driver.get_volume_stats() self.assertEqual(stats['vendor_name'], 'VMware') self.assertEqual(stats['driver_version'], self._driver.VERSION) self.assertEqual(stats['storage_protocol'], 'LSI Logic SCSI') self.assertEqual(stats['reserved_percentage'], 0) self.assertEqual(stats['total_capacity_gb'], 'unknown') self.assertEqual(stats['free_capacity_gb'], 'unknown') def test_create_volume(self): """Test create_volume.""" driver = self._driver host = mock.sentinel.host rp = mock.sentinel.resource_pool folder = mock.sentinel.folder summary = mock.sentinel.summary driver._select_ds_for_volume = mock.MagicMock() driver._select_ds_for_volume.return_value = (host, rp, folder, summary) # invoke the create_volume call volume = {'name': 'fake_volume'} driver.create_volume(volume) # verify calls made driver._select_ds_for_volume.assert_called_once_with(volume) # test create_volume call when _select_ds_for_volume fails driver._select_ds_for_volume.side_effect = error_util.VimException('') self.assertRaises(error_util.VimFaultException, driver.create_volume, volume) def test_success_wait_for_task(self): """Test successful wait_for_task.""" m = self.mox m.StubOutWithMock(api.VMwareAPISession, 'vim') self._session.vim = self._vim result = FakeMor('VirtualMachine', 'my_vm') success_task_info = FakeTaskInfo('success', result=result) m.StubOutWithMock(vim_util, 'get_object_property') vim_util.get_object_property(self._session.vim, mox.IgnoreArg(), 'info').AndReturn(success_task_info) m.ReplayAll() ret = self._session.wait_for_task(mox.IgnoreArg()) self.assertEqual(ret.result, result) m.UnsetStubs() m.VerifyAll() def test_failed_wait_for_task(self): """Test failed wait_for_task.""" m = self.mox m.StubOutWithMock(api.VMwareAPISession, 'vim') self._session.vim = self._vim failed_task_info = FakeTaskInfo('failed') m.StubOutWithMock(vim_util, 'get_object_property') vim_util.get_object_property(self._session.vim, mox.IgnoreArg(), 'info').AndReturn(failed_task_info) m.ReplayAll() self.assertRaises(error_util.VimFaultException, self._session.wait_for_task, mox.IgnoreArg()) m.UnsetStubs() m.VerifyAll() def test_delete_volume_without_backing(self): """Test delete_volume without backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') self._volumeops.get_backing('hello_world').AndReturn(None) m.ReplayAll() volume = FakeObject() volume['name'] = 'hello_world' self._driver.delete_volume(volume) m.UnsetStubs() m.VerifyAll() def test_delete_volume_with_backing(self): """Test delete_volume with backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops backing = FakeMor('VirtualMachine', 'my_vm') task = FakeMor('Task', 'my_task') m.StubOutWithMock(self._volumeops, 'get_backing') m.StubOutWithMock(self._volumeops, 'delete_backing') self._volumeops.get_backing('hello_world').AndReturn(backing) self._volumeops.delete_backing(backing) m.ReplayAll() volume = FakeObject() volume['name'] = 'hello_world' self._driver.delete_volume(volume) m.UnsetStubs() m.VerifyAll() def test_create_export(self): """Test create_export.""" self._driver.create_export(mox.IgnoreArg(), mox.IgnoreArg()) def test_ensure_export(self): """Test ensure_export.""" self._driver.ensure_export(mox.IgnoreArg(), mox.IgnoreArg()) def test_remove_export(self): """Test remove_export.""" self._driver.remove_export(mox.IgnoreArg(), mox.IgnoreArg()) def test_terminate_connection(self): """Test terminate_connection.""" self._driver.terminate_connection(mox.IgnoreArg(), mox.IgnoreArg(), force=mox.IgnoreArg()) def test_create_backing_in_inventory_multi_hosts(self): """Test _create_backing_in_inventory scanning multiple hosts.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops host1 = FakeObj(obj=FakeMor('HostSystem', 'my_host1')) host2 = FakeObj(obj=FakeMor('HostSystem', 'my_host2')) retrieve_result = FakeRetrieveResult([host1, host2], None) m.StubOutWithMock(self._volumeops, 'get_hosts') self._volumeops.get_hosts().AndReturn(retrieve_result) m.StubOutWithMock(self._driver, '_create_backing') volume = FakeObject() volume['name'] = 'vol_name' backing = FakeMor('VirtualMachine', 'my_back') mux = self._driver._create_backing(volume, host1.obj) mux.AndRaise(error_util.VimException('Maintenance mode')) mux = self._driver._create_backing(volume, host2.obj) mux.AndReturn(backing) m.StubOutWithMock(self._volumeops, 'cancel_retrieval') self._volumeops.cancel_retrieval(retrieve_result) m.StubOutWithMock(self._volumeops, 'continue_retrieval') m.ReplayAll() result = self._driver._create_backing_in_inventory(volume) self.assertEqual(result, backing) m.UnsetStubs() m.VerifyAll() def test_init_conn_with_instance_and_backing(self): """Test initialize_connection with instance and backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') volume = FakeObject() volume['name'] = 'volume_name' volume['id'] = 'volume_id' volume['size'] = 1 connector = {'instance': 'my_instance'} backing = FakeMor('VirtualMachine', 'my_back') self._volumeops.get_backing(volume['name']).AndReturn(backing) m.StubOutWithMock(self._volumeops, 'get_host') host = FakeMor('HostSystem', 'my_host') self._volumeops.get_host(mox.IgnoreArg()).AndReturn(host) m.ReplayAll() conn_info = self._driver.initialize_connection(volume, connector) self.assertEqual(conn_info['driver_volume_type'], 'vmdk') self.assertEqual(conn_info['data']['volume'], 'my_back') self.assertEqual(conn_info['data']['volume_id'], 'volume_id') m.UnsetStubs() m.VerifyAll() def test_get_volume_group_folder(self): """Test _get_volume_group_folder.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops datacenter = FakeMor('Datacenter', 'my_dc') m.StubOutWithMock(self._volumeops, 'get_vmfolder') self._volumeops.get_vmfolder(datacenter) m.ReplayAll() self._driver._get_volume_group_folder(datacenter) m.UnsetStubs() m.VerifyAll() def test_select_datastore_summary(self): """Test _select_datastore_summary.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops datastore1 = FakeMor('Datastore', 'my_ds_1') datastore2 = FakeMor('Datastore', 'my_ds_2') datastore3 = FakeMor('Datastore', 'my_ds_3') datastore4 = FakeMor('Datastore', 'my_ds_4') datastores = [datastore1, datastore2, datastore3, datastore4] m.StubOutWithMock(self._volumeops, 'get_summary') summary1 = FakeDatastoreSummary(5, 100) summary2 = FakeDatastoreSummary(25, 100) summary3 = FakeDatastoreSummary(50, 100) summary4 = FakeDatastoreSummary(75, 100) self._volumeops.get_summary( datastore1).MultipleTimes().AndReturn(summary1) self._volumeops.get_summary( datastore2).MultipleTimes().AndReturn(summary2) self._volumeops.get_summary( datastore3).MultipleTimes().AndReturn(summary3) self._volumeops.get_summary( datastore4).MultipleTimes().AndReturn(summary4) m.StubOutWithMock(self._volumeops, 'get_connected_hosts') host1 = FakeMor('HostSystem', 'my_host_1') host2 = FakeMor('HostSystem', 'my_host_2') host3 = FakeMor('HostSystem', 'my_host_3') host4 = FakeMor('HostSystem', 'my_host_4') self._volumeops.get_connected_hosts( datastore1).MultipleTimes().AndReturn([host1, host2, host3, host4]) self._volumeops.get_connected_hosts( datastore2).MultipleTimes().AndReturn([host1, host2, host3]) self._volumeops.get_connected_hosts( datastore3).MultipleTimes().AndReturn([host1, host2]) self._volumeops.get_connected_hosts( datastore4).MultipleTimes().AndReturn([host1, host2]) m.ReplayAll() summary = self._driver._select_datastore_summary(1, datastores) self.assertEqual(summary, summary1) summary = self._driver._select_datastore_summary(10, datastores) self.assertEqual(summary, summary2) summary = self._driver._select_datastore_summary(40, datastores) self.assertEqual(summary, summary4) self.assertRaises(error_util.VimException, self._driver._select_datastore_summary, 100, datastores) m.UnsetStubs() m.VerifyAll() @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'session', new_callable=mock.PropertyMock) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_get_folder_ds_summary(self, volumeops, session): """Test _get_folder_ds_summary.""" volumeops = volumeops.return_value driver = self._driver volume = {'size': 10, 'volume_type_id': 'fake_type'} rp = mock.sentinel.resource_pool dss = mock.sentinel.datastores # patch method calls from _get_folder_ds_summary volumeops.get_dc.return_value = mock.sentinel.dc volumeops.get_vmfolder.return_value = mock.sentinel.folder driver._get_storage_profile = mock.MagicMock() driver._select_datastore_summary = mock.MagicMock() driver._select_datastore_summary.return_value = mock.sentinel.summary # call _get_folder_ds_summary (folder, datastore_summary) = driver._get_folder_ds_summary(volume, rp, dss) # verify returned values and calls made self.assertEqual(mock.sentinel.folder, folder, "Folder returned is wrong.") self.assertEqual(mock.sentinel.summary, datastore_summary, "Datastore summary returned is wrong.") volumeops.get_dc.assert_called_once_with(rp) volumeops.get_vmfolder.assert_called_once_with(mock.sentinel.dc) driver._get_storage_profile.assert_called_once_with(volume) size = volume['size'] * units.GiB driver._select_datastore_summary.assert_called_once_with(size, dss) def test_get_disk_type(self): """Test _get_disk_type.""" volume = FakeObject() volume['volume_type_id'] = None self.assertEqual(vmdk.VMwareEsxVmdkDriver._get_disk_type(volume), 'thin') def test_init_conn_with_instance_no_backing(self): """Test initialize_connection with instance and without backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') volume = FakeObject() volume['name'] = 'volume_name' volume['id'] = 'volume_id' volume['size'] = 1 volume['volume_type_id'] = None connector = {'instance': 'my_instance'} self._volumeops.get_backing(volume['name']) m.StubOutWithMock(self._volumeops, 'get_host') host = FakeMor('HostSystem', 'my_host') self._volumeops.get_host(mox.IgnoreArg()).AndReturn(host) m.StubOutWithMock(self._volumeops, 'get_dss_rp') resource_pool = FakeMor('ResourcePool', 'my_rp') datastores = [FakeMor('Datastore', 'my_ds')] self._volumeops.get_dss_rp(host).AndReturn((datastores, resource_pool)) m.StubOutWithMock(self._driver, '_get_folder_ds_summary') folder = FakeMor('Folder', 'my_fol') summary = FakeDatastoreSummary(1, 1) self._driver._get_folder_ds_summary(volume, resource_pool, datastores).AndReturn((folder, summary)) backing = FakeMor('VirtualMachine', 'my_back') m.StubOutWithMock(self._volumeops, 'create_backing') self._volumeops.create_backing(volume['name'], volume['size'] * units.MiB, mox.IgnoreArg(), folder, resource_pool, host, mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(backing) m.ReplayAll() conn_info = self._driver.initialize_connection(volume, connector) self.assertEqual(conn_info['driver_volume_type'], 'vmdk') self.assertEqual(conn_info['data']['volume'], 'my_back') self.assertEqual(conn_info['data']['volume_id'], 'volume_id') m.UnsetStubs() m.VerifyAll() def test_init_conn_without_instance(self): """Test initialize_connection without instance and a backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') backing = FakeMor('VirtualMachine', 'my_back') volume = FakeObject() volume['name'] = 'volume_name' volume['id'] = 'volume_id' connector = {} self._volumeops.get_backing(volume['name']).AndReturn(backing) m.ReplayAll() conn_info = self._driver.initialize_connection(volume, connector) self.assertEqual(conn_info['driver_volume_type'], 'vmdk') self.assertEqual(conn_info['data']['volume'], 'my_back') self.assertEqual(conn_info['data']['volume_id'], 'volume_id') m.UnsetStubs() m.VerifyAll() def test_create_snapshot_without_backing(self): """Test vmdk.create_snapshot without backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') snapshot = FakeObject() snapshot['volume_name'] = 'volume_name' snapshot['name'] = 'snap_name' snapshot['volume'] = FakeObject() snapshot['volume']['status'] = 'available' self._volumeops.get_backing(snapshot['volume_name']) m.ReplayAll() self._driver.create_snapshot(snapshot) m.UnsetStubs() m.VerifyAll() def test_create_snapshot_with_backing(self): """Test vmdk.create_snapshot with backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') snapshot = FakeObject() snapshot['volume_name'] = 'volume_name' snapshot['name'] = 'snapshot_name' snapshot['display_description'] = 'snapshot_desc' snapshot['volume'] = FakeObject() snapshot['volume']['status'] = 'available' backing = FakeMor('VirtualMachine', 'my_back') self._volumeops.get_backing(snapshot['volume_name']).AndReturn(backing) m.StubOutWithMock(self._volumeops, 'create_snapshot') self._volumeops.create_snapshot(backing, snapshot['name'], snapshot['display_description']) m.ReplayAll() self._driver.create_snapshot(snapshot) m.UnsetStubs() m.VerifyAll() def test_create_snapshot_when_attached(self): """Test vmdk.create_snapshot when volume is attached.""" snapshot = FakeObject() snapshot['volume'] = FakeObject() snapshot['volume']['status'] = 'in-use' self.assertRaises(exception.InvalidVolume, self._driver.create_snapshot, snapshot) def test_delete_snapshot_without_backing(self): """Test delete_snapshot without backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') snapshot = FakeObject() snapshot['volume_name'] = 'volume_name' snapshot['name'] = 'snap_name' snapshot['volume'] = FakeObject() snapshot['volume']['status'] = 'available' self._volumeops.get_backing(snapshot['volume_name']) m.ReplayAll() self._driver.delete_snapshot(snapshot) m.UnsetStubs() m.VerifyAll() def test_delete_snapshot_with_backing(self): """Test delete_snapshot with backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') snapshot = FakeObject() snapshot['name'] = 'snapshot_name' snapshot['volume_name'] = 'volume_name' snapshot['name'] = 'snap_name' snapshot['volume'] = FakeObject() snapshot['volume']['status'] = 'available' backing = FakeMor('VirtualMachine', 'my_back') self._volumeops.get_backing(snapshot['volume_name']).AndReturn(backing) m.StubOutWithMock(self._volumeops, 'delete_snapshot') self._volumeops.delete_snapshot(backing, snapshot['name']) m.ReplayAll() self._driver.delete_snapshot(snapshot) m.UnsetStubs() m.VerifyAll() def test_delete_snapshot_when_attached(self): """Test delete_snapshot when volume is attached.""" snapshot = FakeObject() snapshot['volume'] = FakeObject() snapshot['volume']['status'] = 'in-use' self.assertRaises(exception.InvalidVolume, self._driver.delete_snapshot, snapshot) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_cloned_volume_without_backing(self, mock_vops): """Test create_cloned_volume without a backing.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'name': 'mock_vol'} src_vref = {'name': 'src_snapshot_name'} driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = None # invoke the create_volume_from_snapshot api driver.create_cloned_volume(volume, src_vref) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('src_snapshot_name') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_cloned_volume_with_backing(self, mock_vops): """Test create_cloned_volume with a backing.""" mock_vops = mock_vops.return_value driver = self._driver volume = mock.sentinel.volume fake_size = 1 src_vref = {'name': 'src_snapshot_name', 'size': fake_size} backing = mock.sentinel.backing driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing src_vmdk = "[datastore] src_vm/src_vm.vmdk" mock_vops.get_vmdk_path.return_value = src_vmdk driver._create_backing_by_copying = mock.MagicMock() # invoke the create_volume_from_snapshot api driver.create_cloned_volume(volume, src_vref) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('src_snapshot_name') mock_vops.get_vmdk_path.assert_called_once_with(backing) driver._create_backing_by_copying.assert_called_once_with(volume, src_vmdk, fake_size) @mock.patch.object(VMDK_DRIVER, '_extend_volumeops_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_create_backing_in_inventory') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_create_backing_by_copying(self, volumeops, create_backing, _extend_virtual_disk): self._test_create_backing_by_copying(volumeops, create_backing, _extend_virtual_disk) def _test_create_backing_by_copying(self, volumeops, create_backing, _extend_virtual_disk): """Test _create_backing_by_copying.""" fake_volume = {'size': 2, 'name': 'fake_volume-0000000000001'} fake_size = 1 fake_src_vmdk_path = "[datastore] src_vm/src_vm.vmdk" fake_backing = mock.sentinel.backing fake_vmdk_path = mock.sentinel.path #"[datastore] dest_vm/dest_vm.vmdk" fake_dc = mock.sentinel.datacenter create_backing.return_value = fake_backing volumeops.get_vmdk_path.return_value = fake_vmdk_path volumeops.get_dc.return_value = fake_dc # Test with fake_volume['size'] greater than fake_size self._driver._create_backing_by_copying(fake_volume, fake_src_vmdk_path, fake_size) create_backing.assert_called_once_with(fake_volume) volumeops.get_vmdk_path.assert_called_once_with(fake_backing) volumeops.get_dc.assert_called_once_with(fake_backing) volumeops.delete_vmdk_file.assert_called_once_with(fake_vmdk_path, fake_dc) volumeops.copy_vmdk_file.assert_called_once_with(fake_dc, fake_src_vmdk_path, fake_vmdk_path) _extend_virtual_disk.assert_called_once_with(fake_volume['size'], fake_vmdk_path, fake_dc) # Reset all the mocks and test with fake_volume['size'] # not greater than fake_size _extend_virtual_disk.reset_mock() fake_size = 2 self._driver._create_backing_by_copying(fake_volume, fake_src_vmdk_path, fake_size) self.assertFalse(_extend_virtual_disk.called) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_volume_from_snapshot_without_backing(self, mock_vops): """Test create_volume_from_snapshot without a backing.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'name': 'mock_vol'} snapshot = {'volume_name': 'mock_vol', 'name': 'mock_snap'} driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = None # invoke the create_volume_from_snapshot api driver.create_volume_from_snapshot(volume, snapshot) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('mock_vol') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_volume_from_snap_without_backing_snap(self, mock_vops): """Test create_volume_from_snapshot without a backing snapshot.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol'} snapshot = {'volume_name': 'mock_vol', 'name': 'mock_snap'} backing = mock.sentinel.backing driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing mock_vops.get_snapshot.return_value = None # invoke the create_volume_from_snapshot api driver.create_volume_from_snapshot(volume, snapshot) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('mock_vol') mock_vops.get_snapshot.assert_called_once_with(backing, 'mock_snap') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareEsxVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_volume_from_snapshot(self, mock_vops): """Test create_volume_from_snapshot.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol'} snapshot = {'volume_name': 'mock_vol', 'name': 'mock_snap', 'volume_size': 1} fake_size = snapshot['volume_size'] backing = mock.sentinel.backing snap_moref = mock.sentinel.snap_moref driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing mock_vops.get_snapshot.return_value = snap_moref src_vmdk = "[datastore] src_vm/src_vm-001.vmdk" mock_vops.get_vmdk_path.return_value = src_vmdk driver._create_backing_by_copying = mock.MagicMock() # invoke the create_volume_from_snapshot api driver.create_volume_from_snapshot(volume, snapshot) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('mock_vol') mock_vops.get_snapshot.assert_called_once_with(backing, 'mock_snap') mock_vops.get_vmdk_path.assert_called_once_with(snap_moref) driver._create_backing_by_copying.assert_called_once_with(volume, src_vmdk, fake_size) @mock.patch.object(VMDK_DRIVER, '_select_ds_for_volume') @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_extend_volume(self, volume_ops, _extend_virtual_disk, _select_ds_for_volume): """Test extend_volume.""" self._test_extend_volume(volume_ops, _extend_virtual_disk, _select_ds_for_volume) def _test_extend_volume(self, volume_ops, _extend_virtual_disk, _select_ds_for_volume): fake_name = u'volume-00000001' new_size = '21' fake_size = '20' fake_vol = {'project_id': 'testprjid', 'name': fake_name, 'size': fake_size, 'id': 'a720b3c0-d1f0-11e1-9b23-0800200c9a66'} fake_host = mock.sentinel.host fake_rp = mock.sentinel.rp fake_folder = mock.sentinel.folder fake_summary = mock.Mock(spec=object) fake_summary.datastore = mock.sentinel.datastore fake_summary.name = 'fake_name' fake_backing = mock.sentinel.backing volume_ops.get_backing.return_value = fake_backing # If there is enough space in the datastore, where the volume is # located, then the rest of this method will not be called. self._driver.extend_volume(fake_vol, new_size) _extend_virtual_disk.assert_called_with(fake_name, new_size) self.assertFalse(_select_ds_for_volume.called) self.assertFalse(volume_ops.get_backing.called) self.assertFalse(volume_ops.relocate_backing.called) self.assertFalse(volume_ops.move_backing_to_folder.called) # If there is not enough space in the datastore, where the volume is # located, then the rest of this method will be called. The first time # _extend_virtual_disk is called, VimFaultException is raised. The # second time it is called, there is no exception. _extend_virtual_disk.reset_mock() _extend_virtual_disk.side_effect = [error_util. VimFaultException(mock.Mock(), 'Error'), None] # When _select_ds_for_volume raises no exception. _select_ds_for_volume.return_value = (fake_host, fake_rp, fake_folder, fake_summary) self._driver.extend_volume(fake_vol, new_size) _select_ds_for_volume.assert_called_with(new_size) volume_ops.get_backing.assert_called_with(fake_name) volume_ops.relocate_backing.assert_called_with(fake_backing, fake_summary.datastore, fake_rp, fake_host) _extend_virtual_disk.assert_called_with(fake_name, new_size) volume_ops.move_backing_to_folder.assert_called_with(fake_backing, fake_folder) # If get_backing raises error_util.VimException, # this exception will be caught for volume extend. _extend_virtual_disk.reset_mock() _extend_virtual_disk.side_effect = [error_util. VimFaultException(mock.Mock(), 'Error'), None] volume_ops.get_backing.side_effect = error_util.VimException('Error') self.assertRaises(error_util.VimException, self._driver.extend_volume, fake_vol, new_size) # If _select_ds_for_volume raised an exception, the rest code will # not be called. _extend_virtual_disk.reset_mock() volume_ops.get_backing.reset_mock() volume_ops.relocate_backing.reset_mock() volume_ops.move_backing_to_folder.reset_mock() _extend_virtual_disk.side_effect = [error_util. VimFaultException(mock.Mock(), 'Error'), None] _select_ds_for_volume.side_effect = error_util.VimException('Error') self.assertRaises(error_util.VimException, self._driver.extend_volume, fake_vol, new_size) _extend_virtual_disk.assert_called_once_with(fake_name, new_size) self.assertFalse(volume_ops.get_backing.called) self.assertFalse(volume_ops.relocate_backing.called) self.assertFalse(volume_ops.move_backing_to_folder.called) def test_copy_image_to_volume_non_vmdk(self): """Test copy_image_to_volume for a non-vmdk disk format.""" fake_context = mock.sentinel.context fake_image_id = 'image-123456789' fake_image_meta = {'disk_format': 'novmdk'} image_service = mock.Mock() image_service.show.return_value = fake_image_meta fake_volume = {'name': 'fake_name', 'size': 1} self.assertRaises(exception.ImageUnacceptable, self._driver.copy_image_to_volume, fake_context, fake_volume, image_service, fake_image_id) @mock.patch.object(vmware_images, 'fetch_flat_image') @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_get_ds_name_flat_vmdk_path') @mock.patch.object(VMDK_DRIVER, '_create_backing_in_inventory') @mock.patch.object(VMDK_DRIVER, 'session') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_copy_image_to_volume_vmdk(self, volume_ops, session, _create_backing_in_inventory, _get_ds_name_flat_vmdk_path, _extend_vmdk_virtual_disk, fetch_flat_image): """Test copy_image_to_volume with an acceptable vmdk disk format.""" self._test_copy_image_to_volume_vmdk(volume_ops, session, _create_backing_in_inventory, _get_ds_name_flat_vmdk_path, _extend_vmdk_virtual_disk, fetch_flat_image) def _test_copy_image_to_volume_vmdk(self, volume_ops, session, _create_backing_in_inventory, _get_ds_name_flat_vmdk_path, _extend_vmdk_virtual_disk, fetch_flat_image): cookies = session.vim.client.options.transport.cookiejar fake_context = mock.sentinel.context fake_image_id = 'image-id' fake_image_meta = {'disk_format': 'vmdk', 'size': 2 * units.GiB, 'properties': {'vmware_disktype': 'preallocated'}} image_service = mock.Mock(glance.GlanceImageService) fake_size = 3 fake_volume = {'name': 'volume_name', 'size': fake_size} fake_backing = mock.sentinel.backing fake_datastore_name = 'datastore1' flat_vmdk_path = 'myvolumes/myvm-flat.vmdk' fake_host = mock.sentinel.host fake_datacenter = mock.sentinel.datacenter fake_datacenter_name = mock.sentinel.datacenter_name timeout = self._config.vmware_image_transfer_timeout_secs image_service.show.return_value = fake_image_meta _create_backing_in_inventory.return_value = fake_backing _get_ds_name_flat_vmdk_path.return_value = (fake_datastore_name, flat_vmdk_path) volume_ops.get_host.return_value = fake_host volume_ops.get_dc.return_value = fake_datacenter volume_ops.get_entity_name.return_value = fake_datacenter_name # If the volume size is greater than the image size, # _extend_vmdk_virtual_disk will be called. self._driver.copy_image_to_volume(fake_context, fake_volume, image_service, fake_image_id) image_service.show.assert_called_with(fake_context, fake_image_id) _create_backing_in_inventory.assert_called_with(fake_volume) _get_ds_name_flat_vmdk_path.assert_called_with(fake_backing, fake_volume['name']) volume_ops.get_host.assert_called_with(fake_backing) volume_ops.get_dc.assert_called_with(fake_host) volume_ops.get_entity_name.assert_called_with(fake_datacenter) fetch_flat_image.assert_called_with(fake_context, timeout, image_service, fake_image_id, image_size=fake_image_meta['size'], host=self.IP, data_center_name= fake_datacenter_name, datastore_name=fake_datastore_name, cookies=cookies, file_path=flat_vmdk_path) _extend_vmdk_virtual_disk.assert_called_with(fake_volume['name'], fake_size) self.assertFalse(volume_ops.delete_backing.called) # If the volume size is not greater then than the image size, # _extend_vmdk_virtual_disk will not be called. _extend_vmdk_virtual_disk.reset_mock() fake_size = 2 fake_volume['size'] = fake_size self._driver.copy_image_to_volume(fake_context, fake_volume, image_service, fake_image_id) self.assertFalse(_extend_vmdk_virtual_disk.called) self.assertFalse(volume_ops.delete_backing.called) # If fetch_flat_image raises an Exception, delete_backing # will be called. fetch_flat_image.side_effect = exception.CinderException self.assertRaises(exception.CinderException, self._driver.copy_image_to_volume, fake_context, fake_volume, image_service, fake_image_id) volume_ops.delete_backing.assert_called_with(fake_backing) @mock.patch.object(vmware_images, 'fetch_stream_optimized_image') @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_select_ds_for_volume') @mock.patch.object(VMDK_DRIVER, 'session') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_copy_image_to_volume_stream_optimized(self, volumeops, session, _select_ds_for_volume, _extend_virtual_disk, fetch_optimized_image): """Test copy_image_to_volume. Test with an acceptable vmdk disk format and streamOptimized disk type. """ self._test_copy_image_to_volume_stream_optimized(volumeops, session, _select_ds_for_volume, _extend_virtual_disk, fetch_optimized_image) def _test_copy_image_to_volume_stream_optimized(self, volumeops, session, _select_ds_for_volume, _extend_virtual_disk, fetch_optimized_image): fake_context = mock.Mock() fake_backing = mock.sentinel.backing fake_image_id = 'image-id' size = 5 * units.GiB size_gb = float(size) / units.GiB fake_volume_size = 1 + size_gb fake_image_meta = {'disk_format': 'vmdk', 'size': size, 'properties': {'vmware_disktype': 'streamOptimized'}} image_service = mock.Mock(glance.GlanceImageService) fake_host = mock.sentinel.host fake_rp = mock.sentinel.rp fake_folder = mock.sentinel.folder fake_summary = mock.sentinel.summary fake_summary.name = "datastore-1" fake_vm_create_spec = mock.sentinel.spec fake_disk_type = 'thin' vol_name = 'fake_volume name' fake_volume = {'name': vol_name, 'size': fake_volume_size, 'volume_type_id': None} cf = session.vim.client.factory vm_import_spec = cf.create('ns0:VirtualMachineImportSpec') vm_import_spec.configSpec = fake_vm_create_spec timeout = self._config.vmware_image_transfer_timeout_secs image_service.show.return_value = fake_image_meta volumeops._get_create_spec.return_value = fake_vm_create_spec volumeops.get_backing.return_value = fake_backing # If _select_ds_for_volume raises an exception, _get_create_spec # will not be called. _select_ds_for_volume.side_effect = error_util.VimException('Error') self.assertRaises(exception.VolumeBackendAPIException, self._driver.copy_image_to_volume, fake_context, fake_volume, image_service, fake_image_id) self.assertFalse(volumeops._get_create_spec.called) # If the volume size is greater then than the image size, # _extend_vmdk_virtual_disk will be called. _select_ds_for_volume.side_effect = None _select_ds_for_volume.return_value = (fake_host, fake_rp, fake_folder, fake_summary) self._driver.copy_image_to_volume(fake_context, fake_volume, image_service, fake_image_id) image_service.show.assert_called_with(fake_context, fake_image_id) _select_ds_for_volume.assert_called_with(fake_volume) volumeops._get_create_spec.assert_called_with(fake_volume['name'], 0, fake_disk_type, fake_summary.name) self.assertTrue(fetch_optimized_image.called) fetch_optimized_image.assert_called_with(fake_context, timeout, image_service, fake_image_id, session=session, host=self.IP, resource_pool=fake_rp, vm_folder=fake_folder, vm_create_spec= vm_import_spec, image_size=size) _extend_virtual_disk.assert_called_with(fake_volume['name'], fake_volume_size) self.assertFalse(volumeops.get_backing.called) self.assertFalse(volumeops.delete_backing.called) # If the volume size is not greater then than the image size, # _extend_vmdk_virtual_disk will not be called. fake_volume_size = size_gb fake_volume['size'] = fake_volume_size _extend_virtual_disk.reset_mock() self._driver.copy_image_to_volume(fake_context, fake_volume, image_service, fake_image_id) self.assertFalse(_extend_virtual_disk.called) self.assertFalse(volumeops.get_backing.called) self.assertFalse(volumeops.delete_backing.called) # If fetch_stream_optimized_image raises an exception, # get_backing and delete_backing will be called. fetch_optimized_image.side_effect = exception.CinderException self.assertRaises(exception.CinderException, self._driver.copy_image_to_volume, fake_context, fake_volume, image_service, fake_image_id) volumeops.get_backing.assert_called_with(fake_volume['name']) volumeops.delete_backing.assert_called_with(fake_backing) def test_copy_volume_to_image_non_vmdk(self): """Test copy_volume_to_image for a non-vmdk disk format.""" m = self.mox image_meta = FakeObject() image_meta['disk_format'] = 'novmdk' volume = FakeObject() volume['name'] = 'vol-name' volume['instance_uuid'] = None volume['attached_host'] = None m.ReplayAll() self.assertRaises(exception.ImageUnacceptable, self._driver.copy_volume_to_image, mox.IgnoreArg(), volume, mox.IgnoreArg(), image_meta) m.UnsetStubs() m.VerifyAll() def test_copy_volume_to_image_when_attached(self): """Test copy_volume_to_image when volume is attached.""" m = self.mox volume = FakeObject() volume['instance_uuid'] = 'my_uuid' m.ReplayAll() self.assertRaises(exception.InvalidVolume, self._driver.copy_volume_to_image, mox.IgnoreArg(), volume, mox.IgnoreArg(), mox.IgnoreArg()) m.UnsetStubs() m.VerifyAll() def test_copy_volume_to_image_vmdk(self): """Test copy_volume_to_image for a valid vmdk disk format.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'session') self._driver.session = self._session m.StubOutWithMock(api.VMwareAPISession, 'vim') self._session.vim = self._vim m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops image_id = 'image-id-1' image_meta = FakeObject() image_meta['disk_format'] = 'vmdk' image_meta['id'] = image_id image_meta['name'] = image_id image_service = FakeObject() vol_name = 'volume-123456789' project_id = 'project-owner-id-123' volume = FakeObject() volume['name'] = vol_name size_gb = 5 size = size_gb * units.GiB volume['size'] = size_gb volume['project_id'] = project_id volume['instance_uuid'] = None volume['attached_host'] = None # volumeops.get_backing backing = FakeMor("VirtualMachine", "my_vm") m.StubOutWithMock(self._volumeops, 'get_backing') self._volumeops.get_backing(vol_name).AndReturn(backing) # volumeops.get_vmdk_path datastore_name = 'datastore1' file_path = 'my_folder/my_nested_folder/my_vm.vmdk' vmdk_file_path = '[%s] %s' % (datastore_name, file_path) m.StubOutWithMock(self._volumeops, 'get_vmdk_path') self._volumeops.get_vmdk_path(backing).AndReturn(vmdk_file_path) # vmware_images.upload_image timeout = self._config.vmware_image_transfer_timeout_secs host_ip = self.IP m.StubOutWithMock(vmware_images, 'upload_image') vmware_images.upload_image(mox.IgnoreArg(), timeout, image_service, image_id, project_id, session=self._session, host=host_ip, vm=backing, vmdk_file_path=vmdk_file_path, vmdk_size=size, image_name=image_id, image_version=1) m.ReplayAll() self._driver.copy_volume_to_image(mox.IgnoreArg(), volume, image_service, image_meta) m.UnsetStubs() m.VerifyAll() def test_retrieve_properties_ex_fault_checker(self): """Test retrieve_properties_ex_fault_checker is called.""" m = self.mox class FakeVim(vim.Vim): def __init__(self): pass @property def client(self): class FakeRetrv(object): def RetrievePropertiesEx(self, collector): pass def __getattr__(self, name): if name == 'service': return FakeRetrv() return FakeRetrv() def RetrieveServiceContent(self, type='ServiceInstance'): return mox.MockAnything() _vim = FakeVim() m.ReplayAll() # retrieve_properties_ex_fault_checker throws authentication error self.assertRaises(error_util.VimFaultException, _vim.RetrievePropertiesEx, mox.IgnoreArg()) m.UnsetStubs() m.VerifyAll() @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_extend_vmdk_virtual_disk(self, volume_ops): """Test vmdk._extend_vmdk_virtual_disk.""" self._test_extend_vmdk_virtual_disk(volume_ops) def _test_extend_vmdk_virtual_disk(self, volume_ops): fake_backing = mock.sentinel.backing fake_vmdk_path = "[datastore] dest_vm/dest_vm.vmdk" fake_dc = mock.sentinel.datacenter fake_name = 'fake_name' fake_size = 7 # If the backing is None, get_vmdk_path and get_dc # will not be called volume_ops.get_backing.return_value = None volume_ops.get_vmdk_path.return_value = fake_vmdk_path volume_ops.get_dc.return_value = fake_dc self._driver._extend_vmdk_virtual_disk(fake_name, fake_size) volume_ops.get_backing.assert_called_once_with(fake_name) self.assertFalse(volume_ops.get_vmdk_path.called) self.assertFalse(volume_ops.get_dc.called) self.assertFalse(volume_ops.extend_virtual_disk.called) # Reset the mock and set the backing with a fake, # all the mocks should be called. volume_ops.get_backing.reset_mock() volume_ops.get_backing.return_value = fake_backing self._driver._extend_vmdk_virtual_disk(fake_name, fake_size) volume_ops.get_vmdk_path.assert_called_once_with(fake_backing) volume_ops.get_dc.assert_called_once_with(fake_backing) volume_ops.extend_virtual_disk.assert_called_once_with(fake_size, fake_vmdk_path, fake_dc) # Test the exceptional case for extend_virtual_disk volume_ops.extend_virtual_disk.side_effect = error_util.VimException( 'VimException raised.') self.assertRaises(error_util.VimException, self._driver._extend_vmdk_virtual_disk, fake_name, fake_size) class VMwareVcVmdkDriverTestCase(VMwareEsxVmdkDriverTestCase): """Test class for VMwareVcVmdkDriver.""" VMDK_DRIVER = vmdk.VMwareVcVmdkDriver DEFAULT_VC_VERSION = '5.5' def setUp(self): super(VMwareVcVmdkDriverTestCase, self).setUp() self._config.vmware_host_version = self.DEFAULT_VC_VERSION self._driver = vmdk.VMwareVcVmdkDriver(configuration=self._config) def test_get_pbm_wsdl_location(self): # no version returns None wsdl = self._driver._get_pbm_wsdl_location(None) self.assertIsNone(wsdl) def expected_wsdl(version): driver_dir = os.path.join(os.path.dirname(__file__), '..', 'volume', 'drivers', 'vmware') driver_abs_dir = os.path.abspath(driver_dir) return 'file://' + os.path.join(driver_abs_dir, 'wsdl', version, 'pbmService.wsdl') # verify wsdl path for different version strings with mock.patch('os.path.exists') as path_exists: path_exists.return_value = True wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5')) self.assertEqual(expected_wsdl('5'), wsdl) wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5.5')) self.assertEqual(expected_wsdl('5.5'), wsdl) wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5.5.1')) self.assertEqual(expected_wsdl('5.5'), wsdl) # if wsdl path does not exist, then it returns None path_exists.return_value = False wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5.5')) self.assertIsNone(wsdl) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'session', new_callable=mock.PropertyMock) def test_get_vc_version(self, session): # test config overrides fetching from VC server version = self._driver._get_vc_version() self.assertEqual(self.DEFAULT_VC_VERSION, version) # explicitly remove config entry self._driver.configuration.vmware_host_version = None session.return_value.vim.service_content.about.version = '6.0.1' version = self._driver._get_vc_version() self.assertEqual(LooseVersion('6.0.1'), version) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' '_get_pbm_wsdl_location') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' '_get_vc_version') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'session', new_callable=mock.PropertyMock) def test_do_setup(self, session, _get_vc_version, _get_pbm_wsdl_location): session = session.return_value # pbm is disabled vc_version = LooseVersion('5.0') _get_vc_version.return_value = vc_version self._driver.do_setup(mock.ANY) self.assertFalse(self._driver._storage_policy_enabled) _get_vc_version.assert_called_once_with() # pbm is enabled and invalid pbm wsdl location vc_version = LooseVersion('5.5') _get_vc_version.reset_mock() _get_vc_version.return_value = vc_version _get_pbm_wsdl_location.return_value = None self.assertRaises(error_util.VMwareDriverException, self._driver.do_setup, mock.ANY) self.assertFalse(self._driver._storage_policy_enabled) _get_vc_version.assert_called_once_with() _get_pbm_wsdl_location.assert_called_once_with(vc_version) # pbm is enabled and valid pbm wsdl location vc_version = LooseVersion('5.5') _get_vc_version.reset_mock() _get_vc_version.return_value = vc_version _get_pbm_wsdl_location.reset_mock() _get_pbm_wsdl_location.return_value = 'fake_pbm_location' self._driver.do_setup(mock.ANY) self.assertTrue(self._driver._storage_policy_enabled) _get_vc_version.assert_called_once_with() _get_pbm_wsdl_location.assert_called_once_with(vc_version) @mock.patch.object(VMDK_DRIVER, '_extend_volumeops_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_create_backing_in_inventory') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_create_backing_by_copying(self, volumeops, create_backing, extend_virtual_disk): self._test_create_backing_by_copying(volumeops, create_backing, extend_virtual_disk) def test_init_conn_with_instance_and_backing(self): """Test initialize_connection with instance and backing.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') volume = FakeObject() volume['name'] = 'volume_name' volume['id'] = 'volume_id' volume['size'] = 1 connector = {'instance': 'my_instance'} backing = FakeMor('VirtualMachine', 'my_back') self._volumeops.get_backing(volume['name']).AndReturn(backing) m.StubOutWithMock(self._volumeops, 'get_host') host = FakeMor('HostSystem', 'my_host') self._volumeops.get_host(mox.IgnoreArg()).AndReturn(host) datastore = FakeMor('Datastore', 'my_ds') resource_pool = FakeMor('ResourcePool', 'my_rp') m.StubOutWithMock(self._volumeops, 'get_dss_rp') self._volumeops.get_dss_rp(host).AndReturn(([datastore], resource_pool)) m.StubOutWithMock(self._volumeops, 'get_datastore') self._volumeops.get_datastore(backing).AndReturn(datastore) m.ReplayAll() conn_info = self._driver.initialize_connection(volume, connector) self.assertEqual(conn_info['driver_volume_type'], 'vmdk') self.assertEqual(conn_info['data']['volume'], 'my_back') self.assertEqual(conn_info['data']['volume_id'], 'volume_id') m.UnsetStubs() m.VerifyAll() def test_get_volume_group_folder(self): """Test _get_volume_group_folder.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops datacenter = FakeMor('Datacenter', 'my_dc') m.StubOutWithMock(self._volumeops, 'get_vmfolder') self._volumeops.get_vmfolder(datacenter) m.StubOutWithMock(self._volumeops, 'create_folder') self._volumeops.create_folder(mox.IgnoreArg(), self._config.vmware_volume_folder) m.ReplayAll() self._driver._get_volume_group_folder(datacenter) m.UnsetStubs() m.VerifyAll() def test_init_conn_with_instance_and_backing_and_relocation(self): """Test initialize_connection with backing being relocated.""" m = self.mox m.StubOutWithMock(self._driver.__class__, 'volumeops') self._driver.volumeops = self._volumeops m.StubOutWithMock(self._volumeops, 'get_backing') volume = FakeObject() volume['name'] = 'volume_name' volume['id'] = 'volume_id' volume['size'] = 1 connector = {'instance': 'my_instance'} backing = FakeMor('VirtualMachine', 'my_back') self._volumeops.get_backing(volume['name']).AndReturn(backing) m.StubOutWithMock(self._volumeops, 'get_host') host = FakeMor('HostSystem', 'my_host') self._volumeops.get_host(mox.IgnoreArg()).AndReturn(host) datastore1 = FakeMor('Datastore', 'my_ds_1') datastore2 = FakeMor('Datastore', 'my_ds_2') resource_pool = FakeMor('ResourcePool', 'my_rp') m.StubOutWithMock(self._volumeops, 'get_dss_rp') self._volumeops.get_dss_rp(host).AndReturn(([datastore1], resource_pool)) m.StubOutWithMock(self._volumeops, 'get_datastore') self._volumeops.get_datastore(backing).AndReturn(datastore2) m.StubOutWithMock(self._driver, '_get_folder_ds_summary') folder = FakeMor('Folder', 'my_fol') summary = FakeDatastoreSummary(1, 1, datastore1) size = 1 self._driver._get_folder_ds_summary(volume, resource_pool, [datastore1]).AndReturn((folder, summary)) m.StubOutWithMock(self._volumeops, 'relocate_backing') self._volumeops.relocate_backing(backing, datastore1, resource_pool, host) m.StubOutWithMock(self._volumeops, 'move_backing_to_folder') self._volumeops.move_backing_to_folder(backing, folder) m.ReplayAll() conn_info = self._driver.initialize_connection(volume, connector) self.assertEqual(conn_info['driver_volume_type'], 'vmdk') self.assertEqual(conn_info['data']['volume'], 'my_back') self.assertEqual(conn_info['data']['volume_id'], 'volume_id') m.UnsetStubs() m.VerifyAll() @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_clone_backing_linked(self, volume_ops, _extend_vmdk_virtual_disk): """Test _clone_backing with clone type - linked.""" fake_size = 3 fake_volume = {'volume_type_id': None, 'name': 'fake_name', 'size': fake_size} fake_snapshot = {'volume_name': 'volume_name', 'name': 'snapshot_name', 'volume_size': 2} fake_type = volumeops.LINKED_CLONE_TYPE fake_backing = mock.sentinel.backing self._driver._clone_backing(fake_volume, fake_backing, fake_snapshot, volumeops.LINKED_CLONE_TYPE, fake_snapshot['volume_size']) volume_ops.clone_backing.assert_called_with(fake_volume['name'], fake_backing, fake_snapshot, fake_type, None) # If the volume size is greater than the original snapshot size, # _extend_vmdk_virtual_disk will be called. _extend_vmdk_virtual_disk.assert_called_with(fake_volume['name'], fake_volume['size']) # If the volume size is not greater than the original snapshot size, # _extend_vmdk_virtual_disk will not be called. fake_size = 2 fake_volume['size'] = fake_size _extend_vmdk_virtual_disk.reset_mock() self._driver._clone_backing(fake_volume, fake_backing, fake_snapshot, volumeops.LINKED_CLONE_TYPE, fake_snapshot['volume_size']) self.assertFalse(_extend_vmdk_virtual_disk.called) @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_select_ds_for_volume') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_clone_backing_full(self, volume_ops, _select_ds_for_volume, _extend_vmdk_virtual_disk): """Test _clone_backing with clone type - full.""" fake_host = mock.sentinel.host fake_backing = mock.sentinel.backing fake_folder = mock.sentinel.folder fake_datastore = mock.sentinel.datastore fake_resource_pool = mock.sentinel.resourcePool fake_summary = mock.Mock(spec=object) fake_summary.datastore = fake_datastore fake_size = 3 fake_volume = {'volume_type_id': None, 'name': 'fake_name', 'size': fake_size} fake_snapshot = {'volume_name': 'volume_name', 'name': 'snapshot_name', 'volume_size': 2} _select_ds_for_volume.return_value = (fake_host, fake_resource_pool, fake_folder, fake_summary) self._driver._clone_backing(fake_volume, fake_backing, fake_snapshot, volumeops.FULL_CLONE_TYPE, fake_snapshot['volume_size']) _select_ds_for_volume.assert_called_with(fake_volume) volume_ops.clone_backing.assert_called_with(fake_volume['name'], fake_backing, fake_snapshot, volumeops.FULL_CLONE_TYPE, fake_datastore) # If the volume size is greater than the original snapshot size, # _extend_vmdk_virtual_disk will be called. _extend_vmdk_virtual_disk.assert_called_with(fake_volume['name'], fake_volume['size']) # If the volume size is not greater than the original snapshot size, # _extend_vmdk_virtual_disk will not be called. fake_size = 2 fake_volume['size'] = fake_size _extend_vmdk_virtual_disk.reset_mock() self._driver._clone_backing(fake_volume, fake_backing, fake_snapshot, volumeops.FULL_CLONE_TYPE, fake_snapshot['volume_size']) self.assertFalse(_extend_vmdk_virtual_disk.called) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_volume_from_snapshot_without_backing(self, mock_vops): """Test create_volume_from_snapshot without a backing.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'name': 'mock_vol'} snapshot = {'volume_name': 'mock_vol', 'name': 'mock_snap'} driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = None # invoke the create_volume_from_snapshot api driver.create_volume_from_snapshot(volume, snapshot) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('mock_vol') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_volume_from_snap_without_backing_snap(self, mock_vops): """Test create_volume_from_snapshot without a backing snapshot.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol'} snapshot = {'volume_name': 'mock_vol', 'name': 'mock_snap'} backing = mock.sentinel.backing driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing mock_vops.get_snapshot.return_value = None # invoke the create_volume_from_snapshot api driver.create_volume_from_snapshot(volume, snapshot) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('mock_vol') mock_vops.get_snapshot.assert_called_once_with(backing, 'mock_snap') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_volume_from_snapshot(self, mock_vops): """Test create_volume_from_snapshot.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol'} snapshot = {'volume_name': 'mock_vol', 'name': 'mock_snap', 'volume_size': 2} backing = mock.sentinel.backing snap_moref = mock.sentinel.snap_moref driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing mock_vops.get_snapshot.return_value = snap_moref driver._clone_backing = mock.MagicMock() # invoke the create_volume_from_snapshot api driver.create_volume_from_snapshot(volume, snapshot) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('mock_vol') mock_vops.get_snapshot.assert_called_once_with(backing, 'mock_snap') default_clone_type = volumeops.FULL_CLONE_TYPE driver._clone_backing.assert_called_once_with(volume, backing, snap_moref, default_clone_type, snapshot['volume_size']) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_cloned_volume_without_backing(self, mock_vops): """Test create_cloned_volume without a backing.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'name': 'mock_vol'} src_vref = {'name': 'src_snapshot_name'} driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = None # invoke the create_volume_from_snapshot api driver.create_cloned_volume(volume, src_vref) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_create_cloned_volume_with_backing(self, mock_vops): """Test create_cloned_volume with clone type - full.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol'} src_vref = {'name': 'src_snapshot_name', 'size': 1} backing = mock.sentinel.backing driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing default_clone_type = volumeops.FULL_CLONE_TYPE driver._clone_backing = mock.MagicMock() # invoke the create_volume_from_snapshot api driver.create_cloned_volume(volume, src_vref) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('src_snapshot_name') driver._clone_backing.assert_called_once_with(volume, backing, None, default_clone_type, src_vref['size']) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' '_get_clone_type') def test_create_linked_cloned_volume_with_backing(self, get_clone_type, mock_vops): """Test create_cloned_volume with clone type - linked.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol', 'id': 'mock_id'} src_vref = {'name': 'src_snapshot_name', 'status': 'available', 'size': 1} backing = mock.sentinel.backing driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing linked_clone = volumeops.LINKED_CLONE_TYPE get_clone_type.return_value = linked_clone driver._clone_backing = mock.MagicMock() mock_vops.create_snapshot = mock.MagicMock() mock_vops.create_snapshot.return_value = mock.sentinel.snapshot # invoke the create_volume_from_snapshot api driver.create_cloned_volume(volume, src_vref) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('src_snapshot_name') get_clone_type.assert_called_once_with(volume) name = 'snapshot-%s' % volume['id'] mock_vops.create_snapshot.assert_called_once_with(backing, name, None) driver._clone_backing.assert_called_once_with(volume, backing, mock.sentinel.snapshot, linked_clone, src_vref['size']) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' '_get_clone_type') def test_create_linked_cloned_volume_when_attached(self, get_clone_type, mock_vops): """Test create_cloned_volume linked clone when volume is attached.""" mock_vops = mock_vops.return_value driver = self._driver volume = {'volume_type_id': None, 'name': 'mock_vol', 'id': 'mock_id'} src_vref = {'name': 'src_snapshot_name', 'status': 'in-use'} backing = mock.sentinel.backing driver._verify_volume_creation = mock.MagicMock() mock_vops.get_backing.return_value = backing linked_clone = volumeops.LINKED_CLONE_TYPE get_clone_type.return_value = linked_clone # invoke the create_volume_from_snapshot api self.assertRaises(exception.InvalidVolume, driver.create_cloned_volume, volume, src_vref) # verify calls driver._verify_volume_creation.assert_called_once_with(volume) mock_vops.get_backing.assert_called_once_with('src_snapshot_name') get_clone_type.assert_called_once_with(volume) @mock.patch('cinder.volume.volume_types.get_volume_type_extra_specs') def test_get_storage_profile(self, get_volume_type_extra_specs): """Test vmdk _get_storage_profile.""" # volume with no type id returns None volume = FakeObject() volume['volume_type_id'] = None sp = self._driver._get_storage_profile(volume) self.assertEqual(None, sp, "Without a volume_type_id no storage " "profile should be returned.") # profile associated with the volume type should be returned fake_id = 'fake_volume_id' volume['volume_type_id'] = fake_id get_volume_type_extra_specs.return_value = 'fake_profile' profile = self._driver._get_storage_profile(volume) self.assertEqual('fake_profile', profile) spec_key = 'vmware:storage_profile' get_volume_type_extra_specs.assert_called_once_with(fake_id, spec_key) # None should be returned when no storage profile is # associated with the volume type get_volume_type_extra_specs.return_value = False profile = self._driver._get_storage_profile(volume) self.assertIsNone(profile) @mock.patch('cinder.volume.drivers.vmware.vim_util.' 'convert_datastores_to_hubs') @mock.patch('cinder.volume.drivers.vmware.vim_util.' 'convert_hubs_to_datastores') @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'session', new_callable=mock.PropertyMock) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_filter_ds_by_profile(self, volumeops, session, hubs_to_ds, ds_to_hubs): """Test vmdk _filter_ds_by_profile() method.""" volumeops = volumeops.return_value session = session.return_value # Test with no profile id datastores = [mock.sentinel.ds1, mock.sentinel.ds2] profile = 'fake_profile' volumeops.retrieve_profile_id.return_value = None self.assertRaises(error_util.VimException, self._driver._filter_ds_by_profile, datastores, profile) volumeops.retrieve_profile_id.assert_called_once_with(profile) # Test with a fake profile id profileId = 'fake_profile_id' filtered_dss = [mock.sentinel.ds1] # patch method calls from _filter_ds_by_profile volumeops.retrieve_profile_id.return_value = profileId pbm_cf = mock.sentinel.pbm_cf session.pbm.client.factory = pbm_cf hubs = [mock.sentinel.hub1, mock.sentinel.hub2] ds_to_hubs.return_value = hubs volumeops.filter_matching_hubs.return_value = mock.sentinel.hubs hubs_to_ds.return_value = filtered_dss # call _filter_ds_by_profile with a fake profile actual_dss = self._driver._filter_ds_by_profile(datastores, profile) # verify return value and called methods self.assertEqual(filtered_dss, actual_dss, "Wrong filtered datastores returned.") ds_to_hubs.assert_called_once_with(pbm_cf, datastores) volumeops.filter_matching_hubs.assert_called_once_with(hubs, profileId) hubs_to_ds.assert_called_once_with(mock.sentinel.hubs, datastores) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'session', new_callable=mock.PropertyMock) @mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.' 'volumeops', new_callable=mock.PropertyMock) def test_get_folder_ds_summary(self, volumeops, session): """Test _get_folder_ds_summary.""" volumeops = volumeops.return_value driver = self._driver driver._storage_policy_enabled = True volume = {'size': 10, 'volume_type_id': 'fake_type'} rp = mock.sentinel.resource_pool dss = [mock.sentinel.datastore1, mock.sentinel.datastore2] filtered_dss = [mock.sentinel.datastore1] profile = mock.sentinel.profile def filter_ds(datastores, storage_profile): return filtered_dss # patch method calls from _get_folder_ds_summary volumeops.get_dc.return_value = mock.sentinel.dc volumeops.get_vmfolder.return_value = mock.sentinel.vmfolder volumeops.create_folder.return_value = mock.sentinel.folder driver._get_storage_profile = mock.MagicMock() driver._get_storage_profile.return_value = profile driver._filter_ds_by_profile = mock.MagicMock(side_effect=filter_ds) driver._select_datastore_summary = mock.MagicMock() driver._select_datastore_summary.return_value = mock.sentinel.summary # call _get_folder_ds_summary (folder, datastore_summary) = driver._get_folder_ds_summary(volume, rp, dss) # verify returned values and calls made self.assertEqual(mock.sentinel.folder, folder, "Folder returned is wrong.") self.assertEqual(mock.sentinel.summary, datastore_summary, "Datastore summary returned is wrong.") volumeops.get_dc.assert_called_once_with(rp) volumeops.get_vmfolder.assert_called_once_with(mock.sentinel.dc) volumeops.create_folder.assert_called_once_with(mock.sentinel.vmfolder, self.VOLUME_FOLDER) driver._get_storage_profile.assert_called_once_with(volume) driver._filter_ds_by_profile.assert_called_once_with(dss, profile) size = volume['size'] * units.GiB driver._select_datastore_summary.assert_called_once_with(size, filtered_dss) @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_extend_vmdk_virtual_disk(self, volume_ops): """Test vmdk._extend_vmdk_virtual_disk.""" self._test_extend_vmdk_virtual_disk(volume_ops) @mock.patch.object(vmware_images, 'fetch_flat_image') @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_get_ds_name_flat_vmdk_path') @mock.patch.object(VMDK_DRIVER, '_create_backing_in_inventory') @mock.patch.object(VMDK_DRIVER, 'session') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_copy_image_to_volume_vmdk(self, volume_ops, session, _create_backing_in_inventory, _get_ds_name_flat_vmdk_path, _extend_vmdk_virtual_disk, fetch_flat_image): """Test copy_image_to_volume with an acceptable vmdk disk format.""" self._test_copy_image_to_volume_vmdk(volume_ops, session, _create_backing_in_inventory, _get_ds_name_flat_vmdk_path, _extend_vmdk_virtual_disk, fetch_flat_image) @mock.patch.object(vmware_images, 'fetch_stream_optimized_image') @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, '_select_ds_for_volume') @mock.patch.object(VMDK_DRIVER, 'session') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_copy_image_to_volume_stream_optimized(self, volumeops, session, _select_ds_for_volume, _extend_virtual_disk, fetch_optimized_image): """Test copy_image_to_volume. Test with an acceptable vmdk disk format and streamOptimized disk type. """ self._test_copy_image_to_volume_stream_optimized(volumeops, session, _select_ds_for_volume, _extend_virtual_disk, fetch_optimized_image) @mock.patch.object(VMDK_DRIVER, '_select_ds_for_volume') @mock.patch.object(VMDK_DRIVER, '_extend_vmdk_virtual_disk') @mock.patch.object(VMDK_DRIVER, 'volumeops') def test_extend_volume(self, volume_ops, _extend_virtual_disk, _select_ds_for_volume): """Test extend_volume.""" self._test_extend_volume(volume_ops, _extend_virtual_disk, _select_ds_for_volume) cinder-2014.1.5/cinder/tests/test_zadara.py0000664000567000056700000007371212540642606021650 0ustar jenkinsjenkins00000000000000# Copyright (c) 2012 Zadara Storage, Inc. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Tests for Zadara VPSA volume driver """ import copy import httplib from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.zadara import zadara_opts from cinder.volume.drivers.zadara import ZadaraVPSAISCSIDriver LOG = logging.getLogger("cinder.volume.driver") DEFAULT_RUNTIME_VARS = { 'status': 200, 'user': 'test', 'password': 'test_password', 'access_key': '0123456789ABCDEF', 'volumes': [], 'servers': [], 'controllers': [('active_ctrl', {'display-name': 'test_ctrl'})], 'counter': 1000, 'login': """ 2012-04-30... %s 1 2012-02-21... jsmith@example.com jsmith 0 """, 'good': """ 0 """, 'bad_login': """ 5 Some message... """, 'bad_volume': """ 10081 Virtual volume xxx not found """, 'bad_server': """ 10086 Server xxx not found """, 'server_created': """ %s 0 """, } RUNTIME_VARS = None class FakeRequest(object): def __init__(self, method, url, body): self.method = method self.url = url self.body = body self.status = RUNTIME_VARS['status'] def read(self): ops = {'POST': [('/api/users/login.xml', self._login), ('/api/volumes.xml', self._create_volume), ('/api/servers.xml', self._create_server), ('/api/servers/*/volumes.xml', self._attach), ('/api/volumes/*/detach.xml', self._detach), ('/api/volumes/*/expand.xml', self._expand), ('/api/consistency_groups/*/snapshots.xml', self._create_snapshot), ('/api/consistency_groups/*/clone.xml', self._create_clone)], 'DELETE': [('/api/volumes/*', self._delete), ('/api/snapshots/*', self._delete_snapshot)], 'GET': [('/api/volumes.xml', self._list_volumes), ('/api/pools.xml', self._list_pools), ('/api/vcontrollers.xml', self._list_controllers), ('/api/servers.xml', self._list_servers), ('/api/consistency_groups/*/snapshots.xml', self._list_vol_snapshots), ('/api/volumes/*/servers.xml', self._list_vol_attachments)] } ops_list = ops[self.method] modified_url = self.url.split('?')[0] for (templ_url, func) in ops_list: if self._compare_url(modified_url, templ_url): result = func() return result def _compare_url(self, url, template_url): items = url.split('/') titems = template_url.split('/') for (i, titem) in enumerate(titems): if titem != '*' and titem != items[i]: return False return True def _get_parameters(self, data): items = data.split('&') params = {} for item in items: if item: (k, v) = item.split('=') params[k] = v return params def _get_counter(self): cnt = RUNTIME_VARS['counter'] RUNTIME_VARS['counter'] += 1 return cnt def _login(self): params = self._get_parameters(self.body) if (params['user'] == RUNTIME_VARS['user'] and params['password'] == RUNTIME_VARS['password']): return RUNTIME_VARS['login'] % RUNTIME_VARS['access_key'] else: return RUNTIME_VARS['bad_login'] def _incorrect_access_key(self, params): if params['access_key'] != RUNTIME_VARS['access_key']: return True else: return False def _create_volume(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] params['display-name'] = params['name'] params['cg-name'] = params['name'] params['snapshots'] = [] params['attachments'] = [] vpsa_vol = 'volume-%07d' % self._get_counter() RUNTIME_VARS['volumes'].append((vpsa_vol, params)) return RUNTIME_VARS['good'] def _create_server(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] params['display-name'] = params['display_name'] vpsa_srv = 'srv-%07d' % self._get_counter() RUNTIME_VARS['servers'].append((vpsa_srv, params)) return RUNTIME_VARS['server_created'] % vpsa_srv def _attach(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] srv = self.url.split('/')[3] vol = params['volume_name[]'] for (vol_name, params) in RUNTIME_VARS['volumes']: if vol_name == vol: attachments = params['attachments'] if srv in attachments: #already attached - ok return RUNTIME_VARS['good'] else: attachments.append(srv) return RUNTIME_VARS['good'] return RUNTIME_VARS['bad_volume'] def _detach(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] vol = self.url.split('/')[3] srv = params['server_name[]'] for (vol_name, params) in RUNTIME_VARS['volumes']: if vol_name == vol: attachments = params['attachments'] if srv not in attachments: return RUNTIME_VARS['bad_server'] else: attachments.remove(srv) return RUNTIME_VARS['good'] return RUNTIME_VARS['bad_volume'] def _expand(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] vol = self.url.split('/')[3] capacity = params['capacity'] for (vol_name, params) in RUNTIME_VARS['volumes']: if vol_name == vol: params['capacity'] = capacity return RUNTIME_VARS['good'] return RUNTIME_VARS['bad_volume'] def _create_snapshot(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] cg_name = self.url.split('/')[3] snap_name = params['display_name'] for (vol_name, params) in RUNTIME_VARS['volumes']: if params['cg-name'] == cg_name: snapshots = params['snapshots'] if snap_name in snapshots: #already attached return RUNTIME_VARS['bad_volume'] else: snapshots.append(snap_name) return RUNTIME_VARS['good'] return RUNTIME_VARS['bad_volume'] def _delete_snapshot(self): snap = self.url.split('/')[3].split('.')[0] for (vol_name, params) in RUNTIME_VARS['volumes']: if snap in params['snapshots']: params['snapshots'].remove(snap) return RUNTIME_VARS['good'] return RUNTIME_VARS['bad_volume'] def _create_clone(self): params = self._get_parameters(self.body) if self._incorrect_access_key(params): return RUNTIME_VARS['bad_login'] params['display-name'] = params['name'] params['cg-name'] = params['name'] params['capacity'] = 1 params['snapshots'] = [] params['attachments'] = [] vpsa_vol = 'volume-%07d' % self._get_counter() RUNTIME_VARS['volumes'].append((vpsa_vol, params)) return RUNTIME_VARS['good'] def _delete(self): vol = self.url.split('/')[3].split('.')[0] for (vol_name, params) in RUNTIME_VARS['volumes']: if vol_name == vol: if params['attachments']: # there are attachments - should be volume busy error return RUNTIME_VARS['bad_volume'] else: RUNTIME_VARS['volumes'].remove((vol_name, params)) return RUNTIME_VARS['good'] return RUNTIME_VARS['bad_volume'] def _generate_list_resp(self, header, footer, body, lst, vol): resp = header for (obj, params) in lst: if vol: resp += body % (obj, params['display-name'], params['cg-name'], params['capacity']) else: resp += body % (obj, params['display-name']) resp += footer return resp def _list_volumes(self): header = """ 0 """ footer = "" body = """ %s %s %s Available %s 1 r5 write-through 2012-01-28... 2012-01-28... """ return self._generate_list_resp(header, footer, body, RUNTIME_VARS['volumes'], True) def _list_controllers(self): header = """ 0 """ footer = "" body = """ %s %s active iqn.2011-04.com.zadarastorage:vsa-xxx:1 1.1.1.1 1.1.1.1 0.0.09-05.1--77.7 ok ok test_chap_user test_chap_secret """ return self._generate_list_resp(header, footer, body, RUNTIME_VARS['controllers'], False) def _list_pools(self): header = """ 0 """ footer = "" return header + footer def _list_servers(self): header = """ 0 """ footer = "" body = """ %s %s %s Active 2012-01-28... 2012-01-28... """ resp = header for (obj, params) in RUNTIME_VARS['servers']: resp += body % (obj, params['display-name'], params['iqn']) resp += footer return resp def _get_server_obj(self, name): for (srv_name, params) in RUNTIME_VARS['servers']: if srv_name == name: return params def _list_vol_attachments(self): vol = self.url.split('/')[3] header = """ 0 """ footer = "" body = """ %s %s %s iqn.2011-04.com.zadarastorage:vsa-xxx:1 0 """ for (vol_name, params) in RUNTIME_VARS['volumes']: if vol_name == vol: attachments = params['attachments'] resp = header for server in attachments: srv_params = self._get_server_obj(server) resp += body % (server, srv_params['display-name'], srv_params['iqn']) resp += footer return resp return RUNTIME_VARS['bad_volume'] def _list_vol_snapshots(self): cg_name = self.url.split('/')[3] header = """ 0 """ footer = "" body = """ %s %s normal %s pool-00000001 """ for (vol_name, params) in RUNTIME_VARS['volumes']: if params['cg-name'] == cg_name: snapshots = params['snapshots'] resp = header for snap in snapshots: resp += body % (snap, snap, cg_name) resp += footer return resp return RUNTIME_VARS['bad_volume'] class FakeHTTPConnection(object): """A fake httplib.HTTPConnection for zadara volume driver tests.""" def __init__(self, host, port, use_ssl=False): LOG.debug('Enter: __init__ FakeHTTPConnection') self.host = host self.port = port self.use_ssl = use_ssl self.req = None def request(self, method, url, body): LOG.debug('Enter: request') self.req = FakeRequest(method, url, body) def getresponse(self): LOG.debug('Enter: getresponse') return self.req def close(self): LOG.debug('Enter: close') self.req = None class FakeHTTPSConnection(FakeHTTPConnection): def __init__(self, host, port): LOG.debug('Enter: __init__ FakeHTTPSConnection') super(FakeHTTPSConnection, self).__init__(host, port, use_ssl=True) class ZadaraVPSADriverTestCase(test.TestCase): """Test case for Zadara VPSA volume driver.""" def setUp(self): LOG.debug('Enter: setUp') super(ZadaraVPSADriverTestCase, self).setUp() global RUNTIME_VARS RUNTIME_VARS = copy.deepcopy(DEFAULT_RUNTIME_VARS) self.configuration = conf.Configuration(None) self.configuration.append_config_values(zadara_opts) self.configuration.reserved_percentage = 10 self.configuration.zadara_user = 'test' self.configuration.zadara_password = 'test_password' self.configuration.zadara_vpsa_poolname = 'pool-0001' self.driver = ZadaraVPSAISCSIDriver(configuration=self.configuration) self.stubs.Set(httplib, 'HTTPConnection', FakeHTTPConnection) self.stubs.Set(httplib, 'HTTPSConnection', FakeHTTPSConnection) self.driver.do_setup(None) def tearDown(self): super(ZadaraVPSADriverTestCase, self).tearDown() def test_create_destroy(self): """Create/Delete volume.""" volume = {'name': 'test_volume_01', 'size': 1} self.driver.create_volume(volume) self.driver.delete_volume(volume) def test_create_destroy_multiple(self): """Create/Delete multiple volumes.""" self.flags(zadara_vpsa_allow_nonexistent_delete=False) self.driver.create_volume({'name': 'test_volume_01', 'size': 1}) self.driver.create_volume({'name': 'test_volume_02', 'size': 2}) self.driver.create_volume({'name': 'test_volume_03', 'size': 3}) self.driver.delete_volume({'name': 'test_volume_02'}) self.driver.delete_volume({'name': 'test_volume_03'}) self.driver.delete_volume({'name': 'test_volume_01'}) self.assertRaises(exception.VolumeNotFound, self.driver.delete_volume, {'name': 'test_volume_04'}) self.flags(zadara_vpsa_allow_nonexistent_delete=True) self.driver.delete_volume({'name': 'test_volume_04'}) def test_destroy_non_existent(self): """Delete non-existent volume.""" self.flags(zadara_vpsa_allow_nonexistent_delete=False) volume = {'name': 'test_volume_02', 'size': 1} self.assertRaises(exception.VolumeNotFound, self.driver.delete_volume, volume) self.flags(zadara_vpsa_allow_nonexistent_delete=True) def test_empty_apis(self): """Test empty func (for coverage only).""" context = None volume = {'name': 'test_volume_01', 'size': 1} self.driver.create_export(context, volume) self.driver.ensure_export(context, volume) self.driver.remove_export(context, volume) self.assertRaises(NotImplementedError, self.driver.local_path, None) self.driver.check_for_setup_error() def test_volume_attach_detach(self): """Test volume attachment and detach.""" volume = {'name': 'test_volume_01', 'size': 1, 'id': 123} connector = dict(initiator='test_iqn.1') self.driver.create_volume(volume) props = self.driver.initialize_connection(volume, connector) self.assertEqual(props['driver_volume_type'], 'iscsi') data = props['data'] self.assertEqual(data['target_portal'], '1.1.1.1:3260') self.assertEqual(data['target_iqn'], 'iqn.2011-04.com.zadarastorage:vsa-xxx:1') self.assertEqual(data['target_lun'], '0') self.assertEqual(data['volume_id'], 123) self.assertEqual(data['auth_method'], 'CHAP') self.assertEqual(data['auth_username'], 'test_chap_user') self.assertEqual(data['auth_password'], 'test_chap_secret') self.driver.terminate_connection(volume, connector) self.driver.delete_volume(volume) def test_volume_attach_multiple_detach(self): """Test multiple volume attachment and detach.""" volume = {'name': 'test_volume_01', 'size': 1, 'id': 123} connector1 = dict(initiator='test_iqn.1') connector2 = dict(initiator='test_iqn.2') connector3 = dict(initiator='test_iqn.3') self.driver.create_volume(volume) props1 = self.driver.initialize_connection(volume, connector1) props2 = self.driver.initialize_connection(volume, connector2) props3 = self.driver.initialize_connection(volume, connector3) self.driver.terminate_connection(volume, connector1) self.driver.terminate_connection(volume, connector3) self.driver.terminate_connection(volume, connector2) self.driver.delete_volume(volume) def test_wrong_attach_params(self): """Test different wrong attach scenarios.""" volume1 = {'name': 'test_volume_01', 'size': 1, 'id': 101} volume2 = {'name': 'test_volume_02', 'size': 1, 'id': 102} volume3 = {'name': 'test_volume_03', 'size': 1, 'id': 103} connector1 = dict(initiator='test_iqn.1') connector2 = dict(initiator='test_iqn.2') connector3 = dict(initiator='test_iqn.3') self.assertRaises(exception.VolumeNotFound, self.driver.initialize_connection, volume1, connector1) def test_wrong_detach_params(self): """Test different wrong detachment scenarios.""" volume1 = {'name': 'test_volume_01', 'size': 1, 'id': 101} volume2 = {'name': 'test_volume_02', 'size': 1, 'id': 102} volume3 = {'name': 'test_volume_03', 'size': 1, 'id': 103} connector1 = dict(initiator='test_iqn.1') connector2 = dict(initiator='test_iqn.2') connector3 = dict(initiator='test_iqn.3') self.driver.create_volume(volume1) self.driver.create_volume(volume2) props1 = self.driver.initialize_connection(volume1, connector1) props2 = self.driver.initialize_connection(volume2, connector2) self.assertRaises(exception.ZadaraServerNotFound, self.driver.terminate_connection, volume1, connector3) self.assertRaises(exception.VolumeNotFound, self.driver.terminate_connection, volume3, connector1) self.assertRaises(exception.FailedCmdWithDump, self.driver.terminate_connection, volume1, connector2) def test_wrong_login_reply(self): """Test wrong login reply.""" RUNTIME_VARS['login'] = """ %s 0 """ self.assertRaises(exception.MalformedResponse, self.driver.do_setup, None) RUNTIME_VARS['login'] = """ 2012-04-30... 1 2012-02-21... jsmith@example.com jsmith %s 0 """ self.assertRaises(exception.MalformedResponse, self.driver.do_setup, None) def test_ssl_use(self): """Coverage test for SSL connection.""" self.flags(zadara_vpsa_use_ssl=True) self.driver.do_setup(None) self.flags(zadara_vpsa_use_ssl=False) def test_bad_http_response(self): """Coverage test for non-good HTTP response.""" RUNTIME_VARS['status'] = 400 volume = {'name': 'test_volume_01', 'size': 1} self.assertRaises(exception.BadHTTPResponseStatus, self.driver.create_volume, volume) def test_delete_without_detach(self): """Test volume deletion without detach.""" volume1 = {'name': 'test_volume_01', 'size': 1, 'id': 101} connector1 = dict(initiator='test_iqn.1') connector2 = dict(initiator='test_iqn.2') connector3 = dict(initiator='test_iqn.3') self.driver.create_volume(volume1) props1 = self.driver.initialize_connection(volume1, connector1) props2 = self.driver.initialize_connection(volume1, connector2) props3 = self.driver.initialize_connection(volume1, connector3) self.flags(zadara_vpsa_auto_detach_on_delete=False) self.assertRaises(exception.VolumeAttached, self.driver.delete_volume, volume1) self.flags(zadara_vpsa_auto_detach_on_delete=True) self.driver.delete_volume(volume1) def test_no_active_ctrl(self): RUNTIME_VARS['controllers'] = [] volume = {'name': 'test_volume_01', 'size': 1, 'id': 123} connector = dict(initiator='test_iqn.1') self.driver.create_volume(volume) self.assertRaises(exception.ZadaraVPSANoActiveController, self.driver.initialize_connection, volume, connector) def test_create_destroy_snapshot(self): """Create/Delete snapshot test.""" volume = {'name': 'test_volume_01', 'size': 1} snapshot = {'name': 'snap_01', 'volume_name': volume['name']} self.driver.create_volume(volume) self.assertRaises(exception.VolumeNotFound, self.driver.create_snapshot, {'name': snapshot['name'], 'volume_name': 'wrong_vol'}) self.driver.create_snapshot(snapshot) # Deleted should succeed for missing volume self.driver.delete_snapshot({'name': snapshot['name'], 'volume_name': 'wrong_vol'}) # Deleted should succeed for missing snap self.driver.delete_snapshot({'name': 'wrong_snap', 'volume_name': volume['name']}) self.driver.delete_snapshot(snapshot) self.driver.delete_volume(volume) def test_expand_volume(self): """Expand volume test.""" volume = {'name': 'test_volume_01', 'size': 10} volume2 = {'name': 'test_volume_02', 'size': 10} self.driver.create_volume(volume) self.assertRaises(exception.VolumeNotFound, self.driver.extend_volume, volume2, 15) self.assertRaises(exception.InvalidInput, self.driver.extend_volume, volume, 5) self.driver.extend_volume(volume, 15) self.driver.delete_volume(volume) def test_create_destroy_clones(self): """Create/Delete clones test.""" volume1 = {'name': 'test_volume_01', 'size': 1} volume2 = {'name': 'test_volume_02', 'size': 1} volume3 = {'name': 'test_volume_03', 'size': 1} snapshot = {'name': 'snap_01', 'volume_name': volume1['name']} self.driver.create_volume(volume1) self.driver.create_snapshot(snapshot) # Test invalid vol reference self.assertRaises(exception.VolumeNotFound, self.driver.create_volume_from_snapshot, volume2, {'name': snapshot['name'], 'volume_name': 'wrong_vol'}) # Test invalid snap reference self.assertRaises(exception.VolumeNotFound, self.driver.create_volume_from_snapshot, volume2, {'name': 'wrong_snap', 'volume_name': snapshot['volume_name']}) # Test invalid src_vref for volume clone self.assertRaises(exception.VolumeNotFound, self.driver.create_cloned_volume, volume3, volume2) self.driver.create_volume_from_snapshot(volume2, snapshot) self.driver.create_cloned_volume(volume3, volume1) self.driver.delete_volume(volume3) self.driver.delete_volume(volume2) self.driver.delete_snapshot(snapshot) self.driver.delete_volume(volume1) def test_get_volume_stats(self): """Get stats test.""" self.mox.StubOutWithMock(self.configuration, 'safe_get') self.configuration.safe_get('volume_backend_name'). \ AndReturn('ZadaraVPSAISCSIDriver') self.mox.ReplayAll() data = self.driver.get_volume_stats(True) self.assertEqual(data['vendor_name'], 'Zadara Storage') self.assertEqual(data['total_capacity_gb'], 'infinite') self.assertEqual(data['free_capacity_gb'], 'infinite') self.assertEqual(data, {'total_capacity_gb': 'infinite', 'free_capacity_gb': 'infinite', 'reserved_percentage': self.configuration.reserved_percentage, 'QoS_support': False, 'vendor_name': 'Zadara Storage', 'driver_version': self.driver.VERSION, 'storage_protocol': 'iSCSI', 'volume_backend_name': 'ZadaraVPSAISCSIDriver', }) cinder-2014.1.5/cinder/tests/test_image_utils.py0000664000567000056700000005676512540642606022721 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2013 eNovance , Inc. # All Rights Reserved. # # 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. """Unit tests for image utils.""" import contextlib import mox import tempfile from cinder import context from cinder import exception from cinder.image import image_utils from cinder.openstack.common import processutils from cinder import test from cinder import units from cinder import utils class FakeImageService: def __init__(self): self._imagedata = {} def download(self, context, image_id, data): self.show(context, image_id) data.write(self._imagedata.get(image_id, '')) def show(self, context, image_id): return {'size': 2 * units.GiB, 'disk_format': 'qcow2', 'container_format': 'bare'} def update(self, context, image_id, metadata, path): pass class TestUtils(test.TestCase): TEST_IMAGE_ID = 321 TEST_DEV_PATH = "/dev/ether/fake_dev" def setUp(self): super(TestUtils, self).setUp() self._mox = mox.Mox() self._image_service = FakeImageService() self.addCleanup(self._mox.UnsetStubs) def test_resize_image(self): mox = self._mox mox.StubOutWithMock(utils, 'execute') TEST_IMG_SOURCE = 'boobar.img' TEST_IMG_SIZE_IN_GB = 1 utils.execute('qemu-img', 'resize', TEST_IMG_SOURCE, '%sG' % TEST_IMG_SIZE_IN_GB, run_as_root=False) mox.ReplayAll() image_utils.resize_image(TEST_IMG_SOURCE, TEST_IMG_SIZE_IN_GB) mox.VerifyAll() def test_convert_image(self): mox = self._mox mox.StubOutWithMock(utils, 'execute') TEST_OUT_FORMAT = 'vmdk' TEST_SOURCE = 'img/qemu.img' TEST_DEST = '/img/vmware.vmdk' utils.execute('qemu-img', 'convert', '-O', TEST_OUT_FORMAT, TEST_SOURCE, TEST_DEST, run_as_root=True) mox.ReplayAll() image_utils.convert_image(TEST_SOURCE, TEST_DEST, TEST_OUT_FORMAT) mox.VerifyAll() def test_qemu_img_info(self): TEST_PATH = "img/qemu.qcow2" TEST_RETURN = "image: qemu.qcow2\n"\ "backing_file: qemu.qcow2 (actual path: qemu.qcow2)\n"\ "file_format: qcow2\n"\ "virtual_size: 50M (52428800 bytes)\n"\ "cluster_size: 65536\n"\ "disk_size: 196K (200704 bytes)\n"\ "Snapshot list:\n"\ "ID TAG VM SIZE DATE VM CLOCK\n"\ "1 snap1 1.7G 2011-10-04 19:04:00 32:06:34.974" TEST_STR = "image: qemu.qcow2\n"\ "file_format: qcow2\n"\ "virtual_size: 52428800\n"\ "disk_size: 200704\n"\ "cluster_size: 65536\n"\ "backing_file: qemu.qcow2\n"\ "snapshots: [{'date': '2011-10-04', "\ "'vm_clock': '19:04:00 32:06:34.974', "\ "'vm_size': '1.7G', 'tag': 'snap1', 'id': '1'}]" mox = self._mox mox.StubOutWithMock(utils, 'execute') utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', TEST_PATH, run_as_root=True).AndReturn( (TEST_RETURN, 'ignored') ) mox.ReplayAll() inf = image_utils.qemu_img_info(TEST_PATH) self.assertEqual(inf.image, 'qemu.qcow2') self.assertEqual(inf.backing_file, 'qemu.qcow2') self.assertEqual(inf.file_format, 'qcow2') self.assertEqual(inf.virtual_size, 52428800) self.assertEqual(inf.cluster_size, 65536) self.assertEqual(inf.disk_size, 200704) self.assertEqual(inf.snapshots[0]['id'], '1') self.assertEqual(inf.snapshots[0]['tag'], 'snap1') self.assertEqual(inf.snapshots[0]['vm_size'], '1.7G') self.assertEqual(inf.snapshots[0]['date'], '2011-10-04') self.assertEqual(inf.snapshots[0]['vm_clock'], '19:04:00 32:06:34.974') self.assertEqual(str(inf), TEST_STR) def test_qemu_img_info_alt(self): """Test a slightly different variation of qemu-img output. (Based on Fedora 19's qemu-img 1.4.2.) """ TEST_PATH = "img/qemu.qcow2" TEST_RETURN = "image: qemu.qcow2\n"\ "backing file: qemu.qcow2 (actual path: qemu.qcow2)\n"\ "file format: qcow2\n"\ "virtual size: 50M (52428800 bytes)\n"\ "cluster_size: 65536\n"\ "disk size: 196K (200704 bytes)\n"\ "Snapshot list:\n"\ "ID TAG VM SIZE DATE VM CLOCK\n"\ "1 snap1 1.7G 2011-10-04 19:04:00 32:06:34.974" TEST_STR = "image: qemu.qcow2\n"\ "file_format: qcow2\n"\ "virtual_size: 52428800\n"\ "disk_size: 200704\n"\ "cluster_size: 65536\n"\ "backing_file: qemu.qcow2\n"\ "snapshots: [{'date': '2011-10-04', "\ "'vm_clock': '19:04:00 32:06:34.974', "\ "'vm_size': '1.7G', 'tag': 'snap1', 'id': '1'}]" mox = self._mox mox.StubOutWithMock(utils, 'execute') cmd = ['env', 'LC_ALL=C', 'qemu-img', 'info', TEST_PATH] utils.execute(*cmd, run_as_root=True).AndReturn( (TEST_RETURN, 'ignored')) mox.ReplayAll() inf = image_utils.qemu_img_info(TEST_PATH) self.assertEqual(inf.image, 'qemu.qcow2') self.assertEqual(inf.backing_file, 'qemu.qcow2') self.assertEqual(inf.file_format, 'qcow2') self.assertEqual(inf.virtual_size, 52428800) self.assertEqual(inf.cluster_size, 65536) self.assertEqual(inf.disk_size, 200704) self.assertEqual(inf.snapshots[0]['id'], '1') self.assertEqual(inf.snapshots[0]['tag'], 'snap1') self.assertEqual(inf.snapshots[0]['vm_size'], '1.7G') self.assertEqual(inf.snapshots[0]['date'], '2011-10-04') self.assertEqual(inf.snapshots[0]['vm_clock'], '19:04:00 32:06:34.974') self.assertEqual(str(inf), TEST_STR) def _test_fetch_to_raw(self, has_qemu=True, src_inf=None, dest_inf=None): mox = self._mox mox.StubOutWithMock(image_utils, 'create_temporary_file') mox.StubOutWithMock(utils, 'execute') mox.StubOutWithMock(image_utils, 'fetch') TEST_INFO = ("image: qemu.qcow2\n" "file format: raw\n" "virtual size: 0 (0 bytes)\n" "disk size: 0") image_utils.create_temporary_file().AndReturn(self.TEST_DEV_PATH) test_qemu_img = utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', self.TEST_DEV_PATH, run_as_root=True) if has_qemu: test_qemu_img.AndReturn((TEST_INFO, 'ignored')) image_utils.fetch(context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, None, None) else: test_qemu_img.AndRaise(processutils.ProcessExecutionError()) if has_qemu and src_inf: utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', self.TEST_DEV_PATH, run_as_root=True).AndReturn( (src_inf, 'ignored') ) if has_qemu and dest_inf: utils.execute( 'qemu-img', 'convert', '-O', 'raw', self.TEST_DEV_PATH, self.TEST_DEV_PATH, run_as_root=True) utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', self.TEST_DEV_PATH, run_as_root=True).AndReturn( (dest_inf, 'ignored') ) self._mox.ReplayAll() def test_fetch_to_raw(self): SRC_INFO = ("image: qemu.qcow2\n" "file_format: qcow2 \n" "virtual_size: 50M (52428800 bytes)\n" "cluster_size: 65536\n" "disk_size: 196K (200704 bytes)") DST_INFO = ("image: qemu.raw\n" "file_format: raw\n" "virtual_size: 50M (52428800 bytes)\n" "cluster_size: 65536\n" "disk_size: 196K (200704 bytes)\n") self._test_fetch_to_raw(src_inf=SRC_INFO, dest_inf=DST_INFO) image_utils.fetch_to_raw(context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg()) self._mox.VerifyAll() def test_fetch_to_raw_no_qemu_img(self): self._test_fetch_to_raw(has_qemu=False) self.assertRaises(exception.ImageUnacceptable, image_utils.fetch_to_raw, context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg()) self._mox.VerifyAll() def test_fetch_to_raw_on_error_parsing_failed(self): SRC_INFO_NO_FORMAT = ("image: qemu.qcow2\n" "virtual_size: 50M (52428800 bytes)\n" "cluster_size: 65536\n" "disk_size: 196K (200704 bytes)") self._test_fetch_to_raw(src_inf=SRC_INFO_NO_FORMAT) self.assertRaises(exception.ImageUnacceptable, image_utils.fetch_to_raw, context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg()) self._mox.VerifyAll() def test_fetch_to_raw_on_error_backing_file(self): SRC_INFO_BACKING_FILE = ("image: qemu.qcow2\n" "backing_file: qemu.qcow2\n" "file_format: qcow2 \n" "virtual_size: 50M (52428800 bytes)\n" "cluster_size: 65536\n" "disk_size: 196K (200704 bytes)") self._test_fetch_to_raw(src_inf=SRC_INFO_BACKING_FILE) self.assertRaises(exception.ImageUnacceptable, image_utils.fetch_to_raw, context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg()) self._mox.VerifyAll() def test_fetch_to_raw_on_error_not_convert_to_raw(self): IMG_INFO = ("image: qemu.qcow2\n" "file_format: qcow2 \n" "virtual_size: 50M (52428800 bytes)\n" "cluster_size: 65536\n" "disk_size: 196K (200704 bytes)") self._test_fetch_to_raw(src_inf=IMG_INFO, dest_inf=IMG_INFO) self.assertRaises(exception.ImageUnacceptable, image_utils.fetch_to_raw, context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg()) def test_fetch_to_raw_on_error_image_size(self): TEST_VOLUME_SIZE = 1 SRC_INFO = ("image: qemu.qcow2\n" "file_format: qcow2 \n" "virtual_size: 2G (2147483648 bytes)\n" "cluster_size: 65536\n" "disk_size: 196K (200704 bytes)") self._test_fetch_to_raw(src_inf=SRC_INFO) self.assertRaises(exception.ImageUnacceptable, image_utils.fetch_to_raw, context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg(), size=TEST_VOLUME_SIZE) def _test_fetch_verify_image(self, qemu_info, volume_size=1): fake_image_service = FakeImageService() mox = self._mox mox.StubOutWithMock(image_utils, 'fetch') mox.StubOutWithMock(utils, 'execute') image_utils.fetch(context, fake_image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, None, None) utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', self.TEST_DEV_PATH, run_as_root=True).AndReturn( (qemu_info, 'ignored') ) self._mox.ReplayAll() self.assertRaises(exception.ImageUnacceptable, image_utils.fetch_verify_image, context, fake_image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, size=volume_size) def test_fetch_verify_image_with_backing_file(self): TEST_RETURN = "image: qemu.qcow2\n"\ "backing_file: qemu.qcow2 (actual path: qemu.qcow2)\n"\ "file_format: qcow2\n"\ "virtual_size: 50M (52428800 bytes)\n"\ "cluster_size: 65536\n"\ "disk_size: 196K (200704 bytes)\n"\ "Snapshot list:\n"\ "ID TAG VM SIZE DATE VM CLOCK\n"\ "1 snap1 1.7G 2011-10-04 19:04:00 32:06:34.974" self._test_fetch_verify_image(TEST_RETURN) def test_fetch_verify_image_without_file_format(self): TEST_RETURN = "image: qemu.qcow2\n"\ "virtual_size: 50M (52428800 bytes)\n"\ "cluster_size: 65536\n"\ "disk_size: 196K (200704 bytes)\n"\ "Snapshot list:\n"\ "ID TAG VM SIZE DATE VM CLOCK\n"\ "1 snap1 1.7G 2011-10-04 19:04:00 32:06:34.974" self._test_fetch_verify_image(TEST_RETURN) def test_fetch_verify_image_image_size(self): TEST_RETURN = "image: qemu.qcow2\n"\ "file_format: qcow2\n"\ "virtual_size: 2G (2147483648 bytes)\n"\ "cluster_size: 65536\n"\ "disk_size: 196K (200704 bytes)\n"\ "Snapshot list:\n"\ "ID TAG VM SIZE DATE VM CLOCK\n"\ "1 snap1 1.7G 2011-10-04 19:04:00 32:06:34.974" self._test_fetch_verify_image(TEST_RETURN) def test_upload_volume(self): image_meta = {'id': 1, 'disk_format': 'qcow2'} TEST_RET = "image: qemu.qcow2\n"\ "file_format: qcow2 \n"\ "virtual_size: 50M (52428800 bytes)\n"\ "cluster_size: 65536\n"\ "disk_size: 196K (200704 bytes)" m = self._mox m.StubOutWithMock(utils, 'execute') utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', mox.IgnoreArg(), run_as_root=True).AndReturn( (TEST_RET, 'ignored')) utils.execute('qemu-img', 'convert', '-O', 'qcow2', mox.IgnoreArg(), mox.IgnoreArg(), run_as_root=True) utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', mox.IgnoreArg(), run_as_root=True).AndReturn( (TEST_RET, 'ignored') ) m.ReplayAll() image_utils.upload_volume(context, FakeImageService(), image_meta, '/dev/loop1') m.VerifyAll() def test_upload_volume_with_raw_image(self): image_meta = {'id': 1, 'disk_format': 'raw'} mox = self._mox mox.StubOutWithMock(image_utils, 'convert_image') mox.ReplayAll() with tempfile.NamedTemporaryFile() as f: image_utils.upload_volume(context, FakeImageService(), image_meta, f.name) mox.VerifyAll() def test_upload_volume_on_error(self): image_meta = {'id': 1, 'disk_format': 'qcow2'} TEST_RET = "image: qemu.vhd\n"\ "file_format: vhd \n"\ "virtual_size: 50M (52428800 bytes)\n"\ "cluster_size: 65536\n"\ "disk_size: 196K (200704 bytes)" m = self._mox m.StubOutWithMock(utils, 'execute') utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', mox.IgnoreArg(), run_as_root=True).AndReturn( (TEST_RET, 'ignored')) utils.execute('qemu-img', 'convert', '-O', 'qcow2', mox.IgnoreArg(), mox.IgnoreArg(), run_as_root=True) utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', mox.IgnoreArg(), run_as_root=True).AndReturn( (TEST_RET, 'ignored') ) m.ReplayAll() self.assertRaises(exception.ImageUnacceptable, image_utils.upload_volume, context, FakeImageService(), image_meta, '/dev/loop1') m.VerifyAll() class TestExtractTo(test.TestCase): def test_extract_to_calls_tar(self): mox = self.mox mox.StubOutWithMock(utils, 'execute') utils.execute( 'tar', '-xzf', 'archive.tgz', '-C', 'targetpath').AndReturn( ('ignored', 'ignored') ) mox.ReplayAll() image_utils.extract_targz('archive.tgz', 'targetpath') mox.VerifyAll() class TestSetVhdParent(test.TestCase): def test_vhd_util_call(self): mox = self.mox mox.StubOutWithMock(utils, 'execute') utils.execute( 'vhd-util', 'modify', '-n', 'child', '-p', 'parent').AndReturn( ('ignored', 'ignored') ) mox.ReplayAll() image_utils.set_vhd_parent('child', 'parent') mox.VerifyAll() class TestFixVhdChain(test.TestCase): def test_empty_chain(self): mox = self.mox mox.StubOutWithMock(image_utils, 'set_vhd_parent') mox.ReplayAll() image_utils.fix_vhd_chain([]) def test_single_vhd_file_chain(self): mox = self.mox mox.StubOutWithMock(image_utils, 'set_vhd_parent') mox.ReplayAll() image_utils.fix_vhd_chain(['0.vhd']) def test_chain_with_two_elements(self): mox = self.mox mox.StubOutWithMock(image_utils, 'set_vhd_parent') image_utils.set_vhd_parent('0.vhd', '1.vhd') mox.ReplayAll() image_utils.fix_vhd_chain(['0.vhd', '1.vhd']) class TestGetSize(test.TestCase): def test_vhd_util_call(self): mox = self.mox mox.StubOutWithMock(utils, 'execute') utils.execute( 'vhd-util', 'query', '-n', 'vhdfile', '-v').AndReturn( ('1024', 'ignored') ) mox.ReplayAll() result = image_utils.get_vhd_size('vhdfile') mox.VerifyAll() self.assertEqual(1024, result) class TestResize(test.TestCase): def test_vhd_util_call(self): mox = self.mox mox.StubOutWithMock(utils, 'execute') utils.execute( 'vhd-util', 'resize', '-n', 'vhdfile', '-s', '1024', '-j', 'journal').AndReturn(('ignored', 'ignored')) mox.ReplayAll() image_utils.resize_vhd('vhdfile', 1024, 'journal') mox.VerifyAll() class TestCoalesce(test.TestCase): def test_vhd_util_call(self): mox = self.mox mox.StubOutWithMock(utils, 'execute') utils.execute( 'vhd-util', 'coalesce', '-n', 'vhdfile' ).AndReturn(('ignored', 'ignored')) mox.ReplayAll() image_utils.coalesce_vhd('vhdfile') mox.VerifyAll() @contextlib.contextmanager def fake_context(return_value): yield return_value class TestTemporaryFile(test.TestCase): def test_file_unlinked(self): mox = self.mox mox.StubOutWithMock(image_utils, 'create_temporary_file') mox.StubOutWithMock(image_utils.os, 'unlink') image_utils.create_temporary_file().AndReturn('somefile') image_utils.os.unlink('somefile') mox.ReplayAll() with image_utils.temporary_file(): pass def test_file_unlinked_on_error(self): mox = self.mox mox.StubOutWithMock(image_utils, 'create_temporary_file') mox.StubOutWithMock(image_utils.os, 'unlink') image_utils.create_temporary_file().AndReturn('somefile') image_utils.os.unlink('somefile') mox.ReplayAll() def sut(): with image_utils.temporary_file(): raise test.TestingException() self.assertRaises(test.TestingException, sut) class TestCoalesceChain(test.TestCase): def test_single_vhd(self): mox = self.mox mox.StubOutWithMock(image_utils, 'get_vhd_size') mox.StubOutWithMock(image_utils, 'resize_vhd') mox.StubOutWithMock(image_utils, 'coalesce_vhd') mox.ReplayAll() result = image_utils.coalesce_chain(['0.vhd']) mox.VerifyAll() self.assertEqual('0.vhd', result) def test_chain_of_two_vhds(self): self.mox.StubOutWithMock(image_utils, 'get_vhd_size') self.mox.StubOutWithMock(image_utils, 'temporary_dir') self.mox.StubOutWithMock(image_utils, 'resize_vhd') self.mox.StubOutWithMock(image_utils, 'coalesce_vhd') self.mox.StubOutWithMock(image_utils, 'temporary_file') image_utils.get_vhd_size('0.vhd').AndReturn(1024) image_utils.temporary_dir().AndReturn(fake_context('tdir')) image_utils.resize_vhd('1.vhd', 1024, 'tdir/vhd-util-resize-journal') image_utils.coalesce_vhd('0.vhd') self.mox.ReplayAll() result = image_utils.coalesce_chain(['0.vhd', '1.vhd']) self.mox.VerifyAll() self.assertEqual('1.vhd', result) class TestDiscoverChain(test.TestCase): def test_discovery_calls(self): mox = self.mox mox.StubOutWithMock(image_utils, 'file_exist') image_utils.file_exist('some/path/0.vhd').AndReturn(True) image_utils.file_exist('some/path/1.vhd').AndReturn(True) image_utils.file_exist('some/path/2.vhd').AndReturn(False) mox.ReplayAll() result = image_utils.discover_vhd_chain('some/path') mox.VerifyAll() self.assertEqual( ['some/path/0.vhd', 'some/path/1.vhd'], result) class TestXenServerImageToCoalescedVhd(test.TestCase): def test_calls(self): mox = self.mox mox.StubOutWithMock(image_utils, 'temporary_dir') mox.StubOutWithMock(image_utils, 'extract_targz') mox.StubOutWithMock(image_utils, 'discover_vhd_chain') mox.StubOutWithMock(image_utils, 'fix_vhd_chain') mox.StubOutWithMock(image_utils, 'coalesce_chain') mox.StubOutWithMock(image_utils.os, 'unlink') mox.StubOutWithMock(image_utils, 'rename_file') image_utils.temporary_dir().AndReturn(fake_context('somedir')) image_utils.extract_targz('image', 'somedir') image_utils.discover_vhd_chain('somedir').AndReturn( ['somedir/0.vhd', 'somedir/1.vhd']) image_utils.fix_vhd_chain(['somedir/0.vhd', 'somedir/1.vhd']) image_utils.coalesce_chain( ['somedir/0.vhd', 'somedir/1.vhd']).AndReturn('somedir/1.vhd') image_utils.os.unlink('image') image_utils.rename_file('somedir/1.vhd', 'image') mox.ReplayAll() image_utils.replace_xenserver_image_with_coalesced_vhd('image') mox.VerifyAll() cinder-2014.1.5/cinder/tests/test_volume_types.py0000664000567000056700000003625212540642606023137 0ustar jenkinsjenkins00000000000000# Copyright (c) 2011 Zadara Storage Inc. # Copyright (c) 2011 OpenStack Foundation # 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. """ Unit Tests for volume types code """ import datetime import time from cinder import context from cinder import db from cinder.db.sqlalchemy import api as db_api from cinder.db.sqlalchemy import models from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests import conf_fixture from cinder.volume import qos_specs from cinder.volume import volume_types LOG = logging.getLogger(__name__) class VolumeTypeTestCase(test.TestCase): """Test cases for volume type code.""" def setUp(self): super(VolumeTypeTestCase, self).setUp() self.ctxt = context.get_admin_context() self.vol_type1_name = str(int(time.time())) self.vol_type1_specs = dict(type="physical drive", drive_type="SAS", size="300", rpm="7200", visible="True") def test_volume_type_create_then_destroy(self): """Ensure volume types can be created and deleted.""" prev_all_vtypes = volume_types.get_all_types(self.ctxt) type_ref = volume_types.create(self.ctxt, self.vol_type1_name, self.vol_type1_specs) new = volume_types.get_volume_type_by_name(self.ctxt, self.vol_type1_name) LOG.info(_("Given data: %s"), self.vol_type1_specs) LOG.info(_("Result data: %s"), new) for k, v in self.vol_type1_specs.iteritems(): self.assertEqual(v, new['extra_specs'][k], 'one of fields does not match') new_all_vtypes = volume_types.get_all_types(self.ctxt) self.assertEqual(len(prev_all_vtypes) + 1, len(new_all_vtypes), 'drive type was not created') volume_types.destroy(self.ctxt, type_ref['id']) new_all_vtypes = volume_types.get_all_types(self.ctxt) self.assertEqual(prev_all_vtypes, new_all_vtypes, 'drive type was not deleted') def test_get_all_volume_types(self): """Ensures that all volume types can be retrieved.""" session = db_api.get_session() total_volume_types = session.query(models.VolumeTypes).count() vol_types = volume_types.get_all_types(self.ctxt) self.assertEqual(total_volume_types, len(vol_types)) def test_get_default_volume_type(self): """Ensures default volume type can be retrieved.""" type_ref = volume_types.create(self.ctxt, conf_fixture.def_vol_type, {}) default_vol_type = volume_types.get_default_volume_type() self.assertEqual(default_vol_type.get('name'), conf_fixture.def_vol_type) def test_default_volume_type_missing_in_db(self): """Ensures proper exception raised if default volume type is not in database. """ session = db_api.get_session() default_vol_type = volume_types.get_default_volume_type() self.assertEqual(default_vol_type, {}) def test_non_existent_vol_type_shouldnt_delete(self): """Ensures that volume type creation fails with invalid args.""" self.assertRaises(exception.VolumeTypeNotFound, volume_types.destroy, self.ctxt, "sfsfsdfdfs") def test_volume_type_with_volumes_shouldnt_delete(self): """Ensures volume type deletion with associated volumes fail.""" type_ref = volume_types.create(self.ctxt, self.vol_type1_name) db.volume_create(self.ctxt, {'id': '1', 'updated_at': datetime.datetime(1, 1, 1, 1, 1, 1), 'display_description': 'Test Desc', 'size': 20, 'status': 'available', 'volume_type_id': type_ref['id']}) self.assertRaises(exception.VolumeTypeInUse, volume_types.destroy, self.ctxt, type_ref['id']) def test_repeated_vol_types_shouldnt_raise(self): """Ensures that volume duplicates don't raise.""" new_name = self.vol_type1_name + "dup" type_ref = volume_types.create(self.ctxt, new_name) volume_types.destroy(self.ctxt, type_ref['id']) type_ref = volume_types.create(self.ctxt, new_name) def test_invalid_volume_types_params(self): """Ensures that volume type creation fails with invalid args.""" self.assertRaises(exception.InvalidVolumeType, volume_types.destroy, self.ctxt, None) self.assertRaises(exception.InvalidVolumeType, volume_types.get_volume_type, self.ctxt, None) self.assertRaises(exception.InvalidVolumeType, volume_types.get_volume_type_by_name, self.ctxt, None) def test_volume_type_get_by_id_and_name(self): """Ensure volume types get returns same entry.""" volume_types.create(self.ctxt, self.vol_type1_name, self.vol_type1_specs) new = volume_types.get_volume_type_by_name(self.ctxt, self.vol_type1_name) new2 = volume_types.get_volume_type(self.ctxt, new['id']) self.assertEqual(new, new2) def test_volume_type_search_by_extra_spec(self): """Ensure volume types get by extra spec returns correct type.""" volume_types.create(self.ctxt, "type1", {"key1": "val1", "key2": "val2"}) volume_types.create(self.ctxt, "type2", {"key2": "val2", "key3": "val3"}) volume_types.create(self.ctxt, "type3", {"key3": "another_value", "key4": "val4"}) vol_types = volume_types.get_all_types( self.ctxt, search_opts={'extra_specs': {"key1": "val1"}}) LOG.info("vol_types: %s" % vol_types) self.assertEqual(len(vol_types), 1) self.assertIn("type1", vol_types.keys()) self.assertEqual(vol_types['type1']['extra_specs'], {"key1": "val1", "key2": "val2"}) vol_types = volume_types.get_all_types( self.ctxt, search_opts={'extra_specs': {"key2": "val2"}}) LOG.info("vol_types: %s" % vol_types) self.assertEqual(len(vol_types), 2) self.assertIn("type1", vol_types.keys()) self.assertIn("type2", vol_types.keys()) vol_types = volume_types.get_all_types( self.ctxt, search_opts={'extra_specs': {"key3": "val3"}}) LOG.info("vol_types: %s" % vol_types) self.assertEqual(len(vol_types), 1) self.assertIn("type2", vol_types.keys()) def test_volume_type_search_by_extra_spec_multiple(self): """Ensure volume types get by extra spec returns correct type.""" volume_types.create(self.ctxt, "type1", {"key1": "val1", "key2": "val2", "key3": "val3"}) volume_types.create(self.ctxt, "type2", {"key2": "val2", "key3": "val3"}) volume_types.create(self.ctxt, "type3", {"key1": "val1", "key3": "val3", "key4": "val4"}) vol_types = volume_types.get_all_types( self.ctxt, search_opts={'extra_specs': {"key1": "val1", "key3": "val3"}}) LOG.info("vol_types: %s" % vol_types) self.assertEqual(len(vol_types), 2) self.assertIn("type1", vol_types.keys()) self.assertIn("type3", vol_types.keys()) self.assertEqual(vol_types['type1']['extra_specs'], {"key1": "val1", "key2": "val2", "key3": "val3"}) self.assertEqual(vol_types['type3']['extra_specs'], {"key1": "val1", "key3": "val3", "key4": "val4"}) def test_is_encrypted(self): volume_type = volume_types.create(self.ctxt, "type1") volume_type_id = volume_type.get('id') self.assertFalse(volume_types.is_encrypted(self.ctxt, volume_type_id)) encryption = { 'control_location': 'front-end', 'provider': 'fake_provider', } db_api.volume_type_encryption_create(self.ctxt, volume_type_id, encryption) self.assertTrue(volume_types.is_encrypted(self.ctxt, volume_type_id)) def test_get_volume_type_qos_specs(self): qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}) type_ref = volume_types.create(self.ctxt, "type1", {"key2": "val2", "key3": "val3"}) res = volume_types.get_volume_type_qos_specs(type_ref['id']) self.assertIsNone(res['qos_specs']) qos_specs.associate_qos_with_type(self.ctxt, qos_ref['id'], type_ref['id']) expected = {'qos_specs': {'id': qos_ref['id'], 'name': 'qos-specs-1', 'consumer': 'back-end', 'specs': { 'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}}} res = volume_types.get_volume_type_qos_specs(type_ref['id']) self.assertDictMatch(expected, res) def test_volume_types_diff(self): #type_ref 1 and 2 have the same extra_specs, while 3 has different keyvals1 = {"key1": "val1", "key2": "val2"} keyvals2 = {"key1": "val0", "key2": "val2"} type_ref1 = volume_types.create(self.ctxt, "type1", keyvals1) type_ref2 = volume_types.create(self.ctxt, "type2", keyvals1) type_ref3 = volume_types.create(self.ctxt, "type3", keyvals2) # Check equality with only extra_specs diff, same = volume_types.volume_types_diff(self.ctxt, type_ref1['id'], type_ref2['id']) self.assertEqual(same, True) self.assertEqual(diff['extra_specs']['key1'], ('val1', 'val1')) diff, same = volume_types.volume_types_diff(self.ctxt, type_ref1['id'], type_ref3['id']) self.assertEqual(same, False) self.assertEqual(diff['extra_specs']['key1'], ('val1', 'val0')) #qos_ref 1 and 2 have the same specs, while 3 has different qos_keyvals1 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'} qos_keyvals2 = {'k1': 'v0', 'k2': 'v2', 'k3': 'v3'} qos_ref1 = qos_specs.create(self.ctxt, 'qos-specs-1', qos_keyvals1) qos_ref2 = qos_specs.create(self.ctxt, 'qos-specs-2', qos_keyvals1) qos_ref3 = qos_specs.create(self.ctxt, 'qos-specs-3', qos_keyvals2) # Check equality with qos specs too qos_specs.associate_qos_with_type(self.ctxt, qos_ref1['id'], type_ref1['id']) qos_specs.associate_qos_with_type(self.ctxt, qos_ref2['id'], type_ref2['id']) diff, same = volume_types.volume_types_diff(self.ctxt, type_ref1['id'], type_ref2['id']) self.assertEqual(same, True) self.assertEqual(diff['extra_specs']['key1'], ('val1', 'val1')) self.assertEqual(diff['qos_specs']['k1'], ('v1', 'v1')) qos_specs.disassociate_qos_specs(self.ctxt, qos_ref2['id'], type_ref2['id']) qos_specs.associate_qos_with_type(self.ctxt, qos_ref3['id'], type_ref2['id']) diff, same = volume_types.volume_types_diff(self.ctxt, type_ref1['id'], type_ref2['id']) self.assertEqual(same, False) self.assertEqual(diff['extra_specs']['key1'], ('val1', 'val1')) self.assertEqual(diff['qos_specs']['k1'], ('v1', 'v0')) qos_specs.disassociate_qos_specs(self.ctxt, qos_ref3['id'], type_ref2['id']) qos_specs.associate_qos_with_type(self.ctxt, qos_ref2['id'], type_ref2['id']) # And add encryption for good measure enc_keyvals1 = {'cipher': 'c1', 'key_size': 256, 'provider': 'p1', 'control_location': 'front-end'} enc_keyvals2 = {'cipher': 'c1', 'key_size': 128, 'provider': 'p1', 'control_location': 'front-end'} db.volume_type_encryption_create(self.ctxt, type_ref1['id'], enc_keyvals1) db.volume_type_encryption_create(self.ctxt, type_ref2['id'], enc_keyvals2) diff, same = volume_types.volume_types_diff(self.ctxt, type_ref1['id'], type_ref2['id']) self.assertEqual(same, False) self.assertEqual(diff['extra_specs']['key1'], ('val1', 'val1')) self.assertEqual(diff['qos_specs']['k1'], ('v1', 'v1')) self.assertEqual(diff['encryption']['key_size'], (256, 128)) # Check diff equals type specs when one type is None diff, same = volume_types.volume_types_diff(self.ctxt, None, type_ref1['id']) self.assertEqual(same, False) self.assertEqual(diff['extra_specs'], {'key1': (None, 'val1'), 'key2': (None, 'val2')}) self.assertEqual(diff['qos_specs'], {'consumer': (None, 'back-end'), 'k1': (None, 'v1'), 'k2': (None, 'v2'), 'k3': (None, 'v3')}) self.assertEqual(diff['encryption'], {'cipher': (None, 'c1'), 'control_location': (None, 'front-end'), 'deleted': (None, False), 'key_size': (None, 256), 'provider': (None, 'p1')}) cinder-2014.1.5/cinder/tests/test_volume_transfer.py0000664000567000056700000001350612540642606023614 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 OpenStack Foundation # 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. """Unit Tests for volume transfers.""" import datetime from cinder import context from cinder import db from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.tests import utils from cinder.transfer import api as transfer_api LOG = logging.getLogger(__name__) class VolumeTransferTestCase(test.TestCase): """Test cases for volume transfer code.""" def setUp(self): super(VolumeTransferTestCase, self).setUp() self.ctxt = context.RequestContext(user_id='user_id', project_id='project_id') self.updated_at = datetime.datetime(1, 1, 1, 1, 1, 1) def test_transfer_volume_create_delete(self): tx_api = transfer_api.API() utils.create_volume(self.ctxt, id='1', updated_at=self.updated_at) response = tx_api.create(self.ctxt, '1', 'Description') volume = db.volume_get(self.ctxt, '1') self.assertEqual('awaiting-transfer', volume['status'], 'Unexpected state') tx_api.delete(self.ctxt, response['id']) volume = db.volume_get(self.ctxt, '1') self.assertEqual('available', volume['status'], 'Unexpected state') def test_transfer_invalid_volume(self): tx_api = transfer_api.API() utils.create_volume(self.ctxt, id='1', status='in-use', updated_at=self.updated_at) self.assertRaises(exception.InvalidVolume, tx_api.create, self.ctxt, '1', 'Description') volume = db.volume_get(self.ctxt, '1') self.assertEqual('in-use', volume['status'], 'Unexpected state') def test_transfer_accept(self): svc = self.start_service('volume', host='test_host') tx_api = transfer_api.API() utils.create_volume(self.ctxt, id='1', updated_at=self.updated_at) transfer = tx_api.create(self.ctxt, '1', 'Description') volume = db.volume_get(self.ctxt, '1') self.assertEqual('awaiting-transfer', volume['status'], 'Unexpected state') self.assertRaises(exception.TransferNotFound, tx_api.accept, self.ctxt, '2', transfer['auth_key']) self.assertRaises(exception.InvalidAuthKey, tx_api.accept, self.ctxt, transfer['id'], 'wrong') db.volume_update(self.ctxt, '1', {'status': 'wrong'}) self.assertRaises(exception.InvalidVolume, tx_api.accept, self.ctxt, transfer['id'], transfer['auth_key']) db.volume_update(self.ctxt, '1', {'status': 'awaiting-transfer'}) self.ctxt.user_id = 'new_user_id' self.ctxt.project_id = 'new_project_id' response = tx_api.accept(self.ctxt, transfer['id'], transfer['auth_key']) volume = db.volume_get(self.ctxt, '1') self.assertEqual(volume['project_id'], 'new_project_id', 'Unexpected project id') self.assertEqual(volume['user_id'], 'new_user_id', 'Unexpected user id') self.assertEqual(volume['id'], response['volume_id'], 'Unexpected volume id in response.') self.assertEqual(transfer['id'], response['id'], 'Unexpected transfer id in response.') svc.stop() def test_transfer_get(self): tx_api = transfer_api.API() volume = utils.create_volume(self.ctxt, id='1', updated_at=self.updated_at) transfer = tx_api.create(self.ctxt, volume['id'], 'Description') t = tx_api.get(self.ctxt, transfer['id']) self.assertEqual(t['id'], transfer['id'], 'Unexpected transfer id') ts = tx_api.get_all(self.ctxt) self.assertEqual(len(ts), 1, 'Unexpected number of transfers.') nctxt = context.RequestContext(user_id='new_user_id', project_id='new_project_id') utils.create_volume(nctxt, id='2', updated_at=self.updated_at) self.assertRaises(exception.TransferNotFound, tx_api.get, nctxt, transfer['id']) ts = tx_api.get_all(nctxt) self.assertEqual(len(ts), 0, 'Unexpected transfers listed.') def test_delete_transfer_with_deleted_volume(self): #create a volume volume = utils.create_volume(self.ctxt, id='1', updated_at=self.updated_at) #create a transfer tx_api = transfer_api.API() transfer = tx_api.create(self.ctxt, volume['id'], 'Description') t = tx_api.get(self.ctxt, transfer['id']) self.assertEqual(t['id'], transfer['id'], 'Unexpected transfer id') #force delete volume db.volume_destroy(context.get_admin_context(), volume['id']) #Make sure transfer has been deleted. self.assertRaises(exception.TransferNotFound, tx_api.get, self.ctxt, transfer['id']) cinder-2014.1.5/cinder/tests/test_iscsi.py0000664000567000056700000001621412540642606021512 0ustar jenkinsjenkins00000000000000 # Copyright 2011 Red Hat, Inc. # # 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. import os.path import shutil import string import tempfile from cinder.brick.iscsi import iscsi from cinder import test from cinder.volume import driver class TargetAdminTestCase(object): def setUp(self): self.cmds = [] self.tid = 1 self.target_name = 'iqn.2011-09.org.foo.bar:volume-blaa' self.lun = 10 self.path = '/foo' self.vol_id = 'blaa' self.vol_name = 'volume-blaa' self.db = {} self.script_template = None self.stubs.Set(os.path, 'isfile', lambda _: True) self.stubs.Set(os, 'unlink', lambda _: '') self.stubs.Set(iscsi.TgtAdm, '_get_target', self.fake_get_target) self.stubs.Set(iscsi.LioAdm, '_get_target', self.fake_get_target) self.stubs.Set(iscsi.LioAdm, '_verify_rtstool', self.fake_verify_rtstool) self.driver = driver.ISCSIDriver() self.stubs.Set(iscsi.TgtAdm, '_verify_backing_lun', self.fake_verify_backing_lun) self.driver = driver.ISCSIDriver() self.flags(iscsi_target_prefix='iqn.2011-09.org.foo.bar:') def fake_verify_backing_lun(obj, iqn, tid): return True def fake_verify_rtstool(obj): pass def fake_get_target(obj, iqn): return 1 def get_script_params(self): return {'tid': self.tid, 'target_name': self.target_name, 'lun': self.lun, 'path': self.path} def get_script(self): return self.script_template % self.get_script_params() def fake_execute(self, *cmd, **kwargs): self.cmds.append(string.join(cmd)) return "", None def clear_cmds(self): self.cmds = [] def verify_cmds(self, cmds): self.assertEqual(len(cmds), len(self.cmds)) for cmd in self.cmds: self.assertTrue(cmd in cmds) def verify(self): script = self.get_script() cmds = [] for line in script.split('\n'): if not line.strip(): continue cmds.append(line) self.verify_cmds(cmds) def run_commands(self): target_helper = self.driver.get_target_helper(self.db) target_helper.set_execute(self.fake_execute) target_helper.create_iscsi_target(self.target_name, self.tid, self.lun, self.path) target_helper.show_target(self.tid, iqn=self.target_name) target_helper.remove_iscsi_target(self.tid, self.lun, self.vol_id, self.vol_name) def test_target_admin(self): self.clear_cmds() self.run_commands() self.verify() class TgtAdmTestCase(test.TestCase, TargetAdminTestCase): def setUp(self): super(TgtAdmTestCase, self).setUp() TargetAdminTestCase.setUp(self) self.persist_tempdir = tempfile.mkdtemp() self.flags(iscsi_helper='tgtadm') self.flags(volumes_dir=self.persist_tempdir) self.script_template = "\n".join([ 'tgt-admin --update %(target_name)s', 'tgt-admin --delete %(target_name)s', 'tgt-admin --force ' '--delete %(target_name)s', 'tgtadm --lld iscsi --op show --mode target']) def tearDown(self): try: shutil.rmtree(self.persist_tempdir) except OSError: pass super(TgtAdmTestCase, self).tearDown() class IetAdmTestCase(test.TestCase, TargetAdminTestCase): def setUp(self): super(IetAdmTestCase, self).setUp() TargetAdminTestCase.setUp(self) self.flags(iscsi_helper='ietadm') self.script_template = "\n".join([ 'ietadm --op new --tid=%(tid)s --params Name=%(target_name)s', 'ietadm --op new --tid=%(tid)s --lun=%(lun)s ' '--params Path=%(path)s,Type=fileio', 'ietadm --op show --tid=%(tid)s', 'ietadm --op delete --tid=%(tid)s --lun=%(lun)s', 'ietadm --op delete --tid=%(tid)s']) class IetAdmBlockIOTestCase(test.TestCase, TargetAdminTestCase): def setUp(self): super(IetAdmBlockIOTestCase, self).setUp() TargetAdminTestCase.setUp(self) self.flags(iscsi_helper='ietadm') self.flags(iscsi_iotype='blockio') self.script_template = "\n".join([ 'ietadm --op new --tid=%(tid)s --params Name=%(target_name)s', 'ietadm --op new --tid=%(tid)s --lun=%(lun)s ' '--params Path=%(path)s,Type=blockio', 'ietadm --op show --tid=%(tid)s', 'ietadm --op delete --tid=%(tid)s --lun=%(lun)s', 'ietadm --op delete --tid=%(tid)s']) class IetAdmFileIOTestCase(test.TestCase, TargetAdminTestCase): def setUp(self): super(IetAdmFileIOTestCase, self).setUp() TargetAdminTestCase.setUp(self) self.flags(iscsi_helper='ietadm') self.flags(iscsi_iotype='fileio') self.script_template = "\n".join([ 'ietadm --op new --tid=%(tid)s --params Name=%(target_name)s', 'ietadm --op new --tid=%(tid)s --lun=%(lun)s ' '--params Path=%(path)s,Type=fileio', 'ietadm --op show --tid=%(tid)s', 'ietadm --op delete --tid=%(tid)s --lun=%(lun)s', 'ietadm --op delete --tid=%(tid)s']) class IetAdmAutoIOTestCase(test.TestCase, TargetAdminTestCase): def setUp(self): super(IetAdmAutoIOTestCase, self).setUp() TargetAdminTestCase.setUp(self) self.stubs.Set(iscsi.IetAdm, '_is_block', lambda a, b: True) self.flags(iscsi_helper='ietadm') self.flags(iscsi_iotype='auto') self.script_template = "\n".join([ 'ietadm --op new --tid=%(tid)s --params Name=%(target_name)s', 'ietadm --op new --tid=%(tid)s --lun=%(lun)s ' '--params Path=%(path)s,Type=blockio', 'ietadm --op show --tid=%(tid)s', 'ietadm --op delete --tid=%(tid)s --lun=%(lun)s', 'ietadm --op delete --tid=%(tid)s']) class LioAdmTestCase(test.TestCase, TargetAdminTestCase): def setUp(self): super(LioAdmTestCase, self).setUp() TargetAdminTestCase.setUp(self) self.persist_tempdir = tempfile.mkdtemp() self.flags(iscsi_helper='lioadm') self.script_template = "\n".join([ 'cinder-rtstool create ' '%(path)s %(target_name)s test_id test_pass', 'cinder-rtstool delete %(target_name)s']) class ISERTgtAdmTestCase(TgtAdmTestCase): def setUp(self): super(ISERTgtAdmTestCase, self).setUp() self.flags(iscsi_helper='iseradm') cinder-2014.1.5/cinder/tests/test_migrations.conf0000664000567000056700000000047512540642606023053 0ustar jenkinsjenkins00000000000000[DEFAULT] # Set up any number of migration data stores you want, one # The "name" used in the test is the config variable key. #sqlite=sqlite:///test_migrations.db sqlite=sqlite:// #mysql=mysql://root:@localhost/test_migrations #postgresql=postgresql://user:pass@localhost/test_migrations [walk_style] snake_walk=yes cinder-2014.1.5/cinder/tests/test_hds.py0000664000567000056700000002543512540642606021163 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Hitachi Data Systems, Inc. # Copyright (c) 2013 OpenStack Foundation # All Rights Reserved. # # 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. # """ Self test for Hitachi Unified Storage (HUS) platform. """ import mox import os import tempfile from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.hds import hds CONF = """ 172.17.44.16 172.17.44.17 system manager default 172.17.39.132 9 silver 172.17.39.133 9 gold 172.17.39.134 9 platinum 172.17.39.135 9 9 3300 """ class SimulatedHusBackend: """Simulation Back end. Talks to HUS.""" alloc_lun = [] # allocated LUs connections = [] # iSCSI connections init_index = 0 # initiator index target_index = 0 # target index hlun = 0 # hlun index out = '' def __init__(self): self.start_lun = 0 def get_version(self, cmd, ver, ip0, ip1, user, pw): out = ("Array_ID: 92210013 (HUS130) version: 0920/B-S LU: 4096" " RG: 75 RG_LU: 1024 Utility_version: 1.0.0") return out def get_iscsi_info(self, cmd, ver, ip0, ip1, user, pw): out = """CTL: 0 Port: 4 IP: 172.17.39.132 Port: 3260 Link: Up CTL: 0 Port: 5 IP: 172.17.39.133 Port: 3260 Link: Up CTL: 1 Port: 4 IP: 172.17.39.134 Port: 3260 Link: Up CTL: 1 Port: 5 IP: 172.17.39.135 Port: 3260 Link: Up""" return out def get_hdp_info(self, cmd, ver, ip0, ip1, user, pw): out = """HDP: 2 272384 MB 33792 MB 12 % LUs: 70 Normal Normal HDP: 9 546816 MB 73728 MB 13 % LUs: 194 Normal Normal""" return out def create_lu(self, cmd, ver, ip0, ip1, user, pw, id, hdp, start, end, size): if self.start_lun < int(start): # initialize first time self.start_lun = int(start) out = ("LUN: %d HDP: 9 size: %s MB, is successfully created" % (self.start_lun, size)) self.alloc_lun.append(str(self.start_lun)) self.start_lun += 1 return out def extend_vol(self, cmd, ver, ip0, ip1, user, pw, id, lu, size): out = ("LUN: %s successfully extended to %s MB" % (lu, size)) SimulatedHusBackend.out = out return out def delete_lu(self, cmd, ver, ip0, ip1, user, pw, id, lun): out = "" if lun in self.alloc_lun: out = "LUN: %s is successfully deleted" % (lun) self.alloc_lun.remove(lun) return out def create_dup(self, cmd, ver, ip0, ip1, user, pw, id, src_lun, hdp, start, end, size): out = ("LUN: %s HDP: 9 size: %s MB, is successfully created" % (self.start_lun, size)) self.alloc_lun.append(str(self.start_lun)) self.start_lun += 1 return out def add_iscsi_conn(self, cmd, ver, ip0, ip1, user, pw, id, lun, ctl, port, iqn, initiator): conn = (self.hlun, lun, initiator, self.init_index, iqn, self.target_index, ctl, port) out = ("H-LUN: %d mapped. LUN: %s, iSCSI Initiator: %s @ index: %d, \ and Target: %s @ index %d is successfully paired @ CTL: %s, \ Port: %s" % conn) self.init_index += 1 self.target_index += 1 self.hlun += 1 SimulatedHusBackend.connections.append(conn) return out def del_iscsi_conn(self, cmd, ver, ip0, ip1, user, pw, id, lun, ctl, port, iqn, initiator): conn = () for connection in SimulatedHusBackend.connections: if (connection[1] == lun): conn = connection SimulatedHusBackend.connections.remove(connection) if conn is None: return (hlun, lun, initiator, init_index, iqn, target_index, ctl, port) = conn detail = (hlun, iqn) out = ("H-LUN: %d successfully deleted from target %s" % detail) return out # The following information is passed on to tests, when creating a volume _VOLUME = {'volume_id': '1234567890', 'size': 128, 'volume_type': None, 'provider_location': None, 'id': 'abcdefg'} class HUSiSCSIDriverTest(test.TestCase): """Test HUS iSCSI volume driver.""" def __init__(self, *args, **kwargs): super(HUSiSCSIDriverTest, self).__init__(*args, **kwargs) def setUp(self): super(HUSiSCSIDriverTest, self).setUp() (handle, self.config_file) = tempfile.mkstemp('.xml') os.write(handle, CONF) os.close(handle) SimulatedHusBackend.alloc_lun = [] SimulatedHusBackend.connections = [] SimulatedHusBackend.out = '' self.mox = mox.Mox() self.mox.StubOutWithMock(hds, 'factory_bend') hds.factory_bend().AndReturn(SimulatedHusBackend()) self.mox.ReplayAll() self.configuration = mox.MockObject(conf.Configuration) self.configuration.hds_cinder_config_file = self.config_file self.driver = hds.HUSDriver(configuration=self.configuration) def tearDown(self): os.remove(self.config_file) self.mox.UnsetStubs() super(HUSiSCSIDriverTest, self).tearDown() def test_get_volume_stats(self): stats = self.driver.get_volume_stats(True) self.assertEqual(stats["vendor_name"], "HDS") self.assertEqual(stats["storage_protocol"], "iSCSI") self.assertGreater(stats["total_capacity_gb"], 0) def test_create_volume(self): loc = self.driver.create_volume(_VOLUME) self.assertIsNotNone(loc) vol = _VOLUME.copy() vol['provider_location'] = loc['provider_location'] self.assertIsNotNone(loc['provider_location']) return vol def test_delete_volume(self): """Delete a volume (test). Note: this API call should not expect any exception: This driver will silently accept a delete request, because the DB can be out of sync, and Cinder manager will keep trying to delete, even though the volume has been wiped out of the Array. We don't want to have a dangling volume entry in the customer dashboard. """ vol = self.test_create_volume() self.assertTrue(SimulatedHusBackend.alloc_lun) num_luns_before = len(SimulatedHusBackend.alloc_lun) self.driver.delete_volume(vol) num_luns_after = len(SimulatedHusBackend.alloc_lun) self.assertGreater(num_luns_before, num_luns_after) def test_extend_volume(self): vol = self.test_create_volume() new_size = _VOLUME['size'] * 2 self.driver.extend_volume(vol, new_size) self.assertTrue(str(new_size * 1024) in SimulatedHusBackend.out) def test_create_snapshot(self): vol = self.test_create_volume() self.mox.StubOutWithMock(self.driver, '_id_to_vol') self.driver._id_to_vol(vol['volume_id']).AndReturn(vol) self.mox.ReplayAll() svol = vol.copy() svol['volume_size'] = svol['size'] loc = self.driver.create_snapshot(svol) self.assertIsNotNone(loc) svol['provider_location'] = loc['provider_location'] return svol def test_create_clone(self): vol = self.test_create_volume() self.mox.StubOutWithMock(self.driver, '_id_to_vol') self.driver._id_to_vol(vol['volume_id']).AndReturn(vol) self.mox.ReplayAll() svol = vol.copy() svol['volume_size'] = svol['size'] loc = self.driver.create_snapshot(svol) self.assertIsNotNone(loc) svol['provider_location'] = loc['provider_location'] return svol def test_delete_snapshot(self): """Delete a snapshot (test). Note: this API call should not expect any exception: This driver will silently accept a delete request, because the DB can be out of sync, and Cinder manager will keep trying to delete, even though the snapshot has been wiped out of the Array. We don't want to have a dangling snapshot entry in the customer dashboard. """ svol = self.test_create_snapshot() num_luns_before = len(SimulatedHusBackend.alloc_lun) self.driver.delete_snapshot(svol) num_luns_after = len(SimulatedHusBackend.alloc_lun) self.assertGreater(num_luns_before, num_luns_after) def test_create_volume_from_snapshot(self): svol = self.test_create_snapshot() vol = self.driver.create_volume_from_snapshot(_VOLUME, svol) self.assertIsNotNone(vol) return vol def test_initialize_connection(self): connector = {} connector['initiator'] = 'iqn.1993-08.org.debian:01:11f90746eb2' connector['host'] = 'dut_1.lab.hds.com' vol = self.test_create_volume() self.mox.StubOutWithMock(self.driver, '_update_vol_location') conn = self.driver.initialize_connection(vol, connector) self.assertIn('hitachi', conn['data']['target_iqn']) self.assertIn('3260', conn['data']['target_portal']) vol['provider_location'] = conn['data']['provider_location'] return (vol, connector) def test_terminate_connection(self): """Terminate a connection (test). Note: this API call should not expect any exception: This driver will silently accept a terminate_connection request because an error/exception return will only jeopardize the connection tear down at a host. """ (vol, conn) = self.test_initialize_connection() num_conn_before = len(SimulatedHusBackend.connections) self.driver.terminate_connection(vol, conn) num_conn_after = len(SimulatedHusBackend.connections) self.assertGreater(num_conn_before, num_conn_after) cinder-2014.1.5/cinder/tests/test_ibmnas.py0000664000567000056700000003317712540642606021660 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. # # Authors: # Nilesh Bhosale # Sasikanth Eda """ Tests for the IBM NAS family (SONAS, Storwize V7000 Unified). """ import mock from oslo.config import cfg from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers.ibm import ibmnas LOG = logging.getLogger(__name__) CONF = cfg.CONF class FakeEnv(object): fields = {} def __setitem__(self, key, value): self.fields[key] = value def __getitem__(self, item): return self.fields[item] class IBMNASDriverTestCase(test.TestCase): TEST_NFS_EXPORT = 'nfs-host1:/export' TEST_SIZE_IN_GB = 1 TEST_EXTEND_SIZE_IN_GB = 2 TEST_MNT_POINT = '/mnt/nfs' TEST_MNT_POINT_BASE = '/mnt' TEST_LOCAL_PATH = '/mnt/nfs/volume-123' TEST_VOLUME_PATH = '/export/volume-123' TEST_SNAP_PATH = '/export/snapshot-123' def setUp(self): super(IBMNASDriverTestCase, self).setUp() self._driver = ibmnas.IBMNAS_NFSDriver(configuration= conf.Configuration(None)) self._mock = mock.Mock() self._def_flags = {'nas_ip': 'hostname', 'nas_login': 'user', 'nas_ssh_port': 22, 'nas_password': 'pass', 'nas_private_key': 'nas.key', 'nfs_shares_config': None, 'nfs_sparsed_volumes': True, 'nfs_used_ratio': 0.95, 'nfs_oversub_ratio': 1.0, 'nfs_mount_point_base': self.TEST_MNT_POINT_BASE, 'nfs_mount_options': None} self.context = context.get_admin_context() self.context.user_id = 'fake' self.context.project_id = 'fake' def tearDown(self): super(IBMNASDriverTestCase, self).tearDown() def _set_flag(self, flag, value): group = self._driver.configuration.config_group self._driver.configuration.set_override(flag, value, group) def _reset_flags(self): self._driver.configuration.local_conf.reset() for k, v in self._def_flags.iteritems(): self._set_flag(k, v) def test_check_for_setup_error(self): """Check setup with bad parameters.""" drv = self._driver required_flags = [ 'nas_ip', 'nas_login', 'nas_ssh_port'] for flag in required_flags: self._set_flag(flag, None) self.assertRaises(exception.CinderException, drv.check_for_setup_error) self._set_flag('nas_password', None) self._set_flag('nas_private_key', None) self.assertRaises(exception.InvalidInput, self._driver.check_for_setup_error) self._reset_flags() def test_get_provider_location(self): """Check provider location for given volume id.""" mock = self._mock volume = FakeEnv() volume['id'] = '123' mock.drv._get_provider_location.return_value = self.TEST_NFS_EXPORT self.assertEqual(self.TEST_NFS_EXPORT, mock.drv._get_provider_location(volume['id'])) def test_get_export_path(self): """Check export path for the given volume.""" mock = self._mock volume = FakeEnv() volume['id'] = '123' mock.drv._get_export_path.return_value = self.TEST_NFS_EXPORT.\ split(':')[1] self.assertEqual(self.TEST_NFS_EXPORT.split(':')[1], mock.drv._get_export_path(volume['id'])) def test_create_ibmnas_snap_mount_point_provided(self): """Create ibmnas snap if mount point is provided.""" drv = self._driver mock = self._mock drv._create_ibmnas_snap = mock.drv._run_ssh.return_value.\ drv._execute.return_value.drv._create_ibmnas_snap drv._create_ibmnas_snap.return_value = True self.assertEqual(True, mock.drv._run_ssh(). drv._execute(). drv._create_ibmnas_snap(self.TEST_VOLUME_PATH, self.TEST_SNAP_PATH, self.TEST_MNT_POINT)) def test_create_ibmnas_snap_no_mount_point_provided(self): """Create ibmnas snap if no mount point is provided.""" drv = self._driver mock = self._mock drv._create_ibmnas_snap = mock.drv._run_ssh.return_value.\ drv._execute.return_value.drv._create_ibmnas_snap drv._create_ibmnas_snap.return_value = None self.assertIsNone(mock.drv._run_ssh(). drv._execute(). drv._create_ibmnas_snap(self.TEST_VOLUME_PATH, self.TEST_SNAP_PATH, None)) def test_create_ibmnas_copy(self): """Create ibmnas copy test case.""" drv = self._driver mock = self._mock TEST_DEST_SNAP = '/export/snapshot-123.snap' TEST_DEST_PATH = '/export/snapshot-123' drv._create_ibmnas_copy = mock.drv._run_ssh.return_value.\ drv._create_ibmnas_copy drv._create_ibmnas_copy.return_value = None self.assertIsNone(mock.drv._run_ssh(). drv._create_ibmnas_copy( self.TEST_VOLUME_PATH, TEST_DEST_PATH, TEST_DEST_SNAP)) def test_resize_volume_file(self): """Resize volume file test case.""" drv = self._driver mock = self._mock drv._resize_volume_file = mock.image_utils.resize_image.return_value.\ drv._resize_volume_file drv._resize_volume_file.return_value = True self.assertEqual(True, mock.image_utils.resize_image(). drv._resize_volume_file( self.TEST_LOCAL_PATH, self.TEST_EXTEND_SIZE_IN_GB)) def test_extend_volume(self): """Extend volume to greater size test case.""" drv = self._driver mock = self._mock drv.extend_volume = mock.drv.local_path.return_value.\ drv._resize_volume_file.return_value.\ drv.extend_volume drv.extend_volume.return_value = None self.assertIsNone(mock.drv.local_path(). drv._resize_volume_file(). drv.extend_volume( self.TEST_LOCAL_PATH, self.TEST_EXTEND_SIZE_IN_GB)) def test_delete_snapfiles(self): """Delete_snapfiles assert test case.""" drv = self._driver mock = self._mock drv._delete_snapfiles = mock.drv._run_ssh.return_value.\ drv._execute.return_value.\ drv._delete_snapfiles drv._delete_snapfiles.return_value = None self.assertIsNone(mock.drv._run_ssh(). drv._execute(). drv._delete_snapfiles( self.TEST_VOLUME_PATH, self.TEST_MNT_POINT)) def test_delete_volume_no_provider_location(self): """Delete volume with no provider location specified.""" drv = self._driver volume = FakeEnv() volume['name'] = 'volume-123' volume['provider_location'] = None result = drv.delete_volume(volume) self.assertIsNone(result) def test_delete_volume(self): """Delete volume test case.""" drv = self._driver mock = self._mock volume = FakeEnv() volume['id'] = '123' volume['provider_location'] = self.TEST_NFS_EXPORT drv.delete_volume = mock.drv._get_export_path.return_value.\ drv._delete_snapfiles.return_value.drv.delete_volume drv.delete_volume.return_value = True self.assertEqual(True, mock.drv._get_export_path(volume['id']). drv._delete_snapfiles( self.TEST_VOLUME_PATH, self.TEST_MNT_POINT). drv.delete_volume(volume)) def test_create_snapshot(self): """Create snapshot simple test case.""" drv = self._driver mock = self._mock volume = FakeEnv() volume['id'] = '123' volume['name'] = 'volume-123' snapshot = FakeEnv() snapshot['volume_id'] = volume['id'] snapshot['volume_name'] = 'volume-123' snapshot.name = 'snapshot-123' drv.create_snapshot = mock.drv._get_export_path.return_value.\ drv._get_provider_location.return_value.\ drv._get_mount_point_for_share.return_value.\ drv._create_ibmnas_snap.return_value.\ drv.create_snapshot drv.create_snapshot.return_value = None self.assertIsNone(mock.drv._get_export_path(snapshot['volume_id']). drv._get_provider_location(snapshot['volume_id']). drv._get_mount_point_for_share(self.TEST_NFS_EXPORT). drv._create_ibmnas_snap( src=self.TEST_VOLUME_PATH, dest=self.TEST_SNAP_PATH, mount_path=self.TEST_MNT_POINT). drv.create_snapshot(snapshot)) def test_delete_snapshot(self): """Delete snapshot simple test case.""" drv = self._driver mock = self._mock volume = FakeEnv() volume['id'] = '123' volume['provider_location'] = self.TEST_NFS_EXPORT snapshot = FakeEnv() snapshot['volume_id'] = volume['id'] snapshot['volume_name'] = 'volume-123' snapshot['name'] = 'snapshot-123' drv.delete_snapshot = mock.drv._get_provider_location.return_value.\ drv._get_mount_point_for_share.return_value.drv._execute.\ return_value.drv.delete_snapshot drv.delete_snapshot.return_value = None self.assertIsNone(mock.drv._get_provider_location(volume['id']). drv._get_mount_point_for_share(self.TEST_NFS_EXPORT). drv._execute(). drv.delete_snapshot(snapshot)) def test_create_cloned_volume(self): """Clone volume with equal size test case.""" drv = self._driver mock = self._mock volume_src = FakeEnv() volume_src['id'] = '123' volume_src['name'] = 'volume-123' volume_src.size = self.TEST_SIZE_IN_GB volume_dest = FakeEnv() volume_dest['id'] = '456' volume_dest['name'] = 'volume-456' volume_dest['size'] = self.TEST_SIZE_IN_GB volume_dest.size = self.TEST_SIZE_IN_GB drv.create_cloned_volume = mock.drv._get_export_path.\ return_value.drv._create_ibmnas_copy.return_value.\ drv._find_share.return_value.\ drv._set_rw_permissions_for_all.return_value.\ drv._resize_volume_file.return_value.\ drv.create_cloned_volume drv.create_cloned_volume.return_value = self.TEST_NFS_EXPORT self.assertEqual(self.TEST_NFS_EXPORT, mock.drv._get_export_path(volume_src['id']). drv._create_ibmnas_copy(). drv._find_share(). drv._set_rw_permissions_for_all(). drv._resize_volume_file(). drv.create_cloned_volume( volume_dest, volume_src)) def test_create_volume_from_snapshot(self): """Create volume from snapshot test case.""" drv = self._driver mock = self._mock volume = FakeEnv() volume['id'] = '123' volume['name'] = 'volume-123' volume['size'] = self.TEST_SIZE_IN_GB snapshot = FakeEnv() snapshot['volume_id'] = volume['id'] snapshot['volume_name'] = 'volume-123' snapshot['volume_size'] = self.TEST_SIZE_IN_GB snapshot.name = 'snapshot-123' drv.create_volume_from_snapshot = mock.drv._get_export_path.\ return_value.drv._create_ibmnas_snap.return_value.\ drv._find_share.return_value.\ drv._set_rw_permissions_for_all.return_value.\ drv._resize_volume_file.return_value.\ drv.create_volume_from_snapshot drv.create_volume_from_snapshot.return_value = self.TEST_NFS_EXPORT self.assertEqual(self.TEST_NFS_EXPORT, mock.drv._get_export_path(volume['id']). drv._create_ibmnas_snap(). drv._find_share(). drv._set_rw_permissions_for_all(). drv._resize_volume_file(). drv.create_volume_from_snapshot(snapshot)) cinder-2014.1.5/cinder/tests/monkey_patch_example/0000775000567000056700000000000012540643114023152 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/monkey_patch_example/example_a.py0000664000567000056700000000161712540642606025471 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Example Module A for testing utils.monkey_patch().""" def example_function_a(): return 'Example function' class ExampleClassA(): def example_method(self): return 'Example method' def example_method_add(self, arg1, arg2): return arg1 + arg2 cinder-2014.1.5/cinder/tests/monkey_patch_example/__init__.py0000664000567000056700000000213012540642606025264 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Example Module for testing utils.monkey_patch().""" CALLED_FUNCTION = [] def example_decorator(name, function): """decorator for notify which is used from utils.monkey_patch(). :param name: name of the function :param function: - object of the function :returns: function -- decorated function """ def wrapped_func(*args, **kwarg): CALLED_FUNCTION.append(name) return function(*args, **kwarg) return wrapped_func cinder-2014.1.5/cinder/tests/monkey_patch_example/example_b.py0000664000567000056700000000162012540642606025464 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # All Rights Reserved. # # 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. """Example Module B for testing utils.monkey_patch().""" def example_function_b(): return 'Example function' class ExampleClassB(): def example_method(self): return 'Example method' def example_method_add(self, arg1, arg2): return arg1 + arg2 cinder-2014.1.5/cinder/tests/compute/0000775000567000056700000000000012540643114020432 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/compute/__init__.py0000664000567000056700000000000012540642606022536 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/tests/compute/test_nova.py0000664000567000056700000000346712540642606023025 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. from cinder.compute import nova from cinder import context from cinder import test class FakeNovaClient(object): class Volumes(object): def __getattr__(self, item): return None def __init__(self): self.volumes = self.Volumes() def create_volume_snapshot(self, *args, **kwargs): pass def delete_volume_snapshot(self, *args, **kwargs): pass class NovaApiTestCase(test.TestCase): def setUp(self): super(NovaApiTestCase, self).setUp() self.api = nova.API() self.novaclient = FakeNovaClient() self.ctx = context.get_admin_context() self.mox.StubOutWithMock(nova, 'novaclient') def test_update_server_volume(self): volume_id = 'volume_id1' nova.novaclient(self.ctx).AndReturn(self.novaclient) self.mox.StubOutWithMock(self.novaclient.volumes, 'update_server_volume') self.novaclient.volumes.update_server_volume('server_id', 'attach_id', 'new_volume_id') self.mox.ReplayAll() self.api.update_server_volume(self.ctx, 'server_id', 'attach_id', 'new_volume_id') cinder-2014.1.5/cinder/tests/test_huawei_t_dorado.py0000664000567000056700000022203012540642606023530 0ustar jenkinsjenkins00000000000000 # Copyright (c) 2013 Huawei Technologies Co., Ltd. # Copyright (c) 2012 OpenStack Foundation # All Rights Reserved. # # 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. """ Unit Tests for Huawei T and Dorado volume drivers. """ import mox import os import shutil import socket import tempfile import time from xml.dom.minidom import Document from xml.etree import ElementTree as ET from cinder import context from cinder import exception from cinder import test from cinder import utils from cinder.volume import configuration as conf from cinder.volume.drivers.huawei import huawei_utils from cinder.volume.drivers.huawei import HuaweiVolumeDriver from cinder.volume.drivers.huawei import ssh_common from cinder.volume import volume_types LUN_INFO = {'ID': None, 'Name': None, 'Size': None, 'LUN WWN': None, 'Status': None, 'Visible Capacity': None, 'Disk Pool ID': None, 'Cache Prefetch Strategy': None, 'Lun Type': None, 'Consumed Capacity': None, 'Pool ID': None, 'SnapShot ID': None, 'LunCopy ID': None, 'Owner Controller': None, 'Worker Controller': None, 'RAID Group ID': None} CLONED_LUN_INFO = {'ID': None, 'Name': None, 'Size': None, 'LUN WWN': None, 'Status': None, 'Visible Capacity': None, 'Disk Pool ID': None, 'Cache Prefetch Strategy': None, 'Lun Type': None, 'Consumed Capacity': None, 'Pool ID': None, 'SnapShot ID': None, 'LunCopy ID': None, 'Owner Controller': None, 'Worker Controller': None, 'RAID Group ID': None} SNAPSHOT_INFO = {'Source LUN ID': None, 'Source LUN Name': None, 'ID': None, 'Name': None, 'Type': 'Public', 'Status': None} MAP_INFO = {'Host Group ID': None, 'Host Group Name': None, 'Host ID': None, 'Host Name': None, 'Os Type': None, 'INI Port ID': None, 'INI Port Name': None, 'INI Port Info': None, 'INI Port WWN': None, 'INI Port Type': None, 'Link Status': None, 'LUN WWN': None, 'DEV LUN ID': None, 'Host LUN ID': None, 'CHAP status': False} HOST_PORT_INFO = {'ID': None, 'Name': None, 'Info': None, 'WWN': None, 'Type': None} LUNCOPY_INFO = {'Name': None, 'ID': None, 'Type': None, 'State': None, 'Status': None} LUNCOPY_SETTING = {'ID': '1', 'Type': 'FULL', 'State': 'Created', 'Status': 'Normal'} POOL_SETTING = {'ID': '2', 'Level': 'RAID6', 'Status': 'Normal', 'Free Capacity': '10240', 'Disk List': '0,1;0,2;0,3;0,4;0,5;0,6', 'Name': 'RAID_001', 'Type': 'Thick'} INITIATOR_SETTING = {'TargetIQN': 'iqn.2006-08.com.huawei:oceanspace:2103037:', 'TargetIQN-form': 'iqn.2006-08.com.huawei:oceanspace:' '2103037::1020001:192.168.100.2', 'Initiator Name': 'iqn.1993-08.debian:01:ec2bff7ac3a3', 'Initiator TargetIP': '192.168.100.2', 'WWN': ['2011666666666565']} FAKE_VOLUME = {'name': 'Volume-lele34fe-223f-dd33-4423-asdfghjklqwe', 'id': 'lele34fe-223f-dd33-4423-asdfghjklqwe', 'size': '2', 'provider_auth': None, 'volume_type_id': None, 'provider_location': None} FAKE_CLONED_VOLUME = {'name': 'Volume-jeje34fe-223f-dd33-4423-asdfghjklqwg', 'id': 'jeje34fe-223f-dd33-4423-asdfghjklqwg', 'size': '3', 'provider_auth': None, 'volume_type_id': None, 'provider_location': None} FAKE_SNAPSHOT = {'name': 'keke34fe-223f-dd33-4423-asdfghjklqwf', 'id': '223f-dd33-4423-asdfghjklqwf', 'volume_name': 'Volume-lele34fe-223f-dd33-4423-asdfghjklqwe', 'provider_location': None} FAKE_CONNECTOR = {'initiator': 'iqn.1993-08.debian:01:ec2bff7ac3a3', 'wwpns': ['1000000164s45126'], 'wwnns': ['2000666666666565'], 'host': 'fakehost', 'ip': '10.10.0.1'} RESPOOL_A_SIM = {'Size': '10240', 'Valid Size': '5120'} RESPOOL_B_SIM = {'Size': '10240', 'Valid Size': '10240'} VOLUME_SNAP_ID = {'vol': '0', 'vol_copy': '1', 'snap': '2'} cmd_error_list = [] # CLI cmds in this list will run failed Curr_test = [''] # show current testing driver class FakeChannel(): def __init__(self): if Curr_test[0] == 'T': self.simu = HuaweiTCLIResSimulator() elif Curr_test[0] == 'Dorado5100': self.simu = HuaweiDorado5100CLIResSimulator() else: self.simu = HuaweiDorado2100G2CLIResSimulator() def resize_pty(self, width=80, height=24): pass def settimeout(self, time): pass def send(self, s): self.command = s def recv(self, nbytes): command = self.command.split() cmd = command[0] params = command[1:] if cmd in cmd_error_list: reset_error_flg(cmd) out = self.command[:-1] + 'ERROR' + '\nadmin:/>' return out.replace('\n', '\r\n') func_name = 'cli_' + cmd cli_func = getattr(self.simu, func_name) out = cli_func(params) out = self.command[:-1] + out + '\nadmin:/>' return out.replace('\n', '\r\n') def close(self): pass class FakeSSHClient(): def invoke_shell(self): return FakeChannel() def get_transport(self): class transport(): def __init__(self): self.sock = sock() class sock(): def settimeout(self, time): pass return transport() def close(self): pass class FakeSSHPool(): def __init__(self, ip, port, conn_timeout, login, password=None, *args, **kwargs): self.ip = ip self.port = port self.login = login self.password = password def create(self): return FakeSSHClient() def get(self): return FakeSSHClient() def put(self, ssh): pass def remove(self, ssh): pass def Fake_sleep(time): pass def Fake_change_file_mode(obj, filepath): pass def create_fake_conf_file(filename): doc = Document() config = doc.createElement('config') doc.appendChild(config) storage = doc.createElement('Storage') config.appendChild(storage) product = doc.createElement('Product') product_text = doc.createTextNode('T') product.appendChild(product_text) storage.appendChild(product) config.appendChild(storage) protocol = doc.createElement('Protocol') protocol_text = doc.createTextNode('iSCSI') protocol.appendChild(protocol_text) storage.appendChild(protocol) controllerip0 = doc.createElement('ControllerIP0') controllerip0_text = doc.createTextNode('10.10.10.1') controllerip0.appendChild(controllerip0_text) storage.appendChild(controllerip0) controllerip1 = doc.createElement('ControllerIP1') controllerip1_text = doc.createTextNode('10.10.10.2') controllerip1.appendChild(controllerip1_text) storage.appendChild(controllerip1) username = doc.createElement('UserName') username_text = doc.createTextNode('admin') username.appendChild(username_text) storage.appendChild(username) userpassword = doc.createElement('UserPassword') userpassword_text = doc.createTextNode('123456') userpassword.appendChild(userpassword_text) storage.appendChild(userpassword) lun = doc.createElement('LUN') config.appendChild(lun) storagepool = doc.createElement('StoragePool') storagepool.setAttribute('Name', 'RAID_001') lun.appendChild(storagepool) luntype = doc.createElement('LUNType') luntype_text = doc.createTextNode('Thick') luntype.appendChild(luntype_text) lun.appendChild(luntype) iscsi = doc.createElement('iSCSI') config.appendChild(iscsi) defaulttargetip = doc.createElement('DefaultTargetIP') defaulttargetip_text = doc.createTextNode('192.168.100.1') defaulttargetip.appendChild(defaulttargetip_text) iscsi.appendChild(defaulttargetip) initiator = doc.createElement('Initiator') initiator.setAttribute('Name', 'iqn.1993-08.debian:01:ec2bff7ac3a3') initiator.setAttribute('TargetIP', '192.168.100.2') iscsi.appendChild(initiator) os_type = doc.createElement('Host') os_type.setAttribute('OSType', 'Linux') os_type.setAttribute('HostIP', '10.10.0.1') config.appendChild(os_type) tmp_file = open(filename, 'w') tmp_file.write(doc.toprettyxml(indent='')) tmp_file.close() def modify_conf(conf, item, val, attrib=None): tree = ET.parse(conf) root = tree.getroot() conf_item = root.find('%s' % item) if not attrib: conf_item.text = '%s' % val else: conf_item.attrib['%s' % attrib] = '%s' % val tree.write(conf, 'UTF-8') def set_error_flg(cmd): cmd_error_list.append(cmd) def reset_error_flg(cmd): cmd_error_list.remove(cmd) class HuaweiTCLIResSimulator(): def _paras_name(self, params): index = params.index('-n') return params[index + 1] def cli_showsys(self, params): pass def cli_createlun(self, params): lun_type = ('THIN' if '-pool' in params else 'THICK') if LUN_INFO['ID'] is None: LUN_INFO['Name'] = self._paras_name(params) LUN_INFO['ID'] = VOLUME_SNAP_ID['vol'] LUN_INFO['Size'] = FAKE_VOLUME['size'] LUN_INFO['Lun Type'] = lun_type LUN_INFO['Owner Controller'] = 'A' LUN_INFO['Worker Controller'] = 'A' LUN_INFO['RAID Group ID'] = POOL_SETTING['ID'] FAKE_VOLUME['provider_location'] = LUN_INFO['ID'] else: CLONED_LUN_INFO['Name'] = self._paras_name(params) CLONED_LUN_INFO['ID'] = VOLUME_SNAP_ID['vol_copy'] CLONED_LUN_INFO['Size'] = FAKE_CLONED_VOLUME['size'] CLONED_LUN_INFO['Lun Type'] = lun_type CLONED_LUN_INFO['Owner Controller'] = 'A' CLONED_LUN_INFO['Worker Controller'] = 'A' CLONED_LUN_INFO['RAID Group ID'] = POOL_SETTING['ID'] FAKE_CLONED_VOLUME['provider_location'] = CLONED_LUN_INFO['ID'] out = 'command operates successfully' return out def cli_showlun(self, params): if '-lun' not in params: if LUN_INFO['ID'] is None: out = 'command operates successfully, but no information.' elif CLONED_LUN_INFO['ID'] is None: out = """/>showlun =========================================================================== LUN Information --------------------------------------------------------------------------- ID RAID Group ID Disk Pool ID Status Controller Visible Capacity(MB) \ LUN Name Stripe Unit Size(KB) Lun Type --------------------------------------------------------------------------- %s %s -- Normal %s %s %s 64 THICK =========================================================================== """ % (LUN_INFO['ID'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], str(int(LUN_INFO['Size']) * 1024), LUN_INFO['Name']) else: out = """/>showlun ============================================================================ LUN Information ---------------------------------------------------------------------------- ID RAID Group ID Disk Pool ID Status Controller Visible Capacity(MB)\ LUN Name Stripe Unit Size(KB) Lun Type ---------------------------------------------------------------------------- %s %s -- Normal %s %s %s 64 THICK %s %s -- Normal %s %s %s 64 THICK ============================================================================ """ % (LUN_INFO['ID'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], str(int(LUN_INFO['Size']) * 1024), LUN_INFO['Name'], CLONED_LUN_INFO['ID'], CLONED_LUN_INFO['RAID Group ID'], CLONED_LUN_INFO['Owner Controller'], str(int(CLONED_LUN_INFO['Size']) * 1024), CLONED_LUN_INFO['Name']) elif params[params.index('-lun') + 1] in VOLUME_SNAP_ID.values(): out = """/>showlun ================================================ LUN Information ------------------------------------------------ ID | %s Name | %s LUN WWN | -- Visible Capacity | %s RAID GROUP ID | %s Owning Controller | %s Workong Controller | %s Lun Type | %s SnapShot ID | %s LunCopy ID | %s ================================================ """ % ((LUN_INFO['ID'], LUN_INFO['Name'], LUN_INFO['Visible Capacity'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], LUN_INFO['Worker Controller'], LUN_INFO['Lun Type'], LUN_INFO['SnapShot ID'], LUN_INFO['LunCopy ID']) if params[params.index('-lun') + 1] == VOLUME_SNAP_ID['vol'] else (CLONED_LUN_INFO['ID'], CLONED_LUN_INFO['Name'], CLONED_LUN_INFO['Visible Capacity'], CLONED_LUN_INFO['RAID Group ID'], CLONED_LUN_INFO['Owner Controller'], CLONED_LUN_INFO['Worker Controller'], CLONED_LUN_INFO['Lun Type'], CLONED_LUN_INFO['SnapShot ID'], CLONED_LUN_INFO['LunCopy ID'])) else: out = 'ERROR: The object does not exist.' return out def cli_dellun(self, params): if params[params.index('-lun') + 1] == VOLUME_SNAP_ID['vol']: LUN_INFO['Name'] = None LUN_INFO['ID'] = None LUN_INFO['Size'] = None LUN_INFO['Lun Type'] = None LUN_INFO['LUN WWN'] = None LUN_INFO['Owner Controller'] = None LUN_INFO['Worker Controller'] = None LUN_INFO['RAID Group ID'] = None FAKE_VOLUME['provider_location'] = None else: CLONED_LUN_INFO['Name'] = None CLONED_LUN_INFO['ID'] = None CLONED_LUN_INFO['Size'] = None CLONED_LUN_INFO['Lun Type'] = None CLONED_LUN_INFO['LUN WWN'] = None CLONED_LUN_INFO['Owner Controller'] = None CLONED_LUN_INFO['Worker Controller'] = None CLONED_LUN_INFO['RAID Group ID'] = None CLONED_LUN_INFO['provider_location'] = None FAKE_CLONED_VOLUME['provider_location'] = None out = 'command operates successfully' return out def cli_showrg(self, params): out = """/>showrg ===================================================================== RAID Group Information --------------------------------------------------------------------- ID Level Status Free Capacity(MB) Disk List Name --------------------------------------------------------------------- 0 RAID6 Normal 1024 0,0;0,2; RAID003 %s %s %s %s %s %s ===================================================================== -""" % (POOL_SETTING['ID'], POOL_SETTING['Level'], POOL_SETTING['Status'], POOL_SETTING['Free Capacity'], POOL_SETTING['Disk List'], POOL_SETTING['Name']) return out def cli_showpool(self, params): out = """/>showpool ===================================================================== Pool Information --------------------------------------------------------------------- Level Status Available Capacity(MB) Disk List --------------------------------------------------------------------- RAID6 Normal %s 0,0;0,2;0,4;0,5; ===================================================================== -""" % POOL_SETTING['Free Capacity'] return out def cli_createluncopy(self, params): src_id = params[params.index('-slun') + 1] tgt_id = params[params.index('-tlun') + 1] LUNCOPY_INFO['Name'] = 'OpenStack_%s_%s' % (src_id, tgt_id) LUNCOPY_INFO['ID'] = LUNCOPY_SETTING['ID'] LUNCOPY_INFO['Type'] = LUNCOPY_SETTING['Type'] LUNCOPY_INFO['State'] = LUNCOPY_SETTING['State'] LUNCOPY_INFO['Status'] = LUNCOPY_SETTING['Status'] out = 'command operates successfully' return out def cli_chgluncopystatus(self, params): LUNCOPY_INFO['State'] = 'Start' out = 'command operates successfully' return out def cli_showluncopy(self, params): if LUNCOPY_INFO['State'] == 'Start': LUNCOPY_INFO['State'] = 'Copying' elif LUNCOPY_INFO['State'] == 'Copying': LUNCOPY_INFO['State'] = 'Complete' out = """/>showluncopy ============================================================================ LUN Copy Information ---------------------------------------------------------------------------- LUN Copy Name LUN Copy ID Type LUN Copy State LUN Copy Status ---------------------------------------------------------------------------- %s %s %s %s %s ============================================================================ """ % (LUNCOPY_INFO['Name'], LUNCOPY_INFO['ID'], LUNCOPY_INFO['Type'], LUNCOPY_INFO['State'], LUNCOPY_INFO['Status']) return out def cli_delluncopy(self, params): LUNCOPY_INFO['Name'] = None LUNCOPY_INFO['ID'] = None LUNCOPY_INFO['Type'] = None LUNCOPY_INFO['State'] = None LUNCOPY_INFO['Status'] = None out = 'command operates successfully' return out def cli_createsnapshot(self, params): SNAPSHOT_INFO['Source LUN ID'] = LUN_INFO['ID'] SNAPSHOT_INFO['Source LUN Name'] = LUN_INFO['Name'] SNAPSHOT_INFO['ID'] = VOLUME_SNAP_ID['snap'] SNAPSHOT_INFO['Name'] = self._paras_name(params) SNAPSHOT_INFO['Status'] = 'Disable' out = 'command operates successfully' return out def cli_showsnapshot(self, params): if SNAPSHOT_INFO['ID'] is None: out = 'command operates successfully, but no information.' else: out = """/>showsnapshot ========================================================================== Snapshot Information -------------------------------------------------------------------------- Name ID Type Status Time Stamp -------------------------------------------------------------------------- %s %s Public %s 2013-01-15 14:21:13 ========================================================================== """ % (SNAPSHOT_INFO['Name'], SNAPSHOT_INFO['ID'], SNAPSHOT_INFO['Status']) return out def cli_actvsnapshot(self, params): SNAPSHOT_INFO['Status'] = 'Active' FAKE_SNAPSHOT['provider_location'] = SNAPSHOT_INFO['ID'] out = 'command operates successfully' return out def cli_disablesnapshot(self, params): SNAPSHOT_INFO['Status'] = 'Disable' out = 'command operates successfully' return out def cli_delsnapshot(self, params): SNAPSHOT_INFO['Source LUN ID'] = None SNAPSHOT_INFO['Source LUN Name'] = None SNAPSHOT_INFO['ID'] = None SNAPSHOT_INFO['Name'] = None SNAPSHOT_INFO['Status'] = None FAKE_SNAPSHOT['provider_location'] = None out = 'command operates successfully' return out def cli_showrespool(self, params): out = """/>showrespool =========================================================================== Resource Pool Information --------------------------------------------------------------------------- Pool ID Size(MB) Usage(MB) Valid Size(MB) Alarm Threshold --------------------------------------------------------------------------- A %s 0.0 %s 80 B %s 0.0 %s 80 =========================================================================== -""" % (RESPOOL_A_SIM['Size'], RESPOOL_A_SIM['Valid Size'], RESPOOL_B_SIM['Size'], RESPOOL_B_SIM['Valid Size']) return out def cli_showiscsitgtname(self, params): iqn = INITIATOR_SETTING['TargetIQN'] out = """/>showiscsitgtname =================================================================== ISCSI Name ------------------------------------------------------------------- Iscsi Name | %s =================================================================== """ % iqn return out def cli_showiscsiip(self, params): out = """/>showiscsiip ============================================================================ iSCSI IP Information ---------------------------------------------------------------------------- Controller ID Interface Module ID Port ID IP Address Mask ---------------------------------------------------------------------------- B 0 P1 %s 255.255.255.0 ============================================================================ -""" % INITIATOR_SETTING['Initiator TargetIP'] return out def cli_showhostgroup(self, params): if MAP_INFO['Host Group ID'] is None: out = """/>showhostgroup ============================================================ Host Group Information ------------------------------------------------------------ Host Group ID Name File Engine Cluster ------------------------------------------------------------ 0 Default Group NO ============================================================ """ else: out = """/>showhostgroup ============================================================ Host Group Information ------------------------------------------------------------ Host Group ID Name File Engine Cluster ------------------------------------------------------------ 0 Default Group NO %s %s NO ============================================================ """ % (MAP_INFO['Host Group ID'], MAP_INFO['Host Group Name']) return out def cli_createhostgroup(self, params): MAP_INFO['Host Group ID'] = '1' MAP_INFO['Host Group Name'] = 'HostGroup_OpenStack' out = 'command operates successfully' return out def cli_showhost(self, params): if MAP_INFO['Host ID'] is None: out = 'command operates successfully, but no information.' else: out = """/>showhost ======================================================= Host Information ------------------------------------------------------- Host ID Host Name Host Group ID Os Type ------------------------------------------------------- %s %s %s Linux ======================================================= """ % (MAP_INFO['Host ID'], MAP_INFO['Host Name'], MAP_INFO['Host Group ID']) return out def cli_addhost(self, params): MAP_INFO['Host ID'] = '1' MAP_INFO['Host Name'] = 'Host_' + FAKE_CONNECTOR['host'] MAP_INFO['Os Type'] = 'Linux' out = 'command operates successfully' return out def cli_delhost(self, params): MAP_INFO['Host ID'] = None MAP_INFO['Host Name'] = None MAP_INFO['Os Type'] = None out = 'command operates successfully' return out def cli_showiscsiini(self, params): if HOST_PORT_INFO['ID'] is None: out = 'Error: The parameter is wrong.' else: out = """/>showiscsiini ======================================================== Initiator Information -------------------------------------------------------- Initiator Name Chap Status -------------------------------------------------------- %s Disable ======================================================== """ % HOST_PORT_INFO['Info'] return out def cli_addiscsiini(self, params): HOST_PORT_INFO['ID'] = '1' HOST_PORT_INFO['Name'] = 'iSCSIInitiator001' HOST_PORT_INFO['Info'] = INITIATOR_SETTING['Initiator Name'] HOST_PORT_INFO['Type'] = 'ISCSITGT' out = 'command operates successfully' return out def cli_deliscsiini(self, params): HOST_PORT_INFO['ID'] = None HOST_PORT_INFO['Name'] = None HOST_PORT_INFO['Info'] = None HOST_PORT_INFO['Type'] = None out = 'command operates successfully' return out def cli_showhostport(self, params): if MAP_INFO['INI Port ID'] is None: out = 'command operates successfully, but no information.' else: out = """/>showhostport ============================================================================ Host Port Information ---------------------------------------------------------------------------- Port ID Port Name Port Information Port Type Host ID Link Status \ Multipath Type ---------------------------------------------------------------------------- %s %s %s %s %s Unconnected Default ============================================================================ """ % (MAP_INFO['INI Port ID'], MAP_INFO['INI Port Name'], MAP_INFO['INI Port Info'], MAP_INFO['INI Port Type'], MAP_INFO['Host ID']) return out def cli_addhostport(self, params): MAP_INFO['INI Port ID'] = HOST_PORT_INFO['ID'] MAP_INFO['INI Port Name'] = HOST_PORT_INFO['Name'] MAP_INFO['INI Port Info'] = HOST_PORT_INFO['Info'] MAP_INFO['INI Port Type'] = HOST_PORT_INFO['Type'] out = 'command operates successfully' return out def cli_delhostport(self, params): MAP_INFO['INI Port ID'] = None MAP_INFO['INI Port Name'] = None MAP_INFO['INI Port Info'] = None MAP_INFO['INI Port Type'] = None HOST_PORT_INFO['ID'] = None HOST_PORT_INFO['Name'] = None HOST_PORT_INFO['Info'] = None HOST_PORT_INFO['Type'] = None out = 'command operates successfully' return out def cli_showhostmap(self, params): if MAP_INFO['DEV LUN ID'] is None: out = 'command operates successfully, but no information.' else: out = """/>showhostmap =========================================================================== Map Information --------------------------------------------------------------------------- Map ID Working Controller Dev LUN ID LUN WWN Host LUN ID Mapped to\ RAID ID Dev LUN Cap(MB) Map Type Whether Command LUN Pool ID ---------------------------------------------------------------------------- 2147483649 %s %s %s %s Host: %s %s %s HOST No -- ============================================================================ """ % (LUN_INFO['Worker Controller'], LUN_INFO['ID'], LUN_INFO['LUN WWN'], MAP_INFO['Host LUN ID'], MAP_INFO['Host ID'], LUN_INFO['RAID Group ID'], str(int(LUN_INFO['Size']) * 1024)) return out def cli_addhostmap(self, params): MAP_INFO['DEV LUN ID'] = LUN_INFO['ID'] MAP_INFO['LUN WWN'] = LUN_INFO['LUN WWN'] MAP_INFO['Host LUN ID'] = '2' MAP_INFO['Link Status'] = 'Linked' out = 'command operates successfully' return out def cli_delhostmap(self, params): if MAP_INFO['Link Status'] == 'Linked': MAP_INFO['Link Status'] = 'Deleting' out = 'there are IOs accessing the system, please try later' else: MAP_INFO['Link Status'] = None MAP_INFO['DEV LUN ID'] = None MAP_INFO['LUN WWN'] = None MAP_INFO['Host LUN ID'] = None out = 'command operates successfully' return out def cli_showfreeport(self, params): out = """/>showfreeport ======================================================================= Host Free Port Information ----------------------------------------------------------------------- WWN Or MAC Type Location Connection Status ----------------------------------------------------------------------- 1000000164s45126 FC Primary Controller Connected ======================================================================= """ HOST_PORT_INFO['ID'] = '2' HOST_PORT_INFO['Name'] = 'FCInitiator001' HOST_PORT_INFO['Info'] = '1000000164s45126' HOST_PORT_INFO['Type'] = 'FC' return out def cli_showhostpath(self, params): host = params[params.index('-host') + 1] out = """/>showhostpath -host 1 ======================================= Multi Path Information --------------------------------------- Host ID | %s Controller ID | B Port Type | FC Initiator WWN | 1000000164s45126 Target WWN | %s Host Port ID | 0 Link Status | Normal ======================================= """ % (host, INITIATOR_SETTING['WWN'][0]) return out def cli_showfcmode(self, params): out = """/>showfcport ========================================================================= FC Port Topology Mode ------------------------------------------------------------------------- Controller ID Interface Module ID Port ID WWN Current Mode ------------------------------------------------------------------------- B 1 P0 %s -- ========================================================================= -""" % INITIATOR_SETTING['WWN'][0] return out def cli_chglun(self, params): if params[params.index('-lun') + 1] == VOLUME_SNAP_ID['vol']: LUN_INFO['Owner Controller'] = 'B' else: CLONED_LUN_INFO['Owner Controller'] = 'B' out = 'command operates successfully' return out def cli_addluntoextlun(self, params): LUN_INFO['Size'] = int(LUN_INFO['Size']) + int(CLONED_LUN_INFO['Size']) out = 'command operates successfully' return out def cli_rmlunfromextlun(self, patams): LUN_INFO['Size'] = int(LUN_INFO['Size']) - int(CLONED_LUN_INFO['Size']) out = 'command operates successfully' return out class HuaweiDorado5100CLIResSimulator(HuaweiTCLIResSimulator): def cli_showsys(self, params): out = """/>showsys ============================================================= System Information ------------------------------------------------------------- System Name | SN_Dorado5100 Device Type | Oceanstor Dorado5100 Current System Mode | Double Controllers Normal Mirroring Link Status | Link Up Location | Time | 2013-01-01 01:01:01 Product Version | V100R001C00 ============================================================= """ return out def cli_showlun(self, params): if '-lun' not in params: if LUN_INFO['ID'] is None: out = 'command operates successfully, but no information.' elif CLONED_LUN_INFO['ID'] is None: out = """/>showlun =========================================================================== LUN Information --------------------------------------------------------------------------- ID RAIDgroup ID Status Controller Visible Capacity(MB) LUN Name..\ Strip Unit Size(KB) Lun Type --------------------------------------------------------------------------- %s %s Normal %s %s %s 64 THICK =========================================================================== """ % (LUN_INFO['ID'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], str(int(LUN_INFO['Size']) * 1024), LUN_INFO['Name']) else: out = """/>showlun =========================================================================== LUN Information --------------------------------------------------------------------------- ID RAIDgroup ID Status Controller Visible Capacity(MB) LUN Name \ Strip Unit Size(KB) Lun Type --------------------------------------------------------------------------- %s %s Normal %s %s %s 64 THICK %s %s Norma %s %s %s 64 THICK =========================================================================== """ % (LUN_INFO['ID'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], str(int(LUN_INFO['Size']) * 1024), LUN_INFO['Name'], CLONED_LUN_INFO['ID'], CLONED_LUN_INFO['RAID Group ID'], CLONED_LUN_INFO['Owner Controller'], str(int(CLONED_LUN_INFO['Size']) * 1024), CLONED_LUN_INFO['Name']) elif params[params.index('-lun') + 1] in VOLUME_SNAP_ID.values(): out = """/>showlun ================================================ LUN Information ------------------------------------------------ ID | %s Name | %s LUN WWN | -- Visible Capacity | %s RAID GROUP ID | %s Owning Controller | %s Workong Controller | %s Lun Type | %s SnapShot ID | %s LunCopy ID | %s ================================================ """ % ((LUN_INFO['ID'], LUN_INFO['Name'], LUN_INFO['Visible Capacity'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], LUN_INFO['Worker Controller'], LUN_INFO['Lun Type'], LUN_INFO['SnapShot ID'], LUN_INFO['LunCopy ID']) if params[params.index('-lun') + 1] == VOLUME_SNAP_ID['vol'] else (CLONED_LUN_INFO['ID'], CLONED_LUN_INFO['Name'], CLONED_LUN_INFO['Visible Capacity'], CLONED_LUN_INFO['RAID Group ID'], CLONED_LUN_INFO['Owner Controller'], CLONED_LUN_INFO['Worker Controller'], CLONED_LUN_INFO['Lun Type'], CLONED_LUN_INFO['SnapShot ID'], CLONED_LUN_INFO['LunCopy ID'])) else: out = 'ERROR: The object does not exist.' return out class HuaweiDorado2100G2CLIResSimulator(HuaweiTCLIResSimulator): def cli_showsys(self, params): out = """/>showsys ========================================================================== System Information -------------------------------------------------------------------------- System Name | SN_Dorado2100_G2 Device Type | Oceanstor Dorado2100 G2 Current System Mode | Double Controllers Normal Mirroring Link Status | Link Up Location | Time | 2013-01-01 01:01:01 Product Version | V100R001C00 =========================================================================== """ return out def cli_createlun(self, params): lun_type = ('THIN' if params[params.index('-type') + 1] == '2' else 'THICK') if LUN_INFO['ID'] is None: LUN_INFO['Name'] = self._paras_name(params) LUN_INFO['ID'] = VOLUME_SNAP_ID['vol'] LUN_INFO['Size'] = FAKE_VOLUME['size'] LUN_INFO['Lun Type'] = lun_type LUN_INFO['Owner Controller'] = 'A' LUN_INFO['Worker Controller'] = 'A' LUN_INFO['RAID Group ID'] = POOL_SETTING['ID'] FAKE_VOLUME['provider_location'] = LUN_INFO['ID'] else: CLONED_LUN_INFO['Name'] = self._paras_name(params) CLONED_LUN_INFO['ID'] = VOLUME_SNAP_ID['vol_copy'] CLONED_LUN_INFO['Size'] = FAKE_CLONED_VOLUME['size'] CLONED_LUN_INFO['Lun Type'] = lun_type CLONED_LUN_INFO['Owner Controller'] = 'A' CLONED_LUN_INFO['Worker Controller'] = 'A' CLONED_LUN_INFO['RAID Group ID'] = POOL_SETTING['ID'] CLONED_LUN_INFO['provider_location'] = CLONED_LUN_INFO['ID'] FAKE_CLONED_VOLUME['provider_location'] = CLONED_LUN_INFO['ID'] out = 'command operates successfully' return out def cli_showlun(self, params): if '-lun' not in params: if LUN_INFO['ID'] is None: out = 'command operates successfully, but no information.' elif CLONED_LUN_INFO['ID'] is None: out = """/>showlun =========================================================================== LUN Information --------------------------------------------------------------------------- ID Status Controller Visible Capacity(MB) LUN Name Lun Type --------------------------------------------------------------------------- %s Normal %s %s %s THICK =========================================================================== """ % (LUN_INFO['ID'], LUN_INFO['Owner Controller'], str(int(LUN_INFO['Size']) * 1024), LUN_INFO['Name']) else: out = """/>showlun =========================================================================== LUN Information --------------------------------------------------------------------------- ID Status Controller Visible Capacity(MB) LUN Name Lun Type --------------------------------------------------------------------------- %s Normal %s %s %s THICK %s Normal %s %s %s THICK =========================================================================== """ % (LUN_INFO['ID'], LUN_INFO['Owner Controller'], str(int(LUN_INFO['Size']) * 1024), LUN_INFO['Name'], CLONED_LUN_INFO['ID'], CLONED_LUN_INFO['Owner Controller'], str(int(CLONED_LUN_INFO['Size']) * 1024), CLONED_LUN_INFO['Name']) elif params[params.index('-lun') + 1] in VOLUME_SNAP_ID.values(): out = """/>showlun ================================================ LUN Information ------------------------------------------------ ID | %s Name | %s LUN WWN | -- Visible Capacity | %s RAID GROUP ID | %s Owning Controller | %s Workong Controller | %s Lun Type | %s SnapShot ID | %s LunCopy ID | %s ================================================ """ % ((LUN_INFO['ID'], LUN_INFO['Name'], LUN_INFO['Visible Capacity'], LUN_INFO['RAID Group ID'], LUN_INFO['Owner Controller'], LUN_INFO['Worker Controller'], LUN_INFO['Lun Type'], LUN_INFO['SnapShot ID'], LUN_INFO['LunCopy ID']) if params[params.index('-lun')] == VOLUME_SNAP_ID['vol'] else (CLONED_LUN_INFO['ID'], CLONED_LUN_INFO['Name'], CLONED_LUN_INFO['Visible Capacity'], CLONED_LUN_INFO['RAID Group ID'], CLONED_LUN_INFO['Owner Controller'], CLONED_LUN_INFO['Worker Controller'], CLONED_LUN_INFO['Lun Type'], CLONED_LUN_INFO['SnapShot ID'], CLONED_LUN_INFO['LunCopy ID'])) else: out = 'ERROR: The object does not exist.' return out class HuaweiTISCSIDriverTestCase(test.TestCase): def __init__(self, *args, **kwargs): super(HuaweiTISCSIDriverTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiTISCSIDriverTestCase, self).setUp() self.tmp_dir = tempfile.mkdtemp() self.fake_conf_file = self.tmp_dir + '/cinder_huawei_conf.xml' create_fake_conf_file(self.fake_conf_file) self.configuration = mox.MockObject(conf.Configuration) self.configuration.cinder_huawei_conf_file = self.fake_conf_file self.configuration.append_config_values(mox.IgnoreArg()) self.stubs.Set(time, 'sleep', Fake_sleep) self.stubs.Set(utils, 'SSHPool', FakeSSHPool) self.stubs.Set(ssh_common.TseriesCommon, '_change_file_mode', Fake_change_file_mode) self._init_driver() def _init_driver(self): Curr_test[0] = 'T' self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def tearDown(self): if os.path.exists(self.fake_conf_file): os.remove(self.fake_conf_file) shutil.rmtree(self.tmp_dir) super(HuaweiTISCSIDriverTestCase, self).tearDown() def test_conf_invalid(self): # Test config file not found tmp_fonf_file = '/xxx/cinder_huawei_conf.xml' tmp_configuration = mox.MockObject(conf.Configuration) tmp_configuration.cinder_huawei_conf_file = tmp_fonf_file tmp_configuration.append_config_values(mox.IgnoreArg()) self.assertRaises(IOError, HuaweiVolumeDriver, configuration=tmp_configuration) # Test Product and Protocol invalid tmp_dict = {'Storage/Product': 'T', 'Storage/Protocol': 'iSCSI'} for k, v in tmp_dict.items(): modify_conf(self.fake_conf_file, k, 'xx') self.assertRaises(exception.InvalidInput, HuaweiVolumeDriver, configuration=self.configuration) modify_conf(self.fake_conf_file, k, v) # Test ctr ip, UserName and password unspecified tmp_dict = {'Storage/ControllerIP0': '10.10.10.1', 'Storage/ControllerIP1': '10.10.10.2', 'Storage/UserName': 'admin', 'Storage/UserPassword': '123456'} for k, v in tmp_dict.items(): modify_conf(self.fake_conf_file, k, '') tmp_driver = HuaweiVolumeDriver(configuration=self.configuration) self.assertRaises(exception.InvalidInput, tmp_driver.do_setup, None) modify_conf(self.fake_conf_file, k, v) # Test StoragePool unspecified modify_conf(self.fake_conf_file, 'LUN/StoragePool', '', attrib='Name') tmp_driver = HuaweiVolumeDriver(configuration=self.configuration) self.assertRaises(exception.InvalidInput, tmp_driver.do_setup, None) modify_conf(self.fake_conf_file, 'LUN/StoragePool', 'RAID_001', attrib='Name') # Test LUN type invalid modify_conf(self.fake_conf_file, 'LUN/LUNType', 'thick') tmp_driver = HuaweiVolumeDriver(configuration=self.configuration) tmp_driver.do_setup(None) self.assertRaises(exception.InvalidInput, tmp_driver.create_volume, FAKE_VOLUME) modify_conf(self.fake_conf_file, 'LUN/LUNType', 'Thick') # Test OSType invalid modify_conf(self.fake_conf_file, 'Host', 'invalid_type', attrib='OSType') tmp_driver = HuaweiVolumeDriver(configuration=self.configuration) self.assertRaises(exception.InvalidInput, tmp_driver.do_setup, None) modify_conf(self.fake_conf_file, 'Host', 'Linux', attrib='OSType') # Test TargetIP not found modify_conf(self.fake_conf_file, 'iSCSI/DefaultTargetIP', '') modify_conf(self.fake_conf_file, 'iSCSI/Initiator', '', attrib='Name') tmp_driver = HuaweiVolumeDriver(configuration=self.configuration) tmp_driver.do_setup(None) tmp_driver.create_volume(FAKE_VOLUME) self.assertRaises(exception.InvalidInput, tmp_driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) tmp_driver.delete_volume(FAKE_VOLUME) modify_conf(self.fake_conf_file, 'iSCSI/DefaultTargetIP', '192.168.100.1') modify_conf(self.fake_conf_file, 'iSCSI/Initiator', 'iqn.1993-08.debian:01:ec2bff7ac3a3', attrib='Name') def test_volume_type(self): ctxt = context.get_admin_context() extra_specs = {'drivers:LUNType': 'Thin'} type_ref = volume_types.create(ctxt, 'THIN', extra_specs) FAKE_VOLUME['volume_type_id'] = type_ref['id'] self.driver.create_volume(FAKE_VOLUME) self.assertEqual(LUN_INFO["ID"], VOLUME_SNAP_ID['vol']) self.assertEqual(LUN_INFO['Lun Type'], 'THIN') self.driver.delete_volume(FAKE_VOLUME) FAKE_VOLUME['volume_type_id'] = None # Test volume type invalid extra_specs = {'drivers:InvalidLUNType': 'Thin'} type_ref = volume_types.create(ctxt, 'Invalid_THIN', extra_specs) FAKE_VOLUME['volume_type_id'] = type_ref['id'] self.driver.create_volume(FAKE_VOLUME) self.assertEqual(LUN_INFO["ID"], VOLUME_SNAP_ID['vol']) self.assertNotEqual(LUN_INFO['Lun Type'], 'THIN') self.driver.delete_volume(FAKE_VOLUME) FAKE_VOLUME['volume_type_id'] = None def test_create_delete_volume(self): # Test create lun cli exception set_error_flg('createlun') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume, FAKE_VOLUME) ret = self.driver.create_volume(FAKE_VOLUME) self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) self.assertEqual(ret['provider_location'], LUN_INFO['ID']) # Test delete lun cli exception set_error_flg('dellun') self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_volume, FAKE_VOLUME) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) self.assertIsNone(FAKE_VOLUME['provider_location']) def test_create_delete_cloned_volume(self): # Test no source volume self.assertRaises(exception.VolumeNotFound, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) self.driver.create_volume(FAKE_VOLUME) # Test create luncopy failed self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) set_error_flg('createluncopy') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) self.assertEqual(CLONED_LUN_INFO['ID'], VOLUME_SNAP_ID['vol_copy']) self.driver.delete_volume(FAKE_CLONED_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) # Test start luncopy failed self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) set_error_flg('chgluncopystatus') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) # Test luncopy status abnormal LUNCOPY_SETTING['Status'] = 'Disable' self.assertEqual(LUN_INFO['ID'], '0') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) LUNCOPY_SETTING['Status'] = 'Normal' # Test delete luncopy failed set_error_flg('delluncopy') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) self.assertEqual(CLONED_LUN_INFO['ID'], VOLUME_SNAP_ID['vol_copy']) self.driver.delete_volume(FAKE_CLONED_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) # need to clean up LUNCopy LUNCOPY_INFO['Name'] = None LUNCOPY_INFO['ID'] = None LUNCOPY_INFO['Type'] = None LUNCOPY_INFO['State'] = None LUNCOPY_INFO['Status'] = None # Test normal create and delete cloned volume self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) ret = self.driver.create_cloned_volume(FAKE_CLONED_VOLUME, FAKE_VOLUME) self.assertEqual(CLONED_LUN_INFO['ID'], VOLUME_SNAP_ID['vol_copy']) self.assertEqual(ret['provider_location'], CLONED_LUN_INFO['ID']) self.driver.delete_volume(FAKE_CLONED_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) self.assertIsNone(FAKE_CLONED_VOLUME['provider_location']) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def test_extend_volume(self): VOLUME_SIZE = 5 # Test no extended volume self.assertRaises(exception.VolumeNotFound, self.driver.extend_volume, FAKE_VOLUME, VOLUME_SIZE) self.driver.create_volume(FAKE_VOLUME) self.assertEqual(LUN_INFO['Size'], '2') # Test extend volume cli exception set_error_flg('addluntoextlun') self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, FAKE_VOLUME, VOLUME_SIZE) self.assertEqual(CLONED_LUN_INFO['Name'], None) self.driver.extend_volume(FAKE_VOLUME, VOLUME_SIZE) self.assertEqual(LUN_INFO['Size'], VOLUME_SIZE) self.driver.delete_volume(FAKE_VOLUME) self.assertEqual(LUN_INFO['Name'], None) def test_create_delete_snapshot(self): # Test no resource pool RESPOOL_A_SIM['Valid Size'] = '0' self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, FAKE_SNAPSHOT) RESPOOL_A_SIM['Valid Size'] = '5120' # Test no source volume self.assertRaises(exception.VolumeNotFound, self.driver.create_snapshot, FAKE_SNAPSHOT) # Test create snapshot cli exception self.driver.create_volume(FAKE_VOLUME) set_error_flg('createsnapshot') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, FAKE_SNAPSHOT) self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) # Test active snapshot failed set_error_flg('actvsnapshot') self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, FAKE_SNAPSHOT) self.assertIsNone(SNAPSHOT_INFO['ID']) self.assertIsNone(SNAPSHOT_INFO['Status']) # Test disable snapshot failed set_error_flg('disablesnapshot') self.driver.create_snapshot(FAKE_SNAPSHOT) self.assertEqual(SNAPSHOT_INFO['ID'], VOLUME_SNAP_ID['snap']) self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_snapshot, FAKE_SNAPSHOT) self.assertEqual(SNAPSHOT_INFO['Status'], 'Active') # Test delsnapshot failed set_error_flg('delsnapshot') self.assertRaises(exception.VolumeBackendAPIException, self.driver.delete_snapshot, FAKE_SNAPSHOT) self.assertEqual(SNAPSHOT_INFO['Status'], 'Disable') self.driver.delete_snapshot(FAKE_SNAPSHOT) # Test normal create and delete snapshot self.driver.create_volume(FAKE_VOLUME) ret = self.driver.create_snapshot(FAKE_SNAPSHOT) self.assertEqual(SNAPSHOT_INFO['ID'], VOLUME_SNAP_ID['snap']) self.assertEqual(SNAPSHOT_INFO['Status'], 'Active') self.assertEqual(ret['provider_location'], SNAPSHOT_INFO['ID']) self.driver.delete_snapshot(FAKE_SNAPSHOT) self.assertIsNone(SNAPSHOT_INFO['ID']) self.assertIsNone(SNAPSHOT_INFO['Status']) def test_create_delete_snapshot_volume(self): # Test no source snapshot self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) # Test normal create and delete snapshot volume self.driver.create_volume(FAKE_VOLUME) self.driver.create_snapshot(FAKE_SNAPSHOT) self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) self.assertEqual(SNAPSHOT_INFO['ID'], VOLUME_SNAP_ID['snap']) ret = self.driver.create_volume_from_snapshot(FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) self.assertEqual(CLONED_LUN_INFO['ID'], VOLUME_SNAP_ID['vol_copy']) self.assertEqual(ret['provider_location'], CLONED_LUN_INFO['ID']) self.driver.delete_snapshot(FAKE_SNAPSHOT) self.driver.delete_volume(FAKE_VOLUME) self.driver.delete_volume(FAKE_CLONED_VOLUME) self.assertIsNone(LUN_INFO['ID']) self.assertIsNone(CLONED_LUN_INFO['ID']) self.assertIsNone(SNAPSHOT_INFO['ID']) def test_initialize_connection(self): # Test can not get iscsi iqn set_error_flg('showiscsitgtname') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test failed to get iSCSI port info set_error_flg('showiscsiip') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test create hostgroup failed set_error_flg('createhostgroup') MAP_INFO['Host Group ID'] = None MAP_INFO['Host Group Name'] = None self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test create host failed set_error_flg('addhost') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test add iSCSI initiator failed set_error_flg('addiscsiini') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test add hostport failed set_error_flg('addhostport') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test no volume FAKE_VOLUME['provider_location'] = '100' self.assertRaises(exception.VolumeNotFound, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) FAKE_VOLUME['provider_location'] = None # Test map volume failed self.driver.create_volume(FAKE_VOLUME) set_error_flg('addhostmap') self.assertRaises(exception.VolumeBackendAPIException, self.driver.initialize_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test normal initialize connection self.assertEqual(FAKE_VOLUME['provider_location'], VOLUME_SNAP_ID['vol']) self.assertEqual(LUN_INFO['Owner Controller'], 'A') ret = self.driver.initialize_connection(FAKE_VOLUME, FAKE_CONNECTOR) iscsi_propers = ret['data'] self.assertEqual(iscsi_propers['target_iqn'], INITIATOR_SETTING['TargetIQN-form']) self.assertEqual(iscsi_propers['target_portal'], INITIATOR_SETTING['Initiator TargetIP'] + ':3260') self.assertEqual(MAP_INFO["DEV LUN ID"], LUN_INFO['ID']) self.assertEqual(MAP_INFO["INI Port Info"], FAKE_CONNECTOR['initiator']) self.assertEqual(LUN_INFO['Owner Controller'], 'B') self.driver.terminate_connection(FAKE_VOLUME, FAKE_CONNECTOR) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def test_terminate_connection(self): # Test no host was found self.assertRaises(exception.HostNotFound, self.driver.terminate_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test no volume was found self.driver .create_volume(FAKE_VOLUME) self.driver.initialize_connection(FAKE_VOLUME, FAKE_CONNECTOR) FAKE_VOLUME['provider_location'] = None self.assertRaises(exception.VolumeNotFound, self.driver.terminate_connection, FAKE_VOLUME, FAKE_CONNECTOR) FAKE_VOLUME['provider_location'] = LUN_INFO['ID'] # Test delete map failed set_error_flg('delhostmap') self.assertRaises(exception.VolumeBackendAPIException, self.driver.terminate_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Delete hostport failed set_error_flg('delhostport') self.assertRaises(exception.VolumeBackendAPIException, self.driver.terminate_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test delete initiator failed set_error_flg('deliscsiini') self.assertRaises(exception.VolumeBackendAPIException, self.driver.terminate_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test delete host failed set_error_flg('delhost') self.assertRaises(exception.VolumeBackendAPIException, self.driver.terminate_connection, FAKE_VOLUME, FAKE_CONNECTOR) # Test normal terminate connection self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) self.driver.initialize_connection(FAKE_VOLUME, FAKE_CONNECTOR) self.driver.terminate_connection(FAKE_VOLUME, FAKE_CONNECTOR) self.assertIsNone(MAP_INFO["DEV LUN ID"]) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def test_get_volume_stats(self): stats = self.driver.get_volume_stats(True) free_capacity = float(POOL_SETTING['Free Capacity']) / 1024 self.assertEqual(stats['free_capacity_gb'], free_capacity) self.assertEqual(stats['storage_protocol'], 'iSCSI') class HuaweiTFCDriverTestCase(test.TestCase): def __init__(self, *args, **kwargs): super(HuaweiTFCDriverTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiTFCDriverTestCase, self).setUp() self.tmp_dir = tempfile.mkdtemp() self.fake_conf_file = self.tmp_dir + '/cinder_huawei_conf.xml' create_fake_conf_file(self.fake_conf_file) modify_conf(self.fake_conf_file, 'Storage/Protocol', 'FC') self.configuration = mox.MockObject(conf.Configuration) self.configuration.cinder_huawei_conf_file = self.fake_conf_file self.configuration.append_config_values(mox.IgnoreArg()) self.stubs.Set(time, 'sleep', Fake_sleep) self.stubs.Set(utils, 'SSHPool', FakeSSHPool) self.stubs.Set(ssh_common.TseriesCommon, '_change_file_mode', Fake_change_file_mode) self._init_driver() def _init_driver(self): Curr_test[0] = 'T' self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def tearDown(self): if os.path.exists(self.fake_conf_file): os.remove(self.fake_conf_file) shutil.rmtree(self.tmp_dir) super(HuaweiTFCDriverTestCase, self).tearDown() def test_validate_connector_failed(self): invalid_connector = {'host': 'testhost'} self.assertRaises(exception.VolumeBackendAPIException, self.driver.validate_connector, invalid_connector) def test_create_delete_volume(self): self.driver.create_volume(FAKE_VOLUME) self.assertEqual(LUN_INFO['ID'], VOLUME_SNAP_ID['vol']) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def test_create_delete_snapshot(self): self.driver.create_volume(FAKE_VOLUME) self.driver.create_snapshot(FAKE_SNAPSHOT) self.assertEqual(SNAPSHOT_INFO['ID'], VOLUME_SNAP_ID['snap']) self.driver.delete_snapshot(FAKE_SNAPSHOT) self.assertIsNone(SNAPSHOT_INFO['ID']) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def test_create_cloned_volume(self): self.driver.create_volume(FAKE_VOLUME) ret = self.driver.create_cloned_volume(FAKE_CLONED_VOLUME, FAKE_VOLUME) self.assertEqual(CLONED_LUN_INFO['ID'], VOLUME_SNAP_ID['vol_copy']) self.assertEqual(ret['provider_location'], CLONED_LUN_INFO['ID']) self.driver.delete_volume(FAKE_CLONED_VOLUME) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) self.assertIsNone(LUN_INFO['ID']) def test_create_snapshot_volume(self): self.driver.create_volume(FAKE_VOLUME) self.driver.create_snapshot(FAKE_SNAPSHOT) ret = self.driver.create_volume_from_snapshot(FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) self.assertEqual(CLONED_LUN_INFO['ID'], VOLUME_SNAP_ID['vol_copy']) self.assertEqual(ret['provider_location'], CLONED_LUN_INFO['ID']) self.driver.delete_volume(FAKE_CLONED_VOLUME) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(CLONED_LUN_INFO['ID']) self.assertIsNone(LUN_INFO['ID']) def test_initialize_terminitat_connection(self): self.driver.create_volume(FAKE_VOLUME) ret = self.driver.initialize_connection(FAKE_VOLUME, FAKE_CONNECTOR) fc_properties = ret['data'] self.assertEqual(fc_properties['target_wwn'], INITIATOR_SETTING['WWN']) self.assertEqual(MAP_INFO["DEV LUN ID"], LUN_INFO['ID']) self.driver.terminate_connection(FAKE_VOLUME, FAKE_CONNECTOR) self.assertIsNone(MAP_INFO["DEV LUN ID"]) self.assertIsNone(MAP_INFO["Host LUN ID"]) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def _test_get_volume_stats(self): stats = self.driver.get_volume_stats(True) fakecapacity = float(POOL_SETTING['Free Capacity']) / 1024 self.assertEqual(stats['free_capacity_gb'], fakecapacity) self.assertEqual(stats['storage_protocol'], 'FC') class HuaweiDorado5100FCDriverTestCase(HuaweiTFCDriverTestCase): def __init__(self, *args, **kwargs): super(HuaweiDorado5100FCDriverTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiDorado5100FCDriverTestCase, self).setUp() def _init_driver(self): Curr_test[0] = 'Dorado5100' modify_conf(self.fake_conf_file, 'Storage/Product', 'Dorado') self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def test_create_cloned_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) def test_create_snapshot_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) class HuaweiDorado2100G2FCDriverTestCase(HuaweiTFCDriverTestCase): def __init__(self, *args, **kwargs): super(HuaweiDorado2100G2FCDriverTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiDorado2100G2FCDriverTestCase, self).setUp() def _init_driver(self): Curr_test[0] = 'Dorado2100G2' modify_conf(self.fake_conf_file, 'Storage/Product', 'Dorado') self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def test_create_cloned_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) def test_create_delete_snapshot(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, FAKE_SNAPSHOT) def test_create_snapshot_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) def test_extend_volume(self): NEWSIZE = 5 self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, FAKE_VOLUME, NEWSIZE) class HuaweiDorado5100ISCSIDriverTestCase(HuaweiTISCSIDriverTestCase): def __init__(self, *args, **kwargs): super(HuaweiDorado5100ISCSIDriverTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiDorado5100ISCSIDriverTestCase, self).setUp() def _init_driver(self): Curr_test[0] = 'Dorado5100' modify_conf(self.fake_conf_file, 'Storage/Product', 'Dorado') self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def test_create_delete_cloned_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) def test_create_delete_snapshot_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) def test_volume_type(self): pass class HuaweiDorado2100G2ISCSIDriverTestCase(HuaweiTISCSIDriverTestCase): def __init__(self, *args, **kwargs): super(HuaweiDorado2100G2ISCSIDriverTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiDorado2100G2ISCSIDriverTestCase, self).setUp() def _init_driver(self): Curr_test[0] = 'Dorado2100G2' modify_conf(self.fake_conf_file, 'Storage/Product', 'Dorado') self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def test_conf_invalid(self): pass def test_create_delete_cloned_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_cloned_volume, FAKE_CLONED_VOLUME, FAKE_VOLUME) def test_create_delete_snapshot(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_snapshot, FAKE_SNAPSHOT) def test_create_delete_snapshot_volume(self): self.assertRaises(exception.VolumeBackendAPIException, self.driver.create_volume_from_snapshot, FAKE_CLONED_VOLUME, FAKE_SNAPSHOT) def test_initialize_connection(self): self.driver.create_volume(FAKE_VOLUME) ret = self.driver.initialize_connection(FAKE_VOLUME, FAKE_CONNECTOR) iscsi_propers = ret['data'] self.assertEqual(iscsi_propers['target_iqn'], INITIATOR_SETTING['TargetIQN-form']) self.assertEqual(iscsi_propers['target_portal'], INITIATOR_SETTING['Initiator TargetIP'] + ':3260') self.assertEqual(MAP_INFO["DEV LUN ID"], LUN_INFO['ID']) self.assertEqual(MAP_INFO["INI Port Info"], FAKE_CONNECTOR['initiator']) self.driver.terminate_connection(FAKE_VOLUME, FAKE_CONNECTOR) self.driver.delete_volume(FAKE_VOLUME) self.assertIsNone(LUN_INFO['ID']) def test_extend_volume(self): NEWSIZE = 5 self.assertRaises(exception.VolumeBackendAPIException, self.driver.extend_volume, FAKE_VOLUME, NEWSIZE) class SSHMethodTestCase(test.TestCase): def __init__(self, *args, **kwargs): super(SSHMethodTestCase, self).__init__(*args, **kwargs) def setUp(self): super(SSHMethodTestCase, self).setUp() self.tmp_dir = tempfile.mkdtemp() self.fake_conf_file = self.tmp_dir + '/cinder_huawei_conf.xml' create_fake_conf_file(self.fake_conf_file) self.configuration = mox.MockObject(conf.Configuration) self.configuration.cinder_huawei_conf_file = self.fake_conf_file self.configuration.append_config_values(mox.IgnoreArg()) self.stubs.Set(time, 'sleep', Fake_sleep) self.stubs.Set(utils, 'SSHPool', FakeSSHPool) self.stubs.Set(ssh_common.TseriesCommon, '_change_file_mode', Fake_change_file_mode) Curr_test[0] = 'T' self.driver = HuaweiVolumeDriver(configuration=self.configuration) self.driver.do_setup(None) def tearDown(self): if os.path.exists(self.fake_conf_file): os.remove(self.fake_conf_file) shutil.rmtree(self.tmp_dir) super(SSHMethodTestCase, self).tearDown() def test_reach_max_connection_limit(self): self.stubs.Set(FakeChannel, 'recv', self._fake_recv1) self.assertRaises(exception.CinderException, self.driver.create_volume, FAKE_VOLUME) def test_socket_timeout(self): self.stubs.Set(FakeChannel, 'recv', self._fake_recv2) self.assertRaises(socket.timeout, self.driver.create_volume, FAKE_VOLUME) def _fake_recv1(self, nbytes): return "No response message" def _fake_recv2(self, nBytes): raise socket.timeout() class HuaweiUtilsTestCase(test.TestCase): def __init__(self, *args, **kwargs): super(HuaweiUtilsTestCase, self).__init__(*args, **kwargs) def setUp(self): super(HuaweiUtilsTestCase, self).setUp() self.tmp_dir = tempfile.mkdtemp() self.fake_conf_file = self.tmp_dir + '/cinder_huawei_conf.xml' create_fake_conf_file(self.fake_conf_file) def tearDown(self): if os.path.exists(self.fake_conf_file): os.remove(self.fake_conf_file) shutil.rmtree(self.tmp_dir) super(HuaweiUtilsTestCase, self).tearDown() def test_parse_xml_file_ioerror(self): tmp_fonf_file = '/xxx/cinder_huawei_conf.xml' self.assertRaises(IOError, huawei_utils.parse_xml_file, tmp_fonf_file) def test_is_xml_item_exist(self): root = huawei_utils.parse_xml_file(self.fake_conf_file) res = huawei_utils.is_xml_item_exist(root, 'Storage/UserName') self.assertTrue(res) res = huawei_utils.is_xml_item_exist(root, 'xxx') self.assertFalse(res) res = huawei_utils.is_xml_item_exist(root, 'LUN/StoragePool', 'Name') self.assertTrue(res) res = huawei_utils.is_xml_item_exist(root, 'LUN/StoragePool', 'xxx') self.assertFalse(res) def test_is_xml_item_valid(self): root = huawei_utils.parse_xml_file(self.fake_conf_file) res = huawei_utils.is_xml_item_valid(root, 'LUN/LUNType', ['Thin', 'Thick']) self.assertTrue(res) res = huawei_utils.is_xml_item_valid(root, 'LUN/LUNType', ['test']) self.assertFalse(res) res = huawei_utils.is_xml_item_valid(root, 'Host', ['Linux', 'Windows'], 'OSType') self.assertTrue(res) res = huawei_utils.is_xml_item_valid(root, 'Host', ['test'], 'OSType') self.assertFalse(res) def test_get_conf_host_os_type(self): # Default os is Linux res = huawei_utils.get_conf_host_os_type('10.10.10.1', self.fake_conf_file) self.assertEqual(res, '0') modify_conf(self.fake_conf_file, 'Host', 'Windows', 'OSType') res = huawei_utils.get_conf_host_os_type(FAKE_CONNECTOR['ip'], self.fake_conf_file) self.assertEqual(res, '1') cinder-2014.1.5/cinder/tests/cast_as_call.py0000664000567000056700000000222012540642606021741 0ustar jenkinsjenkins00000000000000# Copyright 2013 Red Hat, Inc. # # 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. import mock def mock_cast_as_call(obj=None): """Use this to mock `cast` as calls. :param obj: Either an instance of RPCClient or an instance of _Context. """ orig_prepare = obj.prepare def prepare(*args, **kwargs): cctxt = orig_prepare(*args, **kwargs) mock_cast_as_call(obj=cctxt) # woo, recurse! return cctxt prepare_patch = mock.patch.object(obj, 'prepare').start() prepare_patch.side_effect = prepare cast_patch = mock.patch.object(obj, 'cast').start() cast_patch.side_effect = obj.call cinder-2014.1.5/cinder/tests/utils.py0000664000567000056700000000440212540642606020475 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # 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. # from cinder import context from cinder import db def get_test_admin_context(): return context.get_admin_context() def create_volume(ctxt, host='test_host', display_name='test_volume', display_description='this is a test volume', status='available', migration_status=None, size=1, availability_zone='fake_az', volume_type_id=None, **kwargs): """Create a volume object in the DB.""" vol = {} vol['size'] = size vol['host'] = host vol['user_id'] = ctxt.user_id vol['project_id'] = ctxt.project_id vol['status'] = status vol['migration_status'] = migration_status vol['display_name'] = display_name vol['display_description'] = display_description vol['attach_status'] = 'detached' vol['availability_zone'] = availability_zone if volume_type_id: vol['volume_type_id'] = volume_type_id for key in kwargs: vol[key] = kwargs[key] return db.volume_create(ctxt, vol) def create_snapshot(ctxt, volume_id, display_name='test_snapshot', display_description='this is a test snapshot', status='creating'): vol = db.volume_get(ctxt, volume_id) snap = {} snap['volume_id'] = volume_id snap['user_id'] = ctxt.user_id snap['project_id'] = ctxt.project_id snap['status'] = status snap['volume_size'] = vol['size'] snap['display_name'] = display_name snap['display_description'] = display_description return db.snapshot_create(ctxt, snap) cinder-2014.1.5/cinder/tests/test_eqlx.py0000664000567000056700000003440612540642606021354 0ustar jenkinsjenkins00000000000000# Copyright (c) 2013 Dell Inc. # Copyright 2013 OpenStack LLC # # 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. import time import mox import paramiko from cinder import context from cinder import exception from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder import test from cinder.volume import configuration as conf from cinder.volume.drivers import eqlx LOG = logging.getLogger(__name__) class DellEQLSanISCSIDriverTestCase(test.TestCase): def setUp(self): super(DellEQLSanISCSIDriverTestCase, self).setUp() self.configuration = mox.MockObject(conf.Configuration) self.configuration.append_config_values(mox.IgnoreArg()) self.configuration.san_is_local = False self.configuration.san_ip = "10.0.0.1" self.configuration.san_login = "foo" self.configuration.san_password = "bar" self.configuration.san_ssh_port = 16022 self.configuration.san_thin_provision = True self.configuration.eqlx_pool = 'non-default' self.configuration.eqlx_use_chap = True self.configuration.eqlx_group_name = 'group-0' self.configuration.eqlx_cli_timeout = 30 self.configuration.eqlx_cli_max_retries = 5 self.configuration.eqlx_chap_login = 'admin' self.configuration.eqlx_chap_password = 'password' self.configuration.volume_name_template = 'volume_%s' self._context = context.get_admin_context() self.driver = eqlx.DellEQLSanISCSIDriver( configuration=self.configuration) self.volume_name = "fakevolume" self.volid = "fakeid" self.connector = {'ip': '10.0.0.2', 'initiator': 'iqn.1993-08.org.debian:01:222', 'host': 'fakehost'} self.fake_iqn = 'iqn.2003-10.com.equallogic:group01:25366:fakev' self.driver._group_ip = '10.0.1.6' self.properties = { 'target_discoverd': True, 'target_portal': '%s:3260' % self.driver._group_ip, 'target_iqn': self.fake_iqn, 'volume_id': 1} self._model_update = { 'provider_location': "%s:3260,1 %s 0" % (self.driver._group_ip, self.fake_iqn), 'provider_auth': 'CHAP %s %s' % ( self.configuration.eqlx_chap_login, self.configuration.eqlx_chap_password) } def _fake_get_iscsi_properties(self, volume): return self.properties def test_create_volume(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name, 'size': 1} self.driver._eql_execute('volume', 'create', volume['name'], "%sG" % (volume['size']), 'pool', self.configuration.eqlx_pool, 'thin-provision').\ AndReturn(['iSCSI target name is %s.' % self.fake_iqn]) self.mox.ReplayAll() model_update = self.driver.create_volume(volume) self.assertEqual(model_update, self._model_update) def test_delete_volume(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name, 'size': 1} self.driver._eql_execute('volume', 'select', volume['name'], 'show') self.driver._eql_execute('volume', 'select', volume['name'], 'offline') self.driver._eql_execute('volume', 'delete', volume['name']) self.mox.ReplayAll() self.driver.delete_volume(volume) def test_delete_absent_volume(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name, 'size': 1, 'id': self.volid} self.driver._eql_execute('volume', 'select', volume['name'], 'show').\ AndRaise(processutils.ProcessExecutionError( stdout='% Error ..... does not exist.\n')) self.mox.ReplayAll() self.driver.delete_volume(volume) def test_ensure_export(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name, 'size': 1} self.driver._eql_execute('volume', 'select', volume['name'], 'show') self.mox.ReplayAll() self.driver.ensure_export({}, volume) def test_create_snapshot(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) snapshot = {'name': 'fakesnap', 'volume_name': 'fakevolume_name'} snap_name = 'fake_snap_name' self.driver._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'create-now').\ AndReturn(['Snapshot name is %s' % snap_name]) self.driver._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'rename', snap_name, snapshot['name']) self.mox.ReplayAll() self.driver.create_snapshot(snapshot) def test_create_volume_from_snapshot(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) snapshot = {'name': 'fakesnap', 'volume_name': 'fakevolume_name'} volume = {'name': self.volume_name} self.driver._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'select', snapshot['name'], 'clone', volume['name']).\ AndReturn(['iSCSI target name is %s.' % self.fake_iqn]) self.mox.ReplayAll() model_update = self.driver.create_volume_from_snapshot(volume, snapshot) self.assertEqual(model_update, self._model_update) def test_create_cloned_volume(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) src_vref = {'id': 'fake_uuid'} volume = {'name': self.volume_name} src_volume_name = self.configuration.\ volume_name_template % src_vref['id'] self.driver._eql_execute('volume', 'select', src_volume_name, 'clone', volume['name']).\ AndReturn(['iSCSI target name is %s.' % self.fake_iqn]) self.mox.ReplayAll() model_update = self.driver.create_cloned_volume(volume, src_vref) self.assertEqual(model_update, self._model_update) def test_delete_snapshot(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) snapshot = {'name': 'fakesnap', 'volume_name': 'fakevolume_name'} self.driver._eql_execute('volume', 'select', snapshot['volume_name'], 'snapshot', 'delete', snapshot['name']) self.mox.ReplayAll() self.driver.delete_snapshot(snapshot) def test_extend_volume(self): new_size = '200' self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name, 'size': 100} self.driver._eql_execute('volume', 'select', volume['name'], 'size', "%sG" % new_size) self.mox.ReplayAll() self.driver.extend_volume(volume, new_size) def test_initialize_connection(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name} self.stubs.Set(self.driver, "_get_iscsi_properties", self._fake_get_iscsi_properties) self.driver._eql_execute('volume', 'select', volume['name'], 'access', 'create', 'initiator', self.connector['initiator'], 'authmethod', 'chap', 'username', self.configuration.eqlx_chap_login) self.mox.ReplayAll() iscsi_properties = self.driver.initialize_connection(volume, self.connector) self.assertEqual(iscsi_properties['data'], self._fake_get_iscsi_properties(volume)) def test_terminate_connection(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) volume = {'name': self.volume_name} self.driver._eql_execute('volume', 'select', volume['name'], 'access', 'delete', '1') self.mox.ReplayAll() self.driver.terminate_connection(volume, self.connector) def test_do_setup(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) fake_group_ip = '10.1.2.3' for feature in ('confirmation', 'paging', 'events', 'formatoutput'): self.driver._eql_execute('cli-settings', feature, 'off') self.driver._eql_execute('grpparams', 'show').\ AndReturn(['Group-Ipaddress: %s' % fake_group_ip]) self.mox.ReplayAll() self.driver.do_setup(self._context) self.assertEqual(fake_group_ip, self.driver._group_ip) def test_update_volume_stats(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) self.driver._eql_execute('pool', 'select', self.configuration.eqlx_pool, 'show').\ AndReturn(['TotalCapacity: 111GB', 'FreeSpace: 11GB']) self.mox.ReplayAll() self.driver._update_volume_stats() self.assertEqual(self.driver._stats['total_capacity_gb'], 111.0) self.assertEqual(self.driver._stats['free_capacity_gb'], 11.0) def test_get_volume_stats(self): self.driver._eql_execute = self.mox.\ CreateMock(self.driver._eql_execute) self.driver._eql_execute('pool', 'select', self.configuration.eqlx_pool, 'show').\ AndReturn(['TotalCapacity: 111GB', 'FreeSpace: 11GB']) self.mox.ReplayAll() stats = self.driver.get_volume_stats(refresh=True) self.assertEqual(stats['total_capacity_gb'], float('111.0')) self.assertEqual(stats['free_capacity_gb'], float('11.0')) self.assertEqual(stats['vendor_name'], 'Dell') def test_get_space_in_gb(self): self.assertEqual(self.driver._get_space_in_gb('123.0GB'), 123.0) self.assertEqual(self.driver._get_space_in_gb('123.0TB'), 123.0 * 1024) self.assertEqual(self.driver._get_space_in_gb('1024.0MB'), 1.0) def test_get_output(self): def _fake_recv(ignore_arg): return '%s> ' % self.configuration.eqlx_group_name chan = self.mox.CreateMock(paramiko.Channel) self.stubs.Set(chan, "recv", _fake_recv) self.assertEqual(self.driver._get_output(chan), [_fake_recv(None)]) def test_get_prefixed_value(self): lines = ['Line1 passed', 'Line1 failed'] prefix = ['Line1', 'Line2'] expected_output = [' passed', None] self.assertEqual(self.driver._get_prefixed_value(lines, prefix[0]), expected_output[0]) self.assertEqual(self.driver._get_prefixed_value(lines, prefix[1]), expected_output[1]) def test_ssh_execute(self): ssh = self.mox.CreateMock(paramiko.SSHClient) chan = self.mox.CreateMock(paramiko.Channel) transport = self.mox.CreateMock(paramiko.Transport) self.mox.StubOutWithMock(self.driver, '_get_output') self.mox.StubOutWithMock(chan, 'invoke_shell') expected_output = ['NoError: test run'] ssh.get_transport().AndReturn(transport) transport.open_session().AndReturn(chan) chan.invoke_shell() self.driver._get_output(chan).AndReturn(expected_output) cmd = 'this is dummy command' chan.send('stty columns 255' + '\r') self.driver._get_output(chan).AndReturn(expected_output) chan.send(cmd + '\r') self.driver._get_output(chan).AndReturn(expected_output) chan.close() self.mox.ReplayAll() self.assertEqual(self.driver._ssh_execute(ssh, cmd), expected_output) def test_ssh_execute_error(self): ssh = self.mox.CreateMock(paramiko.SSHClient) chan = self.mox.CreateMock(paramiko.Channel) transport = self.mox.CreateMock(paramiko.Transport) self.mox.StubOutWithMock(self.driver, '_get_output') self.mox.StubOutWithMock(ssh, 'get_transport') self.mox.StubOutWithMock(chan, 'invoke_shell') expected_output = ['Error: test run', '% Error'] ssh.get_transport().AndReturn(transport) transport.open_session().AndReturn(chan) chan.invoke_shell() self.driver._get_output(chan).AndReturn(expected_output) cmd = 'this is dummy command' chan.send('stty columns 255' + '\r') self.driver._get_output(chan).AndReturn(expected_output) chan.send(cmd + '\r') self.driver._get_output(chan).AndReturn(expected_output) chan.close() self.mox.ReplayAll() self.assertRaises(processutils.ProcessExecutionError, self.driver._ssh_execute, ssh, cmd) def test_with_timeout(self): @eqlx.with_timeout def no_timeout(cmd, *args, **kwargs): return 'no timeout' @eqlx.with_timeout def w_timeout(cmd, *args, **kwargs): time.sleep(1) self.assertEqual(no_timeout('fake cmd'), 'no timeout') self.assertRaises(exception.VolumeBackendAPIException, w_timeout, 'fake cmd', timeout=0.1) def test_local_path(self): self.assertRaises(NotImplementedError, self.driver.local_path, '') cinder-2014.1.5/cinder/tests/test_volume_rpcapi.py0000664000567000056700000002652612540642606023254 0ustar jenkinsjenkins00000000000000# Copyright 2012, Intel, Inc. # # 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. """ Unit Tests for cinder.volume.rpcapi """ import copy from oslo.config import cfg from cinder import context from cinder import db from cinder.openstack.common import jsonutils from cinder import test from cinder.volume import rpcapi as volume_rpcapi CONF = cfg.CONF class VolumeRpcAPITestCase(test.TestCase): def setUp(self): super(VolumeRpcAPITestCase, self).setUp() self.context = context.get_admin_context() vol = {} vol['host'] = 'fake_host' vol['availability_zone'] = CONF.storage_availability_zone vol['status'] = "available" vol['attach_status'] = "detached" vol['metadata'] = {"test_key": "test_val"} volume = db.volume_create(self.context, vol) snpshot = { 'volume_id': 'fake_id', 'status': "creating", 'progress': '0%', 'volume_size': 0, 'display_name': 'fake_name', 'display_description': 'fake_description'} snapshot = db.snapshot_create(self.context, snpshot) self.fake_volume = jsonutils.to_primitive(volume) self.fake_volume_metadata = volume["volume_metadata"] self.fake_snapshot = jsonutils.to_primitive(snapshot) self.fake_reservations = ["RESERVATION"] def test_serialized_volume_has_id(self): self.assertIn('id', self.fake_volume) def _test_volume_api(self, method, rpc_method, **kwargs): ctxt = context.RequestContext('fake_user', 'fake_project') if 'rpcapi_class' in kwargs: rpcapi_class = kwargs['rpcapi_class'] del kwargs['rpcapi_class'] else: rpcapi_class = volume_rpcapi.VolumeAPI rpcapi = rpcapi_class() expected_retval = 'foo' if method == 'call' else None target = { "version": kwargs.pop('version', rpcapi.BASE_RPC_API_VERSION) } if 'request_spec' in kwargs: spec = jsonutils.to_primitive(kwargs['request_spec']) kwargs['request_spec'] = spec expected_msg = copy.deepcopy(kwargs) if 'volume' in expected_msg: volume = expected_msg['volume'] del expected_msg['volume'] expected_msg['volume_id'] = volume['id'] if 'snapshot' in expected_msg: snapshot = expected_msg['snapshot'] del expected_msg['snapshot'] expected_msg['snapshot_id'] = snapshot['id'] if 'host' in expected_msg: del expected_msg['host'] if 'dest_host' in expected_msg: dest_host = expected_msg['dest_host'] dest_host_dict = {'host': dest_host.host, 'capabilities': dest_host.capabilities} del expected_msg['dest_host'] expected_msg['host'] = dest_host_dict if 'new_volume' in expected_msg: volume = expected_msg['new_volume'] del expected_msg['new_volume'] expected_msg['new_volume_id'] = volume['id'] if 'host' in kwargs: host = kwargs['host'] else: host = kwargs['volume']['host'] target['server'] = host target['topic'] = '%s.%s' % (CONF.volume_topic, host) self.fake_args = None self.fake_kwargs = None real_prepare = rpcapi.client.prepare def _fake_prepare_method(*args, **kwds): for kwd in kwds: self.assertEqual(kwds[kwd], target[kwd]) return rpcapi.client def _fake_rpc_method(*args, **kwargs): self.fake_args = args self.fake_kwargs = kwargs if expected_retval: return expected_retval self.stubs.Set(rpcapi.client, "prepare", _fake_prepare_method) self.stubs.Set(rpcapi.client, rpc_method, _fake_rpc_method) retval = getattr(rpcapi, method)(ctxt, **kwargs) self.assertEqual(retval, expected_retval) expected_args = [ctxt, method] for arg, expected_arg in zip(self.fake_args, expected_args): self.assertEqual(arg, expected_arg) for kwarg, value in self.fake_kwargs.items(): self.assertEqual(value, expected_msg[kwarg]) def test_create_volume(self): self._test_volume_api('create_volume', rpc_method='cast', volume=self.fake_volume, host='fake_host1', request_spec='fake_request_spec', filter_properties='fake_properties', allow_reschedule=True, snapshot_id='fake_snapshot_id', image_id='fake_image_id', source_volid='fake_src_id', version='1.4') def test_create_volume_serialization(self): request_spec = {"metadata": self.fake_volume_metadata} self._test_volume_api('create_volume', rpc_method='cast', volume=self.fake_volume, host='fake_host1', request_spec=request_spec, filter_properties='fake_properties', allow_reschedule=True, snapshot_id='fake_snapshot_id', image_id='fake_image_id', source_volid='fake_src_id', version='1.4') def test_delete_volume(self): self._test_volume_api('delete_volume', rpc_method='cast', volume=self.fake_volume, unmanage_only=False, version='1.15') def test_create_snapshot(self): self._test_volume_api('create_snapshot', rpc_method='cast', volume=self.fake_volume, snapshot=self.fake_snapshot) def test_delete_snapshot(self): self._test_volume_api('delete_snapshot', rpc_method='cast', snapshot=self.fake_snapshot, host='fake_host') def test_attach_volume_to_instance(self): self._test_volume_api('attach_volume', rpc_method='call', volume=self.fake_volume, instance_uuid='fake_uuid', host_name=None, mountpoint='fake_mountpoint', mode='ro', version='1.11') def test_attach_volume_to_host(self): self._test_volume_api('attach_volume', rpc_method='call', volume=self.fake_volume, instance_uuid=None, host_name='fake_host', mountpoint='fake_mountpoint', mode='rw', version='1.11') def test_detach_volume(self): self._test_volume_api('detach_volume', rpc_method='call', volume=self.fake_volume) def test_copy_volume_to_image(self): self._test_volume_api('copy_volume_to_image', rpc_method='cast', volume=self.fake_volume, image_meta={'id': 'fake_image_id', 'container_format': 'fake_type', 'disk_format': 'fake_type'}, version='1.3') def test_initialize_connection(self): self._test_volume_api('initialize_connection', rpc_method='call', volume=self.fake_volume, connector='fake_connector') def test_terminate_connection(self): self._test_volume_api('terminate_connection', rpc_method='call', volume=self.fake_volume, connector='fake_connector', force=False) def test_accept_transfer(self): self._test_volume_api('accept_transfer', rpc_method='call', volume=self.fake_volume, new_user='e5565fd0-06c8-11e3-' '8ffd-0800200c9b77', new_project='e4465fd0-06c8-11e3' '-8ffd-0800200c9a66', version='1.9') def test_extend_volume(self): self._test_volume_api('extend_volume', rpc_method='cast', volume=self.fake_volume, new_size=1, reservations=self.fake_reservations, version='1.14') def test_migrate_volume(self): class FakeHost(object): def __init__(self): self.host = 'host' self.capabilities = {} dest_host = FakeHost() self._test_volume_api('migrate_volume', rpc_method='cast', volume=self.fake_volume, dest_host=dest_host, force_host_copy=True, version='1.8') def test_migrate_volume_completion(self): self._test_volume_api('migrate_volume_completion', rpc_method='call', volume=self.fake_volume, new_volume=self.fake_volume, error=False, version='1.10') def test_retype(self): class FakeHost(object): def __init__(self): self.host = 'host' self.capabilities = {} dest_host = FakeHost() self._test_volume_api('retype', rpc_method='cast', volume=self.fake_volume, new_type_id='fake', dest_host=dest_host, migration_policy='never', reservations=None, version='1.12') def test_manage_existing(self): self._test_volume_api('manage_existing', rpc_method='cast', volume=self.fake_volume, ref={'lv_name': 'foo'}, version='1.15') cinder-2014.1.5/cinder/tests/test_vmware_volumeops.py0000664000567000056700000011416712540642606024020 0ustar jenkinsjenkins00000000000000# Copyright (c) 2014 VMware, Inc. # All Rights Reserved. # # 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. """ Test suite for VMware VMDK driver volumeops module. """ import mock from cinder import test from cinder import units from cinder.volume.drivers.vmware import error_util from cinder.volume.drivers.vmware import vim_util from cinder.volume.drivers.vmware import volumeops class VolumeOpsTestCase(test.TestCase): """Unit tests for volumeops module.""" MAX_OBJECTS = 100 def setUp(self): super(VolumeOpsTestCase, self).setUp() self.session = mock.MagicMock() self.vops = volumeops.VMwareVolumeOps(self.session, self.MAX_OBJECTS) def test_split_datastore_path(self): test1 = '[datastore1] myfolder/mysubfolder/myvm.vmx' (datastore, folder, file_name) = volumeops.split_datastore_path(test1) self.assertEqual(datastore, 'datastore1') self.assertEqual(folder, 'myfolder/mysubfolder/') self.assertEqual(file_name, 'myvm.vmx') test2 = '[datastore2 ] myfolder/myvm.vmdk' (datastore, folder, file_name) = volumeops.split_datastore_path(test2) self.assertEqual(datastore, 'datastore2') self.assertEqual(folder, 'myfolder/') self.assertEqual(file_name, 'myvm.vmdk') test3 = 'myfolder/myvm.vmdk' self.assertRaises(IndexError, volumeops.split_datastore_path, test3) def vm(self, val): """Create a mock vm in retrieve result format.""" vm = mock.MagicMock() prop = mock.Mock(spec=object) prop.val = val vm.propSet = [prop] return vm def test_get_backing(self): name = 'mock-backing' # Test no result self.session.invoke_api.return_value = None result = self.vops.get_backing(name) self.assertIsNone(result) self.session.invoke_api.assert_called_once_with(vim_util, 'get_objects', self.session.vim, 'VirtualMachine', self.MAX_OBJECTS) # Test single result vm = self.vm(name) vm.obj = mock.sentinel.vm_obj retrieve_result = mock.Mock(spec=object) retrieve_result.objects = [vm] self.session.invoke_api.return_value = retrieve_result self.vops.cancel_retrieval = mock.Mock(spec=object) result = self.vops.get_backing(name) self.assertEqual(mock.sentinel.vm_obj, result) self.session.invoke_api.assert_called_with(vim_util, 'get_objects', self.session.vim, 'VirtualMachine', self.MAX_OBJECTS) self.vops.cancel_retrieval.assert_called_once_with(retrieve_result) # Test multiple results retrieve_result2 = mock.Mock(spec=object) retrieve_result2.objects = [vm('1'), vm('2'), vm('3')] self.session.invoke_api.return_value = retrieve_result2 self.vops.continue_retrieval = mock.Mock(spec=object) self.vops.continue_retrieval.return_value = retrieve_result result = self.vops.get_backing(name) self.assertEqual(mock.sentinel.vm_obj, result) self.session.invoke_api.assert_called_with(vim_util, 'get_objects', self.session.vim, 'VirtualMachine', self.MAX_OBJECTS) self.vops.continue_retrieval.assert_called_once_with(retrieve_result2) self.vops.cancel_retrieval.assert_called_with(retrieve_result) def test_delete_backing(self): backing = mock.sentinel.backing task = mock.sentinel.task self.session.invoke_api.return_value = task self.vops.delete_backing(backing) self.session.invoke_api.assert_called_once_with(self.session.vim, "Destroy_Task", backing) self.session.wait_for_task(task) def test_get_host(self): instance = mock.sentinel.instance host = mock.sentinel.host self.session.invoke_api.return_value = host result = self.vops.get_host(instance) self.assertEqual(host, result) self.session.invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, instance, 'runtime.host') def test_get_hosts(self): hosts = mock.sentinel.hosts self.session.invoke_api.return_value = hosts result = self.vops.get_hosts() self.assertEqual(hosts, result) self.session.invoke_api.assert_called_once_with(vim_util, 'get_objects', self.session.vim, 'HostSystem', self.MAX_OBJECTS) def test_continue_retrieval(self): retrieve_result = mock.sentinel.retrieve_result self.session.invoke_api.return_value = retrieve_result result = self.vops.continue_retrieval(retrieve_result) self.assertEqual(retrieve_result, result) self.session.invoke_api.assert_called_once_with(vim_util, 'continue_retrieval', self.session.vim, retrieve_result) def test_cancel_retrieval(self): retrieve_result = mock.sentinel.retrieve_result self.session.invoke_api.return_value = retrieve_result result = self.vops.cancel_retrieval(retrieve_result) self.assertIsNone(result) self.session.invoke_api.assert_called_once_with(vim_util, 'cancel_retrieval', self.session.vim, retrieve_result) def test_is_usable(self): mount_info = mock.Mock(spec=object) mount_info.accessMode = "readWrite" mount_info.mounted = True mount_info.accessible = True datastore = mock.sentinel.datastore self.assertTrue(self.vops._is_usable(datastore, mount_info)) del mount_info.mounted self.assertTrue(self.vops._is_usable(datastore, mount_info)) mount_info.accessMode = "readonly" self.assertFalse(self.vops._is_usable(datastore, mount_info)) mount_info.accessMode = "readWrite" mount_info.mounted = False self.assertFalse(self.vops._is_usable(datastore, mount_info)) mount_info.mounted = True mount_info.accessible = False self.assertFalse(self.vops._is_usable(datastore, mount_info)) with mock.patch.object(self.vops, 'get_summary') as get_summary: del mount_info.accessible summary = mock.Mock(spec=object) summary.accessible = True get_summary.return_value = summary self.assertTrue(self.vops._is_usable(datastore, mount_info)) summary.accessible = False self.assertFalse(self.vops._is_usable(datastore, mount_info)) def _create_host_mounts(self, access_mode, host, set_accessible=True, is_accessible=True, mounted=True): """Create host mount value of datastore with single mount info. :param access_mode: string specifying the read/write permission :param set_accessible: specify whether accessible property should be set :param is_accessible: boolean specifying whether the datastore is accessible to host :param host: managed object reference of the connected host :return: list of host mount info """ mntInfo = mock.Mock(spec=object) mntInfo.accessMode = access_mode if set_accessible: mntInfo.accessible = is_accessible else: del mntInfo.accessible mntInfo.mounted = mounted host_mount = mock.Mock(spec=object) host_mount.key = host host_mount.mountInfo = mntInfo host_mounts = mock.Mock(spec=object) host_mounts.DatastoreHostMount = [host_mount] return host_mounts def test_get_connected_hosts(self): datastore = mock.sentinel.datastore host = mock.Mock(spec=object) host.value = mock.sentinel.host host_mounts = self._create_host_mounts("readWrite", host) self.session.invoke_api.return_value = host_mounts hosts = self.vops.get_connected_hosts(datastore) self.assertEqual([mock.sentinel.host], hosts) self.session.invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, datastore, 'host') def test_is_valid(self): datastore = mock.sentinel.datastore host = mock.Mock(spec=object) host.value = mock.sentinel.host def _is_valid(host_mounts, is_valid): self.session.invoke_api.return_value = host_mounts result = self.vops._is_valid(datastore, host) self.assertEqual(is_valid, result) self.session.invoke_api.assert_called_with(vim_util, 'get_object_property', self.session.vim, datastore, 'host') # Test with accessible attr _is_valid(self._create_host_mounts("readWrite", host), True) # Test without accessible attr, and use summary instead with mock.patch.object(self.vops, 'get_summary') as get_summary: summary = mock.Mock(spec=object) summary.accessible = True get_summary.return_value = summary _is_valid(self._create_host_mounts("readWrite", host, False), True) # Test negative cases for is_valid _is_valid(self._create_host_mounts("Inaccessible", host), False) _is_valid(self._create_host_mounts("readWrite", host, True, False), False) _is_valid(self._create_host_mounts("readWrite", host, True, True, False), False) with mock.patch.object(self.vops, 'get_summary') as get_summary: summary = mock.Mock(spec=object) summary.accessible = False get_summary.return_value = summary _is_valid(self._create_host_mounts("readWrite", host, False), False) def test_get_dss_rp(self): # build out props to be returned by 1st invoke_api call datastore_prop = mock.Mock(spec=object) datastore_prop.name = 'datastore' datastore_prop.val = mock.Mock(spec=object) datastore_prop.val.ManagedObjectReference = [mock.sentinel.ds1, mock.sentinel.ds2] compute_resource_prop = mock.Mock(spec=object) compute_resource_prop.name = 'parent' compute_resource_prop.val = mock.sentinel.compute_resource elem = mock.Mock(spec=object) elem.propSet = [datastore_prop, compute_resource_prop] props = [elem] # build out host_mounts to be returned by 2nd invoke_api call host = mock.Mock(spec=object) host.value = mock.sentinel.host host_mounts = self._create_host_mounts("readWrite", host) # build out resource_pool to be returned by 3rd invoke_api call resource_pool = mock.sentinel.resource_pool # set return values for each call of invoke_api self.session.invoke_api.side_effect = [props, host_mounts, host_mounts, resource_pool] # invoke function and verify results (dss_actual, rp_actual) = self.vops.get_dss_rp(host) self.assertEqual([mock.sentinel.ds1, mock.sentinel.ds2], dss_actual) self.assertEqual(resource_pool, rp_actual) # invoke function with no valid datastore and verify exception raised host_mounts = self._create_host_mounts("inaccessible", host) self.session.invoke_api.side_effect = [props, host_mounts, host_mounts, resource_pool] self.assertRaises(error_util.VimException, self.vops.get_dss_rp, host) def test_get_parent(self): # Not recursive child = mock.Mock(spec=object) child._type = 'Parent' ret = self.vops._get_parent(child, 'Parent') self.assertEqual(ret, child) # Recursive parent = mock.Mock(spec=object) parent._type = 'Parent' child = mock.Mock(spec=object) child._type = 'Child' self.session.invoke_api.return_value = parent ret = self.vops._get_parent(child, 'Parent') self.assertEqual(ret, parent) self.session.invoke_api.assert_called_with(vim_util, 'get_object_property', self.session.vim, child, 'parent') def test_get_dc(self): # set up hierarchy of objects dc = mock.Mock(spec=object) dc._type = 'Datacenter' o1 = mock.Mock(spec=object) o1._type = 'mockType1' o1.parent = dc o2 = mock.Mock(spec=object) o2._type = 'mockType2' o2.parent = o1 # mock out invoke_api behaviour to fetch parent def mock_invoke_api(vim_util, method, vim, the_object, arg): return the_object.parent self.session.invoke_api.side_effect = mock_invoke_api ret = self.vops.get_dc(o2) self.assertEqual(dc, ret) def test_get_vmfolder(self): self.session.invoke_api.return_value = mock.sentinel.ret ret = self.vops.get_vmfolder(mock.sentinel.dc) self.assertEqual(mock.sentinel.ret, ret) self.session.invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, mock.sentinel.dc, 'vmFolder') def test_create_folder_not_present(self): """Test create_folder when child not present.""" parent_folder = mock.sentinel.parent_folder child_name = 'child_folder' prop_val = mock.Mock(spec=object) prop_val.ManagedObjectReference = [] child_folder = mock.sentinel.child_folder self.session.invoke_api.side_effect = [prop_val, child_folder] ret = self.vops.create_folder(parent_folder, child_name) self.assertEqual(child_folder, ret) expected_invoke_api = [mock.call(vim_util, 'get_object_property', self.session.vim, parent_folder, 'childEntity'), mock.call(self.session.vim, 'CreateFolder', parent_folder, name=child_name)] self.assertEqual(expected_invoke_api, self.session.invoke_api.mock_calls) def test_create_folder_already_present(self): """Test create_folder when child already present.""" parent_folder = mock.sentinel.parent_folder child_name = 'child_folder' prop_val = mock.Mock(spec=object) child_entity_1 = mock.Mock(spec=object) child_entity_1._type = 'Folder' child_entity_1_name = 'SomeOtherName' child_entity_2 = mock.Mock(spec=object) child_entity_2._type = 'Folder' child_entity_2_name = child_name prop_val.ManagedObjectReference = [child_entity_1, child_entity_2] self.session.invoke_api.side_effect = [prop_val, child_entity_1_name, child_entity_2_name] ret = self.vops.create_folder(parent_folder, child_name) self.assertEqual(child_entity_2, ret) expected_invoke_api = [mock.call(vim_util, 'get_object_property', self.session.vim, parent_folder, 'childEntity'), mock.call(vim_util, 'get_object_property', self.session.vim, child_entity_1, 'name'), mock.call(vim_util, 'get_object_property', self.session.vim, child_entity_2, 'name')] self.assertEqual(expected_invoke_api, self.session.invoke_api.mock_calls) def test_get_create_spec(self): factory = self.session.vim.client.factory factory.create.return_value = mock.Mock(spec=object) name = mock.sentinel.name size_kb = 0.5 disk_type = 'thin' ds_name = mock.sentinel.ds_name ret = self.vops._get_create_spec(name, size_kb, disk_type, ds_name) self.assertEqual(name, ret.name) self.assertEqual('[%s]' % ds_name, ret.files.vmPathName) self.assertEqual(1, ret.deviceChange[1].device.capacityInKB) expected = [mock.call.create('ns0:VirtualLsiLogicController'), mock.call.create('ns0:VirtualDeviceConfigSpec'), mock.call.create('ns0:VirtualDisk'), mock.call.create('ns0:VirtualDiskFlatVer2BackingInfo'), mock.call.create('ns0:VirtualDeviceConfigSpec'), mock.call.create('ns0:VirtualMachineFileInfo'), mock.call.create('ns0:VirtualMachineConfigSpec')] factory.create.assert_has_calls(expected, any_order=True) @mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.' '_get_create_spec') def test_create_backing(self, get_create_spec): create_spec = mock.sentinel.create_spec get_create_spec.return_value = create_spec task = mock.sentinel.task self.session.invoke_api.return_value = task task_info = mock.Mock(spec=object) task_info.result = mock.sentinel.result self.session.wait_for_task.return_value = task_info name = 'backing_name' size_kb = mock.sentinel.size_kb disk_type = mock.sentinel.disk_type folder = mock.sentinel.folder resource_pool = mock.sentinel.resource_pool host = mock.sentinel.host ds_name = mock.sentinel.ds_name ret = self.vops.create_backing(name, size_kb, disk_type, folder, resource_pool, host, ds_name) self.assertEqual(mock.sentinel.result, ret) get_create_spec.assert_called_once_with(name, size_kb, disk_type, ds_name, None) self.session.invoke_api.assert_called_once_with(self.session.vim, 'CreateVM_Task', folder, config=create_spec, pool=resource_pool, host=host) self.session.wait_for_task.assert_called_once_with(task) def test_get_datastore(self): backing = mock.sentinel.backing datastore = mock.Mock(spec=object) datastore.ManagedObjectReference = [mock.sentinel.ds] self.session.invoke_api.return_value = datastore ret = self.vops.get_datastore(backing) self.assertEqual(mock.sentinel.ds, ret) self.session.invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, backing, 'datastore') def test_get_summary(self): datastore = mock.sentinel.datastore summary = mock.sentinel.summary self.session.invoke_api.return_value = summary ret = self.vops.get_summary(datastore) self.assertEqual(summary, ret) self.session.invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, datastore, 'summary') def test_get_relocate_spec(self): factory = self.session.vim.client.factory spec = mock.Mock(spec=object) factory.create.return_value = spec datastore = mock.sentinel.datastore resource_pool = mock.sentinel.resource_pool host = mock.sentinel.host disk_move_type = mock.sentinel.disk_move_type ret = self.vops._get_relocate_spec(datastore, resource_pool, host, disk_move_type) self.assertEqual(spec, ret) self.assertEqual(datastore, ret.datastore) self.assertEqual(resource_pool, ret.pool) self.assertEqual(host, ret.host) self.assertEqual(disk_move_type, ret.diskMoveType) @mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.' '_get_relocate_spec') def test_relocate_backing(self, get_relocate_spec): spec = mock.sentinel.relocate_spec get_relocate_spec.return_value = spec task = mock.sentinel.task self.session.invoke_api.return_value = task backing = mock.sentinel.backing datastore = mock.sentinel.datastore resource_pool = mock.sentinel.resource_pool host = mock.sentinel.host self.vops.relocate_backing(backing, datastore, resource_pool, host) # Verify calls disk_move_type = 'moveAllDiskBackingsAndAllowSharing' get_relocate_spec.assert_called_once_with(datastore, resource_pool, host, disk_move_type) self.session.invoke_api.assert_called_once_with(self.session.vim, 'RelocateVM_Task', backing, spec=spec) self.session.wait_for_task.assert_called_once_with(task) def test_move_backing_to_folder(self): task = mock.sentinel.task self.session.invoke_api.return_value = task backing = mock.sentinel.backing folder = mock.sentinel.folder self.vops.move_backing_to_folder(backing, folder) # Verify calls self.session.invoke_api.assert_called_once_with(self.session.vim, 'MoveIntoFolder_Task', folder, list=[backing]) self.session.wait_for_task.assert_called_once_with(task) def test_create_snapshot_operation(self): task = mock.sentinel.task self.session.invoke_api.return_value = task task_info = mock.Mock(spec=object) task_info.result = mock.sentinel.result self.session.wait_for_task.return_value = task_info backing = mock.sentinel.backing name = mock.sentinel.name desc = mock.sentinel.description quiesce = True ret = self.vops.create_snapshot(backing, name, desc, quiesce) self.assertEqual(mock.sentinel.result, ret) self.session.invoke_api.assert_called_once_with(self.session.vim, 'CreateSnapshot_Task', backing, name=name, description=desc, memory=False, quiesce=quiesce) self.session.wait_for_task.assert_called_once_with(task) def test_get_snapshot_from_tree(self): volops = volumeops.VMwareVolumeOps name = mock.sentinel.name # Test snapshot == 'None' ret = volops._get_snapshot_from_tree(name, None) self.assertIsNone(ret) # Test root == snapshot snapshot = mock.sentinel.snapshot node = mock.Mock(spec=object) node.name = name node.snapshot = snapshot ret = volops._get_snapshot_from_tree(name, node) self.assertEqual(ret, snapshot) # Test root.childSnapshotList == None root = mock.Mock(spec=object) root.name = 'root' del root.childSnapshotList ret = volops._get_snapshot_from_tree(name, root) self.assertIsNone(ret) # Test root.child == snapshot root.childSnapshotList = [node] ret = volops._get_snapshot_from_tree(name, root) self.assertEqual(ret, snapshot) def test_get_snapshot(self): # build out the root snapshot tree snapshot_name = mock.sentinel.snapshot_name snapshot = mock.sentinel.snapshot root = mock.Mock(spec=object) root.name = 'root' node = mock.Mock(spec=object) node.name = snapshot_name node.snapshot = snapshot root.childSnapshotList = [node] # Test rootSnapshotList is not None snapshot_tree = mock.Mock(spec=object) snapshot_tree.rootSnapshotList = [root] self.session.invoke_api.return_value = snapshot_tree backing = mock.sentinel.backing ret = self.vops.get_snapshot(backing, snapshot_name) self.assertEqual(snapshot, ret) self.session.invoke_api.assert_called_with(vim_util, 'get_object_property', self.session.vim, backing, 'snapshot') # Test rootSnapshotList == None snapshot_tree.rootSnapshotList = None ret = self.vops.get_snapshot(backing, snapshot_name) self.assertIsNone(ret) self.session.invoke_api.assert_called_with(vim_util, 'get_object_property', self.session.vim, backing, 'snapshot') def test_delete_snapshot(self): backing = mock.sentinel.backing snapshot_name = mock.sentinel.snapshot_name # Test snapshot is None with mock.patch.object(self.vops, 'get_snapshot') as get_snapshot: get_snapshot.return_value = None self.vops.delete_snapshot(backing, snapshot_name) get_snapshot.assert_called_once_with(backing, snapshot_name) # Test snapshot is not None snapshot = mock.sentinel.snapshot task = mock.sentinel.task invoke_api = self.session.invoke_api invoke_api.return_value = task with mock.patch.object(self.vops, 'get_snapshot') as get_snapshot: get_snapshot.return_value = snapshot self.vops.delete_snapshot(backing, snapshot_name) get_snapshot.assert_called_with(backing, snapshot_name) invoke_api.assert_called_once_with(self.session.vim, 'RemoveSnapshot_Task', snapshot, removeChildren=False) self.session.wait_for_task.assert_called_once_with(task) def test_get_folder(self): folder = mock.sentinel.folder backing = mock.sentinel.backing with mock.patch.object(self.vops, '_get_parent') as get_parent: get_parent.return_value = folder ret = self.vops._get_folder(backing) self.assertEqual(folder, ret) get_parent.assert_called_once_with(backing, 'Folder') def test_get_clone_spec(self): factory = self.session.vim.client.factory spec = mock.Mock(spec=object) factory.create.return_value = spec datastore = mock.sentinel.datastore disk_move_type = mock.sentinel.disk_move_type snapshot = mock.sentinel.snapshot ret = self.vops._get_clone_spec(datastore, disk_move_type, snapshot) self.assertEqual(spec, ret) self.assertEqual(snapshot, ret.snapshot) self.assertEqual(spec, ret.location) self.assertEqual(datastore, ret.location.datastore) self.assertEqual(disk_move_type, ret.location.diskMoveType) expected_calls = [mock.call('ns0:VirtualMachineRelocateSpec'), mock.call('ns0:VirtualMachineCloneSpec')] factory.create.assert_has_calls(expected_calls, any_order=True) @mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.' '_get_clone_spec') def test_clone_backing(self, get_clone_spec): folder = mock.Mock(name='folder', spec=object) folder._type = 'Folder' task = mock.sentinel.task self.session.invoke_api.side_effect = [folder, task, folder, task] task_info = mock.Mock(spec=object) task_info.result = mock.sentinel.new_backing self.session.wait_for_task.return_value = task_info clone_spec = mock.sentinel.clone_spec get_clone_spec.return_value = clone_spec # Test non-linked clone_backing name = mock.sentinel.name backing = mock.Mock(spec=object) backing._type = 'VirtualMachine' snapshot = mock.sentinel.snapshot clone_type = "anything-other-than-linked" datastore = mock.sentinel.datstore ret = self.vops.clone_backing(name, backing, snapshot, clone_type, datastore) # verify calls self.assertEqual(mock.sentinel.new_backing, ret) disk_move_type = 'moveAllDiskBackingsAndDisallowSharing' get_clone_spec.assert_called_with(datastore, disk_move_type, snapshot) expected = [mock.call(vim_util, 'get_object_property', self.session.vim, backing, 'parent'), mock.call(self.session.vim, 'CloneVM_Task', backing, folder=folder, name=name, spec=clone_spec)] self.assertEqual(expected, self.session.invoke_api.mock_calls) # Test linked clone_backing clone_type = volumeops.LINKED_CLONE_TYPE ret = self.vops.clone_backing(name, backing, snapshot, clone_type, datastore) # verify calls self.assertEqual(mock.sentinel.new_backing, ret) disk_move_type = 'createNewChildDiskBacking' get_clone_spec.assert_called_with(datastore, disk_move_type, snapshot) expected = [mock.call(vim_util, 'get_object_property', self.session.vim, backing, 'parent'), mock.call(self.session.vim, 'CloneVM_Task', backing, folder=folder, name=name, spec=clone_spec), mock.call(vim_util, 'get_object_property', self.session.vim, backing, 'parent'), mock.call(self.session.vim, 'CloneVM_Task', backing, folder=folder, name=name, spec=clone_spec)] self.assertEqual(expected, self.session.invoke_api.mock_calls) def test_delete_file(self): file_mgr = mock.sentinel.file_manager self.session.vim.service_content.fileManager = file_mgr task = mock.sentinel.task invoke_api = self.session.invoke_api invoke_api.return_value = task # Test delete file file_path = mock.sentinel.file_path datacenter = mock.sentinel.datacenter self.vops.delete_file(file_path, datacenter) # verify calls invoke_api.assert_called_once_with(self.session.vim, 'DeleteDatastoreFile_Task', file_mgr, name=file_path, datacenter=datacenter) self.session.wait_for_task.assert_called_once_with(task) def test_get_path_name(self): path = mock.Mock(spec=object) path_name = mock.sentinel.vm_path_name path.vmPathName = path_name invoke_api = self.session.invoke_api invoke_api.return_value = path backing = mock.sentinel.backing ret = self.vops.get_path_name(backing) self.assertEqual(path_name, ret) invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, backing, 'config.files') def test_get_entity_name(self): entity_name = mock.sentinel.entity_name invoke_api = self.session.invoke_api invoke_api.return_value = entity_name entity = mock.sentinel.entity ret = self.vops.get_entity_name(entity) self.assertEqual(entity_name, ret) invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, entity, 'name') def test_get_vmdk_path(self): # Setup hardware_devices for test device = mock.Mock() device.__class__.__name__ = 'VirtualDisk' backing = mock.Mock() backing.__class__.__name__ = 'VirtualDiskFlatVer2BackingInfo' backing.fileName = mock.sentinel.vmdk_path device.backing = backing invoke_api = self.session.invoke_api invoke_api.return_value = [device] # Test get_vmdk_path ret = self.vops.get_vmdk_path(backing) self.assertEqual(mock.sentinel.vmdk_path, ret) invoke_api.assert_called_once_with(vim_util, 'get_object_property', self.session.vim, backing, 'config.hardware.device') def test_copy_vmdk_file(self): task = mock.sentinel.task invoke_api = self.session.invoke_api invoke_api.return_value = task disk_mgr = self.session.vim.service_content.virtualDiskManager dc_ref = self.session.dc_ref src_vmdk_file_path = self.session.src dest_vmdk_file_path = self.session.dest self.vops.copy_vmdk_file(dc_ref, src_vmdk_file_path, dest_vmdk_file_path) invoke_api.assert_called_once_with(self.session.vim, 'CopyVirtualDisk_Task', disk_mgr, sourceName=src_vmdk_file_path, sourceDatacenter=dc_ref, destName=dest_vmdk_file_path, destDatacenter=dc_ref, force=True) self.session.wait_for_task.assert_called_once_with(task) def test_delete_vmdk_file(self): task = mock.sentinel.task invoke_api = self.session.invoke_api invoke_api.return_value = task disk_mgr = self.session.vim.service_content.virtualDiskManager dc_ref = self.session.dc_ref vmdk_file_path = self.session.vmdk_file self.vops.delete_vmdk_file(vmdk_file_path, dc_ref) invoke_api.assert_called_once_with(self.session.vim, 'DeleteVirtualDisk_Task', disk_mgr, name=vmdk_file_path, datacenter=dc_ref) self.session.wait_for_task.assert_called_once_with(task) def test_extend_virtual_disk(self): """Test volumeops.extend_virtual_disk.""" task = mock.sentinel.task invoke_api = self.session.invoke_api invoke_api.return_value = task disk_mgr = self.session.vim.service_content.virtualDiskManager fake_size = 5 fake_size_in_kb = fake_size * units.MiB fake_name = 'fake_volume_0000000001' fake_dc = mock.sentinel.datacenter self.vops.extend_virtual_disk(fake_size, fake_name, fake_dc) invoke_api.assert_called_once_with(self.session.vim, "ExtendVirtualDisk_Task", disk_mgr, name=fake_name, datacenter=fake_dc, newCapacityKb=fake_size_in_kb, eagerZero=False) self.session.wait_for_task.assert_called_once_with(task) cinder-2014.1.5/cinder/tests/test_policy.py0000664000567000056700000002111512540642606021673 0ustar jenkinsjenkins00000000000000 # Copyright 2011 Piston Cloud Computing, Inc. # All Rights Reserved. # 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. """Test of Policy Engine For Cinder.""" import os.path import urllib2 from oslo.config import cfg import six from cinder import context from cinder import exception import cinder.openstack.common.policy from cinder.openstack.common import policy as common_policy from cinder import policy from cinder import test from cinder import utils CONF = cfg.CONF class PolicyFileTestCase(test.TestCase): def setUp(self): super(PolicyFileTestCase, self).setUp() # since is_admin is defined by policy, create context before reset self.context = context.RequestContext('fake', 'fake') policy.reset() self.target = {} def tearDown(self): super(PolicyFileTestCase, self).tearDown() policy.reset() def test_modified_policy_reloads(self): with utils.tempdir() as tmpdir: tmpfilename = os.path.join(tmpdir, 'policy') self.flags(policy_file=tmpfilename) action = "example:test" with open(tmpfilename, "w") as policyfile: policyfile.write("""{"example:test": []}""") policy.enforce(self.context, action, self.target) with open(tmpfilename, "w") as policyfile: policyfile.write("""{"example:test": ["false:false"]}""") # NOTE(vish): reset stored policy cache so we don't have to # sleep(1) policy._POLICY_CACHE = {} self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) class PolicyTestCase(test.TestCase): def setUp(self): super(PolicyTestCase, self).setUp() policy.reset() # NOTE(vish): preload rules to circumvent reloading from file policy.init() rules = { "true": [], "example:allowed": [], "example:denied": [["false:false"]], "example:get_http": [["http:http://www.example.com"]], "example:my_file": [["role:compute_admin"], ["project_id:%(project_id)s"]], "example:early_and_fail": [["false:false", "rule:true"]], "example:early_or_success": [["rule:true"], ["false:false"]], "example:lowercase_admin": [["role:admin"], ["role:sysadmin"]], "example:uppercase_admin": [["role:ADMIN"], ["role:sysadmin"]], } # NOTE(vish): then overload underlying brain common_policy.set_brain(common_policy.Brain(rules)) self.context = context.RequestContext('fake', 'fake', roles=['member']) self.target = {} def tearDown(self): policy.reset() super(PolicyTestCase, self).tearDown() def test_enforce_nonexistent_action_throws(self): action = "example:noexist" self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) def test_enforce_bad_action_throws(self): action = "example:denied" self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) def test_enforce_good_action(self): action = "example:allowed" policy.enforce(self.context, action, self.target) def test_enforce_http_true(self): def fakeurlopen(url, post_data): return six.StringIO("True") self.stubs.Set(urllib2, 'urlopen', fakeurlopen) action = "example:get_http" target = {} result = policy.enforce(self.context, action, target) self.assertIsNone(result) def test_enforce_http_false(self): def fakeurlopen(url, post_data): return six.StringIO("False") self.stubs.Set(urllib2, 'urlopen', fakeurlopen) action = "example:get_http" target = {} self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, target) def test_templatized_enforcement(self): target_mine = {'project_id': 'fake'} target_not_mine = {'project_id': 'another'} action = "example:my_file" policy.enforce(self.context, action, target_mine) self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, target_not_mine) def test_early_AND_enforcement(self): action = "example:early_and_fail" self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, action, self.target) def test_early_OR_enforcement(self): action = "example:early_or_success" policy.enforce(self.context, action, self.target) def test_ignore_case_role_check(self): lowercase_action = "example:lowercase_admin" uppercase_action = "example:uppercase_admin" # NOTE(dprince) we mix case in the Admin role here to ensure # case is ignored admin_context = context.RequestContext('admin', 'fake', roles=['AdMiN']) policy.enforce(admin_context, lowercase_action, self.target) policy.enforce(admin_context, uppercase_action, self.target) class DefaultPolicyTestCase(test.TestCase): def setUp(self): super(DefaultPolicyTestCase, self).setUp() policy.reset() policy.init() self.rules = { "default": [], "example:exist": [["false:false"]] } self._set_brain('default') self.context = context.RequestContext('fake', 'fake') def _set_brain(self, default_rule): brain = cinder.openstack.common.policy.Brain(self.rules, default_rule) cinder.openstack.common.policy.set_brain(brain) def tearDown(self): super(DefaultPolicyTestCase, self).tearDown() policy.reset() def test_policy_called(self): self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, "example:exist", {}) def test_not_found_policy_calls_default(self): policy.enforce(self.context, "example:noexist", {}) def test_default_not_found(self): self._set_brain("default_noexist") self.assertRaises(exception.PolicyNotAuthorized, policy.enforce, self.context, "example:noexist", {}) class ContextIsAdminPolicyTestCase(test.TestCase): def setUp(self): super(ContextIsAdminPolicyTestCase, self).setUp() policy.reset() policy.init() def test_default_admin_role_is_admin(self): ctx = context.RequestContext('fake', 'fake', roles=['johnny-admin']) self.assertFalse(ctx.is_admin) ctx = context.RequestContext('fake', 'fake', roles=['admin']) self.assertTrue(ctx.is_admin) def test_custom_admin_role_is_admin(self): # define explict rules for context_is_admin rules = { 'context_is_admin': [["role:administrator"], ["role:johnny-admin"]] } brain = common_policy.Brain(rules, CONF.policy_default_rule) common_policy.set_brain(brain) ctx = context.RequestContext('fake', 'fake', roles=['johnny-admin']) self.assertTrue(ctx.is_admin) ctx = context.RequestContext('fake', 'fake', roles=['administrator']) self.assertTrue(ctx.is_admin) # default rule no longer applies ctx = context.RequestContext('fake', 'fake', roles=['admin']) self.assertFalse(ctx.is_admin) def test_context_is_admin_undefined(self): rules = { "admin_or_owner": [["role:admin"], ["project_id:%(project_id)s"]], "default": [["rule:admin_or_owner"]], } brain = common_policy.Brain(rules, CONF.policy_default_rule) common_policy.set_brain(brain) ctx = context.RequestContext('fake', 'fake') self.assertFalse(ctx.is_admin) ctx = context.RequestContext('fake', 'fake', roles=['admin']) self.assertTrue(ctx.is_admin) cinder-2014.1.5/cinder/quota_utils.py0000664000567000056700000000507412540642606020552 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation # All Rights Reserved. # # 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. from cinder import exception from cinder.openstack.common import log as logging from cinder import quota LOG = logging.getLogger(__name__) QUOTAS = quota.QUOTAS def get_volume_type_reservation(ctxt, volume, type_id): # Reserve quotas for the given volume type try: reserve_opts = {'volumes': 1, 'gigabytes': volume['size']} QUOTAS.add_volume_type_opts(ctxt, reserve_opts, type_id) reservations = QUOTAS.reserve(ctxt, **reserve_opts) except exception.OverQuota as e: overs = e.kwargs['overs'] usages = e.kwargs['usages'] quotas = e.kwargs['quotas'] def _consumed(name): return (usages[name]['reserved'] + usages[name]['in_use']) for over in overs: if 'gigabytes' in over: s_size = volume['size'] d_quota = quotas[over] d_consumed = _consumed(over) msg = _("Quota exceeded for %(s_pid)s, tried to create " "%(s_size)sG volume - (%(d_consumed)dG of " "%(d_quota)dG already consumed)") LOG.warn(msg % {'s_pid': ctxt.project_id, 's_size': s_size, 'd_consumed': d_consumed, 'd_quota': d_quota}) raise exception.VolumeSizeExceedsAvailableQuota( requested=s_size, quota=d_quota, consumed=d_consumed) elif 'volumes' in over: msg = _("Quota exceeded for %(s_pid)s, tried to create " "volume (%(d_consumed)d volumes " "already consumed)") LOG.warn(msg % {'s_pid': ctxt.project_id, 'd_consumed': _consumed(over)}) raise exception.VolumeLimitExceeded( allowed=quotas[over]) return reservations cinder-2014.1.5/cinder/version.py0000664000567000056700000000160312540642603017655 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # 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. from pbr import version as pbr_version CINDER_VENDOR = "OpenStack Foundation" CINDER_PRODUCT = "OpenStack Cinder" CINDER_PACKAGE = None # OS distro package version suffix loaded = False version_info = pbr_version.VersionInfo('cinder') version_string = version_info.version_string cinder-2014.1.5/cinder/units.py0000664000567000056700000000135712540642606017343 0ustar jenkinsjenkins00000000000000# Copyright 2011 OpenStack Foundation # # 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. """ A module where we define some basic units for use across Cinder. """ KiB = 1024 MiB = KiB * 1024 GiB = MiB * 1024 TiB = GiB * 1024 cinder-2014.1.5/cinder/testing/0000775000567000056700000000000012540643114017271 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/testing/README.rst0000664000567000056700000000272712540642603020772 0ustar jenkinsjenkins00000000000000===================================== OpenStack Cinder Testing Infrastructure ===================================== A note of clarification is in order, to help those who are new to testing in OpenStack cinder: - actual unit tests are created in the "tests" directory; - the "testing" directory is used to house the infrastructure needed to support testing in OpenStack Cinder. This README file attempts to provide current and prospective contributors with everything they need to know in order to start creating unit tests and utilizing the convenience code provided in cinder.testing. For more detailed information on cinder unit tests visit: http://docs.openstack.org/developer/cinder/devref/unit_tests.html Running Tests ----------------------------------------------- In the root of the cinder source code run the run_tests.sh script. This will offer to create a virtual environment and populate it with dependencies. If you don't have dependencies installed that are needed for compiling cinder's direct dependencies, you'll have to use your operating system's method of installing extra dependencies. To get help using this script execute it with the -h parameter to get options `./run_tests.sh -h` Writing Unit Tests ------------------ - All new unit tests are to be written in python-mock. - Old tests that are still written in mox should be updated to use python-mock. Usage of mox has been deprecated for writing Cinder unit tests. - use addCleanup in favor of tearDown cinder-2014.1.5/cinder/compute/0000775000567000056700000000000012540643114017270 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/compute/aggregate_states.py0000664000567000056700000000375412540642606023171 0ustar jenkinsjenkins00000000000000# Copyright 2010 OpenStack Foundation # All Rights Reserved. # # 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. """Possible states for host aggregates. An aggregate may be 'created', in which case the admin has triggered its creation, but the underlying hypervisor pool has not actually being set up yet. An aggregate may be 'changing', meaning that the underlying hypervisor pool is being setup. An aggregate may be 'active', in which case the underlying hypervisor pool is up and running. An aggregate may be 'dismissed' when it has no hosts and it has been deleted. An aggregate may be in 'error' in all other cases. A 'created' aggregate becomes 'changing' during the first request of adding a host. During a 'changing' status no other requests will be accepted; this is to allow the hypervisor layer to instantiate the underlying pool without any potential race condition that may incur in master/slave-based configurations. The aggregate goes into the 'active' state when the underlying pool has been correctly instantiated. All other operations (e.g. add/remove hosts) that succeed will keep the aggregate in the 'active' state. If a number of continuous requests fail, an 'active' aggregate goes into an 'error' state. To recover from such a state, admin intervention is required. Currently an error state is irreversible, that is, in order to recover from it an aggregate must be deleted. """ CREATED = 'created' CHANGING = 'changing' ACTIVE = 'active' ERROR = 'error' DISMISSED = 'dismissed' cinder-2014.1.5/cinder/compute/__init__.py0000664000567000056700000000227212540642606021411 0ustar jenkinsjenkins00000000000000# Copyright 2013 OpenStack Foundation. # All Rights Reserved. # # 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. import oslo.config.cfg import cinder.openstack.common.importutils _compute_opts = [ oslo.config.cfg.StrOpt('compute_api_class', default='cinder.compute.nova.API', help='The full class name of the ' 'compute API class to use'), ] oslo.config.cfg.CONF.register_opts(_compute_opts) def API(): importutils = cinder.openstack.common.importutils compute_api_class = oslo.config.cfg.CONF.compute_api_class cls = importutils.import_class(compute_api_class) return cls() cinder-2014.1.5/cinder/compute/nova.py0000664000567000056700000001206412540642606020615 0ustar jenkinsjenkins00000000000000# Copyright 2013 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. """ Handles all requests to Nova. """ from novaclient import service_catalog from novaclient.v1_1 import client as nova_client from novaclient.v1_1.contrib import assisted_volume_snapshots from oslo.config import cfg from cinder.db import base from cinder.openstack.common import log as logging nova_opts = [ cfg.StrOpt('nova_catalog_info', default='compute:nova:publicURL', help='Info to match when looking for nova in the service ' 'catalog. Format is : separated values of the form: ' '::'), cfg.StrOpt('nova_catalog_admin_info', default='compute:nova:adminURL', help='Same as nova_catalog_info, but for admin endpoint.'), cfg.StrOpt('nova_endpoint_template', default=None, help='Override service catalog lookup with template for nova ' 'endpoint e.g. http://localhost:8774/v2/%(project_id)s'), cfg.StrOpt('nova_endpoint_admin_template', default=None, help='Same as nova_endpoint_template, but for admin endpoint.'), cfg.StrOpt('os_region_name', default=None, help='region name of this node'), cfg.StrOpt('nova_ca_certificates_file', default=None, help='Location of ca certificates file to use for nova client ' 'requests.'), cfg.BoolOpt('nova_api_insecure', default=False, help='Allow to perform insecure SSL requests to nova'), ] CONF = cfg.CONF CONF.register_opts(nova_opts) LOG = logging.getLogger(__name__) def novaclient(context, admin=False): # FIXME: the novaclient ServiceCatalog object is mis-named. # It actually contains the entire access blob. # Only needed parts of the service catalog are passed in, see # nova/context.py. compat_catalog = { 'access': {'serviceCatalog': context.service_catalog or []} } sc = service_catalog.ServiceCatalog(compat_catalog) nova_endpoint_template = CONF.nova_endpoint_template nova_catalog_info = CONF.nova_catalog_info if admin: nova_endpoint_template = CONF.nova_endpoint_admin_template nova_catalog_info = CONF.nova_catalog_admin_info if nova_endpoint_template: url = nova_endpoint_template % context.to_dict() else: info = nova_catalog_info service_type, service_name, endpoint_type = info.split(':') # extract the region if set in configuration if CONF.os_region_name: attr = 'region' filter_value = CONF.os_region_name else: attr = None filter_value = None url = sc.url_for(attr=attr, filter_value=filter_value, service_type=service_type, service_name=service_name, endpoint_type=endpoint_type) LOG.debug(_('Novaclient connection created using URL: %s') % url) extensions = [assisted_volume_snapshots] c = nova_client.Client(context.user_id, context.auth_token, context.project_id, auth_url=url, insecure=CONF.nova_api_insecure, cacert=CONF.nova_ca_certificates_file, extensions=extensions) # noauth extracts user_id:project_id from auth_token c.client.auth_token = context.auth_token or '%s:%s' % (context.user_id, context.project_id) c.client.management_url = url return c class API(base.Base): """API for interacting with novaclient.""" def update_server_volume(self, context, server_id, attachment_id, new_volume_id): novaclient(context).volumes.update_server_volume(server_id, attachment_id, new_volume_id) def create_volume_snapshot(self, context, volume_id, create_info): nova = novaclient(context, admin=True) nova.assisted_volume_snapshots.create( volume_id, create_info=create_info) def delete_volume_snapshot(self, context, snapshot_id, delete_info): nova = novaclient(context, admin=True) nova.assisted_volume_snapshots.delete( snapshot_id, delete_info=delete_info) cinder-2014.1.5/cinder/locale/0000775000567000056700000000000012540643114017053 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/nb/0000775000567000056700000000000012540643114017452 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/nb/LC_MESSAGES/0000775000567000056700000000000012540643114021237 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/nb/LC_MESSAGES/cinder.po0000664000567000056700000110503112540642606023051 0ustar jenkinsjenkins00000000000000# Norwegian Bokmål translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Norwegian Bokmål " "(http://www.transifex.com/projects/p/openstack/language/nb/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/hu/0000775000567000056700000000000012540643114017467 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/hu/LC_MESSAGES/0000775000567000056700000000000012540643114021254 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/hu/LC_MESSAGES/cinder.po0000664000567000056700000110501112540642606023064 0ustar jenkinsjenkins00000000000000# Hungarian translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hungarian " "(http://www.transifex.com/projects/p/openstack/language/hu/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/eu/0000775000567000056700000000000012540643114017464 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/eu/LC_MESSAGES/0000775000567000056700000000000012540643114021251 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/eu/LC_MESSAGES/cinder.po0000664000567000056700000110477212540642606023076 0ustar jenkinsjenkins00000000000000# Basque translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-11-06 03:20+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Basque " "(http://www.transifex.com/projects/p/openstack/language/eu/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/fil/0000775000567000056700000000000012540643114017625 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fil/LC_MESSAGES/0000775000567000056700000000000012540643114021412 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fil/LC_MESSAGES/cinder.po0000664000567000056700000110477612540642606023243 0ustar jenkinsjenkins00000000000000# Filipino translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-09-26 22:10+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Filipino " "(http://www.transifex.com/projects/p/openstack/language/fil/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ka_GE/0000775000567000056700000000000012540643114020021 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ka_GE/LC_MESSAGES/0000775000567000056700000000000012540643114021606 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ka_GE/LC_MESSAGES/cinder.po0000664000567000056700000110502712540642606023425 0ustar jenkinsjenkins00000000000000# Georgian (Georgia) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Georgian (Georgia) " "(http://www.transifex.com/projects/p/openstack/language/ka_GE/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/pt/0000775000567000056700000000000012540643114017476 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pt/LC_MESSAGES/0000775000567000056700000000000012540643114021263 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pt/LC_MESSAGES/cinder.po0000664000567000056700000110501312540642606023075 0ustar jenkinsjenkins00000000000000# Portuguese translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Portuguese " "(http://www.transifex.com/projects/p/openstack/language/pt/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/fr/0000775000567000056700000000000012540643114017462 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fr/LC_MESSAGES/0000775000567000056700000000000012540643114021247 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fr/LC_MESSAGES/cinder.po0000664000567000056700000111733412540642606023072 0ustar jenkinsjenkins00000000000000# French translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-04-06 14:54+0000\n" "Last-Translator: EmmanuelLeNormand \n" "Language-Team: French \n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "Une exception inconnue s'est produite." #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "Non autorisé." #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "L’utilisateur n'a pas les privilèges administrateur" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Le réglage des droits n'autorise pas %(action)s à être effectué(e)(s)" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Pas de méthode pour le message : %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Paramètres inacceptables." #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, fuzzy, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "Le volume %(volume_id)s n'est lié à rien" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "Échec du chargement des données au format JSON" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "La requête est invalide." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Le type de contenu %(content_type)s est invalide" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "%(err)s" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "Le service est indisponible actuellement." #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "le groupe %s existe déjà" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Imposible de trouver une exportation iSCSI pour le volume %s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Impossible de trouver le volume %s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "Backend invalide : %s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" "Impossible de créer VDI sur SR %(sr_ref)s pour l'instance " "%(instance_name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "Une exception inconnue s'est produite." #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "Une exception inconnue s'est produite." #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "Démarrage du noeud %(topic)s (version %(vcs_string)s)" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Service détruit sans entrée dans la base de données" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "L'objet du service de base de données à disparru, re-création en cours." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Récupération du modelle de connexion serveur terminée!" #: cinder/service.py:271 msgid "model server went away" msgstr "Le modèle de serveur à disparu" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Ensemble de propriétés complet :" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, fuzzy, python-format msgid "Error connecting via ssh: %s" msgstr "Connexion à libvirt: %s" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Backend invalide : %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "backend %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Impossible de trouver SR du VDB %s" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Impossible de trouver SR du VDB %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Impossible de trouver SR du VDB %s" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "Vous devez implémenter __call__" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, fuzzy, python-format msgid "delete called for member %s" msgstr "Clef secrète changée pour l'utilisateur %s" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Création d'un volume de %s Go" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Tentative de suppression d'une console non existente %(console_id)s." #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Création d'un volume de %s Go" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Erreur interceptée : %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "instance %s: création d'un instantané (snapshot)" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "Le groupe de volume %s n'existe pas" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Création d'un volume de %s Go" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Le status du volume doit être disponible" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Le status du volume doit être disponible" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Le status du volume doit être disponible" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Le status du volume doit être disponible" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "La requête est invalide." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Tentative de suppression d'une console non existente %(console_id)s." #: cinder/brick/exception.py:112 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "Tentative de suppression d'une console non existente %(console_id)s." #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Tentative de suppression d'une console non existente %(console_id)s." #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Tentative de suppression d'une console non existente %(console_id)s." #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Redémarrage de l'instance %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Impossible de trouver le volume %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Impossible de trouver SR du VDB %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "L'utilisation d'une requête de contexte vide est dévalué" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Le status du volume doit être disponible" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "%s reçu" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Execution de la commande (sous-processus) : %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Le résultat était %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Execution de la cmd (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Exception interne : %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, fuzzy, python-format msgid "Starting %d workers" msgstr "adresse de départ" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "Doit mettre en oeuvre un calendrier de retrait" #: cinder/scheduler/driver.py:82 #, fuzzy msgid "Must implement schedule_create_volume" msgstr "Doit mettre en oeuvre un calendrier de retrait" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "FAUX ISCSI: %s" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "Snapshot invalide" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Dé-montage du volume %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Le status du volume doit être disponible" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Le status du volume doit être disponible" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Le status du volume doit être disponible" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "Récupération après une exécution erronée. Tentative numéro %s" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "volume %s: suppression de l'exportation" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Imposible de trouver une exportation iSCSI pour le volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Ré-exportation de %s volumes" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "volume %s : exportation évitée" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volume %s: suppression" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "Le volume n'est pas local à ce noeud" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volume %s: supprimé avec succès" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, fuzzy, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" "Montage du volume %(volume_id)s sur l'instance %(instance_id)s en tant " "que %(device)s" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Création d'un volume de %s Go" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Erreur imprévue lors de l'éxecution de la commande" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, fuzzy, python-format msgid "casted to %s" msgstr "Nested renvoi %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "le groupe %s existe déjà" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "Erreur au démarrage xvp : %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "Connexion à libvirt: %s" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "Connexion à libvirt: %s" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "Snapshot invalide" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "réponse %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Impossible de trouver le volume %s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "Sheepdog n'est pas actif : %s" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "Sheepdog n'est pas actif" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "réponse %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Échec de la suspension de l'instance" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Imposible de trouver une exportation iSCSI pour le volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Imposible de trouver une exportation iSCSI pour le volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "\"Non trouvé\" remonté : %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "volume %(vol_name)s: cŕeation d'un volume logique de %(vol_size)sG" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Erreur au démarrage xvp : %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "volume %s: supprimé avec succès" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "volume %s: supprimé avec succès" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "volume %s: supprimé avec succès" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "volume %s: supprimé avec succès" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Reconnection à la queue" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, fuzzy, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" "Montage du volume %(volume_id)s sur l'instance %(instance_id)s en tant " "que %(device)s" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, fuzzy, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" "Montage du volume %(volume_id)s sur l'instance %(instance_id)s en tant " "que %(device)s" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "Sheepdog n'est pas actif : %s" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Commande : %(cmd)s\n" "Valeur retournée : %(exit_code)s\n" "Sortie standard : %(stdout)r\n" "Sortie d'erreur : %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, fuzzy, python-format msgid "Using NetApp filer: %s" msgstr "Instance actives : %s" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, fuzzy, python-format msgid "Destroyed LUN %s" msgstr "Nested renvoi %s" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "volume %s: supprimé avec succès" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, fuzzy, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "Le groupe de volume %s n'existe pas" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "réponse %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "le groupe %s existe déjà" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "Suppression de l'utilisateur %s" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/hi/0000775000567000056700000000000012540643114017453 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/hi/LC_MESSAGES/0000775000567000056700000000000012540643114021240 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/hi/LC_MESSAGES/cinder.po0000664000567000056700000110477412540642606023067 0ustar jenkinsjenkins00000000000000# Hindi translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-08-27 04:58+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Hindi " "(http://www.transifex.com/projects/p/openstack/language/hi/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/is_IS/0000775000567000056700000000000012540643114020061 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/is_IS/LC_MESSAGES/0000775000567000056700000000000012540643114021646 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/is_IS/LC_MESSAGES/cinder.po0000664000567000056700000110503312540642606023462 0ustar jenkinsjenkins00000000000000# Icelandic (Iceland) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-12-16 02:36+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Icelandic (Iceland) " "(http://www.transifex.com/projects/p/openstack/language/is_IS/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/en_GB/0000775000567000056700000000000012540643114020025 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/en_GB/LC_MESSAGES/0000775000567000056700000000000012540643114021612 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/en_GB/LC_MESSAGES/cinder.po0000664000567000056700000111223512540642606023430 0ustar jenkinsjenkins00000000000000# English (United Kingdom) translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-03-30 11:10+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: English (United Kingdom) \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "An unknown exception occurred." #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "Not authorised." #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "User does not have admin privileges" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Policy doesn't allow %(action)s to be performed." #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Unacceptable parameters." #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, fuzzy, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "Volume %(volume_id)s is still attached, detach volume first." #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "Failed to load data into json format" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "The request is invalid." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Invalid content type %(content_type)s." #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "%(err)s" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Could not find parameter %(param)s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Failed to copy image to volume: %(reason)s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "Invalid backup: %(reason)s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "Unable to create server object for initiator %(name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "Unknown NFS exception" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "Unknown Gluster exception" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Full set of CONF:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Invalid backend: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "backend %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Unable to find cert_file : %s" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Unable to find ca_file : %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Unable to find key_file : %s" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Creating transfer of volume %s" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "snapshot does not exist" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Backup status must be available or error" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Volume to be backed up must be available" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Backup status must be available" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Volume to be restored to must be available" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "volume size %d is invalid." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Removing iscsi_target: %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Unable to locate Volume Group %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Unable to find VG: %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "Use of empty request context is deprecated" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Volume must be available" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Result was %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Running cmd (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Unhandled exception" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "DB exception wrapped." #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "Invalid input" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "volume: %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Failed to create transfer record for %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Volume status must be available to reserve" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Volume Snapshot status must be available or error" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Volume status must be available/in-use." #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "volume %s: removing export" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Could not find iSCSI export for volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Re-exporting %s volumes" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "volume %s: skipping export" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volume %s: deleting" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "Volume is not local to this node" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volume %s: deleted successfully" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Error running SSH command: %s" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, fuzzy, python-format msgid "casted to %s" msgstr "casted to %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "Not an rbd snapshot" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Unable to open image %(loc)s: %(err)s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Failed to get updated stats" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Cannot find device number for volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "Create Volume: %(volume)s Size: %(size)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "ExposePaths for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "HidePaths for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "AddMembers for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "RemoveMembers for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "HDP not found: %s" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, fuzzy, python-format msgid "Destroyed LUN %s" msgstr "Destroyed LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "Snapshot %s deletion successful" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Failed to get vol with required size for volume: %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/gl/0000775000567000056700000000000012540643114017455 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/gl/LC_MESSAGES/0000775000567000056700000000000012540643114021242 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/gl/LC_MESSAGES/cinder.po0000664000567000056700000110477612540642606023073 0ustar jenkinsjenkins00000000000000# Galician translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-10-28 23:23+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Galician " "(http://www.transifex.com/projects/p/openstack/language/gl/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/tl/0000775000567000056700000000000012540643114017472 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tl/LC_MESSAGES/0000775000567000056700000000000012540643114021257 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tl/LC_MESSAGES/cinder.po0000664000567000056700000110527212540642606023100 0ustar jenkinsjenkins00000000000000# Tagalog translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-08-23 11:21+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: Tagalog \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "walang paraan para sa mensahe: %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "natanggap %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Merong hindi-inaasahang pagkakamali habang tumatakbo ang command." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Muling kumonekta sa queue" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ar/0000775000567000056700000000000012540643114017455 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ar/LC_MESSAGES/0000775000567000056700000000000012540643114021242 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ar/LC_MESSAGES/cinder.po0000664000567000056700000110512012540642606023053 0ustar jenkinsjenkins00000000000000# Arabic translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-09-12 07:56+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Arabic " "(http://www.transifex.com/projects/p/openstack/language/ar/)\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : " "n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ml_IN/0000775000567000056700000000000012540643114020051 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ml_IN/LC_MESSAGES/0000775000567000056700000000000012540643114021636 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ml_IN/LC_MESSAGES/cinder.po0000664000567000056700000110503412540642606023453 0ustar jenkinsjenkins00000000000000# Malayalam (India) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-11-26 20:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Malayalam (India) " "(http://www.transifex.com/projects/p/openstack/language/ml_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ur/0000775000567000056700000000000012540643114017501 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ur/LC_MESSAGES/0000775000567000056700000000000012540643114021266 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ur/LC_MESSAGES/cinder.po0000664000567000056700000110477712540642606023120 0ustar jenkinsjenkins00000000000000# Urdu translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-10-07 06:14+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Urdu " "(http://www.transifex.com/projects/p/openstack/language/ur/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/tl_PH/0000775000567000056700000000000012540643114020061 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tl_PH/LC_MESSAGES/0000775000567000056700000000000012540643114021646 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tl_PH/LC_MESSAGES/cinder.po0000664000567000056700000110503312540642606023462 0ustar jenkinsjenkins00000000000000# Filipino (Philippines) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-09-26 22:10+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Tagalog (Philippines) " "(http://www.transifex.com/projects/p/openstack/language/tl_PH/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/bs/0000775000567000056700000000000012540643114017457 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/bs/LC_MESSAGES/0000775000567000056700000000000012540643114021244 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/bs/LC_MESSAGES/cinder.po0000664000567000056700000110564212540642606023066 0ustar jenkinsjenkins00000000000000# Bosnian translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-01-19 20:22+0000\n" "Last-Translator: yazar \n" "Language-Team: Bosnian \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Status volumena mora biti omogućen" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Status volumena mora biti omogućen" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Status volumena mora biti omogućen" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Status volumena mora biti omogućen" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Status volumena mora biti omogućen" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Status volumena mora biti omogućen" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Status volumena mora biti omogućen" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Status volumena mora biti omogućen" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Neočekivana greška prilikom pokretanja komande." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/kn/0000775000567000056700000000000012540643114017463 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/kn/LC_MESSAGES/0000775000567000056700000000000012540643114021250 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/kn/LC_MESSAGES/cinder.po0000664000567000056700000110476512540642606023077 0ustar jenkinsjenkins00000000000000# Kannada translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-09-17 14:44+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Kannada " "(http://www.transifex.com/projects/p/openstack/language/kn/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/zh_CN/0000775000567000056700000000000012540643114020054 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/zh_CN/LC_MESSAGES/0000775000567000056700000000000012540643114021641 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/zh_CN/LC_MESSAGES/cinder.po0000664000567000056700000113751312540642606023465 0ustar jenkinsjenkins00000000000000# Chinese (Simplified) translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-04-03 23:36+0000\n" "Last-Translator: cheesecake \n" "Language-Team: Chinese (Simplified) \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "发生未知异常。" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "未授权。" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "用户没有管理员权限" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "政策不允许 %(action)s 被执行。" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "没有为镜像 %(image_id)s 找到内核。" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "无法接受的参数。" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, fuzzy, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "卷 %(volume_id)s 没有附加任何东西" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "把数据加载为json格式失败" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "请求无效。" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "无效的内容类型 %(content_type)s。" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "%(err)s" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "该时刻服务无法使用。" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "镜像 %(image_id)s 无法接受,原因是: %(reason)s" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "资源没有找到。" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "卷 %(volume_id)s 没有找到。" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "卷 %(volume_id)s 没有含键 %(metadata_key)s 的元数据。" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, fuzzy, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "实例 %(instance_id)s 没有键为 %(metadata_key)s 的元数据。" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "卷类型 %(volume_type_id)s 没有找到。" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "名为 %(volume_type_name)s 的卷类型没有找到。" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "卷类型 %(volume_type_id)s 没有额外说明键 %(extra_specs_key)s 。" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "快照 %(snapshot_id)s 没有找到。" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "正在删除有快照的卷 %(volume_name)s" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "没有为卷 %(volume_id)s 找到目标id。" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "无效的镜像href %(image_href)s。" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "镜像 %(image_id)s 没有找到。" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "服务 %(service_id)s 没有找到。" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "主机 %(host)s 没有找到。" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "调度器主机过滤器 %(filter_name)s 没有找到。" #: cinder/exception.py:311 #, fuzzy, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "调度器主机过滤器 %(filter_name)s 没有找到。" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "没有找到二进制 %(binary)s 在主机 %(host)s 上。" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "配额没有找到。" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "没有为项目 %(project_id)s 找到配额。" #: cinder/exception.py:340 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "找不到类 %(class_name)s :异常 %(exception)s" #: cinder/exception.py:344 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "没有为项目 %(project_id)s 找到配额。" #: cinder/exception.py:348 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "用户 %(user_id)s 没有找到。" #: cinder/exception.py:352 #, fuzzy, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "超出配额" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "找不到文件 %(file_path)s。" #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "卷类型 %(name)s 已经存在。" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "错误格式的消息体: %(reason)s" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "在 %(path)s 找不到配置文件。" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "在 %(path)s 找不到配置文件。" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "无法从路径 %(path)s 中加载应用 '%(name)s'" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "找不到有效主机,原因是 %(reason)s。" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, fuzzy, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "检测到不止一个名称为 %(vol_name) 的卷。" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "无法创建名称为 %(name)s 规格为 %(extra_specs)s 的卷类型。" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, fuzzy, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "错误格式的消息体: %(reason)s" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "无法找到 %s 卷" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, fuzzy, python-format msgid "Backup %(backup_id)s could not be found." msgstr "没有找到LDAP用户组 %(group_id)s。" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "无效的后台:%s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, fuzzy, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "镜像 %(image_id)s 没有找到。" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "无法在存储库 %(sr_ref)s 上为实例 %(instance_name)s 创建 VDI" #: cinder/exception.py:615 #, fuzzy, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "无法找到实例 %s 的宿主机" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, fuzzy, python-format msgid "Bad HTTP response status %(status)s" msgstr "无效的服务器状态:%(status)s" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "来自SolidFire API的错误响应" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "SolidFire API响应里发生错误:data=%(data)s" #: cinder/exception.py:648 #, fuzzy, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "无法找到帐户 %(account_name) on Solidfire 设备" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "发生未知异常。" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "发生未知异常。" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "向调度器通报能力。" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "JSON文件表示策略。" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "请求的规则找不到时的检查缺省规则。" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "%(pid)s 的配额超出,尝试创建 %(size)sG 的卷" #: cinder/service.py:100 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "启动 %(topic)s 节点 (版本 %(vcs_string)s)" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "因无数据库记录,服务已被中止" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "服务数据库对象消失,正在重新创建。" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "与模型服务器(model server)的连接已恢复!" #: cinder/service.py:271 msgid "model server went away" msgstr "失去与模型服务器的连接" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "标记全集:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 #, fuzzy msgid "Specify a password or private_key" msgstr "指定san_password或者san_private_key" #: cinder/utils.py:229 #, fuzzy, python-format msgid "Error connecting via ssh: %s" msgstr "正在连接 libvirt:%s" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "无效的后台:%s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "后台 %s" #: cinder/utils.py:699 #, fuzzy, python-format msgid "Could not remove tmpdir: %s" msgstr "移除容器失败:%s" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "无法找到地址 %r" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "无法找到地址 %r" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "无法找到地址 %r" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "关闭WSGI服务器" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "WSGI服务器已经停止。" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "你必须执行 __call__" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "limit 参数必须是整数" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "limit参数必须是正数" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "offset 参数必须是整数" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "offset 参数必须是正数" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "没有找到标记 [%s]" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "href %s 不包含版本" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "正在初始化扩展管理员。" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "加载的扩展:%s" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "Ext name: %s" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "Ext alias: %s" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "Ext 描述: %s" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "Ext 命名空间: %s" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Ext updated: %s" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "加载扩展发生异常:%s" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "正在加载扩展 %s" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "调用扩展工厂 %s" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "加载扩展 %(ext_factory)s 失败:%(exc)s" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "加载扩展 %(classpath)s 失败:%(exc)s" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "加载扩展 %(ext_name)s 失败:%(exc)s" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "元素不是子节点" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "根元素选择列表" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "模板数不匹配;把slave %(slavetag)s 添加到master %(mastertag)s" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "subclasses必须执行construct()!" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, fuzzy, python-format msgid "delete called for member %s" msgstr "修改用户 %s 的私钥" #: cinder/api/contrib/backups.py:176 #, fuzzy, python-format msgid "Delete backup with id: %s" msgstr "删除id为 %s 的快照" #: cinder/api/contrib/backups.py:218 #, fuzzy, python-format msgid "Creating new backup %s" msgstr "轮换出%d个备份" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "不正确的请求主体格式" #: cinder/api/contrib/backups.py:234 #, fuzzy, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "卷 %(volume_id)s 正在 %(mountpoint)s 上启动" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 #, fuzzy msgid "Snapshot not found." msgstr "没有找到主机" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "无法理解XML" #: cinder/api/contrib/hosts.py:136 #, fuzzy, python-format msgid "Host '%s' could not be found." msgstr "主机 %(host)s 没有找到。" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "无效的状态:'%s'" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "无效的更新设置:'%s'" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "把主机 %(host)s 设置为 %(state)s。" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "Describe-resource是只有管理员才能执行的功能。" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "没有找到主机" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 #, fuzzy msgid "Request body empty" msgstr "不正确的请求主体格式" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "请求主体和URI不匹配" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "请求主体包含太多items" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 #, fuzzy msgid "Listing volume transfers" msgstr "更新主机状态" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "创建卷 %s 的快照" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "没有为卷 %(volume_id)s 找到目标id。" #: cinder/api/contrib/volume_transfer.py:183 #, fuzzy, python-format msgid "Accepting volume transfer %s" msgstr "更新主机状态" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "更新主机状态" #: cinder/api/contrib/volume_transfer.py:217 #, fuzzy, python-format msgid "Delete transfer with id: %s" msgstr "删除id为 %s 的卷" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "抓到错误:%s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s 随HTTP %(status)d返回" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "必须明确一个ExtensionManager类" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "扩展资源:%s" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "扩展%(ext_name)s:无法扩展资源 %(collection)s:没有那种资源" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "扩展资源的扩展 %(ext_name)s:%(collection)s" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "无法理解JSON" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "过多主体密钥" #: cinder/api/openstack/wsgi.py:671 #, fuzzy, python-format msgid "Exception handling resource: %s" msgstr "扩展资源:%s" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "错误抛出: %s" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "HTTP 异常抛出:%s" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "请求中没有提供主体" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "请求中提供了无法识别的 Content-Type" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "请求中没有提供 Content-Type" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "没有该动作:%s" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "错误格式的请求主体" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "不支持的Content-Type" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "错误格式的请求url" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "%(url)s返回错误:%(e)s" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "只能有 %(value)s 个 %(verb)s 请求发送给 %(uri)s 限定是每一个 %(unit_string)s。" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "这个请求受到频率限制。" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "实例不存在" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "元数据项目未找到" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "删除id为 %s 的快照" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "为卷 %s 创建快照" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "域不存在" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "vol=%s" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "删除id为 %s 的卷" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "提供了无效的imageRef。" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "创建 %s GB的卷" #: cinder/api/v1/volumes.py:504 #, fuzzy, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "正在从查询语句中移除选项 '%(unk_opt_str)s'" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "正在从查询语句中移除选项 '%(unk_opt_str)s'" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "卷组状态必须可获取" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "卷组状态必须可获取" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "状态必须可用" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "卷组状态必须可获取" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, fuzzy, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "正在把卷 %(volume_id)s 附加到 %(mountpoint)s" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, fuzzy, python-format msgid "unsupported compression algorithm: %s" msgstr "不支持的分区:%s" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, fuzzy, python-format msgid "generated object list: %s" msgstr "期望的对象类型:%s" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "请求无效。" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, fuzzy, python-format msgid "delete %s finished" msgstr "_delete: %s" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "没有为卷 %(volume_id)s 找到目标id。" #: cinder/brick/exception.py:112 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "没有为卷 %(volume_id)s 找到目标id。" #: cinder/brick/exception.py:116 #, fuzzy, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "没有为卷 %(volume_id)s 找到目标id。" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "没有为卷 %(volume_id)s 找到目标id。" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, fuzzy, python-format msgid "Removing iscsi_target for: %s" msgstr "正在删除基文件:%s" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "尝试删除不存在的控制台%(console_id)s。" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, fuzzy, python-format msgid "Removing iscsi_target for volume: %s" msgstr "跳过remove_export。没有为卷提供iscsi_target:%d" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "正在重启虚拟机 %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "无法找到 %s 卷" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "无法为VDI %s 找到VBD" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "使用空的请求上下文是不推荐的" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "无法识别的 read_deleted 取值”%s“" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "必须可用" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "version应该是整数" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "表 |%s| 没有创建" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 #, fuzzy msgid "quota_classes table not dropped" msgstr "instance_info_caches 没有删除掉" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 #, fuzzy msgid "quota_usages table not dropped" msgstr "instance_info_caches 没有删除掉" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 #, fuzzy msgid "reservations table not dropped" msgstr "dns_domains 表没有删除" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 #, fuzzy msgid "volume_glance_metadata table not dropped" msgstr "instance_info_caches 没有删除掉" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 #, fuzzy msgid "backups table not dropped" msgstr "dns_domains 表没有删除" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 #, fuzzy msgid "snapshot_metadata table not dropped" msgstr "instance_info_caches 没有删除掉" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 #, fuzzy msgid "transfers table not dropped" msgstr "dns_domains 表没有删除" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "'qemu-img info'解析失败" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, fuzzy, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "fmt=%(fmt)s 由 %(backing_file)s 支持" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, fuzzy, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "转化为裸格式,但目前格式是 %s" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "正在丢弃原来的异常。" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, fuzzy, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "获得信号量 \"%(lock)s\" 为方法 \"%(method)s\" ...锁" #: cinder/openstack/common/lockutils.py:200 #, fuzzy, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "正在 试图获取锁 \"%(lock)s\" 为方法 \"%(method)s\"...锁" #: cinder/openstack/common/lockutils.py:227 #, fuzzy, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "获得文件锁 \"%(lock)s\" 为方法 \"%(method)s\"...锁" #: cinder/openstack/common/lockutils.py:235 #, fuzzy, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "获得文件锁 \"%(lock)s\" 为方法 \"%(method)s\"...锁" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "_delete: %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "syslog设备必须作为一个 %s 。" #: cinder/openstack/common/log.py:709 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "类 %(fullname)s 是不推荐的:%(msg)s" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 #, fuzzy msgid "in fixed duration looping call" msgstr "循环调用中。" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 #, fuzzy msgid "in dynamic looping call" msgstr "循环调用中。" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "正在运行周期性任务 %(full_task_name)s" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "在 %(full_task_name)s 期间发生的错误:%(e)s" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, fuzzy, python-format msgid "Failed to understand rule %(match)r" msgstr "注入文件失败:%(resp)r" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "发现未知的 utils.execute 关键字参数:%r" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "正在运行cmd (subprocess):%s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "运行结果为 %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "%r 失败,重试。" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "运行cmd (SSH):%s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "SSH上不支持环境变量" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "SSH上不支持的进程输入参数。" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, fuzzy, python-format msgid "Caught %s, exiting" msgstr "快照 %s:正在删除" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "内层异常:%s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, fuzzy, python-format msgid "Starting %d workers" msgstr "起始地址" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "数据库异常被包裹。" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, fuzzy, python-format msgid "SQL connection failed. %s attempts left." msgstr "SQL连接失败 (%(connstring)s)。还剩 %(attempts)d 次。" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "必须实现一个回滚 schedule" #: cinder/scheduler/driver.py:82 #, fuzzy msgid "Must implement schedule_create_volume" msgstr "必须实现一个回滚 schedule" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, fuzzy, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "接收到 %(service_name)s 服务更新,来自 %(host)s。" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "接收到 %(service_name)s 服务更新,来自 %(host)s。" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "schedule_%(method)s 失败:%(ex)s" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "无法统计调度器的选项文件 %(filename)s:“%(e)s”" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 #, fuzzy msgid "Free capacity not set: volume node info collection broken." msgstr "未设置 VCPUs;假设 CPU 集合损坏了" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "FAKE ISCSI: %s" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "LoggingVolumeDriver: %s" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "伪执行命令(子进程):%s" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "伪命令匹配 %s" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "伪命令引起异常 %s" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "伪命令的标准输出stdout='%(stdout)s' 标准错误输出 stderr='%(stderr)s'" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "没有为实例 %(instance_id)s 找到卷。" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" "下面的迁移缺少了降级:\n" "\t%s" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, fuzzy, python-format msgid "unrecognized argument %s" msgstr "无法识别的 read_deleted 取值”%s“" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, fuzzy, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "伪命令的标准输出stdout='%(stdout)s' 标准错误输出 stderr='%(stderr)s'" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "给定数据:%s" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "结果数据:%s" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "无效的快照" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "分离卷 %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "状态码: %(_status)s\n" "主体: %(_body)s" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "认证错误" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "授权错误" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "条目没有找到" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "正在 %(relative_url)s 执行 %(method)s" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "主体:%s" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => code %(http_status)s" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => code %(http_status)s" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "意外的状态码" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "解码JSON:%s" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 #, fuzzy msgid "Volume in unexpected state" msgstr "意外的状态码" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "状态必须可用" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "为ip: %s获取元数据失败" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "%(pid)s 的配额超出,尝试创建 %(size)sG 的卷" #: cinder/transfer/api.py:182 #, fuzzy, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "更新代理失败:%(resp)r" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "搜索条件: %s" #: cinder/volume/api.py:353 msgid "already attached" msgstr "已经附加" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "卷组状态必须可获取" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "必须可用" #: cinder/volume/api.py:473 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "%(pid)s 的配额超出,尝试创建 %(size)sG 的卷" #: cinder/volume/api.py:485 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "%(pid)s 已经超过配额,试图运行 %(min_count)s 个实例" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "卷组状态必须可获取" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 #, fuzzy msgid "Metadata property key greater than 255 characters" msgstr "安全组 %s 不能比255个字符更长。" #: cinder/volume/api.py:572 #, fuzzy msgid "Metadata property value greater than 255 characters" msgstr "安全组 %s 不能比255个字符更长。" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "卷组状态必须可获取" #: cinder/volume/api.py:706 #, fuzzy msgid "Volume status is in-use." msgstr "卷 %s:卷繁忙" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "从失败的执行中恢复。尝试编号 %s" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "卷%s:正在移除导出" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "采用discovery,ISCSI provider_location 没有存储" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "无法为卷 %s 找到 iSCSI 导出" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "ISCSI Discovery:找到 %s" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, fuzzy, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "跳过remove_export。没有为卷提供iscsi_target:%d" #: cinder/volume/iscsi.py:80 #, fuzzy, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "跳过remove_export。没有为卷导出iscsi_target:%d" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, fuzzy, python-format msgid "Symbolic link %s not found" msgstr "没有找到标记 [%s]" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, fuzzy, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "跳过ensure_export。没有为卷提供iscsi_target:%d" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "重新导出卷%s" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "卷 %s:跳过导出" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, fuzzy, python-format msgid "Resuming delete on volume: %s" msgstr "正在删除volumeID:%s " #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "卷%s:删除中" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "卷不属于这个节点" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 #, fuzzy msgid "Failed to update usages deleting volume" msgstr "更新代理失败:%(resp)r" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "卷%s:删除成功" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "快照 %s:正在创建" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "快照 %s:创建成功" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "快照 %s:正在删除" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "快照 %s:删除成功" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, fuzzy, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "把卷 %(volume_id)s 附加到实例 %(instance_id)s 上位置在 %(device)s" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 #, fuzzy msgid "Updating volume status" msgstr "更新主机状态" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "收到通知 {%s}" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "数据库错误:%s" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "id不能是None" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "name不能是None" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "创建卷 %s 的快照" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "握手出错:%s" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, fuzzy, python-format msgid "casted to %s" msgstr "嵌套(调用)返回 %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, fuzzy, python-format msgid "Exception during mounting %s" msgstr "加载扩展发生异常:%s" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "镜像已经挂载" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "启动xvp发生错误:%s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "正在连接 libvirt:%s" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "给定数据:%s" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "无效的快照" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "Ext name: %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "无法找到 %s 卷" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "Sheepdog 没有工作:%s" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "Sheepdog 没有工作" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "SolidFire API 调用的参数:%s" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "调用 json.loads() 引起异常:%s" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "SolidFire API调用结果:%s" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "响应 %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "找到solidfire帐户:%s" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "solidfire帐户:%s 不存在,正在创建..." #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "为ip: %s获取元数据失败" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "进入SolidFire delete_volume..." #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "离开SolidFire delete_volume" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "正在执行SolidFire ensure_export..." #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "正在执行SolidFire create_export..." #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 #, fuzzy msgid "Updating cluster status info" msgstr "更新主机状态" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "无法得到最新的状态:%s" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, fuzzy, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "把“%(method)s”投放在 %(topic)s \"%(host)s\"" #: cinder/volume/drivers/zadara.py:260 #, fuzzy, python-format msgid "Operation completed. %(data)s" msgstr "确认完成" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, fuzzy, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "卷 %(volume_id)s 没有找到。" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "无法为卷 %s 找到 iSCSI 导出" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "无法为卷 %s 找到 iSCSI 导出" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "引起异常 NotFound: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 #, fuzzy msgid "Entering create_volume." msgstr "进入SolidFire create_volume..." #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "卷%(vol_name)s:创建大小为%(vol_size)s的逻辑卷" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 #, fuzzy msgid "Entering create_volume_from_snapshot." msgstr "从快照 %s 创建卷" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 #, fuzzy msgid "Entering create_cloned_volume." msgstr "进入SolidFire create_volume..." #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 #, fuzzy msgid "Entering delete_volume." msgstr "进入SolidFire delete_volume..." #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, fuzzy, python-format msgid "Delete Volume: %(volume)s" msgstr "删除id为 %s 的卷" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, fuzzy, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "创建卷 %s 的快照" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, fuzzy, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "创建卷 %s 的快照" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, fuzzy, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "创建卷 %s 的快照" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "启动xvp发生错误:%s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "卷%s:删除成功" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "卷%s:删除成功" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "卷%s:删除成功" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "卷%s:删除成功" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, fuzzy, python-format msgid "Map volume: %(volume)s" msgstr "没有id为 %(volume_id)s 的 sm_volume" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, fuzzy, python-format msgid "Unmap volume: %(volume)s" msgstr "没有id为 %(volume_id)s 的 sm_volume" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, fuzzy, python-format msgid "Volume %s is already mapped." msgstr "rootfs 已经被移除了" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 #, fuzzy msgid "Storage type not found." msgstr "镜像没有找到。" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 #, fuzzy msgid "Masking View not found." msgstr "镜像没有找到。" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 #, fuzzy msgid "Ecom user not found." msgstr "没有找到服务器。" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 #, fuzzy msgid "Ecom server not found." msgstr "没有找到服务器。" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "连接到 %s 的AMQP服务器" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, fuzzy, python-format msgid "Pool %(storage_type)s is not found." msgstr "角色 %(role_id)s 没有找到。" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, fuzzy, python-format msgid "Volume %(volumename)s not found on the array." msgstr "卷 %(volume_id)s 没有找到。" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, fuzzy, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "没有为实例 %(instance_id)s 找到卷。" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, fuzzy, python-format msgid "Error finding %s." msgstr "在存储库 %s 寻找VDIs出错" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, fuzzy, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "把卷 %(volume_id)s 附加到实例 %(server_id)s 的 %(device)s 设备上" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, fuzzy, python-format msgid "XML exception reading parameter: %s" msgstr "加载扩展发生异常:%s" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "没有找到主机" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, fuzzy, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "删除id为 %s 的卷" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, fuzzy, python-format msgid "LUN %s is deleted." msgstr "rootfs 已经被移除了" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, fuzzy, python-format msgid "%s is not set" msgstr "租户ID没有设" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "命令:%(cmd)s\n" "退出代码:%(exit_code)s\n" "标准输出:%(stdout)r\n" "标准错误输出:%(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, fuzzy, python-format msgid "Using NetApp filer: %s" msgstr "正在删除基文件:%s" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, fuzzy, python-format msgid "Created LUN with name %s" msgstr "已经创建路径为 %s 的目录" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, fuzzy, python-format msgid "Destroyed LUN %s" msgstr "嵌套(调用)返回 %s" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "为ip: %s获取元数据失败" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "为ip: %s获取元数据失败" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "为ip: %s获取元数据失败" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "快照 %s:删除成功" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "为ip: %s获取元数据失败" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "转化为裸格式,但目前格式是 %s" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, fuzzy, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "卷组 %s 不存在" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, fuzzy, python-format msgid "Sending JSON data: %s" msgstr "给定数据:%s" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 #, fuzzy msgid "Bad response from server" msgstr "来自SolidFire API的错误响应" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "响应 %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "指定san_password或者san_private_key" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "san_ip必须设置" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "没有为 %(zfs_poolname)s 找到LUID。Output=%(out)s" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "安全组 %s 已经存在" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "返回CLIQ命令 %s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "CLIQ命令 %(verb)s %(cliq_args)s 错误格式的响应。Result=%(out)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "在运行CLIQ命令 %(verb)s %(cliq_args)s 时发生错误。输出结果 Result=%(out)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "集群 %(cluster_name)s 有意外数量的虚拟 ip 地址。输出结果 Result=%(_xml)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "卷信息:%(volume_name)s => %(volume_attributes)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "不支持local_path" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "正在创建存储库 %s" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/he_IL/0000775000567000056700000000000012540643114020033 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/he_IL/LC_MESSAGES/0000775000567000056700000000000012540643114021620 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/he_IL/LC_MESSAGES/cinder.po0000664000567000056700000110503012540642606023431 0ustar jenkinsjenkins00000000000000# Hebrew (Israel) translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2014-01-24 11:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hebrew (Israel) " "(http://www.transifex.com/projects/p/openstack/language/he_IL/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/fi_FI/0000775000567000056700000000000012540643114020027 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fi_FI/LC_MESSAGES/0000775000567000056700000000000012540643114021614 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fi_FI/LC_MESSAGES/cinder.po0000664000567000056700000110501512540642606023430 0ustar jenkinsjenkins00000000000000# Finnish (Finland) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-08 11:44+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Finnish (Finland) " "(http://www.transifex.com/projects/p/openstack/language/fi_FI/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/tr_TR/0000775000567000056700000000000012540643114020105 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tr_TR/LC_MESSAGES/0000775000567000056700000000000012540643114021672 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tr_TR/LC_MESSAGES/cinder.po0000664000567000056700000110502312540642606023505 0ustar jenkinsjenkins00000000000000# Turkish (Turkey) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Turkish (Turkey) " "(http://www.transifex.com/projects/p/openstack/language/tr_TR/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/cinder.pot0000664000567000056700000110404212540642606021052 0ustar jenkinsjenkins00000000000000# Translations template for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # FIRST AUTHOR , 2014. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: cinder jenkins.cinder.propose.translation.update.326\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:10+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:168 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:173 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:180 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:186 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:232 #, python-format msgid "" "Not authenticated error occurred. Will create session and try API call " "again: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:267 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:271 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:274 #: cinder/volume/drivers/vmware/api.py:278 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:294 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:296 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:306 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/bg_BG/0000775000567000056700000000000012540643114020013 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/bg_BG/LC_MESSAGES/0000775000567000056700000000000012540643114021600 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/bg_BG/LC_MESSAGES/cinder.po0000664000567000056700000110502312540642606023413 0ustar jenkinsjenkins00000000000000# Bulgarian (Bulgaria) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-08 11:44+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Bulgarian (Bulgaria) " "(http://www.transifex.com/projects/p/openstack/language/bg_BG/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/sl_SI/0000775000567000056700000000000012540643114020064 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sl_SI/LC_MESSAGES/0000775000567000056700000000000012540643114021651 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sl_SI/LC_MESSAGES/cinder.po0000664000567000056700000110513112540642606023464 0ustar jenkinsjenkins00000000000000# Slovenian (Slovenia) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-07-01 16:14+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Slovenian (Slovenia) " "(http://www.transifex.com/projects/p/openstack/language/sl_SI/)\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 " "|| n%100==4 ? 2 : 3)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ru_RU/0000775000567000056700000000000012540643114020107 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ru_RU/LC_MESSAGES/0000775000567000056700000000000012540643114021674 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ru_RU/LC_MESSAGES/cinder.po0000664000567000056700000110514712540642606023516 0ustar jenkinsjenkins00000000000000# Russian (Russia) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Russian (Russia) " "(http://www.transifex.com/projects/p/openstack/language/ru_RU/)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/hr/0000775000567000056700000000000012540643114017464 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/hr/LC_MESSAGES/0000775000567000056700000000000012540643114021251 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/hr/LC_MESSAGES/cinder.po0000664000567000056700000110512212540642606023064 0ustar jenkinsjenkins00000000000000# Croatian translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Croatian " "(http://www.transifex.com/projects/p/openstack/language/hr/)\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/vi_VN/0000775000567000056700000000000012540643114020074 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/vi_VN/LC_MESSAGES/0000775000567000056700000000000012540643114021661 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/vi_VN/LC_MESSAGES/cinder.po0000664000567000056700000110501512540642606023475 0ustar jenkinsjenkins00000000000000# Vietnamese (Vietnam) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-08 11:44+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Vietnamese (Viet Nam) " "(http://www.transifex.com/projects/p/openstack/language/vi_VN/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/en_AU/0000775000567000056700000000000012540643114020042 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/en_AU/LC_MESSAGES/0000775000567000056700000000000012540643114021627 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/en_AU/LC_MESSAGES/cinder.po0000664000567000056700000111462412540642606023451 0ustar jenkinsjenkins00000000000000# English (Australia) translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-10-21 11:27+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: English (Australia) \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Not authorized for image %(image_id)s." #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "Volume Type %(id)s already exists." #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Could not find parameter %(param)s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Failed to copy image to volume: %(reason)s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "Invalid backup: %(reason)s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "Unable to create server object for initiator %(name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "Starting %(topic)s node (version %(version_string)s)" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Service killed that has no database entry" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "The service database object disappeared, Recreating it." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Recovered model server connection!" #: cinder/service.py:271 msgid "model server went away" msgstr "model server went away" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, fuzzy, python-format msgid "Error connecting via ssh: %s" msgstr "Error connecting via ssh: %s" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Invalid backend: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "backend %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Unable to find cert_file : %s" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Unable to find ca_file : %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Unable to find key_file : %s" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "You must implement __call__" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, fuzzy, python-format msgid "delete called for member %s" msgstr "delete called for member %s" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Creating new volume transfer %s" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Creating transfer of volume %s" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Accepting transfer %s" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Caught error: %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "snapshot does not exist" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "volume does not exist" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Create volume of %s GB" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Backup status must be available or error" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Volume to be backed up must be available" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Backup status must be available" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Volume to be restored to must be available" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Failed to create iscsi target for volume %(volume_id)s." #: cinder/brick/exception.py:112 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "Failed to remove iscsi target for volume %(volume_id)s." #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Removing iscsi_target: %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Unable to locate Volume Group %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Unable to find VG: %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "Use of empty request context is deprecated" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Volume must be available" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "received %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Result was %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Running cmd (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Unhandled exception" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, fuzzy, python-format msgid "Starting %d workers" msgstr "Starting %d workers" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "Must implement a fallback schedule" #: cinder/scheduler/driver.py:82 #, fuzzy msgid "Must implement schedule_create_volume" msgstr "Must implement schedule_create_volume" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "FAKE ISCSI: %s" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "volume: %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Failed to create transfer record for %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Volume status must be available to reserve" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Volume Snapshot status must be available or error" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Volume status must be available/in-use." #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "Recovering from a failed execute. Try number %s" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "volume %s: removing export" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Could not find iSCSI export for volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Re-exporting %s volumes" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "volume %s: skipping export" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volume %s: deleting" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "Volume is not local to this node" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volume %s: deleted successfully" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, fuzzy, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Creating clone of volume: %s" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Error running SSH command: %s" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, fuzzy, python-format msgid "casted to %s" msgstr "casted to %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "%s is already mounted" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "error opening rbd image %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "error connecting to ceph cluster" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "connection data: %s" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "Not an rbd snapshot" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "not cloneable: %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Unable to open image %(loc)s: %(err)s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "Sheepdog is not working: %s" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "Sheepdog is not working" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "API response: %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "Failed to get model update from clone" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Failed to get updated stats" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Could not find iSCSI export for volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Cannot find device number for volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "Found iSCSI endpoint: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "Create Volume: %(volume)s Size: %(size)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Error mapping volume %s." #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "ExposePaths for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "HidePaths for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "AddMembers for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "RemoveMembers for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Cannot connect to ECOM server" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, fuzzy, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "Volume name: %(volumename)s Volume instance: %(vol_instance)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, fuzzy, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "create_export: Volume: %(volume)s Device ID: %(device_id)s" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "HDP not found: %s" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, fuzzy, python-format msgid "Using NetApp filer: %s" msgstr "Using NetApp filer: %s" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, fuzzy, python-format msgid "Destroyed LUN %s" msgstr "Destroyed LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Failed to get LUN target details for the LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Failed to get target portal for the LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Failed to get target IQN for the LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "Snapshot %s deletion successful" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Failed to get vol with required size for volume: %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, fuzzy, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "Volume %s does not exist in Nexenta SA" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "Got response: %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "Volume (%s) already exists on array" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "Creating folder %s " #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/pt_BR/0000775000567000056700000000000012540643114020061 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pt_BR/LC_MESSAGES/0000775000567000056700000000000012540643114021646 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pt_BR/LC_MESSAGES/cinder.po0000664000567000056700000111317612540642606023471 0ustar jenkinsjenkins00000000000000# Brazilian Portuguese translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-02-06 21:07+0000\n" "Last-Translator: Adriano Steffler \n" "Language-Team: Brazilian Portuguese \n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "sem método para mensagem: %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "group %s já existe" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Não é possível localizar o volume %s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Não é possível localizar o volume %s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "Backend inválido: %s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" "Não é possível criar o VDI no SR %(sr_ref)s para a instância " "%(instance_name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Encerrado serviço que não tem entrada na base de dados" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "O objeto da base de dados do serviço desapareceu, Recriando." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Recuperada conexão servidor de modelo." #: cinder/service.py:271 msgid "model server went away" msgstr "servidor de modelo perdido" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Conjunto completo de FLAGS:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Backend inválido: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "backend %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Impossível localizar uma porta aberta" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Impossível localizar uma porta aberta" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Não é possível destruir o VBD %s" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Criar volume de %s GB" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Criar volume de %s GB" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Capturado o erro: %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "instância %s: fazendo um snapshot" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Criar volume de %s GB" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "O status do volume parece estar disponível" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "O status do volume parece estar disponível" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "O status do volume parece estar disponível" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "O status do volume parece estar disponível" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Falha ao obter metadados para o ip: %s" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Reiniciando a instância %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Não é possível localizar o volume %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Não é possível desconectar o volume %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "O status do volume parece estar disponível" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "recebido %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Executando comando (subprocesso): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Resultado foi %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Executando o comando (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Exceção interna: %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Desanexar volume %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "O status do volume parece estar disponível" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "O status do volume parece estar disponível" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "O status do volume parece estar disponível" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "volume %s: removendo export" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Não é possível localizar o volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Re-exportando %s volumes" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "volume %s: ignorando export" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volume %s: removendo" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "O volume não pertence à este node" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volume %s: remoção realizada com sucesso" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Criar volume de %s GB" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Erro inesperado ao executar o comando." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "group %s já existe" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "Desanexar volume %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "instância %s: fazendo um snapshot" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "resposta %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Não é possível localizar o volume %s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "resposta %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Começando a terminar instâncias" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Não é possível localizar o volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "NotFound lançado: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "volume %(vol_name)s: criando lv com tamanho %(vol_size)sG" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Desanexar volume %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "volume %s: remoção realizada com sucesso" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "volume %s: remoção realizada com sucesso" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "volume %s: remoção realizada com sucesso" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "volume %s: remoção realizada com sucesso" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Reconectado à fila" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "Endereço para Link Local não encontrado: %s" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Comando: %(cmd)s\n" "Código de saída: %(exit_code)s\n" "Saída padrão: %(stdout)r\n" "Erro: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "volume %s: remoção realizada com sucesso" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Falha ao obter metadados para o ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "resposta %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "group %s já existe" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "Apagando usuário %s" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ca/0000775000567000056700000000000012540643114017436 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ca/LC_MESSAGES/0000775000567000056700000000000012540643114021223 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ca/LC_MESSAGES/cinder.po0000664000567000056700000110500512540642606023036 0ustar jenkinsjenkins00000000000000# Catalan translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Catalan " "(http://www.transifex.com/projects/p/openstack/language/ca/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/it_IT/0000775000567000056700000000000012540643114020063 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/it_IT/LC_MESSAGES/0000775000567000056700000000000012540643114021650 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/it_IT/LC_MESSAGES/cinder.po0000664000567000056700000110503012540642606023461 0ustar jenkinsjenkins00000000000000# Italian (Italy) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Italian (Italy) " "(http://www.transifex.com/projects/p/openstack/language/it_IT/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/mr_IN/0000775000567000056700000000000012540643114020057 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/mr_IN/LC_MESSAGES/0000775000567000056700000000000012540643114021644 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/mr_IN/LC_MESSAGES/cinder.po0000664000567000056700000110501712540642606023462 0ustar jenkinsjenkins00000000000000# Marathi (India) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-10-16 22:17+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Marathi (India) " "(http://www.transifex.com/projects/p/openstack/language/mr_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/he/0000775000567000056700000000000012540643114017447 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/he/LC_MESSAGES/0000775000567000056700000000000012540643114021234 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/he/LC_MESSAGES/cinder.po0000664000567000056700000110500312540642606023045 0ustar jenkinsjenkins00000000000000# Hebrew translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2014-01-24 11:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hebrew " "(http://www.transifex.com/projects/p/openstack/language/he/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/te_IN/0000775000567000056700000000000012540643114020051 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/te_IN/LC_MESSAGES/0000775000567000056700000000000012540643114021636 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/te_IN/LC_MESSAGES/cinder.po0000664000567000056700000110412512540642606023453 0ustar jenkinsjenkins00000000000000# Telugu (India) translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:10+0000\n" "PO-Revision-Date: 2014-03-27 04:55+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Telugu (India) " "(http://www.transifex.com/projects/p/openstack/language/te_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:168 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:173 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:180 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:186 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:232 #, python-format msgid "" "Not authenticated error occurred. Will create session and try API call " "again: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:267 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:271 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:274 #: cinder/volume/drivers/vmware/api.py:278 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:294 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:296 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:306 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/sr/0000775000567000056700000000000012540643114017477 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sr/LC_MESSAGES/0000775000567000056700000000000012540643114021264 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sr/LC_MESSAGES/cinder.po0000664000567000056700000110512212540642606023077 0ustar jenkinsjenkins00000000000000# Serbian translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2014-03-13 05:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Serbian " "(http://www.transifex.com/projects/p/openstack/language/sr/)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/sv/0000775000567000056700000000000012540643114017503 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sv/LC_MESSAGES/0000775000567000056700000000000012540643114021270 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sv/LC_MESSAGES/cinder.po0000664000567000056700000110500512540642606023103 0ustar jenkinsjenkins00000000000000# Swedish translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-11-26 20:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Swedish " "(http://www.transifex.com/projects/p/openstack/language/sv/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ms/0000775000567000056700000000000012540643114017472 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ms/LC_MESSAGES/0000775000567000056700000000000012540643114021257 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ms/LC_MESSAGES/cinder.po0000664000567000056700000110477212540642606023104 0ustar jenkinsjenkins00000000000000# Malay translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Malay " "(http://www.transifex.com/projects/p/openstack/language/ms/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/pl_PL/0000775000567000056700000000000012540643114020061 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pl_PL/LC_MESSAGES/0000775000567000056700000000000012540643114021646 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pl_PL/LC_MESSAGES/cinder.po0000664000567000056700000110512512540642606023464 0ustar jenkinsjenkins00000000000000# Polish (Poland) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-07-01 16:14+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Polish (Poland) " "(http://www.transifex.com/projects/p/openstack/language/pl_PL/)\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && " "(n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/zh_TW/0000775000567000056700000000000012540643114020106 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/zh_TW/LC_MESSAGES/0000775000567000056700000000000012540643114021673 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/zh_TW/LC_MESSAGES/cinder.po0000664000567000056700000110730712540642606023515 0ustar jenkinsjenkins00000000000000# Chinese (Traditional) translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-03-07 02:00+0000\n" "Last-Translator: Charles Hsu \n" "Language-Team: Chinese (Traditional) \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "發生一個未知例外" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "未被授權" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "使用者並沒有管理者權力" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "不可接受的參數值" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "找不到Volume %s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "找不到Volume %s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "無法替 instance實例 %(instance_name)s , 建立 VDI 在SR %(sr_ref)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "發生一個未知例外" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "發生一個未知例外" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "找不到Volume %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "找不到Volume %s" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Volume 狀態需要可被使用" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Volume 狀態需要可被使用" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Volume 狀態需要可被使用" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Volume 狀態需要可被使用" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "無效的Keypair" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "找不到Volume %s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "找不到Volume %s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "找不到Volume %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "無法卸載 Volume %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Volume 狀態需要可被使用" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "無效的快照(snapshot)" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "找不到Volume %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Volume 狀態需要可被使用" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Volume 狀態需要可被使用" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Volume 狀態需要可被使用" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "找不到Volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "非預期的執行錯誤" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "無效的快照(snapshot)" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "找不到Volume %s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "內文解碼失敗" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "找不到Volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "命令: %(cmd)s\n" "退出代碼: %(exit_code)s\n" "標準輸出: %(stdout)r\n" "標準錯誤輸出: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "找不到Volume %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/cs/0000775000567000056700000000000012540643114017460 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/cs/LC_MESSAGES/0000775000567000056700000000000012540643114021245 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/cs/LC_MESSAGES/cinder.po0000664000567000056700000112656412540642606023075 0ustar jenkinsjenkins00000000000000# Czech translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-04-04 20:28+0000\n" "Last-Translator: Zbyněk Schwarz \n" "Language-Team: Czech \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "Vyskytla se neočekávaná výjimka." #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "Neschváleno." #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "Uživatel nemá správcovská oprávnění" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Pravidla nedovolují, aby bylo %(action)s provedeno." #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Kernel nenalezen v obrazu %(image_id)s." #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Nepřijatelné parametry." #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, fuzzy, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "Svazek %(volume_id)s není k ničemu připojen" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "Nelze načíst data do formátu json" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "Požadavek je neplatný." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Neplatný typ obsahu %(content_type)s." #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "%(err)s" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "Služba je v tuto chvíli nedostupná." #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "Obraz %(image_id)s je nepřijatelný: %(reason)s" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "Zdroj nemohl být nalezen." #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Svazek %(volume_id)s nemohl být nastaven." #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "Svazek %(volume_id)s nemá žádná metadata s klíčem %(metadata_key)s." #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, fuzzy, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "Instance %(instance_id)s nemá žádná metadata s klíčem %(metadata_key)s." #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "Typ svazku %(volume_type_id)s nemohl být nalezen." #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "Typ svazku s názvem %(volume_type_name)s nemohl být nalezen." #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" "Typ svazku %(volume_type_id)s nemá žádné dodatečné parametry s klíčem " "%(extra_specs_key)s." #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "Snímek %(snapshot_id)s nemohl být nalezen." #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "mazání svazku %(volume_name)s který má snímek" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "Neplatný href %(image_href)s obrazu." #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "Obraz %(image_id)s nemohl být nalezen." #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Služba %(service_id)s nemohla být nalezena." #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "Hostitel %(host)s nemohl být nalezen." #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "Filtr hostitelů plácinderče %(filter_name)s nemohl být nalezen." #: cinder/exception.py:311 #, fuzzy, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "Filtr hostitelů plácinderče %(filter_name)s nemohl být nalezen." #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "Nelze najít binární soubor %(binary)s v hostiteli %(host)s." #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "Kvóta nemohla být nalezena." #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "Kvóta pro projekt %(project_id)s nemohla být nalezena." #: cinder/exception.py:340 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "Třída %(class_name)s nemohla být nalezena: %(exception)s" #: cinder/exception.py:344 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "Kvóta pro projekt %(project_id)s nemohla být nalezena." #: cinder/exception.py:348 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "Uživatel %(user_id)s nemohl být nalezen." #: cinder/exception.py:352 #, fuzzy, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "Kvóta překročena" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "Soubor %(file_path)s nemohl být nalezen." #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "Typ svazku %(name)s již existuje." #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "Poškozené tělo zprávy: %(reason)s" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "Nelze najít nastavení v %(path)s" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Nelze najít nastavení v %(path)s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "Nelze načíst aplikaci vložení '%(name)s' z %(path)s" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "Nebyl nalezen žádný platný hostitel. %(reason)s" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, fuzzy, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "Zjištěn více než jeden svazek s názvem %(vol_name)" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" "Nelze vytvořit typ_svazku s názvem %(name)s a specifikacemi " "%(extra_specs)s" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, fuzzy, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "Poškozené tělo zprávy: %(reason)s" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Poškozené tělo zprávy: %(reason)s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, fuzzy, python-format msgid "Backup %(backup_id)s could not be found." msgstr "Skupina LDAP %(group_id)s nemohla být nalezena." #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "Neplatná podpůrná vrstva: %s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, fuzzy, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "Obraz %(image_id)s nemohl být nalezen." #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, fuzzy, python-format msgid "Bad HTTP response status %(status)s" msgstr "Neplatný stav serveru: %(status)s" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "Špatná odpověď od SolidFire API" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "Chyba v odpovědi SolidFire API: data=%(data)s" #: cinder/exception.py:648 #, fuzzy, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "Nelze nalézt účet %(account_name) on zařízení Solidfire" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "Vyskytla se neočekávaná výjimka." #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "Vyskytla se neočekávaná výjimka." #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "Oznamování schopností plácinderčům ..." #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "Soubor JSON představující zásady" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "Kontrolované pravidlo, když požadované není nalezeno" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "Začínající uzel %(topic)s (verze %(vcs_string)s)" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Ukončena služba bez záznamu v databázi" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "Objekt databáze služby zmizel, je znovu vytvářen." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Obnoveno připojení modelového serveru!" #: cinder/service.py:271 msgid "model server went away" msgstr "modelový server je nedostupný" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Úplná sada PŘÍZNAKŮ:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Neplatná podpůrná vrstva: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "podpůrná vrstva: %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "Zastavování serveru WSGI." #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "Server WSGI byl zastaven." #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "Musíte zavést __call__" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "parametr limit musí být celé číslo" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "parametr limit musí být kladný" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "parametr offset musí být celé číslo" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "parametr offset musí být kladný" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "značka [%s] nenalezena" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "href %s neobsahuje verzi" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "Zavádění správce rozšíření." #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "Načteno rozšíření: %s" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "Název roz: %s" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "Přezdívká roz: %s" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "Popis roz: %s" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "Jmenný prostor roz: %s" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Roz aktualizováno: %s" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "Výjimka při načítání rozšíření: %s" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "Načítání rozšíření %s" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "Volání továrny rozšíření %s" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "Nelze načít rozšížení %(ext_factory)s: %(exc)s" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "Nelze načíst rozšíření %(classpath)s: %(exc)s" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "Nelze načíst rozšíření %(ext_name)s: %(exc)s" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "prvek není podřazený" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "kořenový prvek volí seznam" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" "Neshoda stromu šablony; přidávání sluhy %(slavetag)s k pánovi " "%(mastertag)s" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "podtřídy musí zavádět construct()!" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "Nsprávný formát těla požadavku" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 #, fuzzy msgid "Snapshot not found." msgstr "Server nenalezen." #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "XML nelze porozumět" #: cinder/api/contrib/hosts.py:136 #, fuzzy, python-format msgid "Host '%s' could not be found." msgstr "Hostitel %(host)s nemohl být nalezen." #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "Neplatný stav: '%s'" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "Neplatné nastavení aktualizace: '%s'" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "Nastavování hostitele %(host)s na %(state)s." #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "Describe-resource je funkce pouze pro správce" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 #, fuzzy msgid "Request body empty" msgstr "Nsprávný formát těla požadavku" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "Neshoda s tělem požadavku a URI" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "Tělo požadavku obsahuje příliš mnoho položek" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Vytvořit snímek svazku %s" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Vytvořit snímek svazku %s" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Zachycena chyba: %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s vrácena s HTTP %(status)d" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "Musí být určena třída ExtensionManager" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "Rozšířený zdroj: %s" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "Rozšíření %(ext_name)s: nelze rozšířit %(collection)s: Žádný takový zdroj" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "Rozšíření %(ext_name)s: rozšiřování zdroje %(collection)s" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "JSON nelze porozumět" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "příliš mnoho klíčů těla" #: cinder/api/openstack/wsgi.py:671 #, fuzzy, python-format msgid "Exception handling resource: %s" msgstr "Rozšířený zdroj: %s" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "Vyvolána chyba: %s" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "Vyvolána výjimka HTTP: %s" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "V požadavku zadáno prázdné tělo" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "V požadavku zadán nerozpoznaný Content-Type" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "V požadavku nezadán Content-Type" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "Žádná taková činnost: %s" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "Poškozené tělo požadavku" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "Nepodporovaný Content-Type" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "Poškozená url požadavku" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "%(url)s vrátilo chybu: %(e)s" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" "Pouze %(value)s požadavky %(verb)s mohou být provedeny pro %(uri)s " "každých %(unit_string)s." #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "Tento požadavek má omezen množství." #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "Instance neexistuje" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "Položka metadat nenalezena" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "Server neexistuje" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "Zadáno neplatné imageRef." #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Vytvořit svazek o %s GB" #: cinder/api/v1/volumes.py:504 #, fuzzy, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "Odstraňování voleb '%(unk_opt_str)s' z fronty" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "Odstraňování voleb '%(unk_opt_str)s' z fronty" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Obraz musí být dostupný" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Obraz musí být dostupný" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Obraz musí být dostupný" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Obraz musí být dostupný" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, fuzzy, python-format msgid "generated object list: %s" msgstr "Očekáván objekt typu: %s" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "Požadavek je neplatný." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/brick/exception.py:112 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/brick/exception.py:116 #, fuzzy, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Nenalezeno žádné cílové id ve svazku %(volume_id)s." #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Obraz musí být dostupný" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "Původní výjimka je zahozena" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, fuzzy, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "Získán semafor \"%(lock)s\" pro zámek metody \"%(method)s\"" #: cinder/openstack/common/lockutils.py:200 #, fuzzy, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "Pokus o získání zámku souboru \"%(lock)s\" pro zámek metody \"%(method)s\"" #: cinder/openstack/common/lockutils.py:227 #, fuzzy, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "Získán zámek souboru \"%(lock)s\" pro zámek metody \"%(method)s\"" #: cinder/openstack/common/lockutils.py:235 #, fuzzy, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "Získán zámek souboru \"%(lock)s\" pro zámek metody \"%(method)s\"" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "obdrženo: %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "zařízení záznamu systému musí být jedno z: %s" #: cinder/openstack/common/log.py:709 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "Třída %(fullname)s je zastaralá: %(msg)s" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 #, fuzzy msgid "in fixed duration looping call" msgstr "v opakujícím volání" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 #, fuzzy msgid "in dynamic looping call" msgstr "v opakujícím volání" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "Spuštění pravidelné úlohy %(full_task_name)s" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "Chyba při %(full_task_name)s: %(e)s" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "Získány neznámé argumenty klíčového slova pro utils.execute: %r" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Spouštění příkazu (podproces): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Výsledek byl %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "%r selhalo. Opakování." #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Spouštění příkazu (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "Prostředí není podporováno přes SSH" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "process_input není podporován přes SSH" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Vnitřní výjimka: %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "Vyjímka DB zabalena." #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "Svazek není nalezen v instanci %(instance_id)s." #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "Neplatný snímek" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Odpojit svazek %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Nelze získat metadata pro ip: %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Obraz musí být dostupný" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Obraz musí být dostupný" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Nelze najít obslužnou rutinu pro svazek %(driver_type)s." #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, fuzzy, python-format msgid "Symbolic link %s not found" msgstr "značka [%s] nenalezena" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, fuzzy, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "Připojit svazek %(volume_id)s k instanci %(instance_id)s na %(device)s" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Vytvořit snímek svazku %s" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Při spuštění příkazu došlo k nečekané chybě." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, fuzzy, python-format msgid "Exception during mounting %s" msgstr "Výjimka při načítání rozšíření: %s" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "skupina %s již existuje" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "Chyba v přesunu %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "Neplatný snímek" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "Název roz: %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Poškozené tělo zprávy: %(reason)s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "odpověď %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "Nelze získat metadata pro ip: %s" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Nelze vytvořit typ instance" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, fuzzy, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "Svazek %(volume_id)s nemohl být nastaven." #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "Vyvoláno Nenalezeno: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 #, fuzzy msgid "Entering create_volume_from_snapshot." msgstr "Vytvořit svazek ze snímku %s" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, fuzzy, python-format msgid "Delete Volume: %(volume)s" msgstr "mazání svazku %(volume_name)s který má snímek" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, fuzzy, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "Vytvořit snímek svazku %s" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, fuzzy, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "Vytvořit snímek svazku %s" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, fuzzy, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "Vytvořit snímek svazku %s" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Chyba v přesunu %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 #, fuzzy msgid "Storage type not found." msgstr "Obraz nenalezen" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 #, fuzzy msgid "Masking View not found." msgstr "Obraz nenalezen" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 #, fuzzy msgid "Ecom user not found." msgstr "Server nenalezen." #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 #, fuzzy msgid "Ecom server not found." msgstr "Server nenalezen." #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Znovu připojeno k frontě" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, fuzzy, python-format msgid "Pool %(storage_type)s is not found." msgstr "Role %(role_id)s nemohla být nalezena." #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, fuzzy, python-format msgid "Volume %(volumename)s not found on the array." msgstr "Svazek %(volume_id)s nemohl být nastaven." #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, fuzzy, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "Svazek není nalezen v instanci %(instance_id)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, fuzzy, python-format msgid "Error finding %s." msgstr "Chyba v přesunu %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, fuzzy, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "Připojit svazek %(volume_id)s k instanci %(instance_id)s na %(device)s" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, fuzzy, python-format msgid "XML exception reading parameter: %s" msgstr "Výjimka při načítání rozšíření: %s" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "Instance nenalezena" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, fuzzy, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "mazání svazku %(volume_name)s který má snímek" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Příkaz: %(cmd)s\n" "Kód ukončení: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Nelze získat metadata pro ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Nelze získat metadata pro ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Nelze získat metadata pro ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Nelze získat metadata pro ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 #, fuzzy msgid "Bad response from server" msgstr "Špatná odpověď od SolidFire API" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "odpověď %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "skupina %s již existuje" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ta/0000775000567000056700000000000012540643114017457 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ta/LC_MESSAGES/0000775000567000056700000000000012540643114021244 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ta/LC_MESSAGES/cinder.po0000664000567000056700000110410012540642606023052 0ustar jenkinsjenkins00000000000000# Tamil translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:10+0000\n" "PO-Revision-Date: 2014-03-27 04:55+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Tamil " "(http://www.transifex.com/projects/p/openstack/language/ta/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:168 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:173 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:180 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:186 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:232 #, python-format msgid "" "Not authenticated error occurred. Will create session and try API call " "again: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:267 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:271 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:274 #: cinder/volume/drivers/vmware/api.py:278 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:294 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:296 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:306 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ro/0000775000567000056700000000000012540643114017473 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ro/LC_MESSAGES/0000775000567000056700000000000012540643114021260 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ro/LC_MESSAGES/cinder.po0000664000567000056700000110506312540642606023077 0ustar jenkinsjenkins00000000000000# Romanian translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-06-12 07:55+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Romanian " "(http://www.transifex.com/projects/p/openstack/language/ro/)\n" "Plural-Forms: nplurals=3; " "plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/it/0000775000567000056700000000000012540643114017467 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/it/LC_MESSAGES/0000775000567000056700000000000012540643114021254 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/it/LC_MESSAGES/cinder.po0000664000567000056700000111170712540642606023075 0ustar jenkinsjenkins00000000000000# Italian translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-04-01 18:59+0000\n" "Last-Translator: simone.sandri \n" "Language-Team: Italian \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "E' stato riscontrato un errore sconosciuto" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "L'utente non ha i privilegi dell'amministratore" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "nessun metodo per il messaggio: %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Parametri inaccettabili." #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "La richiesta non è valida." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Impossibile localizzare il volume %s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Impossibile localizzare il volume %s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "Impossible creare il VDI su SR %(sr_ref)s per l'istanza %(instance_name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "E' stato riscontrato un errore sconosciuto" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "E' stato riscontrato un errore sconosciuto" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Servizio terminato che non ha entry nel database" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "Il servizio é scomparso dal database, ricreo." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Connessione al model server ripristinata!" #: cinder/service.py:271 msgid "model server went away" msgstr "model server é scomparso" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Insieme di FLAGS:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Impossibile localizzare il volume %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Impossibile localizzare il volume %s" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "istanza %s: creazione snapshot in corso" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Lo stato del volume deve essere disponibile" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Lo stato del volume deve essere disponibile" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Lo stato del volume deve essere disponibile" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Lo stato del volume deve essere disponibile" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "La richiesta non è valida." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Impossibile localizzare il volume %s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Impossibile localizzare il volume %s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Riavviando l'istanza %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Impossibile localizzare il volume %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Impossibile smontare il volume %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Lo stato del volume deve essere disponibile" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "ricevuto %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Esecuzione del comando (sottoprocesso): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Il risultato é %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Eseguendo cmd (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Eccezione interna: %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "E' stato ricevuto un input non valido" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "volume %s: rimuovendo" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Impossibile localizzare il volume %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Lo stato del volume deve essere disponibile" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Lo stato del volume deve essere disponibile" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Lo stato del volume deve essere disponibile" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Impossibile localizzare il volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volume %s: rimuovendo" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "Volume ancora collegato" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volume %s: rimosso con successo" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Si e' verificato un errore inatteso durante l'esecuzione del comando." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "istanza %s: creazione snapshot in corso" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "risposta %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Impossibile localizzare il volume %s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "risposta %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Impossibile sospendere l'istanza" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Impossibile localizzare il volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "volume %s: rimosso con successo" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "volume %s: rimosso con successo" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "volume %s: rimosso con successo" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "volume %s: rimosso con successo" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Riconnesso alla coda" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Comando: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "volume %s: rimosso con successo" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Impossibile localizzare il volume %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "risposta %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ko/0000775000567000056700000000000012540643114017464 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ko/LC_MESSAGES/0000775000567000056700000000000012540643114021251 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ko/LC_MESSAGES/cinder.po0000664000567000056700000110753012540642606023071 0ustar jenkinsjenkins00000000000000# Korean translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-12-16 04:42+0000\n" "Last-Translator: Zhongyue Luo \n" "Language-Team: Korean \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "%(instance_name)s 인스턴스의 %(sr_ref)s SR에 대한 VDI 생성이 실패했습니다" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "인스턴스 %s: 스냅샷 저장중" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "인스턴스 %s를 재부팅합니다" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "%s 볼륨 탈착에 실패했습니다" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "볼륨의 상태를 알 수 없습니다" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "명령 실행도중 예측하지 못한 에러가 발생했습니다" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "인스턴스 %s: 스냅샷 저장중" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Command: %(cmd)s\n" "Exit code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "%s 볼륨을 찾을수 없습니다" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/tr/0000775000567000056700000000000012540643114017500 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tr/LC_MESSAGES/0000775000567000056700000000000012540643114021265 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/tr/LC_MESSAGES/cinder.po0000664000567000056700000110477312540642606023113 0ustar jenkinsjenkins00000000000000# Turkish translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-12-14 18:10+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Turkish \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/de/0000775000567000056700000000000012540643114017443 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/de/LC_MESSAGES/0000775000567000056700000000000012540643114021230 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/de/LC_MESSAGES/cinder.po0000664000567000056700000110730212540642606023045 0ustar jenkinsjenkins00000000000000# German translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-08-23 11:23+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: German \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "keine Methode für diese Nachricht gefunden: %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Nicht möglich volume %s zufinden" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Nicht möglich volume %s zufinden" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "Das Service-Datenbank-Objekt ist verschwunden, es wird erneut erzeugt." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Alle vorhandenen FLAGS:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Nicht möglich volume %s zufinden" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Nicht möglich volume %s zufinden" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Volume %s: wird erstellt" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Führe Kommando (subprocess) aus: %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Ergebnis war %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Volume %s: wird entfernt" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "Volume %s: entferne Export" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "Volume %s: wird entfernt" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "Volume %s: erfolgreich entfernt" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Unerwarteter Fehler bei Ausführung des Kommandos." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Nicht möglich volume %s zufinden" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "Volume %s: erfolgreich entfernt" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "Volume %s: erfolgreich entfernt" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "Volume %s: erfolgreich entfernt" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "Volume %s: erfolgreich entfernt" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Befehl: %(cmd)s\n" "Exit-Code: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "Volume %s: erfolgreich entfernt" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Nicht möglich volume %s zufinden" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/da/0000775000567000056700000000000012540643114017437 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/da/LC_MESSAGES/0000775000567000056700000000000012540643114021224 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/da/LC_MESSAGES/cinder.po0000664000567000056700000110521212540642606023037 0ustar jenkinsjenkins00000000000000# Danish translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-01-15 21:46+0000\n" "Last-Translator: Soren Hansen \n" "Language-Team: Danish \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "bind %s: slettet" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "bind %s: slettet" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "bind %s: slettet" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "bind %s: slettet" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "bind %s: slettet" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "bind %s: slettet" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/sq/0000775000567000056700000000000012540643114017476 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sq/LC_MESSAGES/0000775000567000056700000000000012540643114021263 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sq/LC_MESSAGES/cinder.po0000664000567000056700000110410612540642606023077 0ustar jenkinsjenkins00000000000000# Albanian translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-27 06:10+0000\n" "PO-Revision-Date: 2014-03-27 04:55+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Albanian " "(http://www.transifex.com/projects/p/openstack/language/sq/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:168 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:173 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:180 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:186 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:232 #, python-format msgid "" "Not authenticated error occurred. Will create session and try API call " "again: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:267 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:271 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:274 #: cinder/volume/drivers/vmware/api.py:278 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:294 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:296 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:306 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/fa/0000775000567000056700000000000012540643114017441 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fa/LC_MESSAGES/0000775000567000056700000000000012540643114021226 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/fa/LC_MESSAGES/cinder.po0000664000567000056700000110477612540642606023057 0ustar jenkinsjenkins00000000000000# Persian translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-11-26 20:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Persian " "(http://www.transifex.com/projects/p/openstack/language/fa/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/zh_HK/0000775000567000056700000000000012540643114020056 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/zh_HK/LC_MESSAGES/0000775000567000056700000000000012540643114021643 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/zh_HK/LC_MESSAGES/cinder.po0000664000567000056700000110504312540642606023460 0ustar jenkinsjenkins00000000000000# Chinese (Hong Kong SAR China) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Chinese (Hong Kong) " "(http://www.transifex.com/projects/p/openstack/language/zh_HK/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/sk/0000775000567000056700000000000012540643114017470 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sk/LC_MESSAGES/0000775000567000056700000000000012540643114021255 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sk/LC_MESSAGES/cinder.po0000664000567000056700000110503112540642606023067 0ustar jenkinsjenkins00000000000000# Slovak translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-08-27 04:58+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Slovak " "(http://www.transifex.com/projects/p/openstack/language/sk/)\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/sw_KE/0000775000567000056700000000000012540643114020063 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sw_KE/LC_MESSAGES/0000775000567000056700000000000012540643114021650 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/sw_KE/LC_MESSAGES/cinder.po0000664000567000056700000110503012540642606023461 0ustar jenkinsjenkins00000000000000# Swahili (Kenya) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Swahili (Kenya) " "(http://www.transifex.com/projects/p/openstack/language/sw_KE/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/km/0000775000567000056700000000000012540643114017462 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/km/LC_MESSAGES/0000775000567000056700000000000012540643114021247 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/km/LC_MESSAGES/cinder.po0000664000567000056700000110477212540642606023074 0ustar jenkinsjenkins00000000000000# Khmer translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-11-26 20:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Khmer " "(http://www.transifex.com/projects/p/openstack/language/km/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ne/0000775000567000056700000000000012540643114017455 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ne/LC_MESSAGES/0000775000567000056700000000000012540643114021242 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ne/LC_MESSAGES/cinder.po0000664000567000056700000110477612540642606023073 0ustar jenkinsjenkins00000000000000# Nepali translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-08-30 22:38+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Nepali " "(http://www.transifex.com/projects/p/openstack/language/ne/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ja/0000775000567000056700000000000012540643114017445 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ja/LC_MESSAGES/0000775000567000056700000000000012540643114021232 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ja/LC_MESSAGES/cinder.po0000664000567000056700000112157412540642606023056 0ustar jenkinsjenkins00000000000000# Japanese translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-08-23 11:22+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: \n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "メッセージ %s に対するメソッドが存在しません。" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "グループ %s は既に存在しています。" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "ボリューム %s 用の iSCSI エクスポートが見つかりません" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "ボリューム %s の存在が確認できません。" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "不正なバックエンドです: %s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "インスタンス %(instance_name)s 用のSR %(sr_ref)s における VDI を作成できません" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "%(topic)s ノードを開始しています (バージョン %(vcs_string)s)" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "データベースにエントリの存在しないサービスを終了します。" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "サービスデータベースオブジェクトが消滅しました。再作成します。" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "モデルサーバへの接続を復旧しました。" #: cinder/service.py:271 msgid "model server went away" msgstr "モデルサーバが消滅しました。" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "FLAGSの一覧:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, fuzzy, python-format msgid "Error connecting via ssh: %s" msgstr "libvirt %s へ接続します。" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "不正なバックエンドです: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "バックエンドは %s です。" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "VBD %s から SRを取得できません。" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "VBD %s から SRを取得できません。" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "VBD %s から SRを取得できません。" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "__call__ を実装しなければなりません" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, fuzzy, python-format msgid "delete called for member %s" msgstr "Secret Key change: ユーザ %s のシークレットキーを更新します。" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Create volume: %s GBのボリュームを作成します。" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "存在しないコンソール %(console_id)s を削除しようとしました" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Create volume: %s GBのボリュームを作成します。" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "エラー %s をキャッチしました。" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "snapshotting: インスタンス %s のスナップショットを取得中" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "ボリュームグループ%sが存在しません。" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Create volume: %s GBのボリュームを作成します。" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "存在しないコンソール %(console_id)s を削除しようとしました" #: cinder/brick/exception.py:112 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "存在しないコンソール %(console_id)s を削除しようとしました" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "存在しないコンソール %(console_id)s を削除しようとしました" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "存在しないコンソール %(console_id)s を削除しようとしました" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Rebooting instance: インスタンス %s を再起動します。" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "ボリューム %s の存在が確認できません。" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "VBD %s から SRを取得できません。" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "Request context を空とすることは非推奨です。" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "受信: %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "コマンド実行(subprocess): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "コマンド実行結果: %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "コマンド(SSH)を実行: %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "内側で発生した例外: %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, fuzzy, python-format msgid "Starting %d workers" msgstr "開始アドレス" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "予備の(fallback)スケジューラを実装する必要があります。" #: cinder/scheduler/driver.py:82 #, fuzzy msgid "Must implement schedule_create_volume" msgstr "予備の(fallback)スケジューラを実装する必要があります。" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "偽のISCSI: %s" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Detach volume: ボリューム %s をデタッチします" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "ip %s に対するメタデータの取得に失敗しました。" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "ボリュームのステータス(status)は available でなければなりません。" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "実行失敗からリカバリーします。%s 回目のトライ。" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "ボリューム %s のエクスポートを解除します。" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "ボリューム %s 用の iSCSI エクスポートが見つかりません" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "%s 個のボリュームを再エクスポートします。" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "ボリューム %s のエキスポートをスキップします。" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "ボリューム %s を削除します。" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "ボリュームはこのノードのローカルではありません。" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "ボリューム %s の削除に成功しました。" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, fuzzy, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "ボリューム %(volume_id)s をインスタンス %(instance_id)s のデバイス %(device)s に接続" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Create volume: %s GBのボリュームを作成します。" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "コマンド実行において予期しないエラーが発生しました。" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, fuzzy, python-format msgid "casted to %s" msgstr "ネストした戻り値: %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "グループ %s は既に存在しています。" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "xvp の開始中にエラー: %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "libvirt %s へ接続します。" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "libvirt %s へ接続します。" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "snapshotting: インスタンス %s のスナップショットを取得中" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "応答 %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "ボリューム %s の存在が確認できません。" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "Sheepdog が動作していません: %s" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "Sheepdog が機能していません" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "応答 %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "ip %s に対するメタデータの取得に失敗しました。" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "インスタンス終了処理を開始します。" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "ボリューム %s 用の iSCSI エクスポートが見つかりません" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "ボリューム %s 用の iSCSI エクスポートが見つかりません" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "NotFound 発生: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "ボリューム %(vol_name)s: サイズ %(vol_size)sG のlvを作成します。" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "xvp の開始中にエラー: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "ボリューム %s の削除に成功しました。" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "ボリューム %s の削除に成功しました。" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "ボリューム %s の削除に成功しました。" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "ボリューム %s の削除に成功しました。" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "キューに再接続しました。" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, fuzzy, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "ボリューム %(volume_id)s をインスタンス %(instance_id)s のデバイス %(device)s に接続" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, fuzzy, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "ボリューム %(volume_id)s をインスタンス %(instance_id)s のデバイス %(device)s に接続" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "Sheepdog が動作していません: %s" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "コマンド: %(cmd)s\n" "終了コード: %(exit_code)s\n" "標準出力: %(stdout)r\n" "標準エラー出力: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, fuzzy, python-format msgid "Using NetApp filer: %s" msgstr "インスタンス %s は実行中です。" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, fuzzy, python-format msgid "Destroyed LUN %s" msgstr "ネストした戻り値: %s" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "ip %s に対するメタデータの取得に失敗しました。" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "ip %s に対するメタデータの取得に失敗しました。" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "ip %s に対するメタデータの取得に失敗しました。" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "ボリューム %s の削除に成功しました。" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "ip %s に対するメタデータの取得に失敗しました。" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, fuzzy, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "ボリュームグループ%sが存在しません。" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "応答 %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "グループ %s は既に存在しています。" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "Deleting user: ユーザ %s を削除します。" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/en_US/0000775000567000056700000000000012540643114020064 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/en_US/LC_MESSAGES/0000775000567000056700000000000012540643114021651 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/en_US/LC_MESSAGES/cinder.po0000664000567000056700000120417012540642606023467 0ustar jenkinsjenkins00000000000000# English (United States) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-08 11:44+0000\n" "Last-Translator: markmc \n" "Language-Team: en_US \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "Arguments dropped when creating context: %s" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "read_deleted can only be one of 'no', 'yes' or 'only', not %r" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "An unknown exception occurred." #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "Exception in string format operation" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "Bad or unexpected response from the storage volume backend API: %(data)s" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "Not authorized." #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "User does not have admin privileges" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Policy doesn't allow %(action)s to be performed." #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "Not authorized for image %(image_id)s." #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Unacceptable parameters." #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "Volume %(volume_id)s is still attached, detach volume first." #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "Failed to load data into json format" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "The results are invalid." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Invalid content type %(content_type)s." #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "%(err)s" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "Service is unavailable at this time." #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "Image %(image_id)s is unacceptable: %(reason)s" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, fuzzy, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "Expected a uuid but received %(uuid)s." #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "Resource could not be found." #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Volume %(volume_id)s could not be found." #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "Volume %(volume_id)s has no metadata with key %(metadata_key)s." #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "Volume type %(volume_type_id)s could not be found." #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "Volume type with name %(volume_type_name)s could not be found." #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "Snapshot %(snapshot_id)s could not be found." #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "deleting volume %(volume_name)s that has snapshot" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "deleting snapshot %(snapshot_name)s that has dependent volumes" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "No target id found for volume %(volume_id)s." #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "Invalid image href %(image_href)s." #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "Image %(image_id)s could not be found." #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Service %(service_id)s could not be found." #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "Host %(host)s could not be found." #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "Scheduler Host Filter %(filter_name)s could not be found." #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "Scheduler Host Weigher %(weigher_name)s could not be found." #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "Could not find binary %(binary)s on host %(host)s." #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "Invalid reservation expiration %(expire)s." #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" "Change would make usage less than 0 for the following resources: " "%(unders)s" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "Quota could not be found" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "Unknown quota resources %(unknown)s." #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "Quota for project %(project_id)s could not be found." #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "Quota class %(class_name)s could not be found." #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "Quota usage for project %(project_id)s could not be found." #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "Quota reservation %(uuid)s could not be found." #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "Quota exceeded for resources: %(overs)s" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "File %(file_path)s could not be found." #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "Volume Type %(id)s already exists." #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "Malformed message body: %(reason)s" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "Could not find config at %(path)s" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Could not find config at %(param)s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "Could not load paste app '%(name)s' from %(path)s" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "No valid host was found. %(reason)s" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "Maximum number of volumes allowed (%(allowed)d) exceeded" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "Maximum number of snapshots allowed (%(allowed)d) exceeded" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "Detected more than one volume with name %(vol_name)s" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "Unknown or unsupported command %(cmd)s" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "Malformed response to command %(cmd)s: %(reason)s" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "Operation failed with status=%(status)s. Full dump: %(data)s" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Failed to copy image to volume: %(reason)s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "Backup %(backup_id)s could not be found." #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "Invalid backup: %(reason)s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, fuzzy, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "Transfer %(transfer_id)s could not be found." #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "Unable to create server object for initiator %(name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "Unable to find server object for initiator %(name)s" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "Unable to find any active VPSA controller" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "Failed to retrieve attachments for volume %(name)s" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "Invalid attachment info for volume %(name)s: %(reason)s" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "Bad HTTP response status %(status)s" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "Bad response from SolidFire API" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "Error in SolidFire API response: data=%(data)s" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "Unable to locate account %(account_name)s on Solidfire device" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "Invalid 3PAR Domain: %(err)s" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "Unknown NFS exception" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "No mounted NFS shares found" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "There is no share which can host %(volume_size)sG" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "Unknown Gluster exception" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "No mounted Gluster shares found" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "Notifying Schedulers of capabilities ..." #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "JSON file representing policy" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "Rule checked when requested rule is not found" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "Starting %(topic)s node (version %(version_string)s)" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Service killed that has no database entry" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "The service database object disappeared, Recreating it." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Recovered model server connection!" #: cinder/service.py:271 msgid "model server went away" msgstr "model server went away" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "Full set of CONF:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "Specify a password or private_key" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "Error connecting via ssh: %s" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Invalid backend: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "backend %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "Could not remove tmpdir: %s" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "Unable to find cert_file : %s" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "Unable to find ca_file : %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "Unable to find key_file : %s" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "Could not bind to %(host)s:%(port)s after trying for 30 seconds" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "Stopping WSGI server." #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "WSGI server has stopped." #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "You must implement __call__" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "limit param must be an integer" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "limit param must be positive" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "offset param must be an integer" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "offset param must be positive" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "marker [%s] not found" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "href %s does not contain version" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "Initializing extension manager." #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "Loaded extension: %s" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "Ext name: %s" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "Ext alias: %s" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "Ext description: %s" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "Ext namespace: %s" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "Ext updated: %s" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "Exception loading extension: %s" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "Loading extension %s" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "Calling extension factory %s" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "osapi_volume_extension is set to deprecated path: %s" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "Failed to load extension %(ext_factory)s: %(exc)s" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "Failed to load extension %(classpath)s: %(exc)s" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "Failed to load extension %(ext_name)s: %(exc)s" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "element is not a child" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "root element selecting a list" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "subclasses must implement construct()!" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "Updating %(resource)s '%(id)s' with '%(update)r'" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "show called for member %s" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "delete called for member %s" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "Delete backup with id: %s" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "Creating new backup %s" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "Incorrect request body format" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "Creating backup of volume %(volume_id)s in container %(container)s" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "Restoring backup %(backup_id)s (%(body)s)" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "Restoring backup %(backup_id)s to volume %(volume_id)s" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "Snapshot not found." #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "cannot understand XML" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "Host '%s' could not be found." #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "Invalid status: '%s'" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "Invalid update setting: '%s'" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "Setting host %(host)s to %(state)s." #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "Describe-resource is admin only functionality" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "Host not found" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "Quota limit must be -1 or greater." #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "Request body empty" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "Request body and URI mismatch" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "Request body contains too many items" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "No image_name was specified in request." #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 #, fuzzy msgid "Listing volume transfers" msgstr "Listing volume transfers" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Creating new volume transfer %s" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Creating transfer of volume %s" #: cinder/api/contrib/volume_transfer.py:183 #, fuzzy, python-format msgid "Accepting volume transfer %s" msgstr "Accepting volume transfer %s" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Accepting transfer %s" #: cinder/api/contrib/volume_transfer.py:217 #, fuzzy, python-format msgid "Delete transfer with id: %s" msgstr "Delete transfer with id: %s" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Caught error: %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s returned with HTTP %(status)d" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "Request is too large." #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "Must specify an ExtensionManager class" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "Extended resource: %s" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "Extension %(ext_name)s extending resource: %(collection)s" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "cannot understand JSON" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "too many body keys" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "Exception handling resource: %s" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "Fault thrown: %s" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "HTTP exception thrown: %s" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "Empty body provided in request" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "Unrecognized Content-Type provided in request" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "No Content-Type provided in request" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "There is no such action: %s" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "Malformed request body" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "Unsupported Content-Type" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "Malformed request url" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "%(url)s returned a fault: %(e)s" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "This request was rate-limited." #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "snapshot does not exist" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "Metadata item was not found" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "Delete snapshot with id: %s" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "Create snapshot from volume %s" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "Invalid value '%s' for force. " #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "volume does not exist" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "vol=%s" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "Delete volume with id: %s" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "Invalid imageRef provided." #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Create volume of %s GB" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "Removing options '%(bad_options)s' from query" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "Removing options '%s' from query" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "Backup status must be available or error" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "Volume to be backed up must be available" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "Backup status must be available" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "Backup to be restored has invalid size" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "Creating volume of %(size)s GB for restore of backup %(backup_id)s" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "Volume to be restored to must be available" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "unsupported compression algorithm: %s" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "_create_container started, container: %(container)s,backup: %(backup_id)s" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "_generate_swift_object_name_prefix: %s" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "generated object list: %s" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "_write_metadata finished" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "_read_metadata finished (%s)" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "volume size %d is invalid." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "reading chunk of data from volume" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "not compressing data" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "About to put_object" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "swift MD5 for %(object_name)s: %(etag)s" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "backup MD5 for %(object_name)s: %(md5)s" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "Calling eventlet.sleep(0)" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "backup %s finished." #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "v1 swift volume backup restore of %s started" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "metadata_object_names = %s" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "decompressing data using %s algorithm" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "v1 swift volume backup restore of %s finished" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "Restoring swift backup version %s" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "No support to restore swift backup version %s" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "restore %(backup_id)s to %(volume_id)s finished." #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "swift error while listing objects, continuing with delete" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "swift error while deleting object %s, continuing with delete" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "deleted swift object: %(swift_object_name)s in container: %(container)s" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "delete %s finished" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Failed to create iscsi target for volume %(volume_id)s." #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "Failed to remove iscsi target for volume %(volume_id)s." #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "Failed to attach iSCSI target for volume %(volume_id)s." #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "Creating iscsi_target for: %s" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "Removing iscsi_target for: %s" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "valid iqn needed for show_target" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "Removing iscsi_target for volume: %s" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "Creating iscsi_target for volume: %s" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "Removing iscsi_target: %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "Failed to add initiator iqn %s to target" #: cinder/brick/local_dev/lvm.py:75 #, fuzzy msgid "Error creating Volume Group" msgstr "Error creating Volume Group" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, fuzzy, python-format msgid "StdOut :%s" msgstr "StdOut :%s" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, fuzzy, python-format msgid "StdErr :%s" msgstr "StdErr :%s" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Unable to locate Volume Group %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Unable to find VG: %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "Id not in sort_keys; is sort_keys unique?" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "Unknown sort direction, must be 'desc' or 'asc'" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "Use of empty request context is deprecated" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "Unrecognized read_deleted value '%s'" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Volume must be available" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "version should be an integer" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "Upgrade DB using Essex release first." #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "Exception while creating table." #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "Downgrade from initial Cinder install is unsupported." #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "Table |%s| not created!" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "quota_classes table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "quota_usages table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "reservations table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 #, fuzzy msgid "Exception while creating table 'volume_glance_metadata'" msgstr "Exception while creating table 'volume_glance_metedata'" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "volume_glance_metadata table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "backups table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "snapshot_metadata table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 #, fuzzy msgid "transfers table not dropped" msgstr "transfers table not dropped" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, fuzzy, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "'qemu-img info' parsing failed." #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "fmt=%(fmt)s backed by:%(backing_file)s" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "Converted to %(f1)s, but format is now %(f2)s" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "Original exception being dropped: %s" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "Snapshot list encountered but no header found!" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "Could not release the acquired lock `%s`" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "Deprecated: %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "Error loading logging config %(log_config)s: %(err_msg)s" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "syslog facility must be one of: %s" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "Fatal call to deprecated config: %(msg)s" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "task run outlasted interval by %s sec" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "in fixed duration looping call" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "Dynamic looping call sleeping for %.02f seconds" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "in dynamic looping call" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "Running periodic task %(full_task_name)s" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "Error during %(full_task_name)s: %(e)s" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "Failed to understand rule %(match)r" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "Inheritance-based rules are deprecated; update _check_%s" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "No handler for matches of kind %s" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "Got unknown keyword args to utils.execute: %r" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Running cmd (subprocess): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Result was %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "%r failed. Retrying." #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Running cmd (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "Environment not supported over SSH" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "process_input not supported over SSH" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "Caught %s, exiting" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "Parent process has died unexpectedly, exiting" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "Unhandled exception" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "Forking too fast, sleeping" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "Started child %d" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "Starting %d workers" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "Child %(pid)d killed by signal %(sig)d" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "Child %(pid)s exited with status %(code)d" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "pid %d not in child list" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "Caught %s, stopping children" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "Waiting on %d children to exit" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "Invalid Parameter: Unicode is not supported by the current database." #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "DB exception wrapped." #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "Got mysql server has gone away: %s" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "SQL connection failed. %s attempts left." #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "Must implement a fallback schedule" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "Must implement schedule_create_volume" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "Invalid value for 'scheduler_max_attempts', must be >=1" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "Ignoring %(service_name)s service update from %(host)s" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "Received %(service_name)s service update from %(host)s." #: cinder/scheduler/host_manager.py:297 #, fuzzy, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "volume service is down or disabled. (host: %s)" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "Failed to schedule_%(method)s: %(ex)s" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "Could not stat scheduler options file %(filename)s: '%(e)s'" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "Free capacity not set: volume node info collection broken." #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "FAKE ISCSI: %s" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "LoggingVolumeDriver: %s" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "Faking execution of cmd (subprocess): %s" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "Faked command matched %s" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "Faked command raised an exception %s" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "Volume not found for instance %(instance_id)s." #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" "The following migrations are missing a downgrade:\n" "\t%s" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "unrecognized argument %s" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "Run CLI command: %s" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "Given data: %s" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "Result data: %s" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "Invalid input" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "volume: %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "Authentication error" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "Authorization error" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "Item not found" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "Doing %(method)s on %(relative_url)s" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "Body: %s" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => code %(http_status)s" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => code %(http_status)s" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "Unexpected status code" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "Decoding JSON: %s" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 #, fuzzy msgid "Volume in unexpected state" msgstr "Volume in unexpected state" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "status must be available" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Failed to create transfer record for %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" #: cinder/transfer/api.py:182 #, fuzzy, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "Failed to update quota donating volumetransfer id %s" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "Failed to update quota for deleting volume" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "Volume still has %d dependent snapshots" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "Searching by: %s" #: cinder/volume/api.py:353 msgid "already attached" msgstr "already attached" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "Volume status must be available to reserve" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "must be available" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "Volume Snapshot status must be available or error" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "Metadata property key blank" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "Metadata property key greater than 255 characters" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "Metadata property value greater than 255 characters" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "Volume status must be available/in-use." #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "Volume status is in-use." #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "Recovering from a failed execute. Try number %s" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "copy_image_to_volume %s." #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "copy_volume_to_image %s." #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "volume %s: removing export" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "ISCSI provider_location not stored, using discovery" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Could not find iSCSI export for volume %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "ISCSI Discovery: Found %s" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "Driver must implement initialize_connection" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "Skipping remove_export. No iscsi_target provisioned for volume: %s" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "Detected inconsistency in provider_location id" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "Symbolic link %s not found" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "Skipping ensure_export. No iscsi_target provision for volume: %s" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "Driver path %s is deprecated, update your configuration to the new path." #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Re-exporting %s volumes" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "volume %s stuck in a downloading state" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "volume %s: skipping export" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "Resuming any in progress delete operations" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "Resuming delete on volume: %s" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volume %s: deleting" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "volume is not local to this node" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "Failed to update usages deleting volume" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volume %s: deleted successfully" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "snapshot %s: creating" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "snapshot %s: created successfully" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "snapshot %s: deleting" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "Failed to update usages deleting snapshot" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "snapshot %s: deleted successfully" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "being attached by another instance" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "Updating volume status" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "Notification {%s} received" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "DB error: %s" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "id cannot be None" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "name cannot be None" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "Performing secure delete on volume: %s" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" "Default volume type is not found, please check default_volume_type " "config: %s" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "Creating clone of volume: %s" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "Error running SSH command: %s" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "There's no Gluster config file configured (%s)" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "Gluster config file at %(config)s doesn't exist" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "mount.glusterfs is not installed" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "casted to %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "Volume %s does not have provider_location specified, skipping" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "Exception during mounting %s" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "snapshot: %s not found, skipping delete operations" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "%s is already mounted" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "There's no NFS config file configured (%s)" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "NFS config file at %(config)s doesn't exist" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "error opening rbd image %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "error connecting to ceph cluster" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "error refreshing volume stats" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "connection data: %s" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "Not stored in rbd" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "Blank components" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "Not an rbd snapshot" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "not cloneable: %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "%s is in a different ceph cluster" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Unable to open image %(loc)s: %(err)s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "Value required for 'scality_sofs_config'" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "Cannot access 'scality_sofs_config': %s" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "Cannot execute /sbin/mount.sofs" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "Cannot mount Scality SOFS, check syslog for errors" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "Cannot find volume dir for Scality SOFS at '%s'" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "Sheepdog is not working: %s" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "Sheepdog is not working" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "Payload for SolidFire API call: %s" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "Call to json.loads() raised an exception: %s" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "Results of SolidFire API call: %s" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "Clone operation encountered: %s" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "Waiting for outstanding operation before retrying snapshot: %s" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "Detected xDBVersionMismatch, retry %s of 5" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "API response: %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "Found solidfire account: %s" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "solidfire account: %s does not exist, create it..." #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "Failed to get model update from clone" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "More than one valid preset was detected, using %s" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "Volume %s, not found on SF Cluster." #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "Found %(count)s volumes mapped to id: %(uuid)s." #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "Enter SolidFire delete_volume..." #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "Account for Volume ID %s was not found on the SolidFire Cluster!" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "Volume ID %s was not found on the SolidFire Cluster!" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "Leaving SolidFire delete_volume" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "Executing SolidFire ensure_export..." #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "Executing SolidFire create_export..." #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "Updating cluster status info" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "Failed to get updated stats" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "Sending %(method)s to %(url)s. Body \"%(body)s\"" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "Operation completed. %(data)s" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "Volume %(name)s could not be found. It might be already deleted" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "Attach properties: %(properties)s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Could not find iSCSI export for volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "Cannot find device number for volume %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "Found iSCSI endpoint: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "Entering create_volume." #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "Create Volume: %(volume)s Size: %(size)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "Create Volume: %(volume)s Storage type: %(storage_type)s" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "Create Volume: %(volumename)s Return code: %(rc)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "Entering create_volume_from_snapshot." #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "Entering create_cloned_volume." #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "Entering delete_volume." #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "Delete Volume: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "Volume %(name)s not found on the array. No volume to delete." #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "Delete Volume: %(name)s DeviceID: %(deviceid)s" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "Entering create_snapshot." #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "Create snapshot: %(snapshot)s: volume: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "Cannot find Replication Service to create snapshot for volume %s." #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, fuzzy, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "Error Create Snapshot: (snapshot)s Volume: %(volume)s Error: %(errordesc)s" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "Entering delete_snapshot." #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "Delete Snapshot: %(snapshot)s: volume: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "Error mapping volume %s." #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "ExposePaths for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "Error unmapping volume %s." #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "HidePaths for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "Error mapping volume %(vol)s. %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "AddMembers for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "Error unmapping volume %(vol)s. %(error)s" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "RemoveMembers for volume %s completed successfully." #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "Map volume: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "Cannot find Controller Configuration Service for storage system %s" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "Unmap volume: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "Volume %s is not mapped. No volume to unmap." #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "Initialize connection: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "Volume %s is already mapped." #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "Terminate connection: %(volume)s" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "Storage type not found." #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "Found Masking View: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "Masking View not found." #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "Ecom user not found." #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "Ecom server not found." #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "Cannot connect to ECOM server" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "Found Replication Service: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "Found Storage Configuration Service: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "Found Controller Configuration Service: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "Found Storage Hardware ID Management Service: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "Pool %(storage_type)s is not found." #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "Storage system not found for pool %(storage_type)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "Pool: %(pool)s SystemName: %(systemname)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "Pool name: %(poolname)s System name: %(systemname)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "Volume %(volumename)s not found on the array." #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "Volume name: %(volumename)s Volume instance: %(vol_instance)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "Source: %(volumename)s Target: %(snapshotname)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "Error finding %s." #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "Found %(name)s: %(initiator)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "Available device number on %(storage)s: %(device)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "Device number not found for volume %(volumename)s %(vol_instance)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "Device info: %(data)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "Found Storage Processor System: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "Error finding Storage Hardware ID Service." #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "Error finding Target WWNs." #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "Add target WWN: %s." #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "Target WWNs: %s." #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "ISCSI properties: %s" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "create_export: Volume: %(volume)s Device ID: %(device_id)s" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, fuzzy, python-format msgid "XML exception reading parameter: %s" msgstr "XML exception reading parameter: %s" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, fuzzy, python-format msgid "No configuration found for service: %s" msgstr "No configuration found for service: %s" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "HDP not found: %s" #: cinder/volume/drivers/hds/hds.py:289 #, fuzzy, python-format msgid "iSCSI portal not found for service: %s" msgstr "iSCSI portal not found for service: %s" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, fuzzy, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "delete lun %(lun)s on %(name)s" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, fuzzy, python-format msgid "LUN %s is deleted." msgstr "LUN %s is deleted." #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "%s is not set" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "enter: do_setup" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "leave: do_setup" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "enter: check_for_setup_error" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "leave: check_for_setup_error" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "ensure_export: Volume %s not found on storage" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "enter: initialize_connection: volume %(vol)s with connector %(conn)s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "initialize_connection: Failed to get attributes for volume %s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "Did not find expected column name in lsvdisk: %s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "initialize_connection: Missing volume attribute for volume %s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "initialize_connection: Did not find a preferred node for volume %s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "enter: terminate_connection: volume %(vol)s with connector %(conn)s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "leave: terminate_connection: volume %(vol)s with connector %(conn)s" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "create_volume_from_snapshot: Source and destination size differ." #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "create_cloned_volume: Source and destination size differ." #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "Could not get pool data from the storage" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "WWPN on node %(node)s: %(wwpn)s" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "System does not support compression" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "If compression is set to True, rsize must also be set (not equal to -1)" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "leave: _create_vdisk: volume %s " #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "No metadata property %(prop)s defined for the LUN %(name)s" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "Using NetApp filer: %s" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "Success getting LUN list from server" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "Created LUN with name %s" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "No entry in LUN table for volume/snapshot %(name)s." #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "Destroyed LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "Mapped LUN %(name)s to the initiator %(initiator_name)s" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Failed to get LUN target details for the LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Failed to get target portal for the LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Failed to get target IQN for the LUN %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "Snapshot %s deletion successful" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "Unmapped LUN %(name)s from the initiator %(initiator_name)s" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "Error mapping lun. Code :%(code)s, Message:%(message)s" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "Error unmapping lun. Code :%(code)s, Message:%(message)s" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "Object is not a NetApp LUN." #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "No iscsi service found for vserver %s" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "Cloned LUN with new name %s" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Failed to get vol with required size for volume: %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "Clone operation with src %(name)s and dest %(new_name)s completed" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "Clone operation with src %(name)s and dest %(new_name)s failed" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "Converted to raw, but format is now %s" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "No interface found on cluster for ip %s" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "No storage path found for export path %s" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "Cloning with src %(src_path)s, dest %(dest_path)s" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "Volume %s does not exist in Nexenta SA" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "Ignored target creation error \"%s\" while ensuring export" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "Sending JSON data: %s" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "No headers in server response" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "Bad response from server" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "Auto switching to HTTPS connection to %s" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "Got response: %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "Specify san_password or san_private_key" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "san_ip must be set" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "Cannot parse list-view output: %s" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "LUID not found for %(zfs_poolname)s. Output=%(out)s" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "CPG (%s) doesn't exist on array" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "Volume (%s) already exists on array" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "CLIQ command returned %s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "Volume info: %(volume_name)s => %(volume_attributes)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "local_path not supported" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "Creating folder %s " #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/eu_ES/0000775000567000056700000000000012540643114020053 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/eu_ES/LC_MESSAGES/0000775000567000056700000000000012540643114021640 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/eu_ES/LC_MESSAGES/cinder.po0000664000567000056700000110502612540642606023456 0ustar jenkinsjenkins00000000000000# Basque (Spain) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-11-26 20:45+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Basque (Spain) " "(http://www.transifex.com/projects/p/openstack/language/eu_ES/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/id/0000775000567000056700000000000012540643114017447 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/id/LC_MESSAGES/0000775000567000056700000000000012540643114021234 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/id/LC_MESSAGES/cinder.po0000664000567000056700000110500412540642606023046 0ustar jenkinsjenkins00000000000000# Indonesian translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Indonesian " "(http://www.transifex.com/projects/p/openstack/language/id/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ko_KR/0000775000567000056700000000000012540643114020060 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ko_KR/LC_MESSAGES/0000775000567000056700000000000012540643114021645 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ko_KR/LC_MESSAGES/cinder.po0000664000567000056700000110500612540642606023461 0ustar jenkinsjenkins00000000000000# Korean (South Korea) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-08 11:44+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Korean (Korea) " "(http://www.transifex.com/projects/p/openstack/language/ko_KR/)\n" "Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/el/0000775000567000056700000000000012540643114017453 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/el/LC_MESSAGES/0000775000567000056700000000000012540643114021240 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/el/LC_MESSAGES/cinder.po0000664000567000056700000110507512540642606023062 0ustar jenkinsjenkins00000000000000# Greek translations for cinder. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: # Efstathios Iosifidis , 2014 msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2014-03-13 05:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Greek " "(http://www.transifex.com/projects/p/openstack/language/el/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "%(err)s" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/es_MX/0000775000567000056700000000000012540643114020066 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/es_MX/LC_MESSAGES/0000775000567000056700000000000012540643114021653 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/es_MX/LC_MESSAGES/cinder.po0000664000567000056700000110503212540642606023466 0ustar jenkinsjenkins00000000000000# Spanish (Mexico) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-08-30 09:12+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Spanish (Mexico) " "(http://www.transifex.com/projects/p/openstack/language/es_MX/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/uk/0000775000567000056700000000000012540643114017472 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/uk/LC_MESSAGES/0000775000567000056700000000000012540643114021257 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/uk/LC_MESSAGES/cinder.po0000664000567000056700000110645612540642606023105 0ustar jenkinsjenkins00000000000000# Ukrainian translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2011-08-23 11:21+0000\n" "Last-Translator: Thierry Carrez \n" "Language-Team: Ukrainian \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "без порядку для повідомлень: %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Створити розділ на %s ГБ" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Створити розділ на %s ГБ" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Створити розділ на %s ГБ" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Створити розділ на %s ГБ" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "отримано %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Від'єднати том %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Створити розділ на %s ГБ" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Створити розділ на %s ГБ" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Неочікувана помилка при виконанні команди." #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "Від'єднати том %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "відповідь %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "відповідь %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Від'єднати том %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Оновлено з'єднання до черги" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "відповідь %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/es/0000775000567000056700000000000012540643114017462 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/es/LC_MESSAGES/0000775000567000056700000000000012540643114021247 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/es/LC_MESSAGES/cinder.po0000664000567000056700000111503212540642606023063 0ustar jenkinsjenkins00000000000000# Spanish translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-03-10 06:08+0000\n" "Last-Translator: Oscar Rosario \n" "Language-Team: Spanish \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "Una excepcion desconocida ha ocurrido" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "No Autorizado" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "El usuario no tiene privilegios de administrador" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "no hay método para el mensaje: %s" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Parametros inaceptables" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "Fallo al ingresar informacion en formato json" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "La petición es inválida." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Tipo de contenido invalido %(content_type)s." #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "El servicio no esta disponible en este momento" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "el grupo %s ya existe" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Imposible encontrar volumen %s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "backend inválido: %s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" "No es posible crear el VDI en SR %(sr_ref)s para la instancia " "%(instance_name)s" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "Una excepcion desconocida ha ocurrido" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "Una excepcion desconocida ha ocurrido" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Se detuvo un servicio sin entrada en la base de datos" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "El servicio objeto de base de datos ha desaparecido, recreándolo." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "Recuperada la conexión al servidor de modelos." #: cinder/service.py:271 msgid "model server went away" msgstr "el servidor de modelos se ha ido" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Conjunto completo de opciones (FLAGS):" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, fuzzy, python-format msgid "Error connecting via ssh: %s" msgstr "Conectando a libvirt: %s" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "backend inválido: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "backend %s" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, fuzzy, python-format msgid "delete called for member %s" msgstr "Cambio de clave secreta para el usuario %s" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Crear volumen de %s GB" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Crear volumen de %s GB" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Capturado error: %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "instancia %s: creando snapshot" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "el grupo de volumenes %s no existe" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Crear volumen de %s GB" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "El estado del volumen debe estar disponible" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "El estado del volumen debe estar disponible" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "El estado del volumen debe estar disponible" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "El estado del volumen debe estar disponible" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "La petición es inválida." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Fallo al generar metadatos para la ip %s" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Reiniciando instancia %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Imposible encontrar volumen %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "El uso de una petición de contexto vacía está en desuso" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "El estado del volumen debe estar disponible" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "recibido %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Ejecutando cmd (subprocesos): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "El resultado fue %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "corriendo cmd (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Excepción interna: %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, fuzzy, python-format msgid "Starting %d workers" msgstr "configurando la red del host" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "Debe de implementar un horario de reserva" #: cinder/scheduler/driver.py:82 #, fuzzy msgid "Must implement schedule_create_volume" msgstr "Debe de implementar un horario de reserva" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "Falso ISCSI: %s" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "Captura no valida" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Desasociar volumen %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "El estado del volumen debe estar disponible" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "El estado del volumen debe estar disponible" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "El estado del volumen debe estar disponible" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "Recuperandose de una ejecución fallida. Intenta el número %s" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "volumen %s: eliminando exportación" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Exportando de nuevo los volumenes %s" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "volume %s: saltando exportación" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "volumen %s: eliminando" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "Volumen no local a este nodo" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "volumen %s: eliminado satisfactoriamente" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Crear volumen de %s GB" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Error inesperado mientras el comando se ejecutaba" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "el grupo %s ya existe" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "Desasociar volumen %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "Conectando a libvirt: %s" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "Conectando a libvirt: %s" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "Captura no valida" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "respuesta %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Imposible encontrar volumen %s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "respuesta %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Fallo al suspender la instancia" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Imposible encontrar SR en VBD %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, fuzzy, python-format msgid "Found iSCSI endpoint: %s" msgstr "No encontrado: %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "volume %(vol_name)s: creando lv del tamaño %(vol_size)sG" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Desasociar volumen %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "volumen %s: eliminado satisfactoriamente" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "volumen %s: eliminado satisfactoriamente" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "volumen %s: eliminado satisfactoriamente" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "volumen %s: eliminado satisfactoriamente" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Reconectado a la cola" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "No se encuentra la dirección del enlace local.:%s" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Comando: %(cmd)s\n" "Código de salida: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, fuzzy, python-format msgid "Using NetApp filer: %s" msgstr "Ejecutando instancias: %s" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "volumen %s: eliminado satisfactoriamente" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Fallo al generar metadatos para la ip %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, fuzzy, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "el grupo de volumenes %s no existe" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "respuesta %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "el grupo %s ya existe" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "Borrando usuario %s" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/ru/0000775000567000056700000000000012540643114017501 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ru/LC_MESSAGES/0000775000567000056700000000000012540643114021266 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/ru/LC_MESSAGES/cinder.po0000664000567000056700000114545212540642606023113 0ustar jenkinsjenkins00000000000000# Russian translation for cinder # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the cinder package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: cinder\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2012-03-25 09:34+0000\n" "Last-Translator: Eugene Marshal \n" "Language-Team: Russian \n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "Обнаружено неизвестное исключение." #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "Не авторизировано." #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "Пользователь не имеет административных привилегий" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "Политика не допускает выполнения %(action)s." #: cinder/exception.py:137 #, fuzzy, python-format msgid "Not authorized for image %(image_id)s." msgstr "Ядро не найдено для образа %(image_id)s." #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "Недопустимые параметры." #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, fuzzy, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "Том %(volume_id)s никуда не присоединён" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "Ошибка загрузки данных в формат json" #: cinder/exception.py:167 #, fuzzy msgid "The results are invalid." msgstr "Недопустимый запрос." #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "Недопустимый тип содержимого %(content_type)s." #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "В данный момент служба недоступна." #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "Образ %(image_id)s недопустим: %(reason)s" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "Ресурс не может быть найден." #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "Том %(volume_id)s не найден." #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "Том %(volume_id)s не имеет метаданных с ключом %(metadata_key)s." #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, fuzzy, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "Копия %(instance_id)s не имеет метаданных с ключом %(metadata_key)s." #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "Тип тома %(volume_type_id)s не может быть найден." #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "Тип тома под названием %(volume_type_name)s не может быть найден." #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" "Тип тома %(volume_type_id)s не имеет дополнительных особенностей с ключом" " %(extra_specs_key)s." #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "Снимок %(snapshot_id)s не может быть найден." #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "удаление тома %(volume_name)s, который имеет снимок" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "Недопустимый образ href %(image_href)s." #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "Образ %(image_id)s не найден." #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "Служба %(service_id)s не найдена." #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "Узел %(host)s не найден." #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, fuzzy, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "Узел сompute %(host)s не найден." #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "Квота не найдена" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "Квота проекта %(project_id)s не найдена." #: cinder/exception.py:340 #, fuzzy, python-format msgid "Quota class %(class_name)s could not be found." msgstr "Класс %(class_name)s не найден: %(exception)s" #: cinder/exception.py:344 #, fuzzy, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "Квота проекта %(project_id)s не найдена." #: cinder/exception.py:348 #, fuzzy, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "Пользователь %(user_id)s не найден." #: cinder/exception.py:352 #, fuzzy, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "Превышена квота" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "Файл %(file_path)s не может быть найден." #: cinder/exception.py:365 #, fuzzy, python-format msgid "Volume Type %(id)s already exists." msgstr "Тип тома %(name)s уже существует." #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "Неправильное тело сообщения: %(reason)s" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "Невозможно найти конфигурацию по адресу %(path)s" #: cinder/exception.py:385 #, fuzzy, python-format msgid "Could not find parameter %(param)s" msgstr "Невозможно найти конфигурацию по адресу %(path)s" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "Допустимый узел не найден. %(reason)s" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" "Невозможно создать volume_type с именем %(name)s и спецификациями " "%(extra_specs)s" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, fuzzy, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "Неправильное тело сообщения: %(reason)s" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, fuzzy, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "Невозможно найти том %s" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, fuzzy, python-format msgid "Backup %(backup_id)s could not be found." msgstr "Группа LDAP %(group_id)s не найдена." #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, fuzzy, python-format msgid "Invalid backup: %(reason)s" msgstr "Недопустимый внутренний интерфейс: %s" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, fuzzy, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "Образ %(image_id)s не найден." #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, fuzzy, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "Невозможно создать VDI на SR %(sr_ref)s для копии %(instance_name)s" #: cinder/exception.py:615 #, fuzzy, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "Невозможно найти узел для копии %s" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, fuzzy, python-format msgid "Bad HTTP response status %(status)s" msgstr "Недопустимое состояние сервера: %(status)s" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 #, fuzzy msgid "Unknown NFS exception" msgstr "Обнаружено неизвестное исключение." #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 #, fuzzy msgid "Unknown Gluster exception" msgstr "Обнаружено неизвестное исключение." #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "Превышена квота для %(pid)s, попытка создания тома %(size)sG" #: cinder/service.py:100 #, fuzzy, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "Запуск узла сети (версия %(vcs_string)s) %(topic)s" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "Служба завершила работу из-за отсутствия записи базы данных" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "Объект сервиса в базе данных отсутствует, Повторное создание." #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 #, fuzzy msgid "Full set of CONF:" msgstr "Полный набор ФЛАГОВ:" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 #, fuzzy msgid "Specify a password or private_key" msgstr "Задайте san_password или san_private_key" #: cinder/utils.py:229 #, fuzzy, python-format msgid "Error connecting via ssh: %s" msgstr "Подключение к libvirt: %s" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "Недопустимый внутренний интерфейс: %s" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "внутренний интерфейс %s" #: cinder/utils.py:699 #, fuzzy, python-format msgid "Could not remove tmpdir: %s" msgstr "Ошибка удаления контейнера: %s" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, fuzzy, python-format msgid "Unable to find cert_file : %s" msgstr "Невозможно найти адрес %r" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, fuzzy, python-format msgid "Unable to find ca_file : %s" msgstr "Невозможно найти адрес %r" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, fuzzy, python-format msgid "Unable to find key_file : %s" msgstr "Невозможно найти адрес %r" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "Выполняется останов сервера WSGI." #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "Сервер WSGI был остановлен." #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "маркер [%s] не найден" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "href %s не содержит версию" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "Инициализация диспетчера расширений." #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "Загруженное расширение: %s" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "Загрузка расширения %s" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "Ошибка загрузки расширения %(ext_factory)s: %(exc)s" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "Ошибка загрузки расширения %(ext_name)s: %(exc)s" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "элемент не является потомком" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, fuzzy, python-format msgid "Delete backup with id: %s" msgstr "Удалить снимок с идентификатором: %s" #: cinder/api/contrib/backups.py:218 #, fuzzy, python-format msgid "Creating new backup %s" msgstr "Создание SR %s" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "Неправильный формат тела запроса" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 #, fuzzy msgid "Snapshot not found." msgstr "Узел не найден" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, fuzzy, python-format msgid "Host '%s' could not be found." msgstr "Узел %(host)s не найден." #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "Недопустимое состояние: '%s'" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "Недопустимый параметр обновления: '%s'" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "Перевод узла %(host)s в %(state)s." #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "Узел не найден" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 #, fuzzy msgid "Request body empty" msgstr "Неправильный формат тела запроса" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "Тело запроса и URI не совпадают" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "Тело запроса содержит избыточное количество объектов" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 #, fuzzy msgid "Listing volume transfers" msgstr "Обновление состояния узла" #: cinder/api/contrib/volume_transfer.py:147 #, fuzzy, python-format msgid "Creating new volume transfer %s" msgstr "Создать снимок тома %s" #: cinder/api/contrib/volume_transfer.py:162 #, fuzzy, python-format msgid "Creating transfer of volume %s" msgstr "Выполнена попытка удаления несуществующей консоли %(console_id)s." #: cinder/api/contrib/volume_transfer.py:183 #, fuzzy, python-format msgid "Accepting volume transfer %s" msgstr "Обновление состояния узла" #: cinder/api/contrib/volume_transfer.py:196 #, fuzzy, python-format msgid "Accepting transfer %s" msgstr "Обновление состояния узла" #: cinder/api/contrib/volume_transfer.py:217 #, fuzzy, python-format msgid "Delete transfer with id: %s" msgstr "Удалить том с идентификатором: %s" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "Обнаружена ошибка: %s" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "%(url)s возвратил с HTTP %(status)d" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "Расширенный ресурс: %s" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" "Расширение %(ext_name)s: Невозможно расширить ресурс %(collection)s: Нет " "такого ресурса" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "Расширение %(ext_name)s расширение ресурса: %(collection)s" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, fuzzy, python-format msgid "Exception handling resource: %s" msgstr "Расширенный ресурс: %s" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "Пустое тело предоставлено в запросе" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "В запросе предоставлен не распознанный тип-содержимого" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "Тип содержимого не предоставлен в запросе" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "Неправильное тело запроса" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "Не поддерживаемый тип содержимого" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "Неправильный запрос url" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "%(url)s возвратил ошибку: %(e)s" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" "Только %(value)s %(verb)s запрос(ов) могут быть сделаны для %(uri)s, " "каждые %(unit_string)s." #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 #, fuzzy msgid "snapshot does not exist" msgstr "Копия не существует" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "Элемент метаданных не найден" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "Удалить снимок с идентификатором: %s" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "Создать снимок из тома %s" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 #, fuzzy msgid "volume does not exist" msgstr "Сервер не существует" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "vol=%s" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "Удалить том с идентификатором: %s" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "Создание раздела %s ГБ" #: cinder/api/v1/volumes.py:504 #, fuzzy, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "Удаление параметров '%(unk_opt_str)s' из запроса" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, fuzzy, python-format msgid "Removing options '%s' from query" msgstr "Удаление параметров '%(unk_opt_str)s' из запроса" #: cinder/backup/api.py:66 #, fuzzy msgid "Backup status must be available or error" msgstr "Состояние тома должно быть доступно" #: cinder/backup/api.py:115 #, fuzzy msgid "Volume to be backed up must be available" msgstr "Состояние тома должно быть доступно" #: cinder/backup/api.py:150 #, fuzzy msgid "Backup status must be available" msgstr "Состояние тома должно быть доступно" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 #, fuzzy msgid "Volume to be restored to must be available" msgstr "Состояние тома должно быть доступно" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, fuzzy, python-format msgid "unsupported compression algorithm: %s" msgstr "неподдерживаемый раздел: %s" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, fuzzy, python-format msgid "generated object list: %s" msgstr "Ожидался объект типа: %s" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, fuzzy, python-format msgid "volume size %d is invalid." msgstr "Недопустимый запрос." #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, fuzzy, python-format msgid "delete %s finished" msgstr "_удалить: %s" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, fuzzy, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "Выполнена попытка удаления несуществующей консоли %(console_id)s." #: cinder/brick/exception.py:112 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "Выполнена попытка удаления несуществующей консоли %(console_id)s." #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, fuzzy, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Выполнена попытка удаления несуществующей консоли %(console_id)s." #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, fuzzy, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "Выполнена попытка удаления несуществующей консоли %(console_id)s." #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, fuzzy, python-format msgid "Removing iscsi_target: %s" msgstr "Перезагрузка копии %s" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, fuzzy, python-format msgid "Unable to locate Volume Group %s" msgstr "Невозможно найти том %s" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, fuzzy, python-format msgid "Unable to find VG: %s" msgstr "Ошибка поиска vbd для vdi %s" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "Нераспознанное значение read_deleted '%s'" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 #, fuzzy msgid "Volume must be available" msgstr "Состояние тома должно быть доступно" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "Таблица |%s| не создана!" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "Ошибка анализа 'qemu-img info'." #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, fuzzy, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "Преобразование в необработанный, но текущий формат %s" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, fuzzy, python-format msgid "Original exception being dropped: %s" msgstr "Исходное исключение было сброшено" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, fuzzy, python-format msgid "Deprecated: %s" msgstr "_удалить: %s" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, fuzzy, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "Класс %(fullname)s устарел: %(msg)s" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "Запуск повторяющегося задания %(full_task_name)s" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "Ошибка во время %(full_task_name)s: %(e)s" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "Приняты неизвестные аргументы ключевого слова для utils.execute: %r" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "Выполнение команды (субпроцесс): %s" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "Результат %s" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "%r ошибка. Выполняется повтор." #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "Выполнение команды (SSH): %s" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "Среда не поддерживается с использованием SSH" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "process_input не поддерживается с использованием SSH" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, fuzzy, python-format msgid "Caught %s, exiting" msgstr "снимок %s: удаление" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 #, fuzzy msgid "Unhandled exception" msgstr "Вложенное исключение: %s" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, fuzzy, python-format msgid "Starting %d workers" msgstr "установка сетевого узла" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, fuzzy, python-format msgid "SQL connection failed. %s attempts left." msgstr "Ошибка соединения с SQL (%(connstring)s). %(attempts)d попыток осталось." #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, fuzzy, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "Принято служебное обновление для %(service_name)s от %(host)s." #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "Принято служебное обновление для %(service_name)s от %(host)s." #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "Ошибка schedule_%(method)s: %(ex)s" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "LoggingVolumeDriver: %s" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "Имитация выполнения команды (субпроцесс): %s" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "Имитация команды привела к исключению %s" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "Ответ на имитацию команды в stdout='%(stdout)s' stderr='%(stderr)s'" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "Не найден том для копии %(instance_id)s." #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, fuzzy, python-format msgid "unrecognized argument %s" msgstr "Нераспознанное значение read_deleted '%s'" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, fuzzy, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "Ответ на имитацию команды в stdout='%(stdout)s' stderr='%(stderr)s'" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "Заданные данные: %s" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "Итоговые данные: %s" #: cinder/tests/api/contrib/test_backups.py:737 #, fuzzy msgid "Invalid input" msgstr "Недопустимый снимок" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, fuzzy, python-format msgid "volume: %s" msgstr "Отсоединить том %s" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" "%(message)s\n" "Код состояния: %(_status)s\n" "Тело: %(_body)s" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "Ошибка аутентификации" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "Ошибка авторизации" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "объект не найден" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "Выполнение %(method)s на %(relative_url)s" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "Тело: %s" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "%(auth_uri)s => код %(http_status)s" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "%(relative_uri)s => код %(http_status)s" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "Непредвиденный код состояния" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "Декодирование JSON: %s" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 #, fuzzy msgid "Volume in unexpected state" msgstr "Непредвиденный код состояния" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, fuzzy, python-format msgid "Failed to create transfer record for %s" msgstr "Ошибка получения метаданных для ip: %s" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "Превышена квота для %(pid)s, попытка создания тома %(size)sG" #: cinder/transfer/api.py:182 #, fuzzy, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "Ошибка обновления агента: %(resp)r" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "Поиск по: %s" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 #, fuzzy msgid "Volume status must be available to reserve" msgstr "Состояние тома должно быть доступно" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "Превышена квота для %(pid)s, попытка создания тома %(size)sG" #: cinder/volume/api.py:485 #, fuzzy, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "Превышена квота для %(pid)s, попытка выполнить %(min_count)s копий" #: cinder/volume/api.py:536 #, fuzzy msgid "Volume Snapshot status must be available or error" msgstr "Состояние тома должно быть доступно" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 #, fuzzy msgid "Volume status must be available/in-use." msgstr "Состояние тома должно быть доступно" #: cinder/volume/api.py:706 #, fuzzy msgid "Volume status is in-use." msgstr "том %s: том занят" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "Восстановление после недопустимого выполнения. Попытка номер %s" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "том %s: удаление экспортирования" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, fuzzy, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Невозможно найти экспортирование iSCSI для тома %s" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, fuzzy, python-format msgid "Symbolic link %s not found" msgstr "маркер [%s] не найден" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "Повторное экспортирование %s томов" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "том %s: пропуск экспортирования" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "том %s: удаление" #: cinder/volume/manager.py:390 #, fuzzy msgid "volume is not local to this node" msgstr "Том до сих пор присоединён" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 #, fuzzy msgid "Failed to update usages deleting volume" msgstr "Ошибка обновления агента: %(resp)r" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "том %s: удаление завершено" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "снимок %s: создание" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "снимок %s: создание завершено" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "снимок %s: удаление" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "снимок %s: удаление выполнено" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, fuzzy, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "Подключить том %(volume_id)s для копии %(instance_id)s на %(device)s" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 #, fuzzy msgid "Updating volume status" msgstr "Обновление состояния узла" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "Принято уведомление {%s}" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "Ошибка БД: %s" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, fuzzy, python-format msgid "Creating clone of volume: %s" msgstr "Создать снимок тома %s" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, fuzzy, python-format msgid "Error running SSH command: %s" msgstr "Ошибка в соглашении: %s" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, fuzzy, python-format msgid "casted to %s" msgstr "_создать: %s" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, fuzzy, python-format msgid "Exception during mounting %s" msgstr "Расширенный ресурс: %s" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, fuzzy, python-format msgid "%s is already mounted" msgstr "образ уже присоединён" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, fuzzy, python-format msgid "error opening rbd image %s" msgstr "Ошибка запуска xvp: %s" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 #, fuzzy msgid "error connecting to ceph cluster" msgstr "Подключение к libvirt: %s" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, fuzzy, python-format msgid "connection data: %s" msgstr "Заданные данные: %s" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 #, fuzzy msgid "Not an rbd snapshot" msgstr "Недопустимый снимок" #: cinder/volume/drivers/rbd.py:730 #, fuzzy, python-format msgid "not cloneable: %s" msgstr "ответ %s" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, fuzzy, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "Невозможно найти том %s" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "Sheepdog не выполняется: %s" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "Sheepdog не выполняется" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, fuzzy, python-format msgid "API response: %s" msgstr "ответ %s" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 #, fuzzy msgid "Failed to get model update from clone" msgstr "Ошибка получения метаданных для ip: %s" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 #, fuzzy msgid "Updating cluster status info" msgstr "Обновление состояния узла" #: cinder/volume/drivers/solidfire.py:671 #, fuzzy msgid "Failed to get updated stats" msgstr "Невозможно получить обновлённое состояние: %s" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, fuzzy, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "Том %(volume_id)s не найден." #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "Невозможно найти экспортирование iSCSI для тома %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, fuzzy, python-format msgid "Cannot find device number for volume %s" msgstr "Невозможно найти экспортирование iSCSI для тома %s" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, fuzzy, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "том %(vol_name)s: создание lv объёмом %(vol_size)sG" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 #, fuzzy msgid "Entering create_volume_from_snapshot." msgstr "Создать том из снимка %s" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, fuzzy, python-format msgid "Delete Volume: %(volume)s" msgstr "Удалить том с идентификатором: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, fuzzy, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "Создать снимок тома %s" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, fuzzy, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "Создать снимок тома %s" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, fuzzy, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "Создать снимок тома %s" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, fuzzy, python-format msgid "Error mapping volume %s." msgstr "Ошибка запуска xvp: %s" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, fuzzy, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "том %s: удаление завершено" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, fuzzy, python-format msgid "HidePaths for volume %s completed successfully." msgstr "том %s: удаление завершено" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, fuzzy, python-format msgid "AddMembers for volume %s completed successfully." msgstr "том %s: удаление завершено" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, fuzzy, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "том %s: удаление завершено" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 #, fuzzy msgid "Storage type not found." msgstr "образ не найден." #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 #, fuzzy msgid "Masking View not found." msgstr "образ не найден." #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 #, fuzzy msgid "Ecom user not found." msgstr "Сервер не найден." #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 #, fuzzy msgid "Ecom server not found." msgstr "Сервер не найден." #: cinder/volume/drivers/emc/emc_smis_common.py:1153 #, fuzzy msgid "Cannot connect to ECOM server" msgstr "Переподлючено к очереди" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, fuzzy, python-format msgid "Pool %(storage_type)s is not found." msgstr "Полномочия %(role_id)s не могут быть найдены." #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, fuzzy, python-format msgid "Volume %(volumename)s not found on the array." msgstr "Том %(volume_id)s не найден." #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, fuzzy, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "Не найден том для копии %(instance_id)s." #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, fuzzy, python-format msgid "Error finding %s." msgstr "Ошибка поиска vdis в SR %s" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, fuzzy, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "Присоединить том %(volume_id)s к копии %(server_id)s на %(device)s" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, fuzzy, python-format msgid "XML exception reading parameter: %s" msgstr "Расширенный ресурс: %s" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, fuzzy, python-format msgid "HDP not found: %s" msgstr "Узел не найден" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, fuzzy, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "Удалить том с идентификатором: %s" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, fuzzy, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" "%(description)s\n" "Команда: %(cmd)s\n" "Код выхода: %(exit_code)s\n" "Stdout: %(stdout)r\n" "Stderr: %(stderr)r" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, fuzzy, python-format msgid "Using NetApp filer: %s" msgstr "Выполняемые копии: %s" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, fuzzy, python-format msgid "Created LUN with name %s" msgstr "Создана папка с адресом %s" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, fuzzy, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "Ошибка получения метаданных для ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:249 #, fuzzy, python-format msgid "Failed to get target portal for the LUN %s" msgstr "Ошибка получения метаданных для ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:252 #, fuzzy, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "Ошибка получения метаданных для ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:290 #, fuzzy, python-format msgid "Snapshot %s deletion successful" msgstr "снимок %s: удаление выполнено" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, fuzzy, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "Ошибка получения метаданных для ip: %s" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "Преобразование в необработанный, но текущий формат %s" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, fuzzy, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "том группы %s не существует" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, fuzzy, python-format msgid "Sending JSON data: %s" msgstr "Заданные данные: %s" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, fuzzy, python-format msgid "Got response: %s" msgstr "ответ %s" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "Задайте san_password или san_private_key" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "san_ip должен быть назначен" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "LUID не найден для %(zfs_poolname)s. Вывод=%(out)s" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, fuzzy, python-format msgid "Volume (%s) already exists on array" msgstr "группа %s уже существует" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "Возврат команды CLIQ %s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" "Неправильный ответ на команду CLIQ %(verb)s %(cliq_args)s. " "Результат=%(out)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "Ошибка выполнения команды CLIQ %(verb)s %(cliq_args)s. Результат=%(out)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" "Непредвиденное количество виртуальных ip для кластера %(cluster_name)s. " "Результат=%(_xml)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "Сведения о томе: %(volume_name)s => %(volume_attributes)s" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "local_path не поддерживается" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, fuzzy, python-format msgid "Creating folder %s " msgstr "Создание SR %s" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/bn_IN/0000775000567000056700000000000012540643114020040 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/bn_IN/LC_MESSAGES/0000775000567000056700000000000012540643114021625 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/bn_IN/LC_MESSAGES/cinder.po0000664000567000056700000110501712540642606023443 0ustar jenkinsjenkins00000000000000# Bengali (India) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-10-20 01:34+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Bengali (India) " "(http://www.transifex.com/projects/p/openstack/language/bn_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/nl_NL/0000775000567000056700000000000012540643114020055 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/nl_NL/LC_MESSAGES/0000775000567000056700000000000012540643114021642 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/nl_NL/LC_MESSAGES/cinder.po0000664000567000056700000110504012540642606023454 0ustar jenkinsjenkins00000000000000# Dutch (Netherlands) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-05-29 08:13+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Dutch (Netherlands) " "(http://www.transifex.com/projects/p/openstack/language/nl_NL/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/locale/pa_IN/0000775000567000056700000000000012540643114020041 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pa_IN/LC_MESSAGES/0000775000567000056700000000000012540643114021626 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/cinder/locale/pa_IN/LC_MESSAGES/cinder.po0000664000567000056700000110541012540642606023441 0ustar jenkinsjenkins00000000000000# Punjabi (Gurmukhi, India) translations for cinder. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the cinder project. # # Translators: msgid "" msgstr "" "Project-Id-Version: Cinder\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2014-03-29 06:10+0000\n" "PO-Revision-Date: 2013-12-15 11:10+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Panjabi (Punjabi) (India) " "(http://www.transifex.com/projects/p/openstack/language/pa_IN/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" #: cinder/context.py:63 #, python-format msgid "Arguments dropped when creating context: %s" msgstr "" #: cinder/context.py:107 #, python-format msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" #: cinder/exception.py:66 cinder/brick/exception.py:31 msgid "An unknown exception occurred." msgstr "" #: cinder/exception.py:88 msgid "Exception in string format operation" msgstr "" #: cinder/exception.py:107 #, python-format msgid "Bad or unexpected response from the storage volume backend API: %(data)s" msgstr "" #: cinder/exception.py:112 #, python-format msgid "Volume driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:116 #, python-format msgid "Backup driver reported an error: %(message)s" msgstr "" #: cinder/exception.py:120 #, python-format msgid "Connection to glance failed: %(reason)s" msgstr "" #: cinder/exception.py:124 msgid "Not authorized." msgstr "" #: cinder/exception.py:129 msgid "User does not have admin privileges" msgstr "" #: cinder/exception.py:133 #, python-format msgid "Policy doesn't allow %(action)s to be performed." msgstr "" #: cinder/exception.py:137 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" #: cinder/exception.py:141 msgid "Volume driver not ready." msgstr "" #: cinder/exception.py:145 cinder/brick/exception.py:77 msgid "Unacceptable parameters." msgstr "" #: cinder/exception.py:150 #, python-format msgid "Invalid snapshot: %(reason)s" msgstr "" #: cinder/exception.py:154 #, python-format msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." msgstr "" #: cinder/exception.py:159 #, python-format msgid "Volume %(volume_id)s is still attached, detach volume first." msgstr "" #: cinder/exception.py:163 msgid "Failed to load data into json format" msgstr "" #: cinder/exception.py:167 msgid "The results are invalid." msgstr "" #: cinder/exception.py:171 #, python-format msgid "Invalid input received: %(reason)s" msgstr "" #: cinder/exception.py:175 #, python-format msgid "Invalid volume type: %(reason)s" msgstr "" #: cinder/exception.py:179 #, python-format msgid "Invalid volume: %(reason)s" msgstr "" #: cinder/exception.py:183 #, python-format msgid "Invalid content type %(content_type)s." msgstr "" #: cinder/exception.py:187 #, python-format msgid "Invalid host: %(reason)s" msgstr "" #: cinder/exception.py:193 cinder/brick/exception.py:84 #, python-format msgid "%(err)s" msgstr "" #: cinder/exception.py:197 #, python-format msgid "Invalid auth key: %(reason)s" msgstr "" #: cinder/exception.py:201 #, python-format msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" msgstr "" #: cinder/exception.py:206 msgid "Service is unavailable at this time." msgstr "" #: cinder/exception.py:210 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" #: cinder/exception.py:214 #, python-format msgid "The device in the path %(path)s is unavailable: %(reason)s" msgstr "" #: cinder/exception.py:218 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" #: cinder/exception.py:222 cinder/brick/exception.py:71 msgid "Resource could not be found." msgstr "" #: cinder/exception.py:228 #, python-format msgid "Volume %(volume_id)s could not be found." msgstr "" #: cinder/exception.py:232 #, python-format msgid "Volume %(volume_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:237 #, python-format msgid "" "Volume %(volume_id)s has no administration metadata with key " "%(metadata_key)s." msgstr "" #: cinder/exception.py:242 #, python-format msgid "Invalid metadata: %(reason)s" msgstr "" #: cinder/exception.py:246 #, python-format msgid "Invalid metadata size: %(reason)s" msgstr "" #: cinder/exception.py:250 #, python-format msgid "Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s." msgstr "" #: cinder/exception.py:255 #, python-format msgid "Volume type %(volume_type_id)s could not be found." msgstr "" #: cinder/exception.py:259 #, python-format msgid "Volume type with name %(volume_type_name)s could not be found." msgstr "" #: cinder/exception.py:264 #, python-format msgid "" "Volume Type %(volume_type_id)s has no extra specs with key " "%(extra_specs_key)s." msgstr "" #: cinder/exception.py:269 #, python-format msgid "" "Volume Type %(volume_type_id)s deletion is not allowed with volumes " "present with the type." msgstr "" #: cinder/exception.py:274 #, python-format msgid "Snapshot %(snapshot_id)s could not be found." msgstr "" #: cinder/exception.py:278 #, python-format msgid "deleting volume %(volume_name)s that has snapshot" msgstr "" #: cinder/exception.py:282 #, python-format msgid "deleting snapshot %(snapshot_name)s that has dependent volumes" msgstr "" #: cinder/exception.py:287 #, python-format msgid "No target id found for volume %(volume_id)s." msgstr "" #: cinder/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" #: cinder/exception.py:295 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" #: cinder/exception.py:299 #, python-format msgid "Service %(service_id)s could not be found." msgstr "" #: cinder/exception.py:303 #, python-format msgid "Host %(host)s could not be found." msgstr "" #: cinder/exception.py:307 #, python-format msgid "Scheduler Host Filter %(filter_name)s could not be found." msgstr "" #: cinder/exception.py:311 #, python-format msgid "Scheduler Host Weigher %(weigher_name)s could not be found." msgstr "" #: cinder/exception.py:315 #, python-format msgid "Could not find binary %(binary)s on host %(host)s." msgstr "" #: cinder/exception.py:319 #, python-format msgid "Invalid reservation expiration %(expire)s." msgstr "" #: cinder/exception.py:323 #, python-format msgid "" "Change would make usage less than 0 for the following resources: " "%(unders)s" msgstr "" #: cinder/exception.py:328 msgid "Quota could not be found" msgstr "" #: cinder/exception.py:332 #, python-format msgid "Unknown quota resources %(unknown)s." msgstr "" #: cinder/exception.py:336 #, python-format msgid "Quota for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:340 #, python-format msgid "Quota class %(class_name)s could not be found." msgstr "" #: cinder/exception.py:344 #, python-format msgid "Quota usage for project %(project_id)s could not be found." msgstr "" #: cinder/exception.py:348 #, python-format msgid "Quota reservation %(uuid)s could not be found." msgstr "" #: cinder/exception.py:352 #, python-format msgid "Quota exceeded for resources: %(overs)s" msgstr "" #: cinder/exception.py:356 #, python-format msgid "File %(file_path)s could not be found." msgstr "" #: cinder/exception.py:365 #, python-format msgid "Volume Type %(id)s already exists." msgstr "" #: cinder/exception.py:369 #, python-format msgid "Volume type encryption for type %(type_id)s already exists." msgstr "" #: cinder/exception.py:373 #, python-format msgid "Volume type encryption for type %(type_id)s does not exist." msgstr "" #: cinder/exception.py:377 #, python-format msgid "Malformed message body: %(reason)s" msgstr "" #: cinder/exception.py:381 #, python-format msgid "Could not find config at %(path)s" msgstr "" #: cinder/exception.py:385 #, python-format msgid "Could not find parameter %(param)s" msgstr "" #: cinder/exception.py:389 #, python-format msgid "Could not load paste app '%(name)s' from %(path)s" msgstr "" #: cinder/exception.py:393 #, python-format msgid "No valid host was found. %(reason)s" msgstr "" #: cinder/exception.py:402 #, python-format msgid "Quota exceeded: code=%(code)s" msgstr "" #: cinder/exception.py:409 #, python-format msgid "" "Requested volume or snapshot exceeds allowed Gigabytes quota. Requested " "%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." msgstr "" #: cinder/exception.py:415 #, python-format msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:419 #, python-format msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" msgstr "" #: cinder/exception.py:423 #, python-format msgid "Detected more than one volume with name %(vol_name)s" msgstr "" #: cinder/exception.py:427 #, python-format msgid "Cannot create volume_type with name %(name)s and specs %(extra_specs)s" msgstr "" #: cinder/exception.py:432 #, python-format msgid "Unknown or unsupported command %(cmd)s" msgstr "" #: cinder/exception.py:436 #, python-format msgid "Malformed response to command %(cmd)s: %(reason)s" msgstr "" #: cinder/exception.py:440 #, python-format msgid "Operation failed with status=%(status)s. Full dump: %(data)s" msgstr "" #: cinder/exception.py:444 #, python-format msgid "" "Glance metadata cannot be updated, key %(key)s exists for volume id " "%(volume_id)s" msgstr "" #: cinder/exception.py:449 #, python-format msgid "Glance metadata for volume/snapshot %(id)s cannot be found." msgstr "" #: cinder/exception.py:453 #, python-format msgid "Failed to export for volume: %(reason)s" msgstr "" #: cinder/exception.py:457 #, python-format msgid "Failed to create metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:461 #, python-format msgid "Failed to update metadata for volume: %(reason)s" msgstr "" #: cinder/exception.py:465 #, python-format msgid "Failed to copy metadata to volume: %(reason)s" msgstr "" #: cinder/exception.py:469 #, python-format msgid "Failed to copy image to volume: %(reason)s" msgstr "" #: cinder/exception.py:473 msgid "Invalid Ceph args provided for backup rbd operation" msgstr "" #: cinder/exception.py:477 msgid "An error has occurred during backup operation" msgstr "" #: cinder/exception.py:481 msgid "Unsupported backup metadata version requested" msgstr "" #: cinder/exception.py:485 msgid "Metadata backup already exists for this volume" msgstr "" #: cinder/exception.py:489 msgid "Backup RBD operation failed" msgstr "" #: cinder/exception.py:493 #, python-format msgid "Backup %(backup_id)s could not be found." msgstr "" #: cinder/exception.py:497 msgid "Failed to identify volume backend." msgstr "" #: cinder/exception.py:501 #, python-format msgid "Invalid backup: %(reason)s" msgstr "" #: cinder/exception.py:505 #, python-format msgid "Connection to swift failed: %(reason)s" msgstr "" #: cinder/exception.py:509 #, python-format msgid "Transfer %(transfer_id)s could not be found." msgstr "" #: cinder/exception.py:513 #, python-format msgid "Volume migration failed: %(reason)s" msgstr "" #: cinder/exception.py:517 #, python-format msgid "SSH command injection detected: %(command)s" msgstr "" #: cinder/exception.py:521 #, python-format msgid "QoS Specs %(specs_id)s already exists." msgstr "" #: cinder/exception.py:525 #, python-format msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:530 #, python-format msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." msgstr "" #: cinder/exception.py:535 #, python-format msgid "No such QoS spec %(specs_id)s." msgstr "" #: cinder/exception.py:539 #, python-format msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:544 #, python-format msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." msgstr "" #: cinder/exception.py:549 #, python-format msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." msgstr "" #: cinder/exception.py:554 #, python-format msgid "Invalid qos specs: %(reason)s" msgstr "" #: cinder/exception.py:558 #, python-format msgid "QoS Specs %(specs_id)s is still associated with entities." msgstr "" #: cinder/exception.py:562 #, python-format msgid "key manager error: %(reason)s" msgstr "" #: cinder/exception.py:566 #, python-format msgid "" "Manage existing volume failed due to invalid backend reference " "%(existing_ref)s: %(reason)s" msgstr "" #: cinder/exception.py:571 #, python-format msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" msgstr "" #: cinder/exception.py:578 msgid "Coraid Cinder Driver exception." msgstr "" #: cinder/exception.py:582 msgid "Failed to encode json data." msgstr "" #: cinder/exception.py:586 msgid "Login on ESM failed." msgstr "" #: cinder/exception.py:590 msgid "Relogin on ESM failed." msgstr "" #: cinder/exception.py:594 #, python-format msgid "Group with name \"%(group_name)s\" not found." msgstr "" #: cinder/exception.py:598 #, python-format msgid "ESM configure request failed: %(reason)s" msgstr "" #: cinder/exception.py:602 #, python-format msgid "Coraid ESM not available with reason: %(reason)s" msgstr "" #: cinder/exception.py:607 msgid "Zadara Cinder Driver exception." msgstr "" #: cinder/exception.py:611 #, python-format msgid "Unable to create server object for initiator %(name)s" msgstr "" #: cinder/exception.py:615 #, python-format msgid "Unable to find server object for initiator %(name)s" msgstr "" #: cinder/exception.py:619 msgid "Unable to find any active VPSA controller" msgstr "" #: cinder/exception.py:623 #, python-format msgid "Failed to retrieve attachments for volume %(name)s" msgstr "" #: cinder/exception.py:627 #, python-format msgid "Invalid attachment info for volume %(name)s: %(reason)s" msgstr "" #: cinder/exception.py:631 #, python-format msgid "Bad HTTP response status %(status)s" msgstr "" #: cinder/exception.py:636 msgid "Bad response from SolidFire API" msgstr "" #: cinder/exception.py:640 msgid "SolidFire Cinder Driver exception" msgstr "" #: cinder/exception.py:644 #, python-format msgid "Error in SolidFire API response: data=%(data)s" msgstr "" #: cinder/exception.py:648 #, python-format msgid "Unable to locate account %(account_name)s on Solidfire device" msgstr "" #: cinder/exception.py:654 #, python-format msgid "Invalid 3PAR Domain: %(err)s" msgstr "" #: cinder/exception.py:659 msgid "Unknown NFS exception" msgstr "" #: cinder/exception.py:663 msgid "No mounted NFS shares found" msgstr "" #: cinder/exception.py:667 cinder/exception.py:680 #, python-format msgid "There is no share which can host %(volume_size)sG" msgstr "" #: cinder/exception.py:672 msgid "Unknown Gluster exception" msgstr "" #: cinder/exception.py:676 msgid "No mounted Gluster shares found" msgstr "" #: cinder/exception.py:684 #, python-format msgid "Failed to remove export for volume %(volume)s: %(reason)s" msgstr "" #: cinder/exception.py:689 msgid "HP MSA Volume Driver exception" msgstr "" #: cinder/exception.py:693 #, python-format msgid "VDisk doesn't exist (%(vdisk)s)" msgstr "" #: cinder/exception.py:697 msgid "Unable to connect to MSA array" msgstr "" #: cinder/exception.py:701 #, python-format msgid "Not enough space on VDisk (%(vdisk)s)" msgstr "" #: cinder/exception.py:706 #, python-format msgid "Fibre Channel connection control failure: %(reason)s" msgstr "" #: cinder/exception.py:710 #, python-format msgid "Fibre Channel Zone operation failed: %(reason)s" msgstr "" #: cinder/exception.py:714 #, python-format msgid "Fibre Channel SAN Lookup failure: %(reason)s" msgstr "" #: cinder/exception.py:718 #, python-format msgid "Fibre Channel Zoning CLI error: %(reason)s" msgstr "" #: cinder/exception.py:722 msgid "NetApp Cinder Driver exception." msgstr "" #: cinder/manager.py:128 msgid "Notifying Schedulers of capabilities ..." msgstr "" #: cinder/policy.py:30 msgid "JSON file representing policy" msgstr "ਨੀਤੀ ਦੀ ਪ੍ਰਤੀਨਿਧਤਾ ਕਰਦੀ JSON ਫਾਈਲ" #: cinder/policy.py:33 msgid "Rule checked when requested rule is not found" msgstr "ਜਦੋਂ ਬੇਨਤੀ ਕੀਤਾ ਗਿਆ ਨਿਯਮ ਨਹੀਂ ਲੱਭਿਆ ਤਾਂ ਨਿਯਮ ਜਾਂਚੇ ਗਏ" #: cinder/quota.py:105 #, python-format msgid "" "Default quota for resource: %(res)s is set by the default quota flag: " "quota_%(res)s, it is now deprecated. Please use the the default quota " "class for default quota." msgstr "" #: cinder/quota.py:748 #, python-format msgid "Created reservations %s" msgstr "" #: cinder/quota.py:770 #, python-format msgid "Failed to commit reservations %s" msgstr "" #: cinder/quota.py:790 #, python-format msgid "Failed to roll back reservations %s" msgstr "" #: cinder/quota.py:874 msgid "Cannot register resource" msgstr "" #: cinder/quota.py:877 msgid "Cannot register resources" msgstr "" #: cinder/quota_utils.py:46 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume - " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/quota_utils.py:56 cinder/transfer/api.py:168 #: cinder/volume/flows/api/create_volume.py:520 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create volume (%(d_consumed)d " "volumes already consumed)" msgstr "" #: cinder/service.py:100 #, python-format msgid "Starting %(topic)s node (version %(version_string)s)" msgstr "" #: cinder/service.py:113 #, python-format msgid "Creating RPC server for service %s" msgstr "" #: cinder/service.py:144 #, python-format msgid "" "Report interval must be less than service down time. Current config " "service_down_time: %(service_down_time)s, report_interval for this: " "service is: %(report_interval)s. Setting global service_down_time to: " "%(new_down_time)s" msgstr "" #: cinder/service.py:212 msgid "Service killed that has no database entry" msgstr "" #: cinder/service.py:250 msgid "The service database object disappeared, Recreating it." msgstr "" #: cinder/service.py:265 msgid "Recovered model server connection!" msgstr "" #: cinder/service.py:271 msgid "model server went away" msgstr "" #: cinder/service.py:293 #, python-format msgid "" "Value of config option %(name)s_workers must be integer greater than 1. " "Input value ignored." msgstr "" #: cinder/service.py:368 msgid "serve() can only be called once" msgstr "" #: cinder/service.py:374 cinder/openstack/common/service.py:166 #: cinder/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" #: cinder/service.py:382 #, python-format msgid "%s : FLAG SET " msgstr "" #: cinder/utils.py:97 #, python-format msgid "Can not translate %s to integer." msgstr "" #: cinder/utils.py:128 #, python-format msgid "May specify only one of %s" msgstr "" #: cinder/utils.py:213 msgid "Specify a password or private_key" msgstr "" #: cinder/utils.py:229 #, python-format msgid "Error connecting via ssh: %s" msgstr "" #: cinder/utils.py:413 #, python-format msgid "Invalid backend: %s" msgstr "" #: cinder/utils.py:424 #, python-format msgid "backend %s" msgstr "" #: cinder/utils.py:699 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" #: cinder/utils.py:760 #, python-format msgid "Volume driver %s not initialized" msgstr "" #: cinder/utils.py:782 #, python-format msgid "%s is not a string or unicode" msgstr "" #: cinder/utils.py:786 #, python-format msgid "%(name)s has a minimum character requirement of %(min_length)s." msgstr "" #: cinder/utils.py:791 #, python-format msgid "%(name)s has more than %(max_length)s characters." msgstr "" #: cinder/wsgi.py:136 cinder/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" msgstr "" #: cinder/wsgi.py:139 cinder/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" msgstr "" #: cinder/wsgi.py:142 cinder/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" msgstr "" #: cinder/wsgi.py:145 cinder/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" msgstr "" #: cinder/wsgi.py:178 #, python-format msgid "Could not bind to %(host)s:%(port)s after trying for 30 seconds" msgstr "" #: cinder/wsgi.py:215 #, python-format msgid "Started %(name)s on %(host)s:%(port)s" msgstr "" #: cinder/wsgi.py:235 msgid "Stopping WSGI server." msgstr "" #: cinder/wsgi.py:253 msgid "WSGI server has stopped." msgstr "" #: cinder/wsgi.py:322 msgid "You must implement __call__" msgstr "" #: cinder/api/auth.py:26 msgid "" "cinder.api.auth:CinderKeystoneContext is deprecated. Please use " "cinder.api.middleware.auth:CinderKeystoneContext instead." msgstr "" #: cinder/api/auth.py:34 msgid "" "cinder.api.auth:pipeline_factory is deprecated. Please use " "cinder.api.middleware.auth:pipeline_factory instead." msgstr "" #: cinder/api/common.py:92 cinder/api/common.py:126 cinder/volume/api.py:282 msgid "limit param must be an integer" msgstr "" #: cinder/api/common.py:95 cinder/api/common.py:130 cinder/volume/api.py:279 msgid "limit param must be positive" msgstr "" #: cinder/api/common.py:120 msgid "offset param must be an integer" msgstr "" #: cinder/api/common.py:134 msgid "offset param must be positive" msgstr "" #: cinder/api/common.py:162 #, python-format msgid "marker [%s] not found" msgstr "" #: cinder/api/common.py:189 #, python-format msgid "href %s does not contain version" msgstr "" #: cinder/api/extensions.py:183 msgid "Initializing extension manager." msgstr "" #: cinder/api/extensions.py:198 #, python-format msgid "Loaded extension: %s" msgstr "" #: cinder/api/extensions.py:236 #, python-format msgid "Ext name: %s" msgstr "" #: cinder/api/extensions.py:237 #, python-format msgid "Ext alias: %s" msgstr "" #: cinder/api/extensions.py:238 #, python-format msgid "Ext description: %s" msgstr "" #: cinder/api/extensions.py:240 #, python-format msgid "Ext namespace: %s" msgstr "" #: cinder/api/extensions.py:241 #, python-format msgid "Ext updated: %s" msgstr "" #: cinder/api/extensions.py:243 #, python-format msgid "Exception loading extension: %s" msgstr "" #: cinder/api/extensions.py:257 #, python-format msgid "Loading extension %s" msgstr "" #: cinder/api/extensions.py:263 #, python-format msgid "Calling extension factory %s" msgstr "" #: cinder/api/extensions.py:277 #, python-format msgid "osapi_volume_extension is set to deprecated path: %s" msgstr "" #: cinder/api/extensions.py:279 #, python-format msgid "" "Please set your flag or cinder.conf settings for osapi_volume_extension " "to: %s" msgstr "" #: cinder/api/extensions.py:288 #, python-format msgid "Failed to load extension %(ext_factory)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:357 #, python-format msgid "Failed to load extension %(classpath)s: %(exc)s" msgstr "" #: cinder/api/extensions.py:382 #, python-format msgid "Failed to load extension %(ext_name)s: %(exc)s" msgstr "" #: cinder/api/sizelimit.py:25 msgid "" "cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " "cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" msgstr "" #: cinder/api/xmlutil.py:266 msgid "element is not a child" msgstr "" #: cinder/api/xmlutil.py:463 msgid "root element selecting a list" msgstr "" #: cinder/api/xmlutil.py:786 #, python-format msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s" msgstr "" #: cinder/api/xmlutil.py:907 msgid "subclasses must implement construct()!" msgstr "" #: cinder/api/contrib/admin_actions.py:82 #, python-format msgid "Updating %(resource)s '%(id)s' with '%(update)r'" msgstr "" #: cinder/api/contrib/backups.py:161 #, python-format msgid "show called for member %s" msgstr "" #: cinder/api/contrib/backups.py:173 #, python-format msgid "delete called for member %s" msgstr "" #: cinder/api/contrib/backups.py:176 #, python-format msgid "Delete backup with id: %s" msgstr "" #: cinder/api/contrib/backups.py:218 #, python-format msgid "Creating new backup %s" msgstr "" #: cinder/api/contrib/backups.py:228 cinder/api/contrib/backups.py:260 #: cinder/api/contrib/volume_transfer.py:157 #: cinder/api/contrib/volume_transfer.py:193 msgid "Incorrect request body format" msgstr "" #: cinder/api/contrib/backups.py:234 #, python-format msgid "Creating backup of volume %(volume_id)s in container %(container)s" msgstr "" #: cinder/api/contrib/backups.py:257 #, python-format msgid "Restoring backup %(backup_id)s (%(body)s)" msgstr "" #: cinder/api/contrib/backups.py:267 #, python-format msgid "Restoring backup %(backup_id)s to volume %(volume_id)s" msgstr "" #: cinder/api/contrib/backups.py:300 #, python-format msgid "export record called for member %s." msgstr "" #: cinder/api/contrib/backups.py:312 #, python-format msgid "export record output: %s." msgstr "" #: cinder/api/contrib/backups.py:320 #, python-format msgid "Importing record from %s." msgstr "" #: cinder/api/contrib/backups.py:322 cinder/api/contrib/backups.py:331 msgid "Incorrect request body format." msgstr "" #: cinder/api/contrib/backups.py:333 #, python-format msgid "Importing backup using %(service)s and url %(url)s." msgstr "" #: cinder/api/contrib/backups.py:348 #, python-format msgid "import record output: %s." msgstr "" #: cinder/api/contrib/extended_snapshot_attributes.py:60 msgid "Snapshot not found." msgstr "" #: cinder/api/contrib/hosts.py:86 cinder/api/openstack/wsgi.py:237 msgid "cannot understand XML" msgstr "" #: cinder/api/contrib/hosts.py:136 #, python-format msgid "Host '%s' could not be found." msgstr "" #: cinder/api/contrib/hosts.py:165 #, python-format msgid "Invalid status: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:168 #, python-format msgid "Invalid update setting: '%s'" msgstr "" #: cinder/api/contrib/hosts.py:180 #, python-format msgid "Setting host %(host)s to %(state)s." msgstr "" #: cinder/api/contrib/hosts.py:206 msgid "Describe-resource is admin only functionality" msgstr "" #: cinder/api/contrib/hosts.py:214 msgid "Host not found" msgstr "" #: cinder/api/contrib/qos_specs_manage.py:110 msgid "Please specify a name for QoS specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:221 msgid "Failed to disassociate qos specs." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:223 msgid "Qos specs still in use." msgstr "" #: cinder/api/contrib/qos_specs_manage.py:299 #: cinder/api/contrib/qos_specs_manage.py:353 msgid "Volume Type id must not be None." msgstr "" #: cinder/api/contrib/quota_classes.py:72 msgid "Missing required element quota_class_set in request body." msgstr "" #: cinder/api/contrib/quota_classes.py:81 msgid "Quota class limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quota_classes.py:85 msgid "Quota class limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:63 msgid "Quota limit must be specified as an integer value." msgstr "" #: cinder/api/contrib/quotas.py:68 msgid "Quota limit must be -1 or greater." msgstr "" #: cinder/api/contrib/quotas.py:105 msgid "Missing required element quota_set in request body." msgstr "" #: cinder/api/contrib/quotas.py:116 #, python-format msgid "Bad key(s) in quota set: %s" msgstr "" #: cinder/api/contrib/scheduler_hints.py:36 msgid "Malformed scheduler_hints attribute" msgstr "" #: cinder/api/contrib/services.py:91 msgid "" "Query by service parameter is deprecated. Please use binary parameter " "instead." msgstr "" #: cinder/api/contrib/services.py:161 msgid "Disabled reason contains invalid characters or is too long" msgstr "" #: cinder/api/contrib/snapshot_actions.py:51 msgid "'status' must be specified." msgstr "" #: cinder/api/contrib/snapshot_actions.py:61 #, python-format msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" msgstr "" #: cinder/api/contrib/snapshot_actions.py:67 #, python-format msgid "" "Provided snapshot status %(provided)s not allowed for snapshot with " "status %(current)s." msgstr "" #: cinder/api/contrib/snapshot_actions.py:79 msgid "progress must be an integer percentage" msgstr "" #: cinder/api/contrib/types_extra_specs.py:101 msgid "Request body empty" msgstr "" #: cinder/api/contrib/types_extra_specs.py:105 #: cinder/api/v1/snapshot_metadata.py:75 cinder/api/v1/volume_metadata.py:75 #: cinder/api/v2/snapshot_metadata.py:75 cinder/api/v2/volume_metadata.py:74 msgid "Request body and URI mismatch" msgstr "" #: cinder/api/contrib/types_extra_specs.py:108 #: cinder/api/v1/snapshot_metadata.py:79 cinder/api/v1/volume_metadata.py:79 #: cinder/api/v2/snapshot_metadata.py:79 cinder/api/v2/volume_metadata.py:78 msgid "Request body contains too many items" msgstr "" #: cinder/api/contrib/types_extra_specs.py:152 msgid "" "Key names can only contain alphanumeric characters, underscores, periods," " colons and hyphens." msgstr "" #: cinder/api/contrib/types_manage.py:99 msgid "Target volume type is still in use." msgstr "" #: cinder/api/contrib/volume_actions.py:100 #, python-format msgid "" "Invalid request to attach volume to an instance %(instance_uuid)s and a " "host %(host_name)s simultaneously" msgstr "" #: cinder/api/contrib/volume_actions.py:108 msgid "Invalid request to attach volume to an invalid target" msgstr "" #: cinder/api/contrib/volume_actions.py:112 msgid "" "Invalid request to attach volume with an invalid mode. Attaching mode " "should be 'rw' or 'ro'" msgstr "" #: cinder/api/contrib/volume_actions.py:197 msgid "Unable to fetch connection information from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:217 msgid "Unable to terminate volume connection from backend." msgstr "" #: cinder/api/contrib/volume_actions.py:230 msgid "No image_name was specified in request." msgstr "" #: cinder/api/contrib/volume_actions.py:238 msgid "Bad value for 'force' parameter." msgstr "" #: cinder/api/contrib/volume_actions.py:241 msgid "'force' is not string or bool." msgstr "" #: cinder/api/contrib/volume_actions.py:281 msgid "New volume size must be specified as an integer." msgstr "" #: cinder/api/contrib/volume_actions.py:300 msgid "Must specify readonly in request." msgstr "" #: cinder/api/contrib/volume_actions.py:308 msgid "Bad value for 'readonly'" msgstr "" #: cinder/api/contrib/volume_actions.py:312 msgid "'readonly' not string or bool" msgstr "" #: cinder/api/contrib/volume_actions.py:326 msgid "New volume type must be specified." msgstr "" #: cinder/api/contrib/volume_manage.py:98 cinder/api/v2/snapshots.py:174 #: cinder/api/v2/snapshots.py:234 cinder/api/v2/volumes.py:266 #: cinder/api/v2/volumes.py:373 #, python-format msgid "Missing required element '%s' in request body" msgstr "" #: cinder/api/contrib/volume_manage.py:109 #, python-format msgid "The following elements are required: %s" msgstr "" #: cinder/api/contrib/volume_manage.py:127 cinder/api/v2/volumes.py:297 msgid "Volume type not found." msgstr "" #: cinder/api/contrib/volume_manage.py:143 msgid "Service not found." msgstr "" #: cinder/api/contrib/volume_transfer.py:131 msgid "Listing volume transfers" msgstr "" #: cinder/api/contrib/volume_transfer.py:147 #, python-format msgid "Creating new volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:162 #, python-format msgid "Creating transfer of volume %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:183 #, python-format msgid "Accepting volume transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:196 #, python-format msgid "Accepting transfer %s" msgstr "" #: cinder/api/contrib/volume_transfer.py:217 #, python-format msgid "Delete transfer with id: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:64 msgid "key_size must be non-negative" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:67 msgid "key_size must be an integer" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:73 msgid "provider must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:75 msgid "control_location must be defined" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:83 #, python-format msgid "Valid control location are: %s" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:111 msgid "Cannot create encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:115 msgid "Create body is not valid." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:141 msgid "Request body empty." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:144 msgid "Update body is not valid. It must contain \"encryption.\"" msgstr "" #: cinder/api/contrib/volume_type_encryption.py:147 msgid "Request body contains too many items." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:153 msgid "Cannot update encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_type_encryption.py:187 msgid "Cannot delete encryption specs. Volume type in use." msgstr "" #: cinder/api/contrib/volume_unmanage.py:53 #, python-format msgid "Unmanage volume with id: %s" msgstr "" #: cinder/api/contrib/volume_unmanage.py:59 cinder/api/v2/snapshots.py:190 #: cinder/api/v2/volumes.py:170 cinder/api/v2/volumes.py:187 #: cinder/api/v2/volumes.py:405 msgid "Volume could not be found" msgstr "" #: cinder/api/contrib/volume_unmanage.py:62 cinder/api/v2/volumes.py:190 msgid "Volume cannot be deleted while in attached state" msgstr "" #: cinder/api/middleware/auth.py:112 msgid "Invalid service catalog json." msgstr "" #: cinder/api/middleware/fault.py:44 #, python-format msgid "Caught error: %s" msgstr "" #: cinder/api/middleware/fault.py:53 cinder/api/openstack/wsgi.py:978 #, python-format msgid "%(url)s returned with HTTP %(status)d" msgstr "" #: cinder/api/middleware/fault.py:69 #, python-format msgid "%(exception)s: %(explanation)s" msgstr "" #: cinder/api/middleware/sizelimit.py:55 cinder/api/middleware/sizelimit.py:64 #: cinder/api/middleware/sizelimit.py:78 msgid "Request is too large." msgstr "" #: cinder/api/openstack/__init__.py:69 msgid "Must specify an ExtensionManager class" msgstr "" #: cinder/api/openstack/__init__.py:80 #, python-format msgid "Extended resource: %s" msgstr "" #: cinder/api/openstack/__init__.py:104 #, python-format msgid "" "Extension %(ext_name)s: Cannot extend resource %(collection)s: No such " "resource" msgstr "" #: cinder/api/openstack/__init__.py:110 #, python-format msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" #: cinder/api/openstack/__init__.py:126 msgid "" "cinder.api.openstack:FaultWrapper is deprecated. Please use " "cinder.api.middleware.fault:FaultWrapper instead." msgstr "" #: cinder/api/openstack/urlmap.py:25 msgid "" "cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " "cinder.api.urlmap:urlmap_factory instead." msgstr "" #: cinder/api/openstack/wsgi.py:212 cinder/api/openstack/wsgi.py:628 msgid "cannot understand JSON" msgstr "" #: cinder/api/openstack/wsgi.py:633 msgid "too many body keys" msgstr "" #: cinder/api/openstack/wsgi.py:671 #, python-format msgid "Exception handling resource: %s" msgstr "" #: cinder/api/openstack/wsgi.py:676 #, python-format msgid "Fault thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:679 #, python-format msgid "HTTP exception thrown: %s" msgstr "" #: cinder/api/openstack/wsgi.py:787 msgid "Empty body provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:793 msgid "Unrecognized Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:797 msgid "No Content-Type provided in request" msgstr "" #: cinder/api/openstack/wsgi.py:908 #, python-format msgid "There is no such action: %s" msgstr "" #: cinder/api/openstack/wsgi.py:911 cinder/api/openstack/wsgi.py:924 #: cinder/api/v1/snapshot_metadata.py:53 cinder/api/v1/snapshot_metadata.py:71 #: cinder/api/v1/snapshot_metadata.py:96 cinder/api/v1/snapshot_metadata.py:121 #: cinder/api/v1/volume_metadata.py:53 cinder/api/v1/volume_metadata.py:71 #: cinder/api/v1/volume_metadata.py:96 cinder/api/v1/volume_metadata.py:121 #: cinder/api/v2/snapshot_metadata.py:53 cinder/api/v2/snapshot_metadata.py:71 #: cinder/api/v2/snapshot_metadata.py:96 cinder/api/v2/snapshot_metadata.py:121 #: cinder/api/v2/volume_metadata.py:52 cinder/api/v2/volume_metadata.py:70 #: cinder/api/v2/volume_metadata.py:95 cinder/api/v2/volume_metadata.py:120 msgid "Malformed request body" msgstr "" #: cinder/api/openstack/wsgi.py:921 msgid "Unsupported Content-Type" msgstr "" #: cinder/api/openstack/wsgi.py:933 msgid "Malformed request url" msgstr "" #: cinder/api/openstack/wsgi.py:981 #, python-format msgid "%(url)s returned a fault: %(e)s" msgstr "" #: cinder/api/openstack/volume/__init__.py:25 msgid "" "cinder.api.openstack.volume:APIRouter is deprecated. Please use " "cinder.api.v1.router:APIRouter instead." msgstr "" #: cinder/api/openstack/volume/versions.py:26 msgid "" "cinder.api.openstack.volume.versions.Versions is deprecated. Please use " "cinder.api.versions.Versions instead." msgstr "" #: cinder/api/v1/limits.py:139 cinder/api/v2/limits.py:138 #, python-format msgid "" "Only %(value)s %(verb)s request(s) can be made to %(uri)s every " "%(unit_string)s." msgstr "" #: cinder/api/v1/limits.py:264 cinder/api/v2/limits.py:261 msgid "This request was rate-limited." msgstr "" #: cinder/api/v1/snapshot_metadata.py:37 cinder/api/v1/snapshot_metadata.py:117 #: cinder/api/v1/snapshot_metadata.py:156 cinder/api/v2/snapshot_metadata.py:37 #: cinder/api/v2/snapshot_metadata.py:117 #: cinder/api/v2/snapshot_metadata.py:156 msgid "snapshot does not exist" msgstr "" #: cinder/api/v1/snapshot_metadata.py:139 #: cinder/api/v1/snapshot_metadata.py:149 cinder/api/v1/volume_metadata.py:139 #: cinder/api/v1/volume_metadata.py:149 cinder/api/v2/snapshot_metadata.py:139 #: cinder/api/v2/snapshot_metadata.py:149 cinder/api/v2/volume_metadata.py:138 #: cinder/api/v2/volume_metadata.py:148 msgid "Metadata item was not found" msgstr "" #: cinder/api/v1/snapshots.py:119 cinder/api/v2/snapshots.py:120 #, python-format msgid "Delete snapshot with id: %s" msgstr "" #: cinder/api/v1/snapshots.py:173 cinder/api/v2/snapshots.py:184 msgid "'volume_id' must be specified" msgstr "" #: cinder/api/v1/snapshots.py:182 cinder/api/v2/snapshots.py:193 #, python-format msgid "Create snapshot from volume %s" msgstr "" #: cinder/api/v1/snapshots.py:186 cinder/api/v2/snapshots.py:202 #, python-format msgid "Invalid value '%s' for force. " msgstr "" #: cinder/api/v1/volume_metadata.py:37 cinder/api/v1/volume_metadata.py:117 #: cinder/api/v1/volume_metadata.py:156 cinder/api/v2/volume_metadata.py:36 #: cinder/api/v2/volume_metadata.py:116 cinder/api/v2/volume_metadata.py:155 msgid "volume does not exist" msgstr "" #: cinder/api/v1/volumes.py:114 #, python-format msgid "vol=%s" msgstr "" #: cinder/api/v1/volumes.py:293 cinder/api/v2/volumes.py:181 #, python-format msgid "Delete volume with id: %s" msgstr "" #: cinder/api/v1/volumes.py:347 cinder/api/v1/volumes.py:351 #: cinder/api/v2/volumes.py:251 cinder/api/v2/volumes.py:255 msgid "Invalid imageRef provided." msgstr "" #: cinder/api/v1/volumes.py:391 cinder/api/v2/volumes.py:308 #, python-format msgid "snapshot id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:404 #, python-format msgid "source vol id:%s not found" msgstr "" #: cinder/api/v1/volumes.py:415 cinder/api/v2/volumes.py:331 #, python-format msgid "Create volume of %s GB" msgstr "" #: cinder/api/v1/volumes.py:504 #, python-format msgid "Removing options '%(bad_options)s' from query" msgstr "" #: cinder/api/v2/snapshots.py:111 cinder/api/v2/snapshots.py:126 #: cinder/api/v2/snapshots.py:267 msgid "Snapshot could not be found" msgstr "" #: cinder/api/v2/snapshots.py:230 cinder/api/v2/volumes.py:369 msgid "Missing request body" msgstr "" #: cinder/api/v2/types.py:70 msgid "Volume type not found" msgstr "" #: cinder/api/v2/volumes.py:320 #, python-format msgid "source volume id:%s not found" msgstr "" #: cinder/api/v2/volumes.py:431 #, python-format msgid "Removing options '%s' from query" msgstr "" #: cinder/backup/api.py:66 msgid "Backup status must be available or error" msgstr "" #: cinder/backup/api.py:115 msgid "Volume to be backed up must be available" msgstr "" #: cinder/backup/api.py:150 msgid "Backup status must be available" msgstr "" #: cinder/backup/api.py:155 msgid "Backup to be restored has invalid size" msgstr "" #: cinder/backup/api.py:164 #, python-format msgid "Creating volume of %(size)s GB for restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:180 msgid "Volume to be restored to must be available" msgstr "" #: cinder/backup/api.py:186 #, python-format msgid "" "volume size %(volume_size)d is too small to restore backup of size " "%(size)d." msgstr "" #: cinder/backup/api.py:191 #, python-format msgid "Overwriting volume %(volume_id)s with restore of backup %(backup_id)s" msgstr "" #: cinder/backup/api.py:225 #, python-format msgid "Backup status must be available and not %s." msgstr "" #: cinder/backup/driver.py:53 #, python-format msgid "Value with type=%s is not serializable" msgstr "" #: cinder/backup/driver.py:66 cinder/backup/driver.py:89 #: cinder/backup/driver.py:112 #, python-format msgid "Getting metadata type '%s'" msgstr "" #: cinder/backup/driver.py:73 cinder/backup/driver.py:96 #: cinder/backup/driver.py:120 #, python-format msgid "Unable to serialize field '%s' - excluding from backup" msgstr "" #: cinder/backup/driver.py:78 cinder/backup/driver.py:101 #: cinder/backup/driver.py:125 #, python-format msgid "Completed fetching metadata type '%s'" msgstr "" #: cinder/backup/driver.py:80 cinder/backup/driver.py:103 #: cinder/backup/driver.py:127 #, python-format msgid "No metadata type '%s' available" msgstr "" #: cinder/backup/driver.py:143 #, python-format msgid "Excluding field '%s'" msgstr "" #: cinder/backup/driver.py:149 msgid "Restoring volume base metadata" msgstr "" #: cinder/backup/driver.py:162 msgid "Restoring volume metadata" msgstr "" #: cinder/backup/driver.py:171 msgid "Restoring volume glance metadata" msgstr "" #: cinder/backup/driver.py:229 #, python-format msgid "Unsupported backup metadata version (%s)" msgstr "" #: cinder/backup/driver.py:238 #, python-format msgid "No metadata of type '%s' to restore" msgstr "" #: cinder/backup/manager.py:102 msgid "NULL host not allowed for volume backend lookup." msgstr "" #: cinder/backup/manager.py:105 #, python-format msgid "Checking hostname '%s' for backend info." msgstr "" #: cinder/backup/manager.py:112 #, python-format msgid "Backend not found in hostname (%s) so using default." msgstr "" #: cinder/backup/manager.py:122 #, python-format msgid "Manager requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:125 cinder/backup/manager.py:137 msgid "Fetching default backend." msgstr "" #: cinder/backup/manager.py:128 #, python-format msgid "Volume manager for backend '%s' does not exist." msgstr "" #: cinder/backup/manager.py:134 #, python-format msgid "Driver requested for volume_backend '%s'." msgstr "" #: cinder/backup/manager.py:152 #, python-format msgid "" "Registering backend %(backend)s (host=%(host)s " "backend_name=%(backend_name)s)." msgstr "" #: cinder/backup/manager.py:159 #, python-format msgid "Registering default backend %s." msgstr "" #: cinder/backup/manager.py:163 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)." msgstr "" #: cinder/backup/manager.py:170 #, python-format msgid "Error encountered during initialization of driver: %(name)s." msgstr "" #: cinder/backup/manager.py:189 msgid "Cleaning up incomplete backup operations." msgstr "" #: cinder/backup/manager.py:194 #, python-format msgid "Resetting volume %s to available (was backing-up)." msgstr "" #: cinder/backup/manager.py:199 #, python-format msgid "Resetting volume %s to error_restoring (was restoring-backup)." msgstr "" #: cinder/backup/manager.py:211 #, python-format msgid "Resetting backup %s to error (was creating)." msgstr "" #: cinder/backup/manager.py:217 #, python-format msgid "Resetting backup %s to available (was restoring)." msgstr "" #: cinder/backup/manager.py:222 #, python-format msgid "Resuming delete on backup: %s." msgstr "" #: cinder/backup/manager.py:230 #, python-format msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:242 #, python-format msgid "" "Create backup aborted, expected volume status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:254 #, python-format msgid "" "Create backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:287 #, python-format msgid "Create backup finished. backup: %s." msgstr "" #: cinder/backup/manager.py:291 #, python-format msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." msgstr "" #: cinder/backup/manager.py:304 #, python-format msgid "" "Restore backup aborted, expected volume status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:314 #, python-format msgid "" "Restore backup aborted: expected backup status %(expected_status)s but " "got %(actual_status)s." msgstr "" #: cinder/backup/manager.py:332 #, python-format msgid "" "Restore backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:363 #, python-format msgid "" "Restore backup finished, backup %(backup_id)s restored to volume " "%(volume_id)s." msgstr "" #: cinder/backup/manager.py:382 #, python-format msgid "Delete backup started, backup: %s." msgstr "" #: cinder/backup/manager.py:389 #, python-format msgid "" "Delete_backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:402 #, python-format msgid "" "Delete backup aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:425 #, python-format msgid "Delete backup finished, backup %s deleted." msgstr "" #: cinder/backup/manager.py:440 #, python-format msgid "Export record started, backup: %s." msgstr "" #: cinder/backup/manager.py:447 #, python-format msgid "" "Export backup aborted, expected backup status %(expected_status)s but got" " %(actual_status)s." msgstr "" #: cinder/backup/manager.py:458 #, python-format msgid "" "Export record aborted, the backup service currently configured " "[%(configured_service)s] is not the backup service that was used to " "create this backup [%(backup_service)s]." msgstr "" #: cinder/backup/manager.py:476 #, python-format msgid "Export record finished, backup %s exported." msgstr "" #: cinder/backup/manager.py:495 #, python-format msgid "Import record started, backup_url: %s." msgstr "" #: cinder/backup/manager.py:511 #, python-format msgid "" "Import record failed, cannot find backup service to perform the import. " "Request service %(service)s" msgstr "" #: cinder/backup/manager.py:546 #, python-format msgid "Backup metadata received from driver for import is missing %s." msgstr "" #: cinder/backup/manager.py:561 #, python-format msgid "" "Backup service %(service)s does not support verify. Backup id %(id)s is " "not verified. Skipping verify." msgstr "" #: cinder/backup/manager.py:572 #, python-format msgid "Import record id %s metadata from driver finished." msgstr "" #: cinder/backup/drivers/ceph.py:127 cinder/tests/test_backup_ceph.py:827 #, python-format msgid "Metadata backup object '%s' already exists" msgstr "" #: cinder/backup/drivers/ceph.py:139 #, python-format msgid "Metadata backup object %s does not exist" msgstr "" #: cinder/backup/drivers/ceph.py:150 #, python-format msgid "Metadata backup object '%s' not found - ignoring" msgstr "" #: cinder/backup/drivers/ceph.py:178 msgid "" "RBD striping not supported - ignoring configuration settings for rbd " "striping" msgstr "" #: cinder/backup/drivers/ceph.py:201 #, python-format msgid "invalid user '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:267 msgid "Backup id required" msgstr "" #: cinder/backup/drivers/ceph.py:279 #, python-format msgid "Discarding %(length)s bytes from offset %(offset)s" msgstr "" #: cinder/backup/drivers/ceph.py:287 #, python-format msgid "Writing zeroes chunk %d" msgstr "" #: cinder/backup/drivers/ceph.py:301 #, python-format msgid "Transferring data between '%(src)s' and '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:305 #, python-format msgid "%(chunks)s chunks of %(bytes)s bytes to be transferred" msgstr "" #: cinder/backup/drivers/ceph.py:324 #, python-format msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" msgstr "" #: cinder/backup/drivers/ceph.py:334 #, python-format msgid "Transferring remaining %s bytes" msgstr "" #: cinder/backup/drivers/ceph.py:350 #, python-format msgid "Creating base image '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:377 cinder/backup/drivers/ceph.py:661 #, python-format msgid "Deleting backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:380 msgid "No backup snapshot to delete" msgstr "" #: cinder/backup/drivers/ceph.py:416 #, python-format msgid "Trying diff format name format basename='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:424 #, python-format msgid "image %s not found" msgstr "" #: cinder/backup/drivers/ceph.py:432 #, python-format msgid "Base image still has %s snapshots so skipping base image delete" msgstr "" #: cinder/backup/drivers/ceph.py:437 #, python-format msgid "Deleting base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:444 #, python-format msgid "Image busy, retrying %(retries)s more time(s) in %(delay)ss" msgstr "" #: cinder/backup/drivers/ceph.py:449 msgid "Max retries reached - raising error" msgstr "" #: cinder/backup/drivers/ceph.py:452 #, python-format msgid "Base backup image='%s' deleted)" msgstr "" #: cinder/backup/drivers/ceph.py:462 #, python-format msgid "Deleting source snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:508 #, python-format msgid "Performing differential transfer from '%(src)s' to '%(dest)s'" msgstr "" #: cinder/backup/drivers/ceph.py:536 #, python-format msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" msgstr "" #: cinder/backup/drivers/ceph.py:546 #, python-format msgid "Image '%s' not found - trying diff format name" msgstr "" #: cinder/backup/drivers/ceph.py:551 #, python-format msgid "Diff format image '%s' not found" msgstr "" #: cinder/backup/drivers/ceph.py:586 #, python-format msgid "Using --from-snap '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:601 #, python-format msgid "Source snapshot '%s' is stale so deleting" msgstr "" #: cinder/backup/drivers/ceph.py:613 #, python-format msgid "" "Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " "incremental backup" msgstr "" #: cinder/backup/drivers/ceph.py:624 #, python-format msgid "Creating backup snapshot='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:644 #, python-format msgid "Differential backup transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:653 msgid "Differential backup transfer failed" msgstr "" #: cinder/backup/drivers/ceph.py:683 #, python-format msgid "Creating base image='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:692 msgid "Copying data" msgstr "" #: cinder/backup/drivers/ceph.py:753 #, python-format msgid "Looking for snapshot of backup base '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:756 #, python-format msgid "Backup base '%s' has no snapshots" msgstr "" #: cinder/backup/drivers/ceph.py:763 #, python-format msgid "Backup '%s' has no snapshot" msgstr "" #: cinder/backup/drivers/ceph.py:767 #, python-format msgid "Backup should only have one snapshot but instead has %s" msgstr "" #: cinder/backup/drivers/ceph.py:772 #, python-format msgid "Found snapshot '%s'" msgstr "" #: cinder/backup/drivers/ceph.py:793 msgid "Need non-zero volume size" msgstr "" #: cinder/backup/drivers/ceph.py:817 #, python-format msgid "Failed to backup volume metadata - %s" msgstr "" #: cinder/backup/drivers/ceph.py:832 #, python-format msgid "Starting backup of volume='%s'" msgstr "" #: cinder/backup/drivers/ceph.py:845 msgid "Forcing full backup" msgstr "" #: cinder/backup/drivers/ceph.py:865 #, python-format msgid "Backup '%s' finished." msgstr "" #: cinder/backup/drivers/ceph.py:924 msgid "Adjusting restore vol size" msgstr "" #: cinder/backup/drivers/ceph.py:936 #, python-format msgid "Attempting incremental restore from base='%(base)s' snap='%(snap)s'" msgstr "" #: cinder/backup/drivers/ceph.py:948 msgid "Differential restore failed, trying full restore" msgstr "" #: cinder/backup/drivers/ceph.py:959 #, python-format msgid "Restore transfer completed in %.4fs" msgstr "" #: cinder/backup/drivers/ceph.py:1008 #, python-format msgid "RBD has %s extents" msgstr "" #: cinder/backup/drivers/ceph.py:1045 msgid "Destination volume is same as backup source volume - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1056 msgid "Destination has extents - forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1061 #, python-format msgid "No restore point found for backup='%s', forcing full copy" msgstr "" #: cinder/backup/drivers/ceph.py:1092 msgid "Forcing full restore" msgstr "" #: cinder/backup/drivers/ceph.py:1112 msgid "Volume has no backed up metadata" msgstr "" #: cinder/backup/drivers/ceph.py:1114 cinder/backup/drivers/swift.py:457 #: cinder/tests/test_backup_ceph.py:816 msgid "Metadata restore failed due to incompatible version" msgstr "" #: cinder/backup/drivers/ceph.py:1124 #, python-format msgid "Starting restore from Ceph backup=%(src)s to volume=%(dest)s" msgstr "" #: cinder/backup/drivers/ceph.py:1135 msgid "Volume_file does not support fileno() so skipping fsync()" msgstr "" #: cinder/backup/drivers/ceph.py:1142 msgid "Restore finished successfully." msgstr "" #: cinder/backup/drivers/ceph.py:1144 #, python-format msgid "Restore finished with error - %s" msgstr "" #: cinder/backup/drivers/ceph.py:1150 #, python-format msgid "Delete started for backup=%s" msgstr "" #: cinder/backup/drivers/ceph.py:1156 msgid "" "RBD image not found but continuing anyway so that we can attempt to " "delete metadata backup and db entry can be removed" msgstr "" #: cinder/backup/drivers/ceph.py:1166 #, python-format msgid "Delete '%s' finished with warning" msgstr "" #: cinder/backup/drivers/ceph.py:1168 #, python-format msgid "Delete '%s' finished" msgstr "" #: cinder/backup/drivers/swift.py:105 #, python-format msgid "unsupported compression algorithm: %s" msgstr "" #: cinder/backup/drivers/swift.py:122 #, python-format msgid "single_user auth mode enabled, but %(param)s not set" msgstr "" #: cinder/backup/drivers/swift.py:140 #, python-format msgid "_create_container started, container: %(container)s,backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:159 #, python-format msgid "_generate_swift_object_name_prefix: %s" msgstr "" #: cinder/backup/drivers/swift.py:168 #, python-format msgid "generated object list: %s" msgstr "" #: cinder/backup/drivers/swift.py:179 #, python-format msgid "" "_write_metadata started, container name: %(container)s, metadata " "filename: %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:197 #, python-format msgid "" "error writing metadata file to swift, MD5 of metadata file in swift " "[%(etag)s] is not the same as MD5 of metadata file sent to swift " "[%(md5)s]" msgstr "" #: cinder/backup/drivers/swift.py:202 msgid "_write_metadata finished" msgstr "" #: cinder/backup/drivers/swift.py:207 #, python-format msgid "" "_read_metadata started, container name: %(container)s, metadata filename:" " %(filename)s" msgstr "" #: cinder/backup/drivers/swift.py:212 #, python-format msgid "_read_metadata finished (%s)" msgstr "" #: cinder/backup/drivers/swift.py:222 #, python-format msgid "volume size %d is invalid." msgstr "" #: cinder/backup/drivers/swift.py:236 #, python-format msgid "" "starting backup of volume: %(volume_id)s to swift, volume size: " "%(volume_size_bytes)d, swift object names prefix %(object_prefix)s, " "availability zone: %(availability_zone)s" msgstr "" #: cinder/backup/drivers/swift.py:260 msgid "reading chunk of data from volume" msgstr "" #: cinder/backup/drivers/swift.py:267 #, python-format msgid "" "compressed %(data_size_bytes)d bytes of data to %(comp_size_bytes)d bytes" " using %(algorithm)s" msgstr "" #: cinder/backup/drivers/swift.py:276 msgid "not compressing data" msgstr "" #: cinder/backup/drivers/swift.py:280 msgid "About to put_object" msgstr "" #: cinder/backup/drivers/swift.py:286 #, python-format msgid "swift MD5 for %(object_name)s: %(etag)s" msgstr "" #: cinder/backup/drivers/swift.py:290 #, python-format msgid "backup MD5 for %(object_name)s: %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:293 #, python-format msgid "" "error writing object to swift, MD5 of object in swift %(etag)s is not the" " same as MD5 of object sent to swift %(md5)s" msgstr "" #: cinder/backup/drivers/swift.py:301 msgid "Calling eventlet.sleep(0)" msgstr "" #: cinder/backup/drivers/swift.py:319 #, python-format msgid "backup %s finished." msgstr "" #: cinder/backup/drivers/swift.py:352 #, python-format msgid "Backup volume metadata to swift failed: %s" msgstr "" #: cinder/backup/drivers/swift.py:362 #, python-format msgid "v1 swift volume backup restore of %s started" msgstr "" #: cinder/backup/drivers/swift.py:367 #, python-format msgid "metadata_object_names = %s" msgstr "" #: cinder/backup/drivers/swift.py:373 msgid "" "restore_backup aborted, actual swift object list in swift does not match " "object list stored in metadata" msgstr "" #: cinder/backup/drivers/swift.py:379 #, python-format msgid "" "restoring object from swift. backup: %(backup_id)s, container: " "%(container)s, swift object name: %(object_name)s, volume: %(volume_id)s" msgstr "" #: cinder/backup/drivers/swift.py:395 #, python-format msgid "decompressing data using %s algorithm" msgstr "" #: cinder/backup/drivers/swift.py:418 #, python-format msgid "v1 swift volume backup restore of %s finished" msgstr "" #: cinder/backup/drivers/swift.py:426 #, python-format msgid "" "starting restore of backup %(object_prefix)s from swift container: " "%(container)s, to volume %(volume_id)s, backup: %(backup_id)s" msgstr "" #: cinder/backup/drivers/swift.py:440 #, python-format msgid "Restoring swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:445 #, python-format msgid "No support to restore swift backup version %s" msgstr "" #: cinder/backup/drivers/swift.py:461 #, python-format msgid "restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/swift.py:475 msgid "swift error while listing objects, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:484 #, python-format msgid "swift error while deleting object %s, continuing with delete" msgstr "" #: cinder/backup/drivers/swift.py:487 #, python-format msgid "deleted swift object: %(swift_object_name)s in container: %(container)s" msgstr "" #: cinder/backup/drivers/swift.py:497 #, python-format msgid "delete %s finished" msgstr "" #: cinder/backup/drivers/tsm.py:78 #, python-format msgid "" "%(op)s: backup %(bck_id)s, volume %(vol_id)s failed. Backup object has " "unexpected mode. Image or file backups supported, actual mode is " "%(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:113 #, python-format msgid "" "backup: %(vol_id)s failed to create device hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:211 #, python-format msgid "" "backup: %(vol_id)s failed. %(path)s is unexpected file type. Block or " "regular files supported, actual file mode is %(vol_mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:221 #, python-format msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." msgstr "" #: cinder/backup/drivers/tsm.py:228 #, python-format msgid "backup: %(vol_id)s failed. %(path)s is not a file." msgstr "" #: cinder/backup/drivers/tsm.py:251 #, python-format msgid "" "backup: %(vol_id)s failed to remove backup hardlink from %(vpath)s to " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:298 #, python-format msgid "" "backup: %(vol_id)s failed to obtain backup success notification from " "server.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:339 #, python-format msgid "" "restore: %(vol_id)s failed.\n" "stdout: %(out)s\n" " stderr: %(err)s." msgstr "" #: cinder/backup/drivers/tsm.py:362 msgid "" "Volume metadata backup requested but this driver does not yet support " "this feature." msgstr "" #: cinder/backup/drivers/tsm.py:370 #, python-format msgid "" "Starting backup of volume: %(volume_id)s to TSM, volume path: " "%(volume_path)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:391 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:401 #, python-format msgid "" "backup: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:415 #, python-format msgid "Backup %s finished." msgstr "" #: cinder/backup/drivers/tsm.py:431 #, python-format msgid "" "Starting restore of backup from TSM to volume %(volume_id)s, backup: " "%(backup_id)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:452 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc on %(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:462 #, python-format msgid "" "restore: %(vol_id)s failed to run dsmc due to invalid arguments on " "%(bpath)s.\n" "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:476 #, python-format msgid "Restore %(backup_id)s to %(volume_id)s finished." msgstr "" #: cinder/backup/drivers/tsm.py:491 #, python-format msgid "Delete started for backup: %(backup)s, mode: %(mode)s." msgstr "" #: cinder/backup/drivers/tsm.py:508 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:516 #, python-format msgid "" "delete: %(vol_id)s failed to run dsmc due to invalid arguments with " "stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:530 #, python-format msgid "" "delete: %(vol_id)s failed with stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/backup/drivers/tsm.py:537 #, python-format msgid "Delete %s finished." msgstr "" #: cinder/brick/exception.py:52 #, python-format msgid "Exception in string format operation. msg='%s'" msgstr "" #: cinder/brick/exception.py:88 msgid "We are unable to locate any Fibre Channel devices." msgstr "" #: cinder/brick/exception.py:92 msgid "Unable to find a Fibre Channel volume device." msgstr "" #: cinder/brick/exception.py:96 #, python-format msgid "Volume device not found at %(device)s." msgstr "" #: cinder/brick/exception.py:100 #, python-format msgid "Unable to find Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:104 #, python-format msgid "Failed to create Volume Group: %(vg_name)s" msgstr "" #: cinder/brick/exception.py:108 #, python-format msgid "Failed to create iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:112 #, python-format msgid "Failed to remove iscsi target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:116 #, python-format msgid "Failed to attach iSCSI target for volume %(volume_id)s." msgstr "" #: cinder/brick/exception.py:120 #, python-format msgid "Connect to volume via protocol %(protocol)s not supported." msgstr "" #: cinder/brick/initiator/connector.py:127 #, python-format msgid "Invalid InitiatorConnector protocol specified %(protocol)s" msgstr "" #: cinder/brick/initiator/connector.py:140 #, python-format msgid "Failed to access the device on the path %(path)s: %(error)s %(info)s." msgstr "" #: cinder/brick/initiator/connector.py:229 #, python-format msgid "" "ISCSI volume not yet found at: %(host_device)s. Will rescan & retry. Try" " number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:242 #, python-format msgid "Found iSCSI node %(host_device)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:317 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" #: cinder/brick/initiator/connector.py:609 msgid "We are unable to locate any Fibre Channel devices" msgstr "" #: cinder/brick/initiator/connector.py:619 #, python-format msgid "Looking for Fibre Channel dev %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:629 msgid "Fibre Channel volume device not found." msgstr "" #: cinder/brick/initiator/connector.py:633 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:649 #, python-format msgid "Found Fibre Channel volume %(name)s (after %(tries)s rescans)" msgstr "" #: cinder/brick/initiator/connector.py:658 #, python-format msgid "Multipath device discovered %(device)s" msgstr "" #: cinder/brick/initiator/connector.py:776 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" #: cinder/brick/initiator/connector.py:789 #, python-format msgid "Found AoE device %(path)s (after %(tries)s rediscover)" msgstr "" #: cinder/brick/initiator/connector.py:815 #, python-format msgid "aoe-discover: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:825 #, python-format msgid "aoe-revalidate %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:834 #, python-format msgid "aoe-flush %(dev)s: stdout=%(out)s stderr%(err)s" msgstr "" #: cinder/brick/initiator/connector.py:858 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" #: cinder/brick/initiator/connector.py:915 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" #: cinder/brick/initiator/linuxfc.py:50 cinder/brick/initiator/linuxfc.py:56 msgid "systool is not installed" msgstr "" #: cinder/brick/initiator/linuxscsi.py:99 #: cinder/brick/initiator/linuxscsi.py:107 #: cinder/brick/initiator/linuxscsi.py:124 #, python-format msgid "multipath call failed exit (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:145 #, python-format msgid "Couldn't find multipath device %(line)s" msgstr "" #: cinder/brick/initiator/linuxscsi.py:149 #, python-format msgid "Found multipath device = %(mdev)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:135 msgid "Attempting recreate of backing lun..." msgstr "" #: cinder/brick/iscsi/iscsi.py:153 #, python-format msgid "" "Failed to recover attempt to create iscsi backing lun for volume " "id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:172 #, python-format msgid "Creating iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:179 #, python-format msgid "" "Created volume path %(vp)s,\n" "content: %(vc)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:211 cinder/brick/iscsi/iscsi.py:367 #, python-format msgid "Failed to create iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:222 #, python-format msgid "" "Failed to create iscsi target for volume id:%(vol_id)s. Please ensure " "your tgtd config file contains 'include %(volumes_dir)s/*'" msgstr "" #: cinder/brick/iscsi/iscsi.py:252 #, python-format msgid "Removing iscsi_target for: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:256 #, python-format msgid "Volume path %s does not exist, nothing to remove." msgstr "" #: cinder/brick/iscsi/iscsi.py:274 #, python-format msgid "Failed to remove iscsi target for volume id:%(vol_id)s: %(e)s" msgstr "" #: cinder/brick/iscsi/iscsi.py:292 cinder/brick/iscsi/iscsi.py:546 msgid "valid iqn needed for show_target" msgstr "" #: cinder/brick/iscsi/iscsi.py:374 #, python-format msgid "Removing iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:468 msgid "cinder-rtstool is not installed correctly" msgstr "" #: cinder/brick/iscsi/iscsi.py:488 #, python-format msgid "Creating iscsi_target for volume: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:512 cinder/brick/iscsi/iscsi.py:521 #, python-format msgid "Failed to create iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:528 #, python-format msgid "Removing iscsi_target: %s" msgstr "" #: cinder/brick/iscsi/iscsi.py:538 #, python-format msgid "Failed to remove iscsi target for volume id:%s." msgstr "" #: cinder/brick/iscsi/iscsi.py:567 #, python-format msgid "Failed to add initiator iqn %s to target" msgstr "" #: cinder/brick/local_dev/lvm.py:75 msgid "Error creating Volume Group" msgstr "" #: cinder/brick/local_dev/lvm.py:76 cinder/brick/local_dev/lvm.py:158 #: cinder/brick/local_dev/lvm.py:478 cinder/brick/local_dev/lvm.py:508 #: cinder/brick/local_dev/lvm.py:551 cinder/brick/local_dev/lvm.py:643 #: cinder/brick/local_dev/lvm.py:681 #, python-format msgid "Cmd :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:77 cinder/brick/local_dev/lvm.py:159 #: cinder/brick/local_dev/lvm.py:479 cinder/brick/local_dev/lvm.py:509 #: cinder/brick/local_dev/lvm.py:552 cinder/brick/local_dev/lvm.py:644 #: cinder/brick/local_dev/lvm.py:682 #, python-format msgid "StdOut :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:78 cinder/brick/local_dev/lvm.py:160 #: cinder/brick/local_dev/lvm.py:480 cinder/brick/local_dev/lvm.py:510 #: cinder/brick/local_dev/lvm.py:553 cinder/brick/local_dev/lvm.py:645 #: cinder/brick/local_dev/lvm.py:683 #, python-format msgid "StdErr :%s" msgstr "" #: cinder/brick/local_dev/lvm.py:82 #, python-format msgid "Unable to locate Volume Group %s" msgstr "" #: cinder/brick/local_dev/lvm.py:157 msgid "Error querying thin pool about data_percent" msgstr "" #: cinder/brick/local_dev/lvm.py:370 #, python-format msgid "Unable to find VG: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:420 msgid "" "Requested to setup thin provisioning, however current LVM version does " "not support it." msgstr "" #: cinder/brick/local_dev/lvm.py:434 #, python-format msgid "Created thin pool '%(pool)s' with size %(size)s of total %(free)sg" msgstr "" #: cinder/brick/local_dev/lvm.py:477 msgid "Error creating Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:493 #, python-format msgid "Trying to create snapshot by non-existent LV: %s" msgstr "" #: cinder/brick/local_dev/lvm.py:507 msgid "Error creating snapshot" msgstr "" #: cinder/brick/local_dev/lvm.py:550 msgid "Error activating LV" msgstr "" #: cinder/brick/local_dev/lvm.py:582 #, python-format msgid "Error during lvchange -an: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:599 #, python-format msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" msgstr "" #: cinder/brick/local_dev/lvm.py:604 msgid "Attempting udev settle and retry of lvremove..." msgstr "" #: cinder/brick/local_dev/lvm.py:642 msgid "Error extending Volume" msgstr "" #: cinder/brick/local_dev/lvm.py:680 msgid "Error renaming logical volume" msgstr "" #: cinder/brick/remotefs/remotefs.py:41 msgid "nfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:48 msgid "glusterfs_mount_point_base required" msgstr "" #: cinder/brick/remotefs/remotefs.py:89 #, python-format msgid "Already mounted: %s" msgstr "" #: cinder/brick/remotefs/remotefs.py:123 #, python-format msgid "Mounted %(sh)s using %(mnt_type)s." msgstr "" #: cinder/brick/remotefs/remotefs.py:128 #, python-format msgid "Failed to do %s mount." msgstr "" #: cinder/brick/remotefs/remotefs.py:129 #, python-format msgid "NFS mount failed for share %(sh)s.Error - %(error)s" msgstr "" #: cinder/common/config.py:120 msgid "Deploy v1 of the Cinder API." msgstr "" #: cinder/common/config.py:123 msgid "Deploy v2 of the Cinder API." msgstr "" #: cinder/common/sqlalchemyutils.py:66 #: cinder/openstack/common/db/sqlalchemy/utils.py:72 msgid "Id not in sort_keys; is sort_keys unique?" msgstr "" #: cinder/common/sqlalchemyutils.py:114 #: cinder/openstack/common/db/sqlalchemy/utils.py:120 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" #: cinder/compute/nova.py:97 #, python-format msgid "Novaclient connection created using URL: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:65 msgid "Use of empty request context is deprecated" msgstr "" #: cinder/db/sqlalchemy/api.py:192 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" #: cinder/db/sqlalchemy/api.py:845 #, python-format msgid "Change will make usage less than 0 for the following resources: %s" msgstr "" #: cinder/db/sqlalchemy/api.py:1274 msgid "'migration_status' column could not be found." msgstr "" #: cinder/db/sqlalchemy/api.py:1284 msgid "'metadata' filter value is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1294 #, python-format msgid "'%s' filter key is not valid, it maps to a relationship." msgstr "" #: cinder/db/sqlalchemy/api.py:1299 #, python-format msgid "'%s' filter key is not valid." msgstr "" #: cinder/db/sqlalchemy/api.py:1965 #, python-format msgid "VolumeType %s deletion failed, VolumeType in use." msgstr "" #: cinder/db/sqlalchemy/api.py:2666 #, python-format msgid "No backup with id %s" msgstr "" #: cinder/db/sqlalchemy/api.py:2751 msgid "Volume must be available" msgstr "" #: cinder/db/sqlalchemy/api.py:2775 #, python-format msgid "Volume in unexpected state %s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/api.py:2798 #, python-format msgid "" "Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " "%(status)s, expected awaiting-transfer" msgstr "" #: cinder/db/sqlalchemy/migration.py:37 msgid "version should be an integer" msgstr "" #: cinder/db/sqlalchemy/migration.py:64 msgid "Upgrade DB using Essex release first." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:240 msgid "Exception while creating table." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:269 msgid "Downgrade from initial Cinder install is unsupported." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:49 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:74 #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:105 #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:56 #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:45 #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:48 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:80 #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:46 #, python-format msgid "Table |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:127 msgid "Dropping foreign key reservations_ibfk_1 failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:133 msgid "quota_classes table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:140 msgid "quota_usages table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:147 msgid "reservations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:60 msgid "Exception while creating table 'volume_glance_metadata'" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:75 msgid "volume_glance_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:68 msgid "backups table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:58 msgid "snapshot_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:61 msgid "transfers table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:31 msgid "migrations table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:61 #, python-format msgid "Table |%s| not created" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:37 #, python-format msgid "Exception while dropping table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:100 #, python-format msgid "Exception while creating table %s." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:34 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:43 #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:49 #, python-format msgid "Column |%s| not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:92 msgid "encryption_key_id column not dropped from volumes" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:100 msgid "encryption_key_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:105 msgid "volume_type_id column not dropped from snapshots" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:113 msgid "encryption table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:49 msgid "Table quality_of_service_specs not created!" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:60 msgid "Added qos_specs_id column to volume type table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:85 msgid "Dropping foreign key volume_types_ibfk_1 failed" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:93 msgid "Dropping qos_specs_id column failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:100 msgid "Dropping quality_of_service_specs table failed." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:59 msgid "volume_admin_metadata table not dropped" msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:48 msgid "" "Found existing 'default' entries in the quota_classes table. Skipping " "insertion of default values." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:72 msgid "Added default quota class data into the DB." msgstr "" #: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:74 msgid "Default quota class data not inserted into the DB." msgstr "" #: cinder/image/glance.py:162 cinder/image/glance.py:170 #, python-format msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" #: cinder/image/image_utils.py:94 cinder/image/image_utils.py:199 msgid "'qemu-img info' parsing failed." msgstr "" #: cinder/image/image_utils.py:101 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" #: cinder/image/image_utils.py:109 cinder/image/image_utils.py:192 #, python-format msgid "" "Size is %(image_size)dGB and doesn't fit in a volume of size " "%(volume_size)dGB." msgstr "" #: cinder/image/image_utils.py:157 #, python-format msgid "" "qemu-img is not installed and image is of type %s. Only RAW images can " "be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:164 msgid "" "qemu-img is not installed and the disk format is not specified. Only RAW" " images can be used if qemu-img is not installed." msgstr "" #: cinder/image/image_utils.py:178 #, python-format msgid "Copying image from %(tmp)s to volume %(dest)s - size: %(size)s" msgstr "" #: cinder/image/image_utils.py:206 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" #: cinder/image/image_utils.py:224 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" #: cinder/image/image_utils.py:260 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" #: cinder/keymgr/conf_key_mgr.py:78 msgid "" "config option keymgr.fixed_key has not been defined: some operations may " "fail unexpectedly" msgstr "" #: cinder/keymgr/conf_key_mgr.py:80 msgid "keymgr.fixed_key not defined" msgstr "" #: cinder/keymgr/conf_key_mgr.py:134 #, python-format msgid "Not deleting key %s" msgstr "" #: cinder/openstack/common/eventlet_backdoor.py:140 #, python-format msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" msgstr "" #: cinder/openstack/common/excutils.py:62 #, python-format msgid "Original exception being dropped: %s" msgstr "" #: cinder/openstack/common/excutils.py:91 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" #: cinder/openstack/common/fileutils.py:64 #, python-format msgid "Reloading cached file %s" msgstr "" #: cinder/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" #: cinder/openstack/common/gettextutils.py:280 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" #: cinder/openstack/common/imageutils.py:75 #, python-format msgid "Invalid input value \"%s\"." msgstr "" #: cinder/openstack/common/imageutils.py:104 msgid "Snapshot list encountered but no header found!" msgstr "" #: cinder/openstack/common/lockutils.py:102 #, python-format msgid "Could not release the acquired lock `%s`" msgstr "" #: cinder/openstack/common/lockutils.py:189 #, python-format msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:200 #, python-format msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:227 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/lockutils.py:235 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." msgstr "" #: cinder/openstack/common/log.py:326 #, python-format msgid "Deprecated: %s" msgstr "" #: cinder/openstack/common/log.py:437 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" #: cinder/openstack/common/log.py:488 #, python-format msgid "syslog facility must be one of: %s" msgstr "" #: cinder/openstack/common/log.py:709 #, python-format msgid "Fatal call to deprecated config: %(msg)s" msgstr "" #: cinder/openstack/common/loopingcall.py:82 #, python-format msgid "task run outlasted interval by %s sec" msgstr "" #: cinder/openstack/common/loopingcall.py:89 #: cinder/tests/brick/test_brick_connector.py:466 msgid "in fixed duration looping call" msgstr "" #: cinder/openstack/common/loopingcall.py:129 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" msgstr "" #: cinder/openstack/common/loopingcall.py:136 msgid "in dynamic looping call" msgstr "" #: cinder/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." msgstr "" #: cinder/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" msgstr "" #: cinder/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" msgstr "" #: cinder/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" #: cinder/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" #: cinder/openstack/common/policy.py:149 #, python-format msgid "" "Inheritance-based rules are deprecated; use the default brain instead of " "%s." msgstr "" #: cinder/openstack/common/policy.py:163 #, python-format msgid "Failed to understand rule %(match)r" msgstr "" #: cinder/openstack/common/policy.py:173 #, python-format msgid "Inheritance-based rules are deprecated; update _check_%s" msgstr "" #: cinder/openstack/common/policy.py:180 #, python-format msgid "No handler for matches of kind %s" msgstr "" #: cinder/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" #: cinder/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" #: cinder/openstack/common/processutils.py:167 #: cinder/openstack/common/processutils.py:239 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:448 #, python-format msgid "Result was %s" msgstr "" #: cinder/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." msgstr "" #: cinder/openstack/common/processutils.py:218 #, python-format msgid "Running cmd (SSH): %s" msgstr "" #: cinder/openstack/common/processutils.py:220 msgid "Environment not supported over SSH" msgstr "" #: cinder/openstack/common/processutils.py:224 msgid "process_input not supported over SSH" msgstr "" #: cinder/openstack/common/request_utils.py:66 #, python-format msgid "TargetId=%(id)s " msgstr "" #: cinder/openstack/common/request_utils.py:70 #, python-format msgid "Target='%(name)s' " msgstr "" #: cinder/openstack/common/request_utils.py:76 #, python-format msgid "" "Request ID Link: %(event_name)s " "'%(source_id)s'%(arrow)s%(target_name)s%(target_id)s" msgstr "" #: cinder/openstack/common/service.py:175 #: cinder/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" #: cinder/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" #: cinder/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" #: cinder/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" #: cinder/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" #: cinder/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" #: cinder/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" #: cinder/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" #: cinder/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" #: cinder/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" #: cinder/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" #: cinder/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" #: cinder/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" #: cinder/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" #: cinder/openstack/common/strutils.py:202 #, python-format msgid "Invalid unit system: \"%s\"" msgstr "" #: cinder/openstack/common/strutils.py:211 #, python-format msgid "Invalid string format: %s" msgstr "" #: cinder/openstack/common/versionutils.py:69 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " "may be removed in %(remove_in)s." msgstr "" #: cinder/openstack/common/versionutils.py:73 #, python-format msgid "" "%(what)s is deprecated as of %(as_of)s and may be removed in " "%(remove_in)s. It will not be superseded." msgstr "" #: cinder/openstack/common/crypto/utils.py:29 msgid "An unknown error occurred in crypto utils." msgstr "" #: cinder/openstack/common/crypto/utils.py:36 #, python-format msgid "Block size of %(given)d is too big, max = %(maximum)d" msgstr "" #: cinder/openstack/common/crypto/utils.py:45 #, python-format msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" #: cinder/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:487 msgid "DB exception wrapped." msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:538 #, python-format msgid "Got mysql server has gone away: %s" msgstr "" #: cinder/openstack/common/db/sqlalchemy/session.py:610 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" #: cinder/openstack/common/db/sqlalchemy/utils.py:33 msgid "Sort key supplied was not valid." msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:54 #, python-format msgid "extra_spec requirement '%(req)s' does not match '%(cap)s'" msgstr "" #: cinder/openstack/common/scheduler/filters/capabilities_filter.py:67 #, python-format msgid "%(host_state)s fails resource_type extra_specs requirements" msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:43 msgid "Re-scheduling is disabled." msgstr "" #: cinder/openstack/common/scheduler/filters/ignore_attempted_hosts_filter.py:52 #, python-format msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s" msgstr "" #: cinder/scheduler/driver.py:69 msgid "Must implement host_passes_filters" msgstr "" #: cinder/scheduler/driver.py:74 msgid "Must implement find_retype_host" msgstr "" #: cinder/scheduler/driver.py:78 msgid "Must implement a fallback schedule" msgstr "" #: cinder/scheduler/driver.py:82 msgid "Must implement schedule_create_volume" msgstr "" #: cinder/scheduler/filter_scheduler.py:98 #, python-format msgid "cannot place volume %(id)s on %(host)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:114 #, python-format msgid "No valid hosts for volume %(id)s with type %(type)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:125 #, python-format msgid "" "Current host not valid for volume %(id)s with type %(type)s, migration " "not allowed" msgstr "" #: cinder/scheduler/filter_scheduler.py:156 msgid "Invalid value for 'scheduler_max_attempts', must be >=1" msgstr "" #: cinder/scheduler/filter_scheduler.py:174 #, python-format msgid "" "Error scheduling %(volume_id)s from last vol-service: %(last_host)s : " "%(exc)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:207 #, python-format msgid "Exceeded max scheduling attempts %(max_attempts)d for volume %(volume_id)s" msgstr "" #: cinder/scheduler/filter_scheduler.py:259 #, python-format msgid "Filtered %s" msgstr "" #: cinder/scheduler/filter_scheduler.py:276 #, python-format msgid "Choosing %s" msgstr "" #: cinder/scheduler/host_manager.py:266 #, python-format msgid "Ignoring %(service_name)s service update from %(host)s" msgstr "" #: cinder/scheduler/host_manager.py:271 #, python-format msgid "Received %(service_name)s service update from %(host)s." msgstr "" #: cinder/scheduler/host_manager.py:297 #, python-format msgid "volume service is down or disabled. (host: %s)" msgstr "" #: cinder/scheduler/host_manager.py:319 #, python-format msgid "Removing non-active host: %(host)s from scheduler cache." msgstr "" #: cinder/scheduler/manager.py:66 msgid "" "ChanceScheduler and SimpleScheduler have been deprecated due to lack of " "support for advanced features like: volume types, volume encryption, QoS " "etc. These two schedulers can be fully replaced by FilterScheduler with " "certain combination of filters and weighers." msgstr "" #: cinder/scheduler/manager.py:101 cinder/scheduler/manager.py:103 msgid "Failed to create scheduler manager volume flow" msgstr "" #: cinder/scheduler/manager.py:162 msgid "New volume type not specified in request_spec." msgstr "" #: cinder/scheduler/manager.py:177 #, python-format msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." msgstr "" #: cinder/scheduler/manager.py:219 #, python-format msgid "Failed to schedule_%(method)s: %(ex)s" msgstr "" #: cinder/scheduler/scheduler_options.py:68 #, python-format msgid "Could not stat scheduler options file %(filename)s: '%(e)s'" msgstr "" #: cinder/scheduler/scheduler_options.py:78 #, python-format msgid "Could not decode scheduler options: '%s'" msgstr "" #: cinder/scheduler/filters/capacity_filter.py:43 msgid "Free capacity not set: volume node info collection broken." msgstr "" #: cinder/scheduler/filters/capacity_filter.py:57 #, python-format msgid "" "Insufficient free space for volume creation (requested / avail): " "%(requested)s/%(available)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:53 msgid "No volume_id provided to populate a request_spec from" msgstr "" #: cinder/scheduler/flows/create_volume.py:116 #, python-format msgid "Failed to schedule_create_volume: %(cause)s" msgstr "" #: cinder/scheduler/flows/create_volume.py:133 #, python-format msgid "Failed notifying on %(topic)s payload %(payload)s" msgstr "" #: cinder/tests/fake_driver.py:57 cinder/volume/driver.py:883 #, python-format msgid "FAKE ISCSI: %s" msgstr "" #: cinder/tests/fake_driver.py:76 cinder/volume/driver.py:983 #, python-format msgid "FAKE ISER: %s" msgstr "" #: cinder/tests/fake_driver.py:97 msgid "local_path not implemented" msgstr "" #: cinder/tests/fake_driver.py:124 cinder/tests/fake_driver.py:129 #, python-format msgid "LoggingVolumeDriver: %s" msgstr "" #: cinder/tests/fake_utils.py:70 #, python-format msgid "Faking execution of cmd (subprocess): %s" msgstr "" #: cinder/tests/fake_utils.py:78 #, python-format msgid "Faked command matched %s" msgstr "" #: cinder/tests/fake_utils.py:94 #, python-format msgid "Faked command raised an exception %s" msgstr "" #: cinder/tests/fake_utils.py:97 #, python-format msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" #: cinder/tests/test_backup_ceph.py:840 #, python-format msgid "" "Failed to backup volume metadata - Metadata backup object " "'backup.%s.meta' already exists" msgstr "" #: cinder/tests/test_ibm_xiv_ds8k.py:102 #, python-format msgid "Volume not found for instance %(instance_id)s." msgstr "" #: cinder/tests/test_misc.py:58 #, python-format msgid "" "The following migrations are missing a downgrade:\n" "\t%s" msgstr "" #: cinder/tests/test_netapp.py:1327 msgid "Error not a TypeError." msgstr "" #: cinder/tests/test_netapp.py:1336 msgid "Error not a KeyError." msgstr "" #: cinder/tests/test_netapp_nfs.py:362 #, python-format msgid "Share %(share)s and file name %(file_name)s" msgstr "" #: cinder/tests/test_rbd.py:837 cinder/volume/drivers/rbd.py:176 msgid "flush() not supported in this version of librbd" msgstr "" #: cinder/tests/test_storwize_svc.py:252 #, python-format msgid "unrecognized argument %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1504 #, python-format msgid "Run CLI command: %s" msgstr "" #: cinder/tests/test_storwize_svc.py:1508 #, python-format msgid "" "CLI output:\n" " stdout: %(stdout)s\n" " stderr: %(stderr)s" msgstr "" #: cinder/tests/test_storwize_svc.py:1513 #, python-format msgid "" "CLI Exception output:\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/tests/test_volume_types.py:60 #, python-format msgid "Given data: %s" msgstr "" #: cinder/tests/test_volume_types.py:61 #, python-format msgid "Result data: %s" msgstr "" #: cinder/tests/api/contrib/test_backups.py:737 msgid "Invalid input" msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:99 msgid "Unexpected call to _execute." msgstr "" #: cinder/tests/brick/test_brick_remotefs.py:132 msgid "mount failed." msgstr "" #: cinder/tests/integrated/test_login.py:29 #, python-format msgid "volume: %s" msgstr "" #: cinder/tests/integrated/api/client.py:34 #, python-format msgid "" "%(message)s\n" "Status Code: %(_status)s\n" "Body: %(_body)s" msgstr "" #: cinder/tests/integrated/api/client.py:44 msgid "Authentication error" msgstr "" #: cinder/tests/integrated/api/client.py:52 msgid "Authorization error" msgstr "" #: cinder/tests/integrated/api/client.py:60 msgid "Item not found" msgstr "" #: cinder/tests/integrated/api/client.py:97 #, python-format msgid "Doing %(method)s on %(relative_url)s" msgstr "" #: cinder/tests/integrated/api/client.py:100 #, python-format msgid "Body: %s" msgstr "" #: cinder/tests/integrated/api/client.py:124 #, python-format msgid "%(auth_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:147 #, python-format msgid "%(relative_uri)s => code %(http_status)s" msgstr "" #: cinder/tests/integrated/api/client.py:158 msgid "Unexpected status code" msgstr "" #: cinder/tests/integrated/api/client.py:165 #, python-format msgid "Decoding JSON: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:124 #, python-format msgid "In Add GlobalVars._active_cfg: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:126 #, python-format msgid "In Add GlobalVars._is_normal_test: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:128 #, python-format msgid "In Add GlobalVars._zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:179 #, python-format msgid "User: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:180 #, python-format msgid "_zone_state: %s" msgstr "" #: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 #, python-format msgid "Inside get_active_zone_set %s" msgstr "" #: cinder/transfer/api.py:68 msgid "Volume in unexpected state" msgstr "" #: cinder/transfer/api.py:102 cinder/volume/api.py:350 msgid "status must be available" msgstr "" #: cinder/transfer/api.py:119 #, python-format msgid "Failed to create transfer record for %s" msgstr "" #: cinder/transfer/api.py:136 #, python-format msgid "Attempt to transfer %s with invalid auth key." msgstr "" #: cinder/transfer/api.py:156 cinder/volume/flows/api/create_volume.py:508 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG volume " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/transfer/api.py:182 #, python-format msgid "Failed to update quota donating volumetransfer id %s" msgstr "" #: cinder/transfer/api.py:199 #, python-format msgid "Volume %s has been transferred." msgstr "" #: cinder/volume/api.py:141 msgid "" "Invalid volume_type provided (requested type must match source volume, or" " be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:148 msgid "" "Invalid volume_type provided (requested type must match source snapshot, " "or be omitted). You should omit the argument." msgstr "" #: cinder/volume/api.py:157 #, python-format msgid "Unable to query if %s is in the availability zone set" msgstr "" #: cinder/volume/api.py:185 cinder/volume/api.py:187 msgid "Failed to create api volume flow" msgstr "" #: cinder/volume/api.py:216 msgid "Failed to update quota for deleting volume" msgstr "" #: cinder/volume/api.py:228 #, python-format msgid "Volume status must be available or error, but current status is: %s" msgstr "" #: cinder/volume/api.py:238 msgid "Volume cannot be deleted while migrating" msgstr "" #: cinder/volume/api.py:243 #, python-format msgid "Volume still has %d dependent snapshots" msgstr "" #: cinder/volume/api.py:293 cinder/volume/api.py:333 #: cinder/volume/qos_specs.py:240 cinder/volume/volume_types.py:67 #, python-format msgid "Searching by: %s" msgstr "" #: cinder/volume/api.py:353 msgid "already attached" msgstr "" #: cinder/volume/api.py:360 msgid "status must be in-use to detach" msgstr "" #: cinder/volume/api.py:371 msgid "Volume status must be available to reserve" msgstr "" #: cinder/volume/api.py:447 msgid "Snapshot cannot be created while volume is migrating" msgstr "" #: cinder/volume/api.py:451 msgid "must be available" msgstr "" #: cinder/volume/api.py:473 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create %(s_size)sG snapshot " "(%(d_consumed)dG of %(d_quota)dG already consumed)" msgstr "" #: cinder/volume/api.py:485 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to create snapshot (%(d_consumed)d " "snapshots already consumed)" msgstr "" #: cinder/volume/api.py:536 msgid "Volume Snapshot status must be available or error" msgstr "" #: cinder/volume/api.py:564 cinder/volume/flows/api/create_volume.py:208 msgid "Metadata property key blank" msgstr "" #: cinder/volume/api.py:568 msgid "Metadata property key greater than 255 characters" msgstr "" #: cinder/volume/api.py:572 msgid "Metadata property value greater than 255 characters" msgstr "" #: cinder/volume/api.py:703 cinder/volume/api.py:777 msgid "Volume status must be available/in-use." msgstr "" #: cinder/volume/api.py:706 msgid "Volume status is in-use." msgstr "" #: cinder/volume/api.py:735 msgid "Volume status must be available to extend." msgstr "" #: cinder/volume/api.py:740 #, python-format msgid "" "New size for extend must be greater than current size. (current: " "%(size)s, extended: %(new_size)s)" msgstr "" #: cinder/volume/api.py:755 #, python-format msgid "" "Quota exceeded for %(s_pid)s, tried to extend volume by %(s_size)sG, " "(%(d_consumed)dG of %(d_quota)dG already consumed)." msgstr "" #: cinder/volume/api.py:783 msgid "Volume is already part of an active migration" msgstr "" #: cinder/volume/api.py:789 msgid "volume must not have snapshots" msgstr "" #: cinder/volume/api.py:802 #, python-format msgid "No available service named %s" msgstr "" #: cinder/volume/api.py:808 msgid "Destination host must be different than current host" msgstr "" #: cinder/volume/api.py:838 msgid "Source volume not mid-migration." msgstr "" #: cinder/volume/api.py:842 msgid "Destination volume not mid-migration." msgstr "" #: cinder/volume/api.py:847 #, python-format msgid "Destination has migration_status %(stat)s, expected %(exp)s." msgstr "" #: cinder/volume/api.py:858 msgid "Volume status must be available to update readonly flag." msgstr "" #: cinder/volume/api.py:867 #, python-format msgid "Unable to update type due to incorrect status on volume: %s" msgstr "" #: cinder/volume/api.py:873 #, python-format msgid "Volume %s is already part of an active migration." msgstr "" #: cinder/volume/api.py:879 #, python-format msgid "migration_policy must be 'on-demand' or 'never', passed: %s" msgstr "" #: cinder/volume/api.py:892 #, python-format msgid "Invalid volume_type passed: %s" msgstr "" #: cinder/volume/api.py:905 #, python-format msgid "New volume_type same as original: %s" msgstr "" #: cinder/volume/api.py:920 msgid "Retype cannot change encryption requirements" msgstr "" #: cinder/volume/api.py:932 msgid "Retype cannot change front-end qos specs for in-use volumes" msgstr "" #: cinder/volume/api.py:963 msgid "Unable to find service for given host." msgstr "" #: cinder/volume/driver.py:195 cinder/volume/drivers/netapp/nfs.py:176 #, python-format msgid "Recovering from a failed execute. Try number %s" msgstr "" #: cinder/volume/driver.py:278 #, python-format msgid "copy_data_between_volumes %(src)s -> %(dest)s." msgstr "" #: cinder/volume/driver.py:291 cinder/volume/driver.py:305 #, python-format msgid "Failed to attach volume %(vol)s" msgstr "" #: cinder/volume/driver.py:322 #, python-format msgid "Failed to copy volume %(src)s to %(dest)d" msgstr "" #: cinder/volume/driver.py:335 #, python-format msgid "copy_image_to_volume %s." msgstr "" #: cinder/volume/driver.py:352 #, python-format msgid "copy_volume_to_image %s." msgstr "" #: cinder/volume/driver.py:378 cinder/volume/manager.py:781 #, python-format msgid "Volume %s: creating export" msgstr "" #: cinder/volume/driver.py:385 cinder/volume/manager.py:789 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with driver provided model " "%(model)s" msgstr "" #: cinder/volume/driver.py:396 cinder/volume/manager.py:773 #: cinder/volume/manager.py:798 #, python-format msgid "Unable to fetch connection information from backend: %(err)s" msgstr "" #: cinder/volume/driver.py:402 #, python-format msgid "Error encountered during cleanup of a failed attach: %(ex)s" msgstr "" #: cinder/volume/driver.py:422 #, python-format msgid "Unable to access the backend storage via the path %(path)s." msgstr "" #: cinder/volume/driver.py:450 cinder/volume/manager.py:861 #, python-format msgid "Unable to terminate volume connection: %(err)s" msgstr "" #: cinder/volume/driver.py:456 cinder/volume/manager.py:399 #: cinder/volume/manager.py:867 #, python-format msgid "volume %s: removing export" msgstr "" #: cinder/volume/driver.py:459 cinder/volume/manager.py:870 #, python-format msgid "Error detaching volume %(volume)s, due to remove export failure." msgstr "" #: cinder/volume/driver.py:490 #, python-format msgid "Creating a new backup for volume %s." msgstr "" #: cinder/volume/driver.py:507 #, python-format msgid "Restoring backup %(backup)s to volume %(volume)s." msgstr "" #: cinder/volume/driver.py:529 msgid "Extend volume not implemented" msgstr "" #: cinder/volume/driver.py:593 cinder/volume/driver.py:601 msgid "Manage existing volume not implemented." msgstr "" #: cinder/volume/driver.py:639 cinder/volume/drivers/emc/emc_smis_iscsi.py:154 msgid "ISCSI provider_location not stored, using discovery" msgstr "" #: cinder/volume/driver.py:652 #, python-format msgid "ISCSI discovery attempt failed for:%s" msgstr "" #: cinder/volume/driver.py:654 #, python-format msgid "Error from iscsiadm -m discovery: %s" msgstr "" #: cinder/volume/driver.py:701 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/driver.py:705 cinder/volume/drivers/emc/emc_cli_iscsi.py:169 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:197 #, python-format msgid "ISCSI Discovery: Found %s" msgstr "" #: cinder/volume/driver.py:802 msgid "The volume driver requires the iSCSI initiator name in the connector." msgstr "" #: cinder/volume/driver.py:823 cinder/volume/driver.py:944 #: cinder/volume/drivers/eqlx.py:247 cinder/volume/drivers/lvm.py:345 #: cinder/volume/drivers/zadara.py:650 #: cinder/volume/drivers/emc/emc_smis_common.py:1025 #: cinder/volume/drivers/emc/emc_smis_fc.py:221 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:280 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:811 #: cinder/volume/drivers/netapp/iscsi.py:1058 #: cinder/volume/drivers/netapp/iscsi.py:1472 #: cinder/volume/drivers/nexenta/iscsi.py:575 #: cinder/volume/drivers/windows/windows.py:205 msgid "Updating volume stats" msgstr "" #: cinder/volume/driver.py:1023 msgid "Driver must implement initialize_connection" msgstr "" #: cinder/volume/iscsi.py:65 cinder/volume/iscsi.py:91 #: cinder/volume/iscsi.py:234 #, python-format msgid "Skipping remove_export. No iscsi_target provisioned for volume: %s" msgstr "" #: cinder/volume/iscsi.py:80 #, python-format msgid "" "Skipping remove_export. No iscsi_target is presently exported for volume:" " %s" msgstr "" #: cinder/volume/iscsi.py:100 msgid "Detected inconsistency in provider_location id" msgstr "" #: cinder/volume/iscsi.py:101 cinder/volume/drivers/lvm.py:572 #: cinder/volume/drivers/huawei/rest_common.py:1225 #, python-format msgid "%s" msgstr "" #: cinder/volume/iscsi.py:184 #, python-format msgid "Symbolic link %s not found" msgstr "" #: cinder/volume/iscsi.py:251 #, python-format msgid "volume_info:%s" msgstr "" #: cinder/volume/iscsi.py:252 #, python-format msgid "Skipping ensure_export. No iscsi_target provision for volume: %s" msgstr "" #: cinder/volume/manager.py:193 #, python-format msgid "Driver path %s is deprecated, update your configuration to the new path." msgstr "" #: cinder/volume/manager.py:199 msgid "" "ThinLVMVolumeDriver is deprecated, please configure LVMISCSIDriver and " "lvm_type=thin. Continuing with those settings." msgstr "" #: cinder/volume/manager.py:232 #, python-format msgid "" "Starting FC Zone Manager %(zm_version)s, Driver %(drv_name)s " "%(drv_version)s" msgstr "" #: cinder/volume/manager.py:238 #, python-format msgid "Starting volume driver %(driver_name)s (%(version)s)" msgstr "" #: cinder/volume/manager.py:245 #, python-format msgid "Error encountered during initialization of driver: %(name)s" msgstr "" #: cinder/volume/manager.py:254 #, python-format msgid "Re-exporting %s volumes" msgstr "" #: cinder/volume/manager.py:267 #, python-format msgid "Failed to re-export volume %s: setting to error state" msgstr "" #: cinder/volume/manager.py:274 #, python-format msgid "volume %s stuck in a downloading state" msgstr "" #: cinder/volume/manager.py:281 #, python-format msgid "volume %s: skipping export" msgstr "" #: cinder/volume/manager.py:283 #, python-format msgid "" "Error encountered during re-exporting phase of driver initialization: " "%(name)s" msgstr "" #: cinder/volume/manager.py:293 msgid "Resuming any in progress delete operations" msgstr "" #: cinder/volume/manager.py:296 #, python-format msgid "Resuming delete on volume: %s" msgstr "" #: cinder/volume/manager.py:338 cinder/volume/manager.py:340 msgid "Failed to create manager volume flow" msgstr "" #: cinder/volume/manager.py:384 cinder/volume/manager.py:401 #, python-format msgid "volume %s: deleting" msgstr "" #: cinder/volume/manager.py:390 msgid "volume is not local to this node" msgstr "" #: cinder/volume/manager.py:407 #, python-format msgid "Cannot delete volume %s: volume is busy" msgstr "" #: cinder/volume/manager.py:434 msgid "Failed to update usages deleting volume" msgstr "" #: cinder/volume/manager.py:440 #, python-format msgid "volume %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:457 #, python-format msgid "snapshot %s: creating" msgstr "" #: cinder/volume/manager.py:468 #, python-format msgid "snapshot %(snap_id)s: creating" msgstr "" #: cinder/volume/manager.py:496 #, python-format msgid "" "Failed updating %(snapshot_id)s metadata using the provided volumes " "%(volume_id)s metadata" msgstr "" #: cinder/volume/manager.py:502 #, python-format msgid "snapshot %s: created successfully" msgstr "" #: cinder/volume/manager.py:514 cinder/volume/manager.py:524 #, python-format msgid "snapshot %s: deleting" msgstr "" #: cinder/volume/manager.py:532 #, python-format msgid "Cannot delete snapshot %s: snapshot is busy" msgstr "" #: cinder/volume/manager.py:562 msgid "Failed to update usages deleting snapshot" msgstr "" #: cinder/volume/manager.py:565 #, python-format msgid "snapshot %s: deleted successfully" msgstr "" #: cinder/volume/manager.py:585 msgid "being attached by another instance" msgstr "" #: cinder/volume/manager.py:589 msgid "being attached by another host" msgstr "" #: cinder/volume/manager.py:593 msgid "being attached by different mode" msgstr "" #: cinder/volume/manager.py:596 msgid "status must be available or attaching" msgstr "" #: cinder/volume/manager.py:689 #, python-format msgid "Error detaching volume %(volume)s, due to uninitialized driver." msgstr "" #: cinder/volume/manager.py:714 #, python-format msgid "Uploaded volume %(volume_id)s to image (%(image_id)s) successfully" msgstr "" #: cinder/volume/manager.py:832 cinder/volume/manager.py:857 #, python-format msgid "Zoning Mode: %s" msgstr "" #: cinder/volume/manager.py:917 msgid "failed to create new_volume on destination host" msgstr "" #: cinder/volume/manager.py:920 msgid "timeout creating new_volume on destination host" msgstr "" #: cinder/volume/manager.py:943 #, python-format msgid "Failed to copy volume %(vol1)s to %(vol2)s" msgstr "" #: cinder/volume/manager.py:972 #, python-format msgid "" "migrate_volume_completion: completing migration for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:984 #, python-format msgid "" "migrate_volume_completion is cleaning up an error for volume %(vol1)s " "(temporary volume %(vol2)s" msgstr "" #: cinder/volume/manager.py:1003 #, python-format msgid "Failed to delete migration source vol %(vol)s: %(err)s" msgstr "" #: cinder/volume/manager.py:1039 #, python-format msgid "volume %s: calling driver migrate_volume" msgstr "" #: cinder/volume/manager.py:1079 cinder/volume/drivers/emc/emc_cli_iscsi.py:247 #: cinder/volume/drivers/emc/emc_vnx_cli.py:226 msgid "Updating volume status" msgstr "" #: cinder/volume/manager.py:1087 #, python-format msgid "" "Unable to update stats, %(driver_name)s -%(driver_version)s " "%(config_group)s driver is uninitialized." msgstr "" #: cinder/volume/manager.py:1109 #, python-format msgid "Notification {%s} received" msgstr "" #: cinder/volume/manager.py:1144 #, python-format msgid "volume %s: extending" msgstr "" #: cinder/volume/manager.py:1146 #, python-format msgid "volume %s: extended successfully" msgstr "" #: cinder/volume/manager.py:1148 #, python-format msgid "volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1153 #, python-format msgid "Volume %s: Error trying to extend volume" msgstr "" #: cinder/volume/manager.py:1213 msgid "Failed to update usages while retyping volume." msgstr "" #: cinder/volume/manager.py:1214 msgid "Failed to get old volume type quota reservations" msgstr "" #: cinder/volume/manager.py:1234 #, python-format msgid "Volume %s: retyped successfully" msgstr "" #: cinder/volume/manager.py:1237 #, python-format msgid "" "Volume %s: driver error when trying to retype, falling back to generic " "mechanism." msgstr "" #: cinder/volume/manager.py:1248 msgid "Retype requires migration but is not allowed." msgstr "" #: cinder/volume/manager.py:1256 msgid "Volume must not have snapshots." msgstr "" #: cinder/volume/manager.py:1292 msgid "Failed to create manage_existing flow." msgstr "" #: cinder/volume/manager.py:1294 msgid "Failed to create manage existing flow." msgstr "" #: cinder/volume/manager.py:1318 #, python-format msgid "Initiator Target map:%s" msgstr "" #: cinder/volume/manager.py:1323 #, python-format msgid "Zoning op: %s" msgstr "" #: cinder/volume/qos_specs.py:57 #, python-format msgid "Valid consumer of QoS specs are: %s" msgstr "" #: cinder/volume/qos_specs.py:84 cinder/volume/qos_specs.py:105 #: cinder/volume/qos_specs.py:155 cinder/volume/qos_specs.py:197 #: cinder/volume/qos_specs.py:211 cinder/volume/qos_specs.py:225 #: cinder/volume/volume_types.py:43 #, python-format msgid "DB error: %s" msgstr "" #: cinder/volume/qos_specs.py:123 cinder/volume/qos_specs.py:140 #: cinder/volume/qos_specs.py:272 cinder/volume/volume_types.py:52 #: cinder/volume/volume_types.py:99 msgid "id cannot be None" msgstr "" #: cinder/volume/qos_specs.py:156 #, python-format msgid "Failed to get all associations of qos specs %s" msgstr "" #: cinder/volume/qos_specs.py:189 #, python-format msgid "" "Type %(type_id)s is already associated with another qos specs: " "%(qos_specs_id)s" msgstr "" #: cinder/volume/qos_specs.py:198 #, python-format msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:212 #, python-format msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" msgstr "" #: cinder/volume/qos_specs.py:226 #, python-format msgid "Failed to disassociate qos specs %s." msgstr "" #: cinder/volume/qos_specs.py:284 cinder/volume/volume_types.py:111 msgid "name cannot be None" msgstr "" #: cinder/volume/utils.py:115 #, python-format msgid "" "Incorrect value error: %(blocksize)s, it may indicate that " "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" #: cinder/volume/utils.py:176 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" #: cinder/volume/volume_types.py:130 #, python-format msgid "" "Default volume type is not found, please check default_volume_type " "config: %s" msgstr "" #: cinder/volume/drivers/block_device.py:138 cinder/volume/drivers/lvm.py:284 #: cinder/volume/drivers/zadara.py:509 cinder/volume/drivers/nexenta/nfs.py:189 #, python-format msgid "Creating clone of volume: %s" msgstr "" #: cinder/volume/drivers/block_device.py:206 msgid "No free disk" msgstr "" #: cinder/volume/drivers/block_device.py:219 msgid "No big enough free disk" msgstr "" #: cinder/volume/drivers/coraid.py:84 #, python-format msgid "Invalid ESM url scheme \"%s\". Supported https only." msgstr "" #: cinder/volume/drivers/coraid.py:111 msgid "Invalid REST handle name. Expected path." msgstr "" #: cinder/volume/drivers/coraid.py:134 #, python-format msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" msgstr "" #: cinder/volume/drivers/coraid.py:224 msgid "Session is expired. Relogin on ESM." msgstr "" #: cinder/volume/drivers/coraid.py:244 msgid "Reply is empty." msgstr "" #: cinder/volume/drivers/coraid.py:246 msgid "Error message is empty." msgstr "" #: cinder/volume/drivers/coraid.py:284 #, python-format msgid "Coraid Appliance ping failed: %s" msgstr "" #: cinder/volume/drivers/coraid.py:297 #, python-format msgid "Volume \"%(name)s\" created with VSX LUN \"%(lun)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:311 #, python-format msgid "Volume \"%s\" deleted." msgstr "" #: cinder/volume/drivers/coraid.py:315 #, python-format msgid "Resize volume \"%(name)s\" to %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:319 #, python-format msgid "Repository for volume \"%(name)s\" found: \"%(repo)s\"" msgstr "" #: cinder/volume/drivers/coraid.py:333 #, python-format msgid "Volume \"%(name)s\" resized. New size is %(size)s GB." msgstr "" #: cinder/volume/drivers/coraid.py:385 msgid "Cannot create clone volume in different repository." msgstr "" #: cinder/volume/drivers/coraid.py:505 #, python-format msgid "Initialize connection %(shelf)s/%(lun)s for %(name)s" msgstr "" #: cinder/volume/drivers/eqlx.py:139 #, python-format msgid "" "CLI output\n" "%s" msgstr "" #: cinder/volume/drivers/eqlx.py:154 msgid "Reading CLI MOTD" msgstr "" #: cinder/volume/drivers/eqlx.py:158 #, python-format msgid "Setting CLI terminal width: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:162 #, python-format msgid "Sending CLI command: '%s'" msgstr "" #: cinder/volume/drivers/eqlx.py:169 msgid "Error executing EQL command" msgstr "" #: cinder/volume/drivers/eqlx.py:199 #, python-format msgid "EQL-driver: executing \"%s\"" msgstr "" #: cinder/volume/drivers/eqlx.py:208 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" #: cinder/volume/drivers/eqlx.py:215 cinder/volume/drivers/san/san.py:149 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:414 #, python-format msgid "Error running SSH command: %s" msgstr "" #: cinder/volume/drivers/eqlx.py:282 #, python-format msgid "Volume %s does not exist, it may have already been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:300 #, python-format msgid "EQL-driver: Setup is complete, group IP is %s" msgstr "" #: cinder/volume/drivers/eqlx.py:304 msgid "Failed to setup the Dell EqualLogic driver" msgstr "" #: cinder/volume/drivers/eqlx.py:320 #, python-format msgid "Failed to create volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:329 #, python-format msgid "Volume %s was not found while trying to delete it" msgstr "" #: cinder/volume/drivers/eqlx.py:333 #, python-format msgid "Failed to delete volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:348 #, python-format msgid "Failed to create snapshot of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:361 #, python-format msgid "Failed to create volume from snapshot %s" msgstr "" #: cinder/volume/drivers/eqlx.py:374 #, python-format msgid "Failed to create clone of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:384 #, python-format msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" msgstr "" #: cinder/volume/drivers/eqlx.py:405 #, python-format msgid "Failed to initialize connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:415 #, python-format msgid "Failed to terminate connection to volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:436 #, python-format msgid "Volume %s is not found!, it may have been deleted" msgstr "" #: cinder/volume/drivers/eqlx.py:440 #, python-format msgid "Failed to ensure export of volume %s" msgstr "" #: cinder/volume/drivers/eqlx.py:459 #, python-format msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" msgstr "" #: cinder/volume/drivers/glusterfs.py:101 #, python-format msgid "There's no Gluster config file configured (%s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:106 #, python-format msgid "Gluster config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/glusterfs.py:118 msgid "mount.glusterfs is not installed" msgstr "" #: cinder/volume/drivers/glusterfs.py:176 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:181 msgid "Volume status must be 'available'." msgstr "" #: cinder/volume/drivers/glusterfs.py:217 cinder/volume/drivers/nfs.py:141 #: cinder/volume/drivers/netapp/nfs.py:787 #, python-format msgid "casted to %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:231 msgid "Snapshot status must be \"available\" to clone." msgstr "" #: cinder/volume/drivers/glusterfs.py:253 #, python-format msgid "snapshot: %(snap)s, volume: %(vol)s, volume_size: %(size)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:272 #, python-format msgid "will copy from snapshot at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:290 cinder/volume/drivers/nfs.py:191 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" #: cinder/volume/drivers/glusterfs.py:388 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" #: cinder/volume/drivers/glusterfs.py:418 #, python-format msgid "nova call result: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:420 msgid "Call to Nova to create snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:442 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" #: cinder/volume/drivers/glusterfs.py:446 #, python-format msgid "Status of snapshot %(id)s is now %(status)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:459 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:471 #, python-format msgid "create snapshot: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:472 #, python-format msgid "volume id: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:549 msgid "'active' must be present when writing snap_info." msgstr "" #: cinder/volume/drivers/glusterfs.py:579 #, python-format msgid "deleting snapshot %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:583 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" #: cinder/volume/drivers/glusterfs.py:599 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" #: cinder/volume/drivers/glusterfs.py:604 #, python-format msgid "snapshot_file for this snap is %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:625 #, python-format msgid "No base file found for %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:642 #, python-format msgid "No %(base_id)s found for %(file)s" msgstr "" #: cinder/volume/drivers/glusterfs.py:697 #, python-format msgid "No file found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:707 #, python-format msgid "No snap found with %s as backing file." msgstr "" #: cinder/volume/drivers/glusterfs.py:718 #, python-format msgid "No file depends on %s." msgstr "" #: cinder/volume/drivers/glusterfs.py:744 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" #: cinder/volume/drivers/glusterfs.py:795 msgid "Call to Nova delete snapshot failed" msgstr "" #: cinder/volume/drivers/glusterfs.py:813 #, python-format msgid "status of snapshot %s is still \"deleting\"... waiting" msgstr "" #: cinder/volume/drivers/glusterfs.py:819 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:832 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" #: cinder/volume/drivers/glusterfs.py:921 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" #: cinder/volume/drivers/glusterfs.py:985 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" #: cinder/volume/drivers/glusterfs.py:993 #, python-format msgid "Unrecognized backing format: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1008 #, python-format msgid "creating new volume at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1011 #, python-format msgid "file already exists at %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1037 cinder/volume/drivers/nfs.py:178 #, python-format msgid "Exception during mounting %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1039 #, python-format msgid "Available shares: %s" msgstr "" #: cinder/volume/drivers/glusterfs.py:1056 #, python-format msgid "" "GlusterFS share at %(dir)s is not writable by the Cinder volume service. " "Snapshot operations will not be supported." msgstr "" #: cinder/volume/drivers/glusterfs.py:1162 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" #: cinder/volume/drivers/glusterfs.py:1177 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" #: cinder/volume/drivers/glusterfs.py:1185 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" #: cinder/volume/drivers/lvm.py:152 #, python-format msgid "Volume device file path %s does not exist." msgstr "" #: cinder/volume/drivers/lvm.py:159 #, python-format msgid "Size for volume: %s not found, cannot secure delete." msgstr "" #: cinder/volume/drivers/lvm.py:229 #, python-format msgid "Unabled to delete due to existing snapshot for volume: %s" msgstr "" #: cinder/volume/drivers/lvm.py:246 #, python-format msgid "snapshot: %s not found, skipping delete operations" msgstr "" #: cinder/volume/drivers/lvm.py:347 #, python-format msgid "Unable to update stats on non-initialized Volume Group: %s" msgstr "" #: cinder/volume/drivers/lvm.py:403 #, python-format msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" msgstr "" #: cinder/volume/drivers/lvm.py:419 msgid "Reference must contain lv_name element." msgstr "" #: cinder/volume/drivers/lvm.py:436 #, python-format msgid "" "Failed to manage existing volume %(name)s, because reported size %(size)s" " was not a floating-point number." msgstr "" #: cinder/volume/drivers/lvm.py:505 #, python-format msgid "Error creating iSCSI target, retrying creation for target: %s" msgstr "" #: cinder/volume/drivers/nfs.py:128 msgid "Driver specific implementation needs to return mount_point_base." msgstr "" #: cinder/volume/drivers/nfs.py:282 #, python-format msgid "Expected volume size was %d" msgstr "" #: cinder/volume/drivers/nfs.py:283 #, python-format msgid " but size is now %d" msgstr "" #: cinder/volume/drivers/nfs.py:380 #, python-format msgid "%s is already mounted" msgstr "" #: cinder/volume/drivers/nfs.py:432 #, python-format msgid "There's no NFS config file configured (%s)" msgstr "" #: cinder/volume/drivers/nfs.py:437 #, python-format msgid "NFS config file at %(config)s doesn't exist" msgstr "" #: cinder/volume/drivers/nfs.py:442 #, python-format msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:450 #, python-format msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" #: cinder/volume/drivers/nfs.py:504 #, python-format msgid "Selected %s as target nfs share." msgstr "" #: cinder/volume/drivers/nfs.py:537 #, python-format msgid "%s is above nfs_used_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:540 #, python-format msgid "%s is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/nfs.py:543 #, python-format msgid "%s reserved space is above nfs_oversub_ratio" msgstr "" #: cinder/volume/drivers/rbd.py:161 #, python-format msgid "Invalid argument - whence=%s not supported" msgstr "" #: cinder/volume/drivers/rbd.py:165 msgid "Invalid argument" msgstr "" #: cinder/volume/drivers/rbd.py:184 msgid "fileno() not supported by RBD()" msgstr "" #: cinder/volume/drivers/rbd.py:211 #, python-format msgid "error opening rbd image %s" msgstr "" #: cinder/volume/drivers/rbd.py:260 msgid "rados and rbd python libraries not found" msgstr "" #: cinder/volume/drivers/rbd.py:266 msgid "error connecting to ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:347 cinder/volume/drivers/sheepdog.py:178 msgid "error refreshing volume stats" msgstr "" #: cinder/volume/drivers/rbd.py:378 #, python-format msgid "clone depth exceeds limit of %s" msgstr "" #: cinder/volume/drivers/rbd.py:412 #, python-format msgid "maximum clone depth (%d) has been reached - flattening source volume" msgstr "" #: cinder/volume/drivers/rbd.py:424 #, python-format msgid "flattening source volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:436 #, python-format msgid "creating snapshot='%s'" msgstr "" #: cinder/volume/drivers/rbd.py:446 #, python-format msgid "cloning '%(src_vol)s@%(src_snap)s' to '%(dest)s'" msgstr "" #: cinder/volume/drivers/rbd.py:460 msgid "clone created successfully" msgstr "" #: cinder/volume/drivers/rbd.py:469 #, python-format msgid "creating volume '%s'" msgstr "" #: cinder/volume/drivers/rbd.py:485 #, python-format msgid "flattening %(pool)s/%(img)s" msgstr "" #: cinder/volume/drivers/rbd.py:491 #, python-format msgid "cloning %(pool)s/%(img)s@%(snap)s to %(dst)s" msgstr "" #: cinder/volume/drivers/rbd.py:528 msgid "volume has no backup snaps" msgstr "" #: cinder/volume/drivers/rbd.py:551 #, python-format msgid "volume %s is not a clone" msgstr "" #: cinder/volume/drivers/rbd.py:569 #, python-format msgid "deleting parent snapshot %s" msgstr "" #: cinder/volume/drivers/rbd.py:580 #, python-format msgid "deleting parent %s" msgstr "" #: cinder/volume/drivers/rbd.py:596 #, python-format msgid "volume %s no longer exists in backend" msgstr "" #: cinder/volume/drivers/rbd.py:612 msgid "volume has clone snapshot(s)" msgstr "" #: cinder/volume/drivers/rbd.py:628 #, python-format msgid "deleting rbd volume %s" msgstr "" #: cinder/volume/drivers/rbd.py:632 msgid "" "ImageBusy error raised while deleting rbd volume. This may have been " "caused by a connection from a client that has crashed and, if so, may be " "resolved by retrying the delete after 30 seconds has elapsed." msgstr "" #: cinder/volume/drivers/rbd.py:645 msgid "volume is a clone so cleaning references" msgstr "" #: cinder/volume/drivers/rbd.py:702 #, python-format msgid "connection data: %s" msgstr "" #: cinder/volume/drivers/rbd.py:711 msgid "Not stored in rbd" msgstr "" #: cinder/volume/drivers/rbd.py:715 msgid "Blank components" msgstr "" #: cinder/volume/drivers/rbd.py:718 msgid "Not an rbd snapshot" msgstr "" #: cinder/volume/drivers/rbd.py:730 #, python-format msgid "not cloneable: %s" msgstr "" #: cinder/volume/drivers/rbd.py:734 #, python-format msgid "%s is in a different ceph cluster" msgstr "" #: cinder/volume/drivers/rbd.py:739 msgid "rbd image clone requires image format to be 'raw' but image {0} is '{1}'" msgstr "" #: cinder/volume/drivers/rbd.py:753 #, python-format msgid "Unable to open image %(loc)s: %(err)s" msgstr "" #: cinder/volume/drivers/rbd.py:823 msgid "volume backup complete." msgstr "" #: cinder/volume/drivers/rbd.py:836 msgid "volume restore complete." msgstr "" #: cinder/volume/drivers/rbd.py:846 cinder/volume/drivers/sheepdog.py:195 #, python-format msgid "Failed to Extend Volume %(volname)s" msgstr "" #: cinder/volume/drivers/rbd.py:851 cinder/volume/drivers/sheepdog.py:200 #: cinder/volume/drivers/windows/windows.py:223 #, python-format msgid "Extend volume from %(old_size)s GB to %(new_size)s GB." msgstr "" #: cinder/volume/drivers/scality.py:67 msgid "Value required for 'scality_sofs_config'" msgstr "" #: cinder/volume/drivers/scality.py:78 #, python-format msgid "Cannot access 'scality_sofs_config': %s" msgstr "" #: cinder/volume/drivers/scality.py:84 msgid "Cannot execute /sbin/mount.sofs" msgstr "" #: cinder/volume/drivers/scality.py:105 msgid "Cannot mount Scality SOFS, check syslog for errors" msgstr "" #: cinder/volume/drivers/scality.py:139 #, python-format msgid "Cannot find volume dir for Scality SOFS at '%s'" msgstr "" #: cinder/volume/drivers/sheepdog.py:59 #, python-format msgid "Sheepdog is not working: %s" msgstr "" #: cinder/volume/drivers/sheepdog.py:64 msgid "Sheepdog is not working" msgstr "" #: cinder/volume/drivers/solidfire.py:142 #, python-format msgid "Payload for SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:149 #, python-format msgid "" "Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " "settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:152 #, python-format msgid "Failed to make httplib connection: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:159 #, python-format msgid "" "Request to SolidFire cluster returned bad status: %(status)s / %(reason)s" " (check san_login/san_password settings)" msgstr "" #: cinder/volume/drivers/solidfire.py:164 #, python-format msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" msgstr "" #: cinder/volume/drivers/solidfire.py:175 #, python-format msgid "Call to json.loads() raised an exception: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:181 #, python-format msgid "Results of SolidFire API call: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:185 #, python-format msgid "Clone operation encountered: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:187 #, python-format msgid "Waiting for outstanding operation before retrying snapshot: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:193 #, python-format msgid "Detected xDBVersionMismatch, retry %s of 5" msgstr "" #: cinder/volume/drivers/solidfire.py:200 #: cinder/volume/drivers/solidfire.py:269 #: cinder/volume/drivers/solidfire.py:364 #, python-format msgid "API response: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:220 #, python-format msgid "Found solidfire account: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:251 #, python-format msgid "solidfire account: %s does not exist, create it..." msgstr "" #: cinder/volume/drivers/solidfire.py:313 #, python-format msgid "Failed to retrieve volume SolidFire-ID: %s in get_by_account!" msgstr "" #: cinder/volume/drivers/solidfire.py:396 msgid "Failed to get model update from clone" msgstr "" #: cinder/volume/drivers/solidfire.py:408 #, python-format msgid "Failed volume create: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:423 #, python-format msgid "More than one valid preset was detected, using %s" msgstr "" #: cinder/volume/drivers/solidfire.py:458 #, python-format msgid "Failed to get SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:467 #, python-format msgid "Mapped SolidFire volumeID %(sfid)s to cinder ID %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:476 #, python-format msgid "Volume %s, not found on SF Cluster." msgstr "" #: cinder/volume/drivers/solidfire.py:479 #, python-format msgid "Found %(count)s volumes mapped to id: %(uuid)s." msgstr "" #: cinder/volume/drivers/solidfire.py:548 msgid "Enter SolidFire delete_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:552 #, python-format msgid "Account for Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:554 msgid "This usually means the volume was never successfully created." msgstr "" #: cinder/volume/drivers/solidfire.py:567 #, python-format msgid "Failed to delete SolidFire Volume: %s" msgstr "" #: cinder/volume/drivers/solidfire.py:570 #: cinder/volume/drivers/solidfire.py:644 #: cinder/volume/drivers/solidfire.py:707 #: cinder/volume/drivers/solidfire.py:732 #, python-format msgid "Volume ID %s was not found on the SolidFire Cluster!" msgstr "" #: cinder/volume/drivers/solidfire.py:573 msgid "Leaving SolidFire delete_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:577 msgid "Executing SolidFire ensure_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:585 msgid "Executing SolidFire create_export..." msgstr "" #: cinder/volume/drivers/solidfire.py:636 msgid "Entering SolidFire extend_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:658 msgid "Leaving SolidFire extend_volume" msgstr "" #: cinder/volume/drivers/solidfire.py:663 msgid "Updating cluster status info" msgstr "" #: cinder/volume/drivers/solidfire.py:671 msgid "Failed to get updated stats" msgstr "" #: cinder/volume/drivers/solidfire.py:701 #: cinder/volume/drivers/solidfire.py:726 msgid "Entering SolidFire attach_volume..." msgstr "" #: cinder/volume/drivers/solidfire.py:771 msgid "Leaving SolidFire transfer volume" msgstr "" #: cinder/volume/drivers/zadara.py:236 #, python-format msgid "Sending %(method)s to %(url)s. Body \"%(body)s\"" msgstr "" #: cinder/volume/drivers/zadara.py:260 #, python-format msgid "Operation completed. %(data)s" msgstr "" #: cinder/volume/drivers/zadara.py:357 #, python-format msgid "Pool %(name)s: %(total)sGB total, %(free)sGB free" msgstr "" #: cinder/volume/drivers/zadara.py:408 cinder/volume/drivers/zadara.py:531 #, python-format msgid "Volume %(name)s could not be found. It might be already deleted" msgstr "" #: cinder/volume/drivers/zadara.py:438 #, python-format msgid "Create snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:445 cinder/volume/drivers/zadara.py:490 #: cinder/volume/drivers/zadara.py:516 #, python-format msgid "Volume %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:456 #, python-format msgid "Delete snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:464 #, python-format msgid "snapshot: original volume %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:472 #, python-format msgid "snapshot: snapshot %s not found, skipping delete operation" msgstr "" #: cinder/volume/drivers/zadara.py:483 #, python-format msgid "Creating volume from snapshot: %s" msgstr "" #: cinder/volume/drivers/zadara.py:496 #, python-format msgid "Snapshot %(name)s not found" msgstr "" #: cinder/volume/drivers/zadara.py:614 #, python-format msgid "Attach properties: %(properties)s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:125 #, python-format msgid "iSCSI provider_location not stored for volume %s, using discovery." msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:165 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:193 #, python-format msgid "Could not find iSCSI export for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:176 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:202 #, python-format msgid "Cannot find device number for volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:202 #: cinder/volume/drivers/emc/emc_smis_iscsi.py:232 #, python-format msgid "Found iSCSI endpoint: %s" msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:209 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s " msgstr "" #: cinder/volume/drivers/emc/emc_cli_iscsi.py:241 #, python-format msgid "update_volume_status:%s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:40 msgid "" "Module PyWBEM not installed. Install PyWBEM using the python-pywbem " "package." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:82 #: cinder/volume/drivers/emc/emc_vnx_cli.py:125 msgid "Entering create_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:86 #, python-format msgid "Create Volume: %(volume)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:94 #, python-format msgid "Create Volume: %(volume)s Storage type: %(storage_type)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:101 #, python-format msgid "" "Create Volume: %(volume)s Pool: %(pool)s Storage System: " "%(storage_system)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:110 #, python-format msgid "" "Error Create Volume: %(volumename)s. Storage Configuration Service not " "found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:120 #, python-format msgid "" "Create Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementName: %(name)s InPool: %(pool)s " "ElementType: %(provisioning)s Size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:136 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:143 #, python-format msgid "" "Error Create Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:164 #, python-format msgid "" "Leaving create_volume: %(volumename)s Return code: %(rc)lu volume " "instance: %(name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:176 #: cinder/volume/drivers/emc/emc_vnx_cli.py:348 msgid "Entering create_volume_from_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:181 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:191 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Snapshot Instance: %(snapshotinstance)s Storage " "System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:201 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Create Volume from Snapshot is NOT supported on VMAX." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:212 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Cannot find Replication Service to create volume from " "snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:221 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Method: CreateElementReplica ReplicationService: " "%(service)s ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:242 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s " "Snapshot:%(snapshotname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:268 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Successfully clone volume from snapshot. Finding the " "clone relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:280 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Remove the clone relationship. Method: " "ModifyReplicaSynchronization ReplicationService: %(service)s Operation: " "8 Synchronization: %(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:296 #, python-format msgid "" "Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:305 #, python-format msgid "" "Error Create Volume from Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:317 #, python-format msgid "" "Leaving create_volume_from_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:328 msgid "Entering create_cloned_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:333 #, python-format msgid "" "Create a Clone from Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:343 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Source Instance: %(src_instance)s Storage System: %(storage_system)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:353 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Cannot find Replication Service to create cloned volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:362 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Method: CreateElementReplica ReplicationService: %(service)s " "ElementName: %(elementname)s SyncType: 8 SourceElement: " "%(sourceelement)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:383 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source " "Volume:%(srcname)s. Return code: %(rc)lu.Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:409 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Successfully cloned volume from source volume. Finding the clone " "relationship." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:421 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s." " Remove the clone relationship. Method: ModifyReplicaSynchronization " "ReplicationService: %(service)s Operation: 8 Synchronization: " "%(sync_name)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:437 #, python-format msgid "" "Create Cloned Volume: Volume: %(volumename)s Source Volume: %(srcname)s" " Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:446 #, python-format msgid "" "Error Create Cloned Volume: Volume: %(volumename)s Source Volume: " "%(srcname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:458 #, python-format msgid "" "Leaving create_cloned_volume: Volume: %(volumename)s Source Volume: " "%(srcname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:469 #: cinder/volume/drivers/emc/emc_vnx_cli.py:178 msgid "Entering delete_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:471 #, python-format msgid "Delete Volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:478 #, python-format msgid "Volume %(name)s not found on the array. No volume to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:488 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:496 #, python-format msgid "Delete Volume: %(name)s DeviceID: %(deviceid)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:500 #, python-format msgid "" "Delete Volume: %(name)s Method: EMCReturnToStoragePool ConfigServic: " "%(service)s TheElement: %(vol_instance)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:514 #, python-format msgid "" "Error Delete Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:523 #, python-format msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:530 #: cinder/volume/drivers/emc/emc_vnx_cli.py:275 msgid "Entering create_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:534 #: cinder/volume/drivers/emc/emc_vnx_cli.py:278 #, python-format msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:544 #: cinder/volume/drivers/emc/emc_smis_common.py:972 #, python-format msgid "Device ID: %(deviceid)s: Storage System: %(storagesystem)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:551 #: cinder/volume/drivers/emc/emc_smis_common.py:553 #: cinder/volume/drivers/emc/emc_smis_common.py:639 #, python-format msgid "Cannot find Replication Service to create snapshot for volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:558 #, python-format msgid "" "Create Snapshot: Method: CreateElementReplica: Target: %(snapshot)s " "Source: %(volume)s Replication Service: %(service)s ElementName: " "%(elementname)s Sync Type: 7 SourceElement: %(sourceelement)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:574 #, python-format msgid "" "Create Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:583 #, python-format msgid "" "Error Create Snapshot: %(snapshot)s Volume: %(volume)s Error: " "%(errordesc)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:605 #, python-format msgid "" "Leaving create_snapshot: Snapshot: %(snapshot)s Volume: %(volume)s " "Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:613 #: cinder/volume/drivers/emc/emc_vnx_cli.py:302 msgid "Entering delete_snapshot." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:617 #: cinder/volume/drivers/emc/emc_vnx_cli.py:306 #, python-format msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:623 #, python-format msgid "" "Delete Snapshot: %(snapshot)s: volume: %(volume)s. Finding " "StorageSychronization_SV_SV." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:631 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s not found on the array. No " "snapshot to delete." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:646 #, python-format msgid "" "Delete Snapshot: Target: %(snapshot)s Source: %(volume)s. Method: " "ModifyReplicaSynchronization: Replication Service: %(service)s " "Operation: 19 Synchronization: %(sync_name)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:662 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:671 #, python-format msgid "" "Error Delete Snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:696 #: cinder/volume/drivers/emc/emc_smis_common.py:711 #, python-format msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:703 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " "timed out." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:716 #, python-format msgid "" "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " "during cleanup. Error: %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:724 #, python-format msgid "" "Leaving delete_snapshot: Volume: %(volumename)s Snapshot: " "%(snapshotname)s Return code: %(rc)lu." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:745 #, python-format msgid "" "ExposePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(lun_name)s" " InitiatorPortIDs: %(initiator)s DeviceAccesses: 2" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:760 #, python-format msgid "ExposePaths parameter LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:771 #, python-format msgid "Error mapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:775 #, python-format msgid "ExposePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:791 #, python-format msgid "" "HidePaths: %(vol)s ConfigServicie: %(service)s LUNames: %(device_id)s " "LunMaskingSCSIProtocolController: %(lunmasking)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:804 #, python-format msgid "Error unmapping volume %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:808 #, python-format msgid "HidePaths for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:821 #, python-format msgid "" "AddMembers: ConfigServicie: %(service)s MaskingGroup: %(masking_group)s" " Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:836 #, python-format msgid "Error mapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:841 #, python-format msgid "AddMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:854 #, python-format msgid "" "RemoveMembers: ConfigServicie: %(service)s MaskingGroup: " "%(masking_group)s Members: %(vol)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:867 #, python-format msgid "Error unmapping volume %(vol)s. %(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:872 #, python-format msgid "RemoveMembers for volume %s completed successfully." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:878 #, python-format msgid "Map volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:887 #: cinder/volume/drivers/emc/emc_smis_common.py:917 #, python-format msgid "Cannot find Controller Configuration Service for storage system %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:901 #, python-format msgid "Unmap volume: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:907 #, python-format msgid "Volume %s is not mapped. No volume to unmap." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:931 #, python-format msgid "Initialize connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:937 #, python-format msgid "Volume %s is already mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:949 #, python-format msgid "Terminate connection: %(volume)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:956 #: cinder/volume/drivers/emc/emc_vnx_cli.py:197 msgid "Entering extend_volume." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:960 #, python-format msgid "Extend Volume: %(volume)s New size: %(size)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:980 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Storage Configuration Service not " "found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:988 #, python-format msgid "" "Extend Volume: %(name)s Method: CreateOrModifyElementFromStoragePool " "ConfigServicie: %(service)s ElementType: %(provisioning)s Size: " "%(size)luVolume path: %(volumepath)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1004 #, python-format msgid "Extend Volume: %(volumename)s Return code: %(rc)lu" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1011 #, python-format msgid "" "Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " "%(error)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1018 #, python-format msgid "Leaving extend_volume: %(volumename)s Return code: %(rc)lu " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1040 #, python-format msgid "Storage Type: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1057 #, python-format msgid "Found Storage Type in config file: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1063 msgid "Storage type not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1079 #, python-format msgid "Found Masking View: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1082 msgid "Masking View not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1097 #, python-format msgid "Found Timeout: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1100 msgid "Timeout not specified." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1122 msgid "Ecom user not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1142 #, python-format msgid "Ecom IP: %(ecomIp)s Port: %(ecomPort)s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1146 msgid "Ecom server not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1153 msgid "Cannot connect to ECOM server" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1165 #, python-format msgid "Found Replication Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1178 #, python-format msgid "Found Storage Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1191 #, python-format msgid "Found Controller Configuration Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1204 #, python-format msgid "Found Storage Hardware ID Management Service: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1248 #, python-format msgid "Pool %(storage_type)s is not found." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1254 #, python-format msgid "Storage system not found for pool %(storage_type)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1260 #, python-format msgid "Pool: %(pool)s SystemName: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1277 #, python-format msgid "Pool name: %(poolname)s System name: %(systemname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1292 #, python-format msgid "Volume %(volumename)s not found on the array." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1295 #, python-format msgid "Volume name: %(volumename)s Volume instance: %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1310 #, python-format msgid "Source: %(volumename)s Target: %(snapshotname)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1322 #, python-format msgid "" "Source: %(volumename)s Target: %(snapshotname)s. Storage Synchronized " "not found. " msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1327 #, python-format msgid "" "Storage system: %(storage_system)s Storage Synchronized instance: " "%(sync)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1353 #, python-format msgid "Error finding %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1357 #, python-format msgid "Found %(name)s: %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1417 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage_system)s " "and initiator %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1458 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage volume %(vol)s and initiator" " %(initiator)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1472 #, python-format msgid "" "Volume %(name)s not found on the array. Cannot determine if there are " "volumes mapped." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1484 #, python-format msgid "" "LunMaskingSCSIProtocolController for storage system %(storage)s and " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1496 #, python-format msgid "" "Found %(numVolumesMapped)d volumes on storage system %(storage)s mapped " "to %(initiator)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1531 #, python-format msgid "Available device number on %(storage)s: %(device)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1556 #, python-format msgid "" "LunMaskingSCSIProtocolController for volume %(vol)s and connector " "%(connector)s is %(ctrl)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1592 #, python-format msgid "Device number not found for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1597 #, python-format msgid "Found device number %(device)d for volume %(volumename)s %(vol_instance)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1607 #, python-format msgid "Device info: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1629 #, python-format msgid "Masking view: %(view)s DeviceMaskingGroup: %(masking)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1651 #, python-format msgid "Found Storage Processor System: %s" msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1679 #, python-format msgid "" "iSCSIProtocolEndpoint for storage system %(storage_system)s and SP %(sp)s" " is %(endpoint)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1720 msgid "Error finding Storage Hardware ID Service." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1726 #, python-format msgid "" "EMCGetTargetEndpoints: Service: %(service)s Storage HardwareIDs: " "%(hardwareids)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1738 msgid "Error finding Target WWNs." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1748 #, python-format msgid "Add target WWN: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1750 #, python-format msgid "Target WWNs: %s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_common.py:1766 #, python-format msgid "Storage Hardware IDs for %(wwpns)s is %(foundInstances)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_fc.py:169 #: cinder/volume/drivers/emc/emc_smis_fc.py:187 #, python-format msgid "Return FC data: %(data)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:239 #, python-format msgid "ISCSI endpoint not found for SP %(sp)s on storage system %(storage)s." msgstr "" #: cinder/volume/drivers/emc/emc_smis_iscsi.py:248 #, python-format msgid "ISCSI properties: %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:77 msgid "Pool name is not specified." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:98 msgid "Could not find NAVISECCLI tool." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:107 #, python-format msgid "Failed to find pool %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:129 #, python-format msgid "Create Volume: %(volume)s Size: %(size)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:137 #, python-format msgid "Create Volume: %(volumename)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:147 #, python-format msgid "Create Volume: %(volumename)s Return code: %(rc)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:151 #, python-format msgid "Volume %s already exists" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:153 #, python-format msgid "Failed to create %(volumename)s: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:167 #, python-format msgid "LUN %s failed to become Ready" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:187 #, python-format msgid "Delete Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:190 #: cinder/volume/drivers/emc/emc_vnx_cli.py:335 #, python-format msgid "Failed to destroy %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:210 #, python-format msgid "Extend Volume: %(volumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:214 msgid "" "The LUN cannot be expanded or shrunk because it has snapshots. Command to" " extend the specified volume failed." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:220 #, python-format msgid "Failed to expand %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:240 #: cinder/volume/drivers/emc/emc_vnx_cli.py:268 #, python-format msgid "Failed to list %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:251 #, python-format msgid "create_export: Volume: %(volume)s Device ID: %(device_id)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:292 #, python-format msgid "Create Snapshot: %(snapshotname)s Unity: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:296 #, python-format msgid "Failed to create snap %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:318 #, python-format msgid "" "Delete Snapshot: Volume: %(volumename)s Snapshot: %(snapshotname)s " "Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:328 #, python-format msgid "Snapshot %s is in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:330 #, python-format msgid "Failed to destroy %s because snapshot is in use." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:360 #, python-format msgid "Creating Destination Volume : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:372 #, python-format msgid "Create temporary Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:377 msgid "Command to create the destination volume failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:388 #, python-format msgid "" "Create mount point : Volume: %(volumename)s Source Volume: " "%(sourcevolumename)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:395 #, python-format msgid "Failed to create SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:406 #, python-format msgid "" "Attaching mount point Volume: %(volumename)s with Snapshot: " "%(snapshotname)s Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:413 #, python-format msgid "Failed to attach snapshotname %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:420 #, python-format msgid "Migrating Mount Point Volume: %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:431 #, python-format msgid "Migrate Mount Point Volume: %(volumename)s Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:437 #, python-format msgid "Failed to start migrating SMP %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:451 #, python-format msgid "Waiting for the update on Sync status of %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:454 #, python-format msgid "Failed to really migrate %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:482 #, python-format msgid "Failed to create cloned volume %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:499 #, python-format msgid "creating new storage group %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:504 #, python-format msgid "Create new storage group : %(storage_groupname)s, Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:510 #, python-format msgid "Failed to create SG %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:521 #, python-format msgid "" "Connect storage group : %(storage_groupname)s ,To Host : %(hostname)s, " "Output : %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:528 #, python-format msgid "Failed to connect %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:545 #, python-format msgid "NO LUNs in the storagegroup : %s " msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:561 #, python-format msgid "Host Lun Id : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:570 #, python-format msgid "Owner SP : %s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:603 #, python-format msgid "" "The storage group has reached the maximum capacity of LUNs. Command to " "add LUN for volume - %s in storagegroup failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:613 #, python-format msgid "" "Unable to get new host lun id. Please check if the storage group can " "accommodate new LUN. Command to add LUN for volume - %s in storagegroup " "failed" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:628 #, python-format msgid "Add ALU %(alu)s to SG %(sg)s as %(hlu)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:637 msgid "Requested Host LUN Number already in use" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:640 msgid "LUN was already added in the storage group" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:644 #, python-format msgid "Failed to add %s into SG" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:658 #, python-format msgid "Remove %(hlu)s from SG %(sg)s. Output: %(out)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:663 #, python-format msgid "Failed to remove %(hlu)s from %(sg)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:684 msgid "Could not locate the attached volume." msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:703 #, python-format msgid "WWNs found for SP %(devicesp)s are: %(initiator_address)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:731 #, python-format msgid "Invalid value of extra spec 'storagetype:provisioning': %(provisioning)s" msgstr "" #: cinder/volume/drivers/emc/emc_vnx_cli.py:735 msgid "No extra spec 'storagetype:provisioning' exist" msgstr "" #: cinder/volume/drivers/hds/hds.py:70 #, python-format msgid "Range: start LU: %(start)s, end LU: %(end)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:84 #, python-format msgid "setting LU upper (end) limit to %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:92 #, python-format msgid "%(element)s: %(val)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:103 cinder/volume/drivers/hds/hds.py:105 #, python-format msgid "XML exception reading parameter: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:178 #, python-format msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:197 #, python-format msgid "No configuration found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:250 #, python-format msgid "HDP not found: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:289 #, python-format msgid "iSCSI portal not found for service: %s" msgstr "" #: cinder/volume/drivers/hds/hds.py:327 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created." msgstr "" #: cinder/volume/drivers/hds/hds.py:355 #, python-format msgid "LUN %(lun)s of size %(size)s MB is cloned." msgstr "" #: cinder/volume/drivers/hds/hds.py:372 #, python-format msgid "LUN %(lun)s extended to %(size)s GB." msgstr "" #: cinder/volume/drivers/hds/hds.py:395 #, python-format msgid "delete lun %(lun)s on %(name)s" msgstr "" #: cinder/volume/drivers/hds/hds.py:480 #, python-format msgid "LUN %(lun)s of size %(sz)s MB is created from snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:503 #, python-format msgid "LUN %(lun)s of size %(size)s MB is created as snapshot." msgstr "" #: cinder/volume/drivers/hds/hds.py:522 #, python-format msgid "LUN %s is deleted." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:57 msgid "_instantiate_driver: configuration not found." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:64 #, python-format msgid "" "_instantiate_driver: Loading %(protocol)s driver for Huawei OceanStor " "%(product)s series storage arrays." msgstr "" #: cinder/volume/drivers/huawei/__init__.py:84 #, python-format msgid "" "\"Product\" or \"Protocol\" is illegal. \"Product\" should be set to " "either T, Dorado or HVS. \"Protocol\" should be set to either iSCSI or " "FC. Product: %(product)s Protocol: %(protocol)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:74 #, python-format msgid "" "initialize_connection: volume name: %(vol)s host: %(host)s initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_dorado.py:92 #: cinder/volume/drivers/huawei/huawei_t.py:461 #, python-format msgid "initialize_connection: Target FC ports WWNS: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:101 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(ini)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:159 #: cinder/volume/drivers/huawei/rest_common.py:1278 #, python-format msgid "" "_get_iscsi_params: Failed to get target IP for initiator %(ini)s, please " "check config file." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:206 #: cinder/volume/drivers/huawei/rest_common.py:1083 #, python-format msgid "_get_tgt_iqn: iSCSI IP is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:234 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:248 #, python-format msgid "" "_get_iscsi_tgt_port_info: Failed to get iSCSI port info. Please make sure" " the iSCSI port IP %s is configured in array." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:323 #: cinder/volume/drivers/huawei/huawei_t.py:552 #, python-format msgid "" "terminate_connection: volume: %(vol)s, host: %(host)s, connector: " "%(initiator)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:351 #, python-format msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:436 msgid "validate_connector: The FC driver requires thewwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:443 #, python-format msgid "" "initialize_connection: volume name: %(vol)s, host: %(host)s, initiator: " "%(wwn)s" msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:578 #, python-format msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:40 #, python-format msgid "parse_xml_file: %s" msgstr "" #: cinder/volume/drivers/huawei/huawei_utils.py:129 #, python-format msgid "_get_host_os_type: Host %(ip)s OS type is %(os)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:59 #, python-format msgid "HVS Request URL: %(url)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:60 #, python-format msgid "HVS Request Data: %(data)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:73 #, python-format msgid "HVS Response Data: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:75 #, python-format msgid "Bad response from server: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:82 msgid "JSON transfer error" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:102 #, python-format msgid "Login error, reason is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:166 #, python-format msgid "" "%(err)s\n" "result: %(res)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:173 #, python-format msgid "%s \"data\" was not in result." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:208 msgid "Can't find the Qos policy in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:246 msgid "Can't find lun or lun group in array" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:280 #, python-format msgid "Invalid resource pool: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:298 #, python-format msgid "Get pool info error, pool name is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:327 #, python-format msgid "create_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:354 #, python-format msgid "_stop_snapshot:snapshot name:%(snapshot)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:474 #, python-format msgid "" "_mapping_hostgroup_and_lungroup: lun_group: %(lun_group)sview_id: " "%(view_id)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:511 #: cinder/volume/drivers/huawei/rest_common.py:543 #, python-format msgid "initiator name:%(initiator_name)s, volume name:%(volume)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:527 #, python-format msgid "host lun id is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:553 #, python-format msgid "the free wwns %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:574 #, python-format msgid "the fc server properties is:%s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:688 #, python-format msgid "JSON transfer data error. %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:874 #, python-format msgid "terminate_connection:volume name: %(volume)s, initiator name: %(ini)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:937 #, python-format msgid "" "Config file is wrong. LUNType must be \"Thin\" or \"Thick\". " "LUNType:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:964 #, python-format msgid "" "PrefetchType config is wrong. PrefetchType must in 1,2,3,4. fetchtype " "is:%(fetchtype)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:970 msgid "Use default prefetch fetchtype. Prefetch fetchtype:Intelligent." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:982 #, python-format msgid "" "_wait_for_luncopy:LUNcopy status is not normal.LUNcopy name: " "%(luncopyname)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1056 #, python-format msgid "" "_get_iscsi_port_info: Failed to get iscsi port info through config IP " "%(ip)s, please check config file." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1101 #, python-format msgid "_get_tgt_iqn: iSCSI target iqn is %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1124 #, python-format msgid "_parse_volume_type: type id: %(type_id)s config parameter is: %(params)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1157 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the configuration file " "%(conf)s." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1162 #, python-format msgid "The config parameters are: %s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1239 #: cinder/volume/drivers/huawei/ssh_common.py:118 #: cinder/volume/drivers/huawei/ssh_common.py:1265 #, python-format msgid "_check_conf_file: Config file invalid. %s must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1246 #: cinder/volume/drivers/huawei/ssh_common.py:125 msgid "_check_conf_file: Config file invalid. StoragePool must be set." msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1256 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/rest_common.py:1300 msgid "Can not find lun in array" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:54 #, python-format msgid "ssh_read: Read SSH timeout. %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:70 msgid "No response message. Please check system status." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:101 #: cinder/volume/drivers/huawei/ssh_common.py:1249 msgid "do_setup" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:135 #: cinder/volume/drivers/huawei/ssh_common.py:1287 #, python-format msgid "" "_check_conf_file: Config file invalid. Host OSType is invalid.\n" "The valid values are: %(os_list)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:169 #, python-format msgid "_get_login_info: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:224 #, python-format msgid "create_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:242 #, python-format msgid "" "_name_translate: Name in cinder: %(old)s, new name in storage system: " "%(new)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:279 #, python-format msgid "" "_parse_volume_type: Unacceptable parameter %(key)s. Please check this key" " in extra_specs and make it consistent with the element in configuration " "file %(conf)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:373 #: cinder/volume/drivers/huawei/ssh_common.py:1451 #, python-format msgid "LUNType must be \"Thin\" or \"Thick\". LUNType:%(type)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:395 msgid "" "_parse_conf_lun_params: Use default prefetch type. Prefetch type: " "Intelligent" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:421 #, python-format msgid "" "_get_maximum_capacity_pool_id: Failed to get pool id. Please check config" " file and make sure the StoragePool %s is created in storage array." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:436 #, python-format msgid "CLI command: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:466 #, python-format msgid "" "_execute_cli: Can not connect to IP %(old)s, try to connect to the other " "IP %(new)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:501 #, python-format msgid "_execute_cli: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:511 #, python-format msgid "delete_volume: volume name: %s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:516 #, python-format msgid "delete_volume: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:570 #, python-format msgid "" "create_volume_from_snapshot: snapshot name: %(snapshot)s, volume name: " "%(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:580 #, python-format msgid "create_volume_from_snapshot: Snapshot %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:650 #, python-format msgid "_wait_for_luncopy: LUNcopy %(luncopyname)s status is %(status)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:688 #, python-format msgid "create_cloned_volume: src volume: %(src)s, tgt volume: %(tgt)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:697 #, python-format msgid "Source volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:739 #, python-format msgid "" "extend_volume: extended volume name: %(extended_name)s new added volume " "name: %(added_name)s new added volume size: %(added_size)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:747 #, python-format msgid "extend_volume: volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:779 #, python-format msgid "create_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:785 msgid "create_snapshot: Resource pool needs 1GB valid size at least." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:792 #, python-format msgid "create_snapshot: Volume %(name)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:855 #, python-format msgid "delete_snapshot: snapshot name: %(snapshot)s, volume name: %(volume)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:865 #, python-format msgid "" "delete_snapshot: Can not delete snapshot %s for it is a source LUN of " "LUNCopy." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:873 #, python-format msgid "delete_snapshot: Snapshot %(snap)s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:916 #, python-format msgid "" "%(func)s: %(msg)s\n" "CLI command: %(cmd)s\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:933 #, python-format msgid "map_volume: Volume %s was not found." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1079 #, python-format msgid "change_lun_ctr: Changing LUN %(lun)s ctr to %(ctr)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1102 #, python-format msgid "remove_map: Host %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1106 #, python-format msgid "remove_map: Volume %s does not exist." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1119 #, python-format msgid "remove_map: No map between host %(host)s and volume %(volume)s." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1138 #, python-format msgid "" "_delete_map: There are IOs accessing the system. Retry to delete host map" " %(mapid)s 10s later." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1146 #, python-format msgid "" "_delete_map: Failed to delete host map %(mapid)s.\n" "CLI out: %(out)s" msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1185 msgid "_update_volume_stats: Updating volume stats." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1277 msgid "_check_conf_file: Config file invalid. StoragePool must be specified." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1311 msgid "" "_get_device_type: The driver only supports Dorado5100 and Dorado 2100 G2 " "now." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1389 #, python-format msgid "" "create_volume_from_snapshot: %(device)s does not support create volume " "from snapshot." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1396 #, python-format msgid "create_cloned_volume: %(device)s does not support clone volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1404 #, python-format msgid "extend_volume: %(device)s does not support extend volume." msgstr "" #: cinder/volume/drivers/huawei/ssh_common.py:1413 #, python-format msgid "create_snapshot: %(device)s does not support snapshot." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:125 #, python-format msgid "Failed to issue mmgetstate command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:136 #, python-format msgid "GPFS is not active. Detailed output: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:137 #, python-format msgid "GPFS is not running, state: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:149 #, python-format msgid "Failed to issue df command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:165 cinder/volume/drivers/ibm/gpfs.py:254 #, python-format msgid "Failed to issue mmlsconfig command, error: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:176 #, python-format msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:185 #, python-format msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:207 #, python-format msgid "Invalid storage pool %s requested. Retype failed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:234 #, python-format msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:271 #, python-format msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:321 #, python-format msgid "Could not find GPFS cluster id: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:329 #, python-format msgid "Could not find GPFS file system device: %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:337 #, python-format msgid "Invalid storage pool %s specificed." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:347 msgid "Option gpfs_mount_point_base is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:354 msgid "Option gpfs_images_share_mode is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:360 msgid "Option gpfs_images_dir is not set correctly." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:367 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different file systems." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:378 #, python-format msgid "" "gpfs_images_share_mode is set to copy_on_write, but %(vol)s and %(img)s " "belong to different filesets." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:387 #, python-format msgid "" "Downlevel GPFS Cluster Detected. GPFS Clone feature not enabled in " "cluster daemon level %(cur)s - must be at least at level %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:401 #, python-format msgid "%s must be an absolute path." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:406 #, python-format msgid "%s is not a directory." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:416 #, python-format msgid "" "The GPFS filesystem %(fs)s is not at the required release level. Current" " level is %(cur)s, must be at least %(min)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:797 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:821 #, python-format msgid "Begin backup of volume %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:841 #, python-format msgid "Begin restore of backup %s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:871 #, python-format msgid "" "Driver-based migration of volume %(vol)s failed. Move from %(src)s to " "%(dst)s failed with error: %(error)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:943 #, python-format msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." msgstr "" #: cinder/volume/drivers/ibm/gpfs.py:976 #, python-format msgid "" "%s cannot be accessed. Verify that GPFS is active and file system is " "mounted." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:85 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:232 #: cinder/volume/drivers/netapp/iscsi.py:122 #: cinder/volume/drivers/netapp/nfs.py:669 #: cinder/volume/drivers/san/hp/hp_3par_common.py:169 #, python-format msgid "%s is not set" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:91 msgid "" "Password or SSH private key is required for authentication: set either " "nas_password or nas_private_key option" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:97 #, python-format msgid "Enter _get_provider_location: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:104 #, python-format msgid "Enter _get_export_path: volume_id %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:110 msgid "Enter _update_volume_stats" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:136 #, python-format msgid "Enter _create_ibmnas_snap: src %(src)s, dest %(dest)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:144 #, python-format msgid "Failed in _create_ibmnas_snap during create_snapshot. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:158 #, python-format msgid "" "Failed in _create_ibmnas_snap during create_volume_from_snapshot. Error: " "%s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:166 #, python-format msgid "Enter _create_ibmnas_copy: src %(src)s, dest %(dest)s, snap %(snap)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:174 #, python-format msgid "Failed in _create_ibmnas_copy. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:181 #: cinder/volume/drivers/netapp/nfs.py:485 #, python-format msgid "Resizing file to %sG" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:185 #, python-format msgid "Failed to resize volume %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:195 #: cinder/volume/drivers/netapp/nfs.py:611 #, python-format msgid "Extending volume %s." msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:200 #, python-format msgid "Enter _delete_snapfiles: fchild %(fchild)s, mount_point %(mount_point)s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:208 #, python-format msgid "Failed in _delete_snapfiles. Error: %s" msgstr "" #: cinder/volume/drivers/ibm/ibmnas.py:246 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:143 msgid "enter: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:153 #, python-format msgid "Failed getting details for pool %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:189 msgid "do_setup: No configured nodes." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:214 msgid "leave: do_setup" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:218 msgid "enter: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:222 msgid "Unable to determine system name" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:225 msgid "Unable to determine system id" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:238 msgid "" "Password or SSH private key is required for authentication: set either " "san_password or san_private_key option" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:246 #, python-format msgid "" "Illegal value %d specified for storwize_svc_flashcopy_timeout: valid " "values are between 0 and 600" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:254 msgid "leave: check_for_setup_error" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:264 #, python-format msgid "ensure_export: Volume %s not found on storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:283 msgid "The connector does not contain the required information." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:307 #, python-format msgid "enter: initialize_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:338 msgid "CHAP secret exists for host but CHAP is disabled" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:343 #, python-format msgid "initialize_connection: Failed to get attributes for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:355 #, python-format msgid "Did not find expected column name in lsvdisk: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:357 #, python-format msgid "initialize_connection: Missing volume attribute for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 #, python-format msgid "" "initialize_connection: No node found in I/O group %(gid)s for volume " "%(vol)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:383 #, python-format msgid "initialize_connection: Did not find a preferred node for volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:406 msgid "" "Could not get FC connection information for the host-volume connection. " "Is the host configured properly for FC connections?" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:425 #, python-format msgid "" "initialize_connection: Failed to collect return properties for volume " "%(vol)s and connector %(conn)s.\n" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:430 #, python-format msgid "" "leave: initialize_connection:\n" " volume: %(vol)s\n" " connector %(conn)s\n" " properties: %(prop)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:457 #, python-format msgid "enter: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:464 msgid "terminate_connection: Failed to get host name from connector." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:482 #, python-format msgid "leave: terminate_connection: volume %(vol)s with connector %(conn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:501 msgid "create_snapshot: get source volume failed." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:514 msgid "create_volume_from_snapshot: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:526 msgid "create_cloned_volume: Source and destination size differ." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:537 #, python-format msgid "enter: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:541 msgid "extend_volume: Extending a volume with snapshots is not supported." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:548 #, python-format msgid "leave: extend_volume: volume %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:584 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %s does not have any registered vdisk copy " "operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s does not have the specified vdisk copy " "operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:601 #, python-format msgid "" "_rm_vdisk_copy_op: Volume metadata %s does not have any registered vdisk " "copy operations." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:609 #, python-format msgid "" "_rm_vdisk_copy_op: Volume %(vol)s metadata does not have the specified " "vdisk copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:627 msgid "enter: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:637 #, python-format msgid "" "_check_volume_copy_ops: Volume %(vol)s does not have the specified vdisk " "copy operation: orig=%(orig)s new=%(new)s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:648 msgid "exit: update volume copy status" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:663 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:682 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:699 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:406 #, python-format msgid "" "enter: retype: id=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:740 #, python-format msgid "" "exit: retype: ild=%(id)s, new_type=%(new_type)s,diff=%(diff)s, " "host=%(host)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:757 #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:783 msgid "No vdisk with the specified vdisk_UID." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:776 msgid "Reference must contain vdisk_UID element." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:791 msgid "The specified vdisk is mapped to a host." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:831 msgid "Could not get pool data from the storage" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/__init__.py:832 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:44 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:64 #, python-format msgid "Failed to get code level (%s)." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:86 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:143 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:165 #, python-format msgid "Failed to find host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:179 #, python-format msgid "enter: get_host_from_connector: %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:212 #, python-format msgid "leave: get_host_from_connector: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:223 #, python-format msgid "enter: create_host: host %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:229 msgid "create_host: Host name is not unicode or string" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:240 msgid "create_host: No initiators or wwpns supplied." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:270 #, python-format msgid "leave: create_host: host %(host)s - %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:280 #, python-format msgid "enter: map_vol_to_host: volume %(volume_name)s to host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:306 #, python-format msgid "" "leave: map_vol_to_host: LUN %(result_lun)s, volume %(volume_name)s, host " "%(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:316 #, python-format msgid "enter: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:323 #, python-format msgid "unmap_vol_from_host: No mapping of volume %(vol_name)s to any host found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:329 #, python-format msgid "" "unmap_vol_from_host: Multiple mappings of volume %(vol_name)s found, no " "host specified." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:341 #, python-format msgid "" "unmap_vol_from_host: No mapping of volume %(vol_name)s to host %(host)s " "found." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:353 #, python-format msgid "leave: unmap_vol_from_host: volume %(volume_name)s from host %(host_name)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:382 msgid "" "Illegal value specified for storwize_svc_vol_rsize: set to either a " "percentage (0-100) or -1" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:388 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:395 msgid "" "Illegal value specified for storwize_svc_vol_grainsize: set to either 32," " 64, 128, or 256" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:402 msgid "System does not support compression" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 msgid "If compression is set to True, rsize must also be set (not equal to -1)" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 #, python-format msgid "" "Illegal value %(prot)s specified for storwize_svc_connection_protocol: " "valid values are %(enabled)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:422 #, python-format msgid "I/O group %(iogrp)d is not valid; available I/O groups are %(avail)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:458 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:501 #, python-format msgid "enter: create_vdisk: vdisk %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:504 #, python-format msgid "leave: _create_vdisk: volume %s " msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:531 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:541 #, python-format msgid "" "Mapping %(id)s prepare failed to complete within theallotted %(to)d " "seconds timeout. Terminating." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:550 #, python-format msgid "" "enter: run_flashcopy: execute FlashCopy from source %(source)s to target " "%(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:558 #, python-format msgid "leave: run_flashcopy: FlashCopy started from %(source)s to %(target)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:578 #, python-format msgid "Loopcall: _check_vdisk_fc_mappings(), vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:601 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:637 #, python-format msgid "Calling _ensure_vdisk_no_fc_mappings: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:645 #, python-format msgid "enter: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:647 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:651 #, python-format msgid "leave: delete_vdisk: vdisk %s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:655 #, python-format msgid "enter: create_copy: snapshot %(src)s to %(tgt)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:660 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:675 #, python-format msgid "leave: _create_copy: snapshot %(tgt)s from vdisk %(src)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:692 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:741 #, python-format msgid "" "Ignore change IO group as storage code level is %(code_level)s, below " "then 6.4.0.0" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/helpers.py:762 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:35 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:213 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:250 #, python-format msgid "" "CLI Exception output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:53 #, python-format msgid "Expected no output from CLI command %(cmd)s, got %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:65 #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:262 #, python-format msgid "" "Failed to parse CLI output:\n" " command: %(cmd)s\n" " stdout: %(out)s\n" " stderr: %(err)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:144 msgid "Must pass wwpn or host to lsfabric." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:160 #, python-format msgid "Did not find success message nor error for %(fun)s: %(out)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:165 msgid "" "storwize_svc_multihostmap_enabled is set to False, not allowing multi " "host mapping." msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:353 #, python-format msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" msgstr "" #: cinder/volume/drivers/ibm/storwize_svc/ssh.py:388 #, python-format msgid "" "Unexpected CLI response: header/row mismatch. header: %(header)s, row: " "%(row)s" msgstr "" #: cinder/volume/drivers/netapp/api.py:424 #, python-format msgid "No element by given name %s." msgstr "" #: cinder/volume/drivers/netapp/api.py:444 msgid "Not a valid value for NaElement." msgstr "" #: cinder/volume/drivers/netapp/api.py:448 msgid "NaElement name cannot be null." msgstr "" #: cinder/volume/drivers/netapp/api.py:491 msgid "Type cannot be converted into NaElement." msgstr "" #: cinder/volume/drivers/netapp/common.py:80 msgid "Required configuration not found" msgstr "" #: cinder/volume/drivers/netapp/common.py:108 #, python-format msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:114 #, python-format msgid "Storage family %s is not supported" msgstr "" #: cinder/volume/drivers/netapp/common.py:121 #, python-format msgid "No default storage protocol found for storage family %(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:128 #, python-format msgid "" "Protocol %(storage_protocol)s is not supported for storage family " "%(storage_family)s" msgstr "" #: cinder/volume/drivers/netapp/common.py:135 #, python-format msgid "" "NetApp driver of family %(storage_family)s and protocol " "%(storage_protocol)s loaded" msgstr "" #: cinder/volume/drivers/netapp/common.py:144 msgid "Only loading netapp drivers supported." msgstr "" #: cinder/volume/drivers/netapp/common.py:163 #, python-format msgid "" "The configured NetApp driver is deprecated. Please refer the link to " "resolve the issue '%s'." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:69 #, python-format msgid "No metadata property %(prop)s defined for the LUN %(name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:105 #, python-format msgid "Using NetApp filer: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:150 msgid "Success getting LUN list from server" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:166 #, python-format msgid "Created LUN with name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:175 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:191 #, python-format msgid "Destroyed LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:227 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:232 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:238 #, python-format msgid "Failed to get LUN target details for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:249 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:252 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:290 #, python-format msgid "Snapshot %s deletion successful" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:310 #: cinder/volume/drivers/netapp/iscsi.py:557 #: cinder/volume/drivers/netapp/nfs.py:101 #: cinder/volume/drivers/netapp/nfs.py:208 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:325 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:414 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:433 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:503 msgid "Object is not a NetApp LUN." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:535 #, python-format msgid "Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:537 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:593 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:599 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:626 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:655 #, python-format msgid "Moving lun %(name)s to %(new_name)s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:670 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:677 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:683 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:700 #, python-format msgid "Post clone resize lun %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:711 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:716 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:720 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:723 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:725 #, python-format msgid "Exception details: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:729 msgid "Getting lun block count." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:734 #, python-format msgid "Failure getting lun info for %s." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:781 #, python-format msgid "Failed to get vol with required size and extra specs for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:793 #, python-format msgid "Error provisioning vol %(name)s on %(volume)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:841 #, python-format msgid "No iscsi service found for vserver %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1008 #, python-format msgid "Cloned LUN with new name %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1012 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1113 msgid "Cluster ssc is not updated. No volume stats found." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1175 #: cinder/volume/drivers/netapp/nfs.py:1300 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1179 #: cinder/volume/drivers/netapp/nfs.py:1304 #: cinder/volume/drivers/netapp/utils.py:323 msgid "Api version could not be determined." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1190 #, python-format msgid "Failed to get vol with required size for volume: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1299 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1443 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s completed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1446 #, python-format msgid "Clone operation with src %(name)s and dest %(new_name)s failed" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1509 msgid "Volume refresh job already running. Returning..." msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1515 #, python-format msgid "Error refreshing vol capacity. Message: %s" msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:1523 #, python-format msgid "Refreshing capacity info for %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:106 #: cinder/volume/drivers/netapp/nfs.py:213 #, python-format msgid "NFS file %s not discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:226 #, python-format msgid "Copied image to volume %s using regular download." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:233 #, python-format msgid "Registering image in cache %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:240 #, python-format msgid "" "Exception while registering image %(image_id)s in cache. Exception: " "%(exc)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:253 #, python-format msgid "Found cache file for image %(image_id)s on share %(share)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:266 #, python-format msgid "Cloning from cache to destination %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:274 msgid "Image cache cleaning in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:285 msgid "Image cache cleaning in progress." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:296 #, python-format msgid "Cleaning cache for share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:301 #, python-format msgid "Files to be queued for deletion %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:308 #, python-format msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:314 msgid "Image cache cleaning done." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:339 #, python-format msgid "Bytes to free %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:346 #, python-format msgid "Delete file path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:361 #, python-format msgid "Deleting file at path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:366 #, python-format msgid "Exception during deleting %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:398 #, python-format msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:414 #, python-format msgid "Cloning image %s from cache" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:418 #, python-format msgid "Cache share: %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:428 #, python-format msgid "Unexpected exception during image cloning in share %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:434 #, python-format msgid "Checking image clone %s from glance share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:439 #, python-format msgid "Share is cloneable %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:446 #, python-format msgid "Image is raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:453 #, python-format msgid "Image will locally be converted to raw %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:460 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:470 #, python-format msgid "Performing post clone for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:477 msgid "NFS file could not be discovered." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:481 msgid "Checking file for resize" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:491 msgid "Resizing image file failed." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:513 msgid "Discover file retries exhausted." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:539 #, python-format msgid "Image location not in the expected format %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:567 #, python-format msgid "Found possible share matches %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:571 msgid "Unexpected exception while short listing used share." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:586 msgid "Image location not present." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:623 msgid "Container size smaller than required file size." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:631 #, python-format msgid "Destination %s already exists." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:639 #, python-format msgid "Exception moving file %(src)s. Message - %(e)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:741 #, python-format msgid "Shares on vserver %s will only be used for provisioning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:745 #: cinder/volume/drivers/netapp/nfs.py:947 msgid "No vserver set in config. SSC will be disabled." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:794 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:803 #, python-format msgid "Volume %s could not be created on shares." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:866 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:907 #, python-format msgid "" "No volume on cluster with vserver\n" " %(vserver)s and junction path " "%(junction)s\n" " " msgstr "" #: cinder/volume/drivers/netapp/nfs.py:914 #, python-format msgid "" "Cloning with params volume %(volume)s, src %(src_path)s,\n" " dest %(dest_path)s, vserver %(vserver)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:979 msgid "No cluster ssc stats found. Wait for next volume stats update." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:996 msgid "No shares found hence skipping ssc refresh." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1033 #: cinder/volume/drivers/netapp/nfs.py:1441 #, python-format msgid "Shortlisted del elg files %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1038 #: cinder/volume/drivers/netapp/nfs.py:1446 #, python-format msgid "Getting file usage for %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1043 #: cinder/volume/drivers/netapp/nfs.py:1451 #, python-format msgid "file-usage for path %(path)s is %(bytes)s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1060 #: cinder/volume/drivers/netapp/nfs.py:1488 #, python-format msgid "Share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1062 #: cinder/volume/drivers/netapp/nfs.py:1490 #, python-format msgid "No share match found for ip %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1093 #, python-format msgid "Found volume %(vol)s for share %(share)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1126 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1130 msgid "Copy offload either not configured or unsupported." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1133 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1157 #, python-format msgid "No vserver owning the ip %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1162 msgid "Trying copy from cache using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1167 #, python-format msgid "Found cache file_name on share %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1181 #, python-format msgid "Copied image from cache to volume %s using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1187 #, python-format msgid "Copied image from cache to volume %s using cloning." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1193 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1206 msgid "Trying copy from image service using copy offload." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1213 msgid "Source host details not found." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1239 #, python-format msgid "Copied image %(img)s to tmp file %(tmp)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1244 #, python-format msgid "Image is raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1248 #, python-format msgid "Copied raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1251 #, python-format msgid "Image will be converted to raw %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1263 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1271 #, python-format msgid "Copied locally converted raw image %(img)s to volume %(vol)s." msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1349 #, python-format msgid "No storage path found for export path %s" msgstr "" #: cinder/volume/drivers/netapp/nfs.py:1359 #, python-format msgid "Cloning with src %(src_path)s, dest %(dest_path)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:241 #, python-format msgid "Unexpected error while creating ssc vol list. Message - %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:272 #, python-format msgid "Exception querying aggr options. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:313 #, python-format msgid "Exception querying sis information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:347 #, python-format msgid "Exception querying mirror information. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:379 #, python-format msgid "Exception querying storage disk. %s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:421 #, python-format msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:455 #, python-format msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:482 #, python-format msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:488 #, python-format msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:500 msgid "Backend not a VolumeDriver." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:502 msgid "Backend server not NaServer." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:505 msgid "ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:517 msgid "refresh stale ssc job in progress. Returning... " msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:613 msgid "Fatal error: User not permitted to query NetApp volumes." msgstr "" #: cinder/volume/drivers/netapp/ssc_utils.py:620 #, python-format msgid "" "The user does not have access or sufficient privileges to use all netapp " "apis. The following extra_specs will fail or be ignored: %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:125 msgid "ems executed successfully." msgstr "" #: cinder/volume/drivers/netapp/utils.py:127 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" #: cinder/volume/drivers/netapp/utils.py:140 msgid "" "It is not the recommended way to use drivers by NetApp. Please use " "NetAppDriver to achieve the functionality." msgstr "" #: cinder/volume/drivers/netapp/utils.py:163 msgid "Requires an NaServer instance." msgstr "" #: cinder/volume/drivers/netapp/utils.py:320 msgid "Unsupported Clustered Data ONTAP version." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:45 msgid "One of the required inputs from host, port or scheme not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:49 msgid "Invalid transport type." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:73 #, python-format msgid "Unexpected error while invoking web service. Error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:76 msgid "Invoking web service failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:109 msgid "Storage system id not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:121 #, python-format msgid "" "Invoking rest with method: %(m)s, path: %(p)s, data: %(d)s, use_system: " "%(sys)s, timeout: %(t)s, verify: %(v)s, kwargs: %(k)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:135 msgid "Content type not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:145 #, python-format msgid "Response error - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/client.py:147 #, python-format msgid "Response error code - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:86 #, python-format msgid "%s is not set." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:100 #, python-format msgid "Error resolving host %(host)s. Error - %(e)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:110 msgid "Controller ips not valid after resolution." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:113 msgid "Embedded mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:116 msgid "Proxy mode detected." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:127 #, python-format msgid "System with controller addresses [%s] is not registered with web service." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:145 msgid "Waiting for web service array communication." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:149 #, python-format msgid "" "Failure in communication between web service and array. Waited %s " "seconds. Verify array configuration parameters." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:159 #, python-format msgid "System %(id)s found with bad status - %(status)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:161 #, python-format msgid "System %(id)s has %(status)s status." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:177 #, python-format msgid "Configured storage pools %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:222 #, python-format msgid "Volume %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:231 #, python-format msgid "Snapshot %s not cached." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:241 #, python-format msgid "Mapping with id %s already removed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:270 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:296 #: cinder/volume/drivers/netapp/eseries/iscsi.py:330 #, python-format msgid "Created volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:299 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:300 #, python-format msgid "Failure creating volume %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:316 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:339 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:341 msgid "Snapshot volume not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:346 #, python-format msgid "Creating snap vol for group %s" msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:357 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:370 #, python-format msgid "Vol copy job status %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:371 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:374 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:382 #, python-format msgid "Failure deleting job %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:384 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:386 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:398 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:407 #, python-format msgid "Volume %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:431 #, python-format msgid "Created snap grp with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:442 #, python-format msgid "Snapshot %s already deleted." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:468 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:471 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:511 #, python-format msgid "No good iscsi portal information found for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:527 #, python-format msgid "Message - %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:542 #, python-format msgid "Host with port %(port)s and type %(type)s not found." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:547 #, python-format msgid "Creating host with port %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:560 #, python-format msgid "Host type %s not supported." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:569 msgid "No free luns. Host might exceeded max luns." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:592 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:604 msgid "Updating volume stats." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:646 #, python-format msgid "Extended volume with label %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:660 msgid "Returning as clean tmp vol job already running." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:668 #, python-format msgid "Error deleting vol with label %s." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:105 #, python-format msgid "Volume %s does not exist in Nexenta SA" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:151 #, python-format msgid "Extending volume: %(id)s New size: %(size)s GB" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:167 #, python-format msgid "Volume %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:180 #, python-format msgid "Cannot delete snapshot %(origin)s: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:191 #, python-format msgid "Creating temp snapshot of the original volume: %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:201 #: cinder/volume/drivers/nexenta/nfs.py:200 #, python-format msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:206 #: cinder/volume/drivers/nexenta/nfs.py:205 #, python-format msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:232 #, python-format msgid "Enter: migrate_volume: id=%(id)s, host=%(host)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:268 #, python-format msgid "Remote NexentaStor appliance at %s should be SSH-bound." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:288 #, python-format msgid "" "Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " "%(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:296 #, python-format msgid "" "Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" " %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:302 #, python-format msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:312 #, python-format msgid "" "Cannot delete temporary destination snapshot %(dst)s on NexentaStor " "Appliance: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:355 #, python-format msgid "Snapshot %s does not exist, it seems it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:476 #: cinder/volume/drivers/windows/windows_utils.py:230 #, python-format msgid "Ignored target creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:486 #, python-format msgid "Ignored target group creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:498 #, python-format msgid "Ignored target group member addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:508 #, python-format msgid "Ignored LU creation error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:518 #, python-format msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:551 #, python-format msgid "" "Got error trying to destroy target group %(target_group)s, assuming it is" " already gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/iscsi.py:559 #, python-format msgid "" "Got error trying to delete target %(target)s, assuming it is already " "gone: %(exc)s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:83 #, python-format msgid "Sending JSON data: %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:88 msgid "No headers in server response" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:89 msgid "Bad response from server" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:90 #, python-format msgid "Auto switching to HTTPS connection to %s" msgstr "" #: cinder/volume/drivers/nexenta/jsonrpc.py:96 #, python-format msgid "Got response: %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:85 #, python-format msgid "Volume %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:89 #, python-format msgid "Folder %s does not exist in Nexenta Store appliance" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:114 #, python-format msgid "Creating folder on Nexenta Store %s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:146 #, python-format msgid "Cannot destroy created folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:176 #, python-format msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:227 #, python-format msgid "Folder %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:237 #: cinder/volume/drivers/nexenta/nfs.py:268 #, python-format msgid "Snapshot %s does not exist, it was already deleted." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:302 #, python-format msgid "Creating regular file: %s.This may take some time." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:313 #, python-format msgid "Regular file: %s created." msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:365 #, python-format msgid "Sharing folder %s on Nexenta Store" msgstr "" #: cinder/volume/drivers/nexenta/nfs.py:393 #, python-format msgid "Shares loaded: %s" msgstr "" #: cinder/volume/drivers/nexenta/utils.py:47 #, python-format msgid "Invalid value: \"%s\"" msgstr "" #: cinder/volume/drivers/san/san.py:169 msgid "Specify san_password or san_private_key" msgstr "" #: cinder/volume/drivers/san/san.py:173 msgid "san_ip must be set" msgstr "" #: cinder/volume/drivers/san/solaris.py:79 #, python-format msgid "Cannot parse list-view output: %s" msgstr "" #: cinder/volume/drivers/san/solaris.py:174 #, python-format msgid "LUID not found for %(zfs_poolname)s. Output=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:178 #, python-format msgid "" "Invalid hp3parclient version found (%(found)s). Version %(minimum)s or " "greater required." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:200 #, python-format msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:214 #, python-format msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:232 #: cinder/volume/drivers/san/hp/hp_3par_common.py:442 #, python-format msgid "CPG (%s) doesn't exist on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:240 #, python-format msgid "Failed to get domain because CPG (%s) doesn't exist on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:253 #, python-format msgid "Extending Volume %(vol)s from %(old)s to %(new)s, by %(diff)s GB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:264 msgid "Converting to base volume prior to growing." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:283 #, python-format msgid "Error extending volume: %(vol)s. Exception: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:463 #, python-format msgid "3PAR vlun %(name)s not found on host %(host)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:593 #, python-format msgid "Error creating QOS rule %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:602 #, python-format msgid "VV Set %s does not exist." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:644 #, python-format msgid "Must specify a valid persona %(valid)s, value '%(persona)s' is invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:695 #, python-format msgid "" "Must specify a valid provisioning type %(valid)s, value '%(prov)s' is " "invalid." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:763 #, python-format msgid "Volume (%s) already exists on array" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:782 #, python-format msgid "Creating clone of a volume %(src)s to %(dest)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:839 #, python-format msgid "Found an online copy for %(volume)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:876 #, python-format msgid "Delete volume id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:939 #, python-format msgid "Converting to base volume type: %s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:943 #, python-format msgid "Growing volume: %(id)s by %(size)s GiB." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:947 #, python-format msgid "Error extending volume %(id)s. Ex: %(ex)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1031 #, python-format msgid "Failure in update_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1045 #, python-format msgid "Failure in clear_volume_key_value_pair:%s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1057 #, python-format msgid "Error attaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1065 #, python-format msgid "Error detaching volume %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1080 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1086 #, python-format msgid "Volume is attached: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1102 #, python-format msgid "Dest does not match: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1109 #, python-format msgid "CPGs are the same: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1117 #, python-format msgid "CPGs in different domains: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1125 #, python-format msgid "leave: migrate_volume: id=%(id)s, host=%(host)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1145 #, python-format msgid "Copy volume scheduled: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1165 #, python-format msgid "" "Copy volume task failed: convert_to_base_volume: id=%(id)s, " "status=%(status)s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1169 #, python-format msgid "Copy volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1175 #, python-format msgid "Volume rename completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1180 #, python-format msgid "Delete src volume completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1186 #, python-format msgid "Completed: convert_to_base_volume: id=%s." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1189 #, python-format msgid "Volume (%s) already exists on array." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_common.py:1218 #, python-format msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:127 #, python-format msgid "Invalid IP address format '%s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:161 #, python-format msgid "" "Found invalid iSCSI IP address(s) in configuration option(s) " "hp3par_iscsi_ips or iscsi_ip_address '%s.'" msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:167 msgid "At least one valid iSCSI IP address must be set." msgstr "" #: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:269 msgid "Least busy iSCSI port not found, using first iSCSI port in list." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:92 #, python-format msgid "CLIQ %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:107 #, python-format msgid "CLIQ command returned %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:113 #, python-format msgid "Malformed response to CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:121 #, python-format msgid "Error running CLIQ command %(verb)s %(cliq_args)s. Result=%(out)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:151 #, python-format msgid "" "Unexpected number of virtual ips for cluster %(cluster_name)s. " "Result=%(_xml)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:204 #, python-format msgid "Volume info: %(volume_name)s => %(volume_attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:260 #, python-format msgid "Snapshot info: %(name)s => %(attributes)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:318 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:184 msgid "Volume did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:330 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:217 msgid "Snapshot did not exist. It will not be deleted" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:342 msgid "local_path not supported" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:75 #, python-format msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:34 msgid "Module hplefthandclient not installed." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:102 msgid "HPLeftHand url not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:128 msgid "LeftHand cluster not found" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:136 #, python-format msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:342 #, python-format msgid "'%(value)s' is an invalid value for extra spec '%(key)s'" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:362 #, python-format msgid "CHAP secret exists for host %s but CHAP is disabled" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:365 #, python-format msgid "CHAP is enabled, but server secret not configured on server %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:423 #, python-format msgid "LH specs=%(specs)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:464 #, python-format msgid "enter: migrate_volume: id=%(id)s, host=%(host)s, cluster=%(cluster)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:479 #, python-format msgid "Clister info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:483 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "is from a different backend." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:488 #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:494 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because cluster " "exists in different management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:501 #, python-format msgid "Volume info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:505 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has been exported." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:514 #, python-format msgid "Snapshot info: %s" msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:516 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because the " "volume has snapshots." msgstr "" #: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:524 #, python-format msgid "" "Cannot provide backend assisted migration for volume: %s because volume " "does not exist in this management group." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:62 msgid "Connecting to MSA" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:66 #, python-format msgid "Failed to connect to MSA Array (%(host)s): %(err)s" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:71 msgid "Failed to log on MSA Array (invalid login?)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:82 msgid "Disconnected from MSA Array" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:125 #, python-format msgid "%s configuration option is not set" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:131 #, python-format msgid "Create Volume (%(display_name)s: %(name)s %(id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:166 msgid "Volume must be detached to perform a clone operation." msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:175 #, python-format msgid "Cloning Volume %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:194 #, python-format msgid "Creating Volume from snapshot %(source_id)s (%(dest_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:210 #, python-format msgid "Deleting Volume (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:243 #, python-format msgid "Unable to get stats for VDisk (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:252 msgid "Connector doesn't provide wwpns" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:279 #, python-format msgid "Creating Snapshot from %(volume_id)s (%(snap_id)s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:292 #, python-format msgid "Deleting Snapshot (%s)" msgstr "" #: cinder/volume/drivers/san/hp/hp_msa_common.py:307 #, python-format msgid "" "Extending Volume %(volume_name)s from %(old_size)s to %(new_size)s, by " "%(growth_size)s GB." msgstr "" #: cinder/volume/drivers/vmware/api.py:71 #, python-format msgid "Failure while invoking function: %(func)s. Error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:169 #, python-format msgid "Error while terminating session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:182 msgid "Successfully established connection to the server." msgstr "" #: cinder/volume/drivers/vmware/api.py:189 #, python-format msgid "Error while logging out from vim session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:195 #, python-format msgid "Error while logging out from pbm session: %s." msgstr "" #: cinder/volume/drivers/vmware/api.py:236 #, python-format msgid "Returning empty response for %(module)s.%(method)s invocation." msgstr "" #: cinder/volume/drivers/vmware/api.py:243 #, python-format msgid "" "Current session: %(session)s is inactive; re-creating the session while " "invoking method %(module)s.%(method)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:259 #, python-format msgid "Checking if the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:269 #, python-format msgid "Error occurred while checking whether the current session: %s is active." msgstr "" #: cinder/volume/drivers/vmware/api.py:304 #, python-format msgid "Task: %(task)s progress: %(prog)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:308 #, python-format msgid "Task %s status: success." msgstr "" #: cinder/volume/drivers/vmware/api.py:311 #: cinder/volume/drivers/vmware/api.py:315 #, python-format msgid "Task: %(task)s failed with error: %(err)s." msgstr "" #: cinder/volume/drivers/vmware/api.py:331 msgid "Lease is ready." msgstr "" #: cinder/volume/drivers/vmware/api.py:333 msgid "Lease initializing..." msgstr "" #: cinder/volume/drivers/vmware/api.py:343 #, python-format msgid "Error: unknown lease state %s." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:58 msgid "VMware VMDK driver exception." msgstr "" #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver configuration error." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:51 #, python-format msgid "Read %(bytes)s out of %(max)s from ThreadSafePipe." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:56 #, python-format msgid "Completed transfer of size %s." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:102 #, python-format msgid "Initiating image service update on image: %(image)s with meta: %(meta)s" msgstr "" #: cinder/volume/drivers/vmware/io_util.py:117 #, python-format msgid "Glance image: %s is now active." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:123 #, python-format msgid "Glance image: %s is in killed state." msgstr "" #: cinder/volume/drivers/vmware/io_util.py:132 #, python-format msgid "Glance image %(id)s is in unknown state - %(state)s" msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:172 #, python-format msgid "" "Exception during HTTP connection close in VMwareHTTPWrite. Exception is " "%s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:204 #: cinder/volume/drivers/vmware/read_write_util.py:293 msgid "Could not retrieve URL from lease." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:207 #, python-format msgid "Opening vmdk url: %s for write." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:232 #, python-format msgid "Written %s bytes to vmdk." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:243 #: cinder/volume/drivers/vmware/read_write_util.py:319 #, python-format msgid "Updating progress to %s percent." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:259 #: cinder/volume/drivers/vmware/read_write_util.py:335 msgid "Lease released." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:261 #: cinder/volume/drivers/vmware/read_write_util.py:337 #, python-format msgid "Lease is already in state: %s." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:296 #, python-format msgid "Opening vmdk url: %s for read." msgstr "" #: cinder/volume/drivers/vmware/read_write_util.py:308 #, python-format msgid "Read %s bytes from vmdk." msgstr "" #: cinder/volume/drivers/vmware/vim.py:142 #, python-format msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" #: cinder/volume/drivers/vmware/vim.py:181 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:190 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:201 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:210 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vim.py:217 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:124 #, python-format msgid "Returning default spec value: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:131 #, python-format msgid "Returning spec value %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:134 #, python-format msgid "Invalid spec value: %s specified." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:146 msgid "" "The VMware ESX VMDK driver is now deprecated and will be removed in the " "Juno release. The VMware vCenter VMDK driver will remain and continue to " "be supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:198 #, python-format msgid "%s not set." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:206 #: cinder/volume/drivers/vmware/vmdk.py:1190 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:248 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:252 #, python-format msgid "Verified volume %s can be created." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:271 msgid "Backing not available, no operation to be performed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:339 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:345 #, python-format msgid "" "Selected datastore: %(datastore)s with %(host_count)d connected host(s) " "for the volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:370 #, python-format msgid "Filter datastores matching storage profile %(profile)s: %(dss)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:375 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "Storage profile required for this volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:402 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:407 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:483 #, python-format msgid "" "Unable to find suitable datastore for volume of size: %(vol)s GB under " "host: %(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:493 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:520 #, python-format msgid "" "Unable to find suitable datastore for volume: %(vol)s under host: " "%(host)s. More details: %(excep)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:530 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:549 #, python-format msgid "The instance: %s for which initialize connection is called, exists." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:556 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:564 msgid "The instance for which initialize connection is called, does not exist." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:569 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:578 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:626 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:631 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Successfully created snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:657 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:666 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:707 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:724 #, python-format msgid "" "There is no backing for the source volume: %(svol)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:755 #, python-format msgid "" "There is no backing for the source snapshot: %(snap)s. Not creating any " "backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:764 #: cinder/volume/drivers/vmware/vmdk.py:1306 #, python-format msgid "" "There is no snapshot point for the snapshotted volume: %(snap)s. Not " "creating any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:801 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:836 #: cinder/volume/drivers/vmware/vmdk.py:895 #, python-format msgid "Fetching glance image: %(id)s to server: %(host)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:845 #: cinder/volume/drivers/vmware/vmdk.py:917 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:848 #, python-format msgid "" "Exception in copy_image_to_volume: %(excep)s. Deleting the backing: " "%(back)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:868 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:873 #, python-format msgid "Selected datastore %(ds)s for new volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:909 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:913 #, python-format msgid "Deleting the backing: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:928 #, python-format msgid "" "The backing is not found, so there is no need to extend the vmdk virtual " "disk for the volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:950 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:967 #, python-format msgid "Copy glance image: %s to create new volume." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:992 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1021 msgid "Upload to glance of attached volume is not supported." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1026 #, python-format msgid "Copy Volume: %s to new image." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1032 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1051 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1068 #: cinder/volume/drivers/vmware/vmdk.py:1097 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1072 #, python-format msgid "" "Relocating volume %s vmdk to a different datastore since trying to extend" " vmdk file in place failed." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1080 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1083 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1095 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1140 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1143 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1154 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1158 #, python-format msgid "Fetched VC server version: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1165 #, python-format msgid "Version string '%s' is not parseable" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1179 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1238 #, python-format msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1284 #: cinder/volume/drivers/vmware/volumeops.py:673 #, python-format msgid "Successfully created clone: %s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1298 #, python-format msgid "" "There is no backing for the snapshotted volume: %(snap)s. Not creating " "any backing for the volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1335 #, python-format msgid "" "There is no backing for the source volume: %(src)s. Not creating any " "backing for volume: %(vol)s." msgstr "" #: cinder/volume/drivers/vmware/vmdk.py:1343 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:94 #, python-format msgid "Downloading image: %s from glance image server as a flat vmdk file." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:107 #: cinder/volume/drivers/vmware/vmware_images.py:126 #, python-format msgid "Downloaded image: %s from glance image server." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:113 #, python-format msgid "Downloading image: %s from glance image server using HttpNfc import." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:132 #, python-format msgid "Uploading image: %s to the Glance image server using HttpNfc export." msgstr "" #: cinder/volume/drivers/vmware/vmware_images.py:158 #, python-format msgid "Uploaded image: %s to the Glance image server." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:88 #, python-format msgid "Did not find any backing with name: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:95 #, python-format msgid "Deleting the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:98 #, python-format msgid "Initiated deletion of VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:100 #, python-format msgid "Deleted the VM backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:226 #, python-format msgid "Datastores attached to host %(host)s are: %(ds)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:240 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:244 #, python-format msgid "Valid datastores are: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:294 #, python-format msgid "" "Creating folder: %(child_folder_name)s under parent folder: " "%(parent_folder)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:311 #, python-format msgid "Child folder already present: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:319 #, python-format msgid "Created child folder: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:332 #, python-format msgid "Extending the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:347 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:406 #, python-format msgid "Spec for creating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:425 #, python-format msgid "" "Creating volume backing name: %(name)s disk_type: %(disk_type)s size_kb: " "%(size_kb)s at folder: %(folder)s resourse pool: %(resource_pool)s " "datastore name: %(ds_name)s profileId: %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:438 #, python-format msgid "Initiated creation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:441 #, python-format msgid "Successfully created volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:481 #, python-format msgid "Spec for relocating the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:495 #, python-format msgid "" "Relocating backing: %(backing)s to datastore: %(ds)s and resource pool: " "%(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:505 #, python-format msgid "Initiated relocation of volume backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:507 #, python-format msgid "" "Successfully relocated volume backing: %(backing)s to datastore: %(ds)s " "and resource pool: %(rp)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:517 #, python-format msgid "Moving backing: %(backing)s to folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:522 #, python-format msgid "Initiated move of volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:525 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:537 #, python-format msgid "Snapshoting backing: %(backing)s with name: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:544 #, python-format msgid "Initiated snapshot of volume backing: %(backing)s named: %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:548 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:596 #, python-format msgid "Deleting the snapshot: %(name)s from backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:601 #, python-format msgid "" "Did not find the snapshot: %(name)s for backing: %(backing)s. Need not " "delete anything." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:608 #, python-format msgid "Initiated snapshot: %(name)s deletion for backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:612 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:640 #, python-format msgid "Spec for cloning the backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:656 #, python-format msgid "" "Creating a clone of backing: %(back)s, named: %(name)s, clone type: " "%(type)s from snapshot: %(snap)s on datastore: %(ds)s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:670 #, python-format msgid "Initiated clone of backing: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:681 #, python-format msgid "Deleting file: %(file)s under datacenter: %(dc)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:689 #, python-format msgid "Initiated deletion via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:691 #, python-format msgid "Successfully deleted file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:744 msgid "Copying disk data before snapshot of the VM" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:754 #, python-format msgid "Initiated copying disk data via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:756 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:765 #, python-format msgid "Deleting vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:772 #, python-format msgid "Initiated deleting vmdk file via task: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:774 #, python-format msgid "Deleted vmdk file: %s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:781 msgid "Get all profiles defined in current VC." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:789 #, python-format msgid "Got profile IDs: %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:800 #, python-format msgid "Trying to retrieve profile id for %s" msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:804 #, python-format msgid "Got profile id %(id)s for profile %(name)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:815 #, python-format msgid "Filtering hubs %(hubs)s that match profile %(profile)s." msgstr "" #: cinder/volume/drivers/vmware/volumeops.py:823 #, python-format msgid "Filtered hubs: %s" msgstr "" #: cinder/volume/drivers/windows/windows.py:102 #, python-format msgid "Creating folder %s " msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:47 #, python-format msgid "" "check_for_setup_error: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:53 msgid "check_for_setup_error: there is no ISCSI traffic listening." msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:63 #, python-format msgid "" "get_host_information: the state of the WT Portal could not be verified. " "WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:73 #, python-format msgid "" "get_host_information: the ISCSI target information could not be " "retrieved. WMI exception: %s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:105 #, python-format msgid "" "associate_initiator_with_iscsi_target: an association between initiator: " "%(init)s and target name: %(target)s could not be established. WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:123 #, python-format msgid "" "delete_iscsi_target: error when deleting the iscsi target associated with" " target name: %(target)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:139 #, python-format msgid "" "create_volume: error when creating the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:157 #, python-format msgid "" "delete_volume: error when deleting the volume name: %(vol_name)s . WMI " "exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:177 #, python-format msgid "" "create_snapshot: error when creating the snapshot name: %(vol_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:193 #, python-format msgid "" "create_volume_from_snapshot: error when creating the volume name: " "%(vol_name)s from snapshot name: %(snap_name)s. WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:208 #, python-format msgid "" "delete_snapshot: error when deleting the snapshot name: %(snap_name)s . " "WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:223 #, python-format msgid "" "create_iscsi_target: error when creating iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:240 #, python-format msgid "" "remove_iscsi_target: error when deleting iscsi target: %(tar_name)s . WMI" " exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:255 #, python-format msgid "" "add_disk_to_target: error adding disk associated to volume : %(vol_name)s" " to the target name: %(tar_name)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:273 #, python-format msgid "" "copy_vhd_disk: error when copying disk from source path : %(src_path)s to" " destination path: %(dest_path)s . WMI exception: %(wmi_exc)s" msgstr "" #: cinder/volume/drivers/windows/windows_utils.py:290 #, python-format msgid "" "extend: error when extending the volume: %(vol_name)s .WMI exception: " "%(wmi_exc)s" msgstr "" #: cinder/volume/flows/common.py:53 #, python-format msgid "Restoring source %(source_volid)s status to %(status)s" msgstr "" #: cinder/volume/flows/common.py:59 #, python-format msgid "" "Failed setting source volume %(source_volid)s back to its initial " "%(source_status)s status" msgstr "" #: cinder/volume/flows/common.py:84 #, python-format msgid "Updating volume: %(volume_id)s with %(update)s due to: %(reason)s" msgstr "" #: cinder/volume/flows/common.py:91 #: cinder/volume/flows/manager/create_volume.py:648 #, python-format msgid "Failed updating volume %(volume_id)s with %(update)s" msgstr "" #: cinder/volume/flows/api/create_volume.py:81 #, python-format msgid "Originating snapshot status must be one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:103 #, python-format msgid "" "Unable to create a volume from an originating source volume when its " "status is not one of %s values" msgstr "" #: cinder/volume/flows/api/create_volume.py:126 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than the snapshot size " "%(snap_size)sGB. They must be >= original snapshot size." msgstr "" #: cinder/volume/flows/api/create_volume.py:135 #, python-format msgid "" "Volume size %(size)sGB cannot be smaller than original volume size " "%(source_size)sGB. They must be >= original volume size." msgstr "" #: cinder/volume/flows/api/create_volume.py:144 #, python-format msgid "Volume size %(size)s must be an integer and greater than 0" msgstr "" #: cinder/volume/flows/api/create_volume.py:186 #, python-format msgid "" "Size of specified image %(image_size)sGB is larger than volume size " "%(volume_size)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:194 #, python-format msgid "" "Volume size %(volume_size)sGB cannot be smaller than the image minDisk " "size %(min_disk)sGB." msgstr "" #: cinder/volume/flows/api/create_volume.py:212 #, python-format msgid "Metadata property key %s greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:217 #, python-format msgid "Metadata property key %s value greater than 255 characters" msgstr "" #: cinder/volume/flows/api/create_volume.py:254 #, python-format msgid "Availability zone '%s' is invalid" msgstr "" #: cinder/volume/flows/api/create_volume.py:267 msgid "Volume must be in the same availability zone as the snapshot" msgstr "" #: cinder/volume/flows/api/create_volume.py:276 msgid "Volume must be in the same availability zone as the source volume" msgstr "" #: cinder/volume/flows/api/create_volume.py:315 msgid "Volume type will be changed to be the same as the source volume." msgstr "" #: cinder/volume/flows/api/create_volume.py:463 #, python-format msgid "Failed destroying volume entry %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:546 #, python-format msgid "Failed rolling back quota for %s reservations" msgstr "" #: cinder/volume/flows/api/create_volume.py:590 #, python-format msgid "Failed to update quota for deleting volume: %s" msgstr "" #: cinder/volume/flows/api/create_volume.py:678 #: cinder/volume/flows/manager/create_volume.py:193 #, python-format msgid "Volume %s: create failed" msgstr "" #: cinder/volume/flows/api/create_volume.py:682 msgid "Unexpected build error:" msgstr "" #: cinder/volume/flows/manager/create_volume.py:101 #, python-format msgid "" "Volume %(volume_id)s: re-scheduling %(method)s attempt %(num)d due to " "%(reason)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:120 #, python-format msgid "Volume %s: re-scheduled" msgstr "" #: cinder/volume/flows/manager/create_volume.py:137 #, python-format msgid "Updating volume %(volume_id)s with %(update)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:142 #, python-format msgid "Volume %s: resetting 'creating' status failed." msgstr "" #: cinder/volume/flows/manager/create_volume.py:161 #, python-format msgid "Volume %s: rescheduling failed" msgstr "" #: cinder/volume/flows/manager/create_volume.py:308 #, python-format msgid "" "Failed notifying about the volume action %(event)s for volume " "%(volume_id)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:344 #, python-format msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:346 #, python-format msgid "" "Failed updating volume %(vol_id)s metadata using the provided " "%(src_type)s %(src_id)s metadata" msgstr "" #: cinder/volume/flows/manager/create_volume.py:404 #, python-format msgid "" "Failed fetching snapshot %(snapshot_id)s bootable flag using the provided" " glance snapshot %(snapshot_ref_id)s volume reference" msgstr "" #: cinder/volume/flows/manager/create_volume.py:417 #, python-format msgid "Marking volume %s as bootable." msgstr "" #: cinder/volume/flows/manager/create_volume.py:420 #, python-format msgid "Failed updating volume %(volume_id)s bootable flag to true" msgstr "" #: cinder/volume/flows/manager/create_volume.py:447 #, python-format msgid "" "Attempting download of %(image_id)s (%(image_location)s) to volume " "%(volume_id)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:454 #: cinder/volume/flows/manager/create_volume.py:465 #, python-format msgid "" "Failed to copy image %(image_id)s to volume: %(volume_id)s, error: " "%(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:460 #, python-format msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:474 #, python-format msgid "" "Downloaded image %(image_id)s (%(image_location)s) to volume " "%(volume_id)s successfully." msgstr "" #: cinder/volume/flows/manager/create_volume.py:511 #, python-format msgid "" "Creating volume glance metadata for volume %(volume_id)s backed by image " "%(image_id)s with: %(vol_metadata)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:525 #, python-format msgid "" "Cloning %(volume_id)s from image %(image_id)s at location " "%(image_location)s." msgstr "" #: cinder/volume/flows/manager/create_volume.py:551 #, python-format msgid "Failed updating volume %(volume_id)s with %(updates)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:573 #, python-format msgid "Unable to create volume. Volume driver %s not initialized" msgstr "" #: cinder/volume/flows/manager/create_volume.py:587 #, python-format msgid "" "Volume %(volume_id)s: being created using %(functor)s with specification:" " %(volume_spec)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:605 #: cinder/volume/flows/manager/manage_existing.py:84 #, python-format msgid "" "Failed updating model of volume %(volume_id)s with creation provided " "model %(model)s" msgstr "" #: cinder/volume/flows/manager/create_volume.py:652 #, python-format msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" msgstr "" #: cinder/volume/flows/manager/manage_existing.py:45 #, python-format msgid "Unable to manage existing volume. Volume driver %s not initialized." msgstr "" #: cinder/volume/flows/manager/manage_existing.py:48 #, python-format msgid "Volume driver %s not initialized." msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:77 #, python-format msgid "Lookup service to invoke: %s" msgstr "" #: cinder/zonemanager/fc_san_lookup_service.py:82 msgid "" "Lookup service not configured. Config option for fc_san_lookup_service " "need to specify a concrete implementation of lookup service" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:83 #, python-format msgid "Zone Driver from config: {%s}" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:117 #, python-format msgid "Target List :%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:121 #, python-format msgid "Fabric Map after context lookup:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:130 #, python-format msgid "Final filtered map for fabric: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:136 msgid "Add Connection: Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:139 #, python-format msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:160 #, python-format msgid "Delete connection Target List:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:165 #, python-format msgid "Delete connection Fabric Map from SAN context: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:176 #, python-format msgid "Final filtered map for delete connection: %s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:183 msgid "Delete Connection - Finished iterating over all target list" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:186 #, python-format msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:199 #, python-format msgid "Got SAN context:%s" msgstr "" #: cinder/zonemanager/fc_zone_manager.py:227 #, python-format msgid "No targets to add or remove connection for I: %s" msgstr "" #: cinder/zonemanager/drivers/fc_zone_driver.py:44 msgid "Initializing FCZoneDriver" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:57 #, python-format msgid "Fabric Names: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:94 msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:98 #, python-format msgid "FC Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:124 #, python-format msgid "Getting name server data for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:131 #, python-format msgid "Failed collecting name server info from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:134 #, python-format msgid "SSH connection failed for %(fabric)s with error: %(err)s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:141 #, python-format msgid "Lookup service:nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:142 #, python-format msgid "Lookup service:initiator list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:144 #, python-format msgid "Lookup service:target list from caller-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:152 #, python-format msgid "Filtered targets is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:158 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:442 #, python-format msgid "No targets are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:167 #, python-format msgid "No initiators are in the nameserver for SAN %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:175 #, python-format msgid "Device map for SAN context: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:190 msgid "Failed collecting nsshow info for fabric" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:197 msgid "Failed collecting nscamshow" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:200 #, python-format msgid "Connector returning nsinfo-%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:215 #, python-format msgid "SSH Command failed with error '%(err)s' '%(command)s'" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:246 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:367 #, python-format msgid "Malformed nameserver string: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:80 #, python-format msgid "Failed getting active zone set from fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:106 #, python-format msgid "" "Malformed zone configuration: (switch=%(switch)s " "zone_config=%(zone_config)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:130 #, python-format msgid "Add Zones - Zones passed: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:135 #, python-format msgid "Active zone set:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:137 #, python-format msgid "zone list:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:147 #, python-format msgid "Deleting zone failed %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:148 #, python-format msgid "Deleted Zone before insert : %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:151 msgid "Forming command for add zone" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:155 #, python-format msgid "Adding zone, cmd to run %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:157 msgid "Created zones on the switch" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:172 #, python-format msgid "New zone %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:179 #, python-format msgid "" "Creating and activating zone set failed: (Zone set=%(cfg_name)s " "error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:223 #, python-format msgid "Delete zones: Config cmd to run:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:231 #, python-format msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:249 #, python-format msgid "Failed collecting nsshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:257 #, python-format msgid "Failed collecting nscamshow info for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:288 #, python-format msgid "Error while checking transaction status: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:300 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:433 #, python-format msgid "Executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:304 #, python-format msgid "Error while running zoning CLI: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:323 #, python-format msgid "Firmware version string:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:329 msgid "No CLI output for firmware version check" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:332 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:345 #, python-format msgid "Error while getting data via ssh: (command=%(cmd)s error=%(err)s)." msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:445 #, python-format msgid "Exit Status from ssh:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:463 #, python-format msgid "Handling error case after SSH:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:479 #, python-format msgid "Error executing command via ssh: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:131 #, python-format msgid "Add connection for Fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:132 #, python-format msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:144 #, python-format msgid "Zoning policy for Fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:154 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:263 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:402 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:460 #, python-format msgid "" "Unsupported firmware on switch %s. Make sure switch is running firmware " "v6.4 or higher" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:163 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:225 #, python-format msgid "Failed to add zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:191 #, python-format msgid "Zone exists in I-T mode. Skipping zone creation %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:209 #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:337 #, python-format msgid "Zoning Policy: %s, not recognized" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:214 #, python-format msgid "Zone map to add: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:227 #, python-format msgid "Zones added successfully: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:240 #, python-format msgid "Delete connection for fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:241 #, python-format msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:253 #, python-format msgid "Zoning policy for fabric %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:272 #, python-format msgid "Failed to delete zoning configuration %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:284 #, python-format msgid "zone config from Fabric: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:299 #, python-format msgid "Zone name to del: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:325 #, python-format msgid "Zone delete - I mode: filtered targets:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:329 #, python-format msgid "Filtered zone members to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:332 #, python-format msgid "Filtered zone Map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:339 #, python-format msgid "Final Zone map to update: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:340 #, python-format msgid "Final Zone list to delete: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:364 msgid "Failed to update or delete zoning configuration" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:377 #, python-format msgid "Fabric List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:378 #, python-format msgid "Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:382 #, python-format msgid "Formatted Target wwn List: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:411 #, python-format msgid "Failed to get SAN context %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:419 #, python-format msgid "name server info from fabric:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:423 #, python-format msgid "Error getting name server info: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:426 #, python-format msgid "Failed to get name server info:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:434 #, python-format msgid "Filtered targets for SAN is: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:444 #, python-format msgid "Return SAN context output:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:453 #, python-format msgid "Southbound connector: %s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:470 #, python-format msgid "Failed to access active zoning configuration:%s" msgstr "" #: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:473 #, python-format msgid "Active zone set from fabric: %s" msgstr "" cinder-2014.1.5/cinder/utils.py0000664000567000056700000007036712540642606017350 0ustar jenkinsjenkins00000000000000# Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # Copyright 2011 Justin Santa Barbara # All Rights Reserved. # # 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. """Utilities and helper functions.""" import contextlib import datetime import hashlib import inspect import os import pyclbr import random import re import shutil import stat import sys import tempfile from eventlet import pools from oslo.config import cfg import paramiko import six from xml.dom import minidom from xml.parsers import expat from xml import sax from xml.sax import expatreader from xml.sax import saxutils from cinder.brick.initiator import connector from cinder import exception from cinder.openstack.common import importutils from cinder.openstack.common import lockutils from cinder.openstack.common import log as logging from cinder.openstack.common import processutils from cinder.openstack.common import timeutils CONF = cfg.CONF LOG = logging.getLogger(__name__) ISO_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S" PERFECT_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f" synchronized = lockutils.synchronized_with_prefix('cinder-') def find_config(config_path): """Find a configuration file using the given hint. :param config_path: Full or relative path to the config. :returns: Full path of the config, if it exists. :raises: `cinder.exception.ConfigNotFound` """ possible_locations = [ config_path, os.path.join(CONF.state_path, "etc", "cinder", config_path), os.path.join(CONF.state_path, "etc", config_path), os.path.join(CONF.state_path, config_path), "/etc/cinder/%s" % config_path, ] for path in possible_locations: if os.path.exists(path): return os.path.abspath(path) raise exception.ConfigNotFound(path=os.path.abspath(config_path)) def as_int(obj, quiet=True): # Try "2" -> 2 try: return int(obj) except (ValueError, TypeError): pass # Try "2.5" -> 2 try: return int(float(obj)) except (ValueError, TypeError): pass # Eck, not sure what this is then. if not quiet: raise TypeError(_("Can not translate %s to integer.") % (obj)) return obj def check_exclusive_options(**kwargs): """Checks that only one of the provided options is actually not-none. Iterates over all the kwargs passed in and checks that only one of said arguments is not-none, if more than one is not-none then an exception will be raised with the names of those arguments who were not-none. """ if not kwargs: return pretty_keys = kwargs.pop("pretty_keys", True) exclusive_options = {} for (k, v) in kwargs.iteritems(): if v is not None: exclusive_options[k] = True if len(exclusive_options) > 1: # Change the format of the names from pythonic to # something that is more readable. # # Ex: 'the_key' -> 'the key' if pretty_keys: names = [k.replace('_', ' ') for k in kwargs.keys()] else: names = kwargs.keys() names = ", ".join(sorted(names)) msg = (_("May specify only one of %s") % (names)) raise exception.InvalidInput(reason=msg) def execute(*cmd, **kwargs): """Convenience wrapper around oslo's execute() method.""" if 'run_as_root' in kwargs and not 'root_helper' in kwargs: kwargs['root_helper'] = get_root_helper() return processutils.execute(*cmd, **kwargs) def check_ssh_injection(cmd_list): ssh_injection_pattern = ['`', '$', '|', '||', ';', '&', '&&', '>', '>>', '<'] # Check whether injection attacks exist for arg in cmd_list: arg = arg.strip() # Check for matching quotes on the ends is_quoted = re.match('^(?P[\'"])(?P.*)(?P=quote)$', arg) if is_quoted: # Check for unescaped quotes within the quoted argument quoted = is_quoted.group('quoted') if quoted: if (re.match('[\'"]', quoted) or re.search('[^\\\\][\'"]', quoted)): raise exception.SSHInjectionThreat(command=cmd_list) else: # We only allow spaces within quoted arguments, and that # is the only special character allowed within quotes if len(arg.split()) > 1: raise exception.SSHInjectionThreat(command=cmd_list) # Second, check whether danger character in command. So the shell # special operator must be a single argument. for c in ssh_injection_pattern: if arg == c: continue result = arg.find(c) if not result == -1: if result == 0 or not arg[result - 1] == '\\': raise exception.SSHInjectionThreat(command=cmd_list) def create_channel(client, width, height): """Invoke an interactive shell session on server.""" channel = client.invoke_shell() channel.resize_pty(width, height) return channel class SSHPool(pools.Pool): """A simple eventlet pool to hold ssh connections.""" def __init__(self, ip, port, conn_timeout, login, password=None, privatekey=None, *args, **kwargs): self.ip = ip self.port = port self.login = login self.password = password self.conn_timeout = conn_timeout if conn_timeout else None self.privatekey = privatekey super(SSHPool, self).__init__(*args, **kwargs) def create(self): try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) if self.password: ssh.connect(self.ip, port=self.port, username=self.login, password=self.password, timeout=self.conn_timeout) elif self.privatekey: pkfile = os.path.expanduser(self.privatekey) privatekey = paramiko.RSAKey.from_private_key_file(pkfile) ssh.connect(self.ip, port=self.port, username=self.login, pkey=privatekey, timeout=self.conn_timeout) else: msg = _("Specify a password or private_key") raise exception.CinderException(msg) # Paramiko by default sets the socket timeout to 0.1 seconds, # ignoring what we set through the sshclient. This doesn't help for # keeping long lived connections. Hence we have to bypass it, by # overriding it after the transport is initialized. We are setting # the sockettimeout to None and setting a keepalive packet so that, # the server will keep the connection open. All that does is send # a keepalive packet every ssh_conn_timeout seconds. if self.conn_timeout: transport = ssh.get_transport() transport.sock.settimeout(None) transport.set_keepalive(self.conn_timeout) return ssh except Exception as e: msg = _("Error connecting via ssh: %s") % e LOG.error(msg) raise paramiko.SSHException(msg) def get(self): """Return an item from the pool, when one is available. This may cause the calling greenthread to block. Check if a connection is active before returning it. For dead connections create and return a new connection. """ conn = super(SSHPool, self).get() if conn: if conn.get_transport().is_active(): return conn else: conn.close() return self.create() def remove(self, ssh): """Close an ssh client and remove it from free_items.""" ssh.close() ssh = None if ssh in self.free_items: self.free_items.pop(ssh) if self.current_size > 0: self.current_size -= 1 def cinderdir(): import cinder return os.path.abspath(cinder.__file__).split('cinder/__init__.py')[0] # Default symbols to use for passwords. Avoids visually confusing characters. # ~6 bits per symbol DEFAULT_PASSWORD_SYMBOLS = ('23456789', # Removed: 0,1 'ABCDEFGHJKLMNPQRSTUVWXYZ', # Removed: I, O 'abcdefghijkmnopqrstuvwxyz') # Removed: l # ~5 bits per symbol EASIER_PASSWORD_SYMBOLS = ('23456789', # Removed: 0, 1 'ABCDEFGHJKLMNPQRSTUVWXYZ') # Removed: I, O def last_completed_audit_period(unit=None): """This method gives you the most recently *completed* audit period. arguments: units: string, one of 'hour', 'day', 'month', 'year' Periods normally begin at the beginning (UTC) of the period unit (So a 'day' period begins at midnight UTC, a 'month' unit on the 1st, a 'year' on Jan, 1) unit string may be appended with an optional offset like so: 'day@18' This will begin the period at 18:00 UTC. 'month@15' starts a monthly period on the 15th, and year@3 begins a yearly one on March 1st. returns: 2 tuple of datetimes (begin, end) The begin timestamp of this audit period is the same as the end of the previous. """ if not unit: unit = CONF.volume_usage_audit_period offset = 0 if '@' in unit: unit, offset = unit.split("@", 1) offset = int(offset) rightnow = timeutils.utcnow() if unit not in ('month', 'day', 'year', 'hour'): raise ValueError('Time period must be hour, day, month or year') if unit == 'month': if offset == 0: offset = 1 end = datetime.datetime(day=offset, month=rightnow.month, year=rightnow.year) if end >= rightnow: year = rightnow.year if 1 >= rightnow.month: year -= 1 month = 12 + (rightnow.month - 1) else: month = rightnow.month - 1 end = datetime.datetime(day=offset, month=month, year=year) year = end.year if 1 >= end.month: year -= 1 month = 12 + (end.month - 1) else: month = end.month - 1 begin = datetime.datetime(day=offset, month=month, year=year) elif unit == 'year': if offset == 0: offset = 1 end = datetime.datetime(day=1, month=offset, year=rightnow.year) if end >= rightnow: end = datetime.datetime(day=1, month=offset, year=rightnow.year - 1) begin = datetime.datetime(day=1, month=offset, year=rightnow.year - 2) else: begin = datetime.datetime(day=1, month=offset, year=rightnow.year - 1) elif unit == 'day': end = datetime.datetime(hour=offset, day=rightnow.day, month=rightnow.month, year=rightnow.year) if end >= rightnow: end = end - datetime.timedelta(days=1) begin = end - datetime.timedelta(days=1) elif unit == 'hour': end = rightnow.replace(minute=offset, second=0, microsecond=0) if end >= rightnow: end = end - datetime.timedelta(hours=1) begin = end - datetime.timedelta(hours=1) return (begin, end) def generate_password(length=20, symbolgroups=DEFAULT_PASSWORD_SYMBOLS): """Generate a random password from the supplied symbol groups. At least one symbol from each group will be included. Unpredictable results if length is less than the number of symbol groups. Believed to be reasonably secure (with a reasonable password length!) """ r = random.SystemRandom() # NOTE(jerdfelt): Some password policies require at least one character # from each group of symbols, so start off with one random character # from each symbol group password = [r.choice(s) for s in symbolgroups] # If length < len(symbolgroups), the leading characters will only # be from the first length groups. Try our best to not be predictable # by shuffling and then truncating. r.shuffle(password) password = password[:length] length -= len(password) # then fill with random characters from all symbol groups symbols = ''.join(symbolgroups) password.extend([r.choice(symbols) for _i in xrange(length)]) # finally shuffle to ensure first x characters aren't from a # predictable group r.shuffle(password) return ''.join(password) def generate_username(length=20, symbolgroups=DEFAULT_PASSWORD_SYMBOLS): # Use the same implementation as the password generation. return generate_password(length, symbolgroups) class LazyPluggable(object): """A pluggable backend loaded lazily based on some value.""" def __init__(self, pivot, **backends): self.__backends = backends self.__pivot = pivot self.__backend = None def __get_backend(self): if not self.__backend: backend_name = CONF[self.__pivot] if backend_name not in self.__backends: raise exception.Error(_('Invalid backend: %s') % backend_name) backend = self.__backends[backend_name] if isinstance(backend, tuple): name = backend[0] fromlist = backend[1] else: name = backend fromlist = backend self.__backend = __import__(name, None, None, fromlist) LOG.debug(_('backend %s'), self.__backend) return self.__backend def __getattr__(self, key): backend = self.__get_backend() return getattr(backend, key) class ProtectedExpatParser(expatreader.ExpatParser): """An expat parser which disables DTD's and entities by default.""" def __init__(self, forbid_dtd=True, forbid_entities=True, *args, **kwargs): # Python 2.x old style class expatreader.ExpatParser.__init__(self, *args, **kwargs) self.forbid_dtd = forbid_dtd self.forbid_entities = forbid_entities def start_doctype_decl(self, name, sysid, pubid, has_internal_subset): raise ValueError("Inline DTD forbidden") def entity_decl(self, entityName, is_parameter_entity, value, base, systemId, publicId, notationName): raise ValueError(" forbidden") def unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): # expat 1.2 raise ValueError(" forbidden") def reset(self): expatreader.ExpatParser.reset(self) if self.forbid_dtd: self._parser.StartDoctypeDeclHandler = self.start_doctype_decl if self.forbid_entities: self._parser.EntityDeclHandler = self.entity_decl self._parser.UnparsedEntityDeclHandler = self.unparsed_entity_decl def safe_minidom_parse_string(xml_string): """Parse an XML string using minidom safely. """ try: return minidom.parseString(xml_string, parser=ProtectedExpatParser()) except sax.SAXParseException as se: raise expat.ExpatError() def xhtml_escape(value): """Escapes a string so it is valid within XML or XHTML. """ return saxutils.escape(value, {'"': '"', "'": '''}) def get_from_path(items, path): """Returns a list of items matching the specified path. Takes an XPath-like expression e.g. prop1/prop2/prop3, and for each item in items, looks up items[prop1][prop2][prop3]. Like XPath, if any of the intermediate results are lists it will treat each list item individually. A 'None' in items or any child expressions will be ignored, this function will not throw because of None (anywhere) in items. The returned list will contain no None values. """ if path is None: raise exception.Error('Invalid mini_xpath') (first_token, sep, remainder) = path.partition('/') if first_token == '': raise exception.Error('Invalid mini_xpath') results = [] if items is None: return results if not isinstance(items, list): # Wrap single objects in a list items = [items] for item in items: if item is None: continue get_method = getattr(item, 'get', None) if get_method is None: continue child = get_method(first_token) if child is None: continue if isinstance(child, list): # Flatten intermediate lists for x in child: results.append(x) else: results.append(child) if not sep: # No more tokens return results else: return get_from_path(results, remainder) def is_valid_boolstr(val): """Check if the provided string is a valid bool string or not.""" val = str(val).lower() return (val == 'true' or val == 'false' or val == 'yes' or val == 'no' or val == 'y' or val == 'n' or val == '1' or val == '0') def monkey_patch(): """If the CONF.monkey_patch set as True, this function patches a decorator for all functions in specified modules. You can set decorators for each modules using CONF.monkey_patch_modules. The format is "Module path:Decorator function". Example: 'cinder.api.ec2.cloud:' \ cinder.openstack.common.notifier.api.notify_decorator' Parameters of the decorator is as follows. (See cinder.openstack.common.notifier.api.notify_decorator) name - name of the function function - object of the function """ # If CONF.monkey_patch is not True, this function do nothing. if not CONF.monkey_patch: return # Get list of modules and decorators for module_and_decorator in CONF.monkey_patch_modules: module, decorator_name = module_and_decorator.split(':') # import decorator function decorator = importutils.import_class(decorator_name) __import__(module) # Retrieve module information using pyclbr module_data = pyclbr.readmodule_ex(module) for key in module_data.keys(): # set the decorator for the class methods if isinstance(module_data[key], pyclbr.Class): clz = importutils.import_class("%s.%s" % (module, key)) for method, func in inspect.getmembers(clz, inspect.ismethod): setattr( clz, method, decorator("%s.%s.%s" % (module, key, method), func)) # set the decorator for the function if isinstance(module_data[key], pyclbr.Function): func = importutils.import_class("%s.%s" % (module, key)) setattr(sys.modules[module], key, decorator("%s.%s" % (module, key), func)) def generate_glance_url(): """Generate the URL to glance.""" # TODO(jk0): This will eventually need to take SSL into consideration # when supported in glance. return "http://%s:%d" % (CONF.glance_host, CONF.glance_port) def make_dev_path(dev, partition=None, base='/dev'): """Return a path to a particular device. >>> make_dev_path('xvdc') /dev/xvdc >>> make_dev_path('xvdc', 1) /dev/xvdc1 """ path = os.path.join(base, dev) if partition: path += str(partition) return path def total_seconds(td): """Local total_seconds implementation for compatibility with python 2.6.""" if hasattr(td, 'total_seconds'): return td.total_seconds() else: return ((td.days * 86400 + td.seconds) * 10 ** 6 + td.microseconds) / 10.0 ** 6 def sanitize_hostname(hostname): """Return a hostname which conforms to RFC-952 and RFC-1123 specs.""" if isinstance(hostname, unicode): hostname = hostname.encode('latin-1', 'ignore') hostname = re.sub('[ _]', '-', hostname) hostname = re.sub('[^\w.-]+', '', hostname) hostname = hostname.lower() hostname = hostname.strip('.-') return hostname def read_cached_file(filename, cache_info, reload_func=None): """Read from a file if it has been modified. :param cache_info: dictionary to hold opaque cache. :param reload_func: optional function to be called with data when file is reloaded due to a modification. :returns: data from file """ mtime = os.path.getmtime(filename) if not cache_info or mtime != cache_info.get('mtime'): with open(filename) as fap: cache_info['data'] = fap.read() cache_info['mtime'] = mtime if reload_func: reload_func(cache_info['data']) return cache_info['data'] def hash_file(file_like_object): """Generate a hash for the contents of a file.""" checksum = hashlib.sha1() any(map(checksum.update, iter(lambda: file_like_object.read(32768), ''))) return checksum.hexdigest() def service_is_up(service): """Check whether a service is up based on last heartbeat.""" last_heartbeat = service['updated_at'] or service['created_at'] # Timestamps in DB are UTC. elapsed = total_seconds(timeutils.utcnow() - last_heartbeat) return abs(elapsed) <= CONF.service_down_time def read_file_as_root(file_path): """Secure helper to read file as root.""" try: out, _err = execute('cat', file_path, run_as_root=True) return out except processutils.ProcessExecutionError: raise exception.FileNotFound(file_path=file_path) @contextlib.contextmanager def temporary_chown(path, owner_uid=None): """Temporarily chown a path. :params owner_uid: UID of temporary owner (defaults to current user) """ if owner_uid is None: owner_uid = os.getuid() orig_uid = os.stat(path).st_uid if orig_uid != owner_uid: execute('chown', owner_uid, path, run_as_root=True) try: yield finally: if orig_uid != owner_uid: execute('chown', orig_uid, path, run_as_root=True) @contextlib.contextmanager def tempdir(**kwargs): tmpdir = tempfile.mkdtemp(**kwargs) try: yield tmpdir finally: try: shutil.rmtree(tmpdir) except OSError as e: LOG.debug(_('Could not remove tmpdir: %s'), e) def walk_class_hierarchy(clazz, encountered=None): """Walk class hierarchy, yielding most derived classes first.""" if not encountered: encountered = [] for subclass in clazz.__subclasses__(): if subclass not in encountered: encountered.append(subclass) # drill down to leaves first for subsubclass in walk_class_hierarchy(subclass, encountered): yield subsubclass yield subclass def get_root_helper(): return 'sudo cinder-rootwrap %s' % CONF.rootwrap_config def brick_get_connector_properties(): """wrapper for the brick calls to automatically set the root_helper needed for cinder. """ root_helper = get_root_helper() return connector.get_connector_properties(root_helper, CONF.my_ip) def brick_get_connector(protocol, driver=None, execute=processutils.execute, use_multipath=False, device_scan_attempts=3, *args, **kwargs): """Wrapper to get a brick connector object. This automatically populates the required protocol as well as the root_helper needed to execute commands. """ root_helper = get_root_helper() return connector.InitiatorConnector.factory(protocol, root_helper, driver=driver, execute=execute, use_multipath=use_multipath, device_scan_attempts= device_scan_attempts, *args, **kwargs) def require_driver_initialized(driver): """Verifies if `driver` is initialized If the driver is not initialized, an exception will be raised. :params driver: The driver instance. :raises: `exception.DriverNotInitialized` """ # we can't do anything if the driver didn't init if not driver.initialized: driver_name = driver.__class__.__name__ LOG.error(_("Volume driver %s not initialized") % driver_name) raise exception.DriverNotInitialized() def get_file_mode(path): """This primarily exists to make unit testing easier.""" return stat.S_IMODE(os.stat(path).st_mode) def get_file_gid(path): """This primarily exists to make unit testing easier.""" return os.stat(path).st_gid def check_string_length(value, name, min_length=0, max_length=None): """Check the length of specified string :param value: the value of the string :param name: the name of the string :param min_length: the min_length of the string :param max_length: the max_length of the string """ if not isinstance(value, six.string_types): msg = _("%s is not a string or unicode") % name raise exception.InvalidInput(message=msg) if len(value) < min_length: msg = _("%(name)s has a minimum character requirement of " "%(min_length)s.") % {'name': name, 'min_length': min_length} raise exception.InvalidInput(message=msg) if max_length and len(value) > max_length: msg = _("%(name)s has more than %(max_length)s " "characters.") % {'name': name, 'max_length': max_length} raise exception.InvalidInput(message=msg) _visible_admin_metadata_keys = ['readonly', 'attached_mode'] def add_visible_admin_metadata(volume): """Add user-visible admin metadata to regular metadata. Extracts the admin metadata keys that are to be made visible to non-administrators, and adds them to the regular metadata structure for the passed-in volume. """ visible_admin_meta = {} if volume.get('volume_admin_metadata'): for item in volume['volume_admin_metadata']: if item['key'] in _visible_admin_metadata_keys: visible_admin_meta[item['key']] = item['value'] # avoid circular ref when volume is a Volume instance elif (volume.get('admin_metadata') and isinstance(volume.get('admin_metadata'), dict)): for key in _visible_admin_metadata_keys: if key in volume['admin_metadata'].keys(): visible_admin_meta[key] = volume['admin_metadata'][key] if not visible_admin_meta: return # NOTE(zhiyan): update visible administration metadata to # volume metadata, administration metadata will rewrite existing key. if volume.get('volume_metadata'): orig_meta = list(volume.get('volume_metadata')) for item in orig_meta: if item['key'] in visible_admin_meta.keys(): item['value'] = visible_admin_meta.pop(item['key']) for key, value in visible_admin_meta.iteritems(): orig_meta.append({'key': key, 'value': value}) volume['volume_metadata'] = orig_meta # avoid circular ref when vol is a Volume instance elif (volume.get('metadata') and isinstance(volume.get('metadata'), dict)): volume['metadata'].update(visible_admin_meta) else: volume['metadata'] = visible_admin_meta cinder-2014.1.5/openstack-common.conf0000664000567000056700000000130412540642606020477 0ustar jenkinsjenkins00000000000000[DEFAULT] # The list of modules to copy from openstack-common module=context module=config.generator module=db module=db.sqlalchemy module=excutils module=fileutils module=flakes module=gettextutils module=imageutils module=importutils module=install_venv_common module=jsonutils module=local module=lockutils module=log module=log_handler module=middleware module=network_utils module=periodic_task module=policy module=processutils module=request_utils module=rootwrap module=scheduler module=scheduler.filters module=scheduler.weights module=service module=sslutils module=strutils module=timeutils module=uuidutils module=versionutils # The base module to hold the copy of openstack.common base=cinder cinder-2014.1.5/MANIFEST.in0000664000567000056700000000013612540642603016110 0ustar jenkinsjenkins00000000000000include AUTHORS include ChangeLog exclude .gitignore exclude .gitreview global-exclude *.pyc cinder-2014.1.5/etc/0000775000567000056700000000000012540643114015123 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/etc/cinder/0000775000567000056700000000000012540643114016367 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/etc/cinder/cinder.conf.sample0000664000567000056700000017151212540642606021776 0ustar jenkinsjenkins00000000000000[DEFAULT] # # Options defined in oslo.messaging # # Use durable queues in AMQP. (boolean value) # Deprecated group/name - [DEFAULT]/rabbit_durable_queues #amqp_durable_queues=false # Auto-delete queues in AMQP. (boolean value) #amqp_auto_delete=false # Size of RPC connection pool. (integer value) #rpc_conn_pool_size=30 # Qpid broker hostname. (string value) #qpid_hostname=localhost # Qpid broker port. (integer value) #qpid_port=5672 # Qpid HA cluster host:port pairs. (list value) #qpid_hosts=$qpid_hostname:$qpid_port # Username for Qpid connection. (string value) #qpid_username= # Password for Qpid connection. (string value) #qpid_password= # Space separated list of SASL mechanisms to use for auth. # (string value) #qpid_sasl_mechanisms= # Seconds between connection keepalive heartbeats. (integer # value) #qpid_heartbeat=60 # Transport to use, either 'tcp' or 'ssl'. (string value) #qpid_protocol=tcp # Whether to disable the Nagle algorithm. (boolean value) #qpid_tcp_nodelay=true # The number of prefetched messages held by receiver. (integer # value) #qpid_receiver_capacity=1 # The qpid topology version to use. Version 1 is what was # originally used by impl_qpid. Version 2 includes some # backwards-incompatible changes that allow broker federation # to work. Users should update to version 2 when they are # able to take everything down, as it requires a clean break. # (integer value) #qpid_topology_version=1 # SSL version to use (valid only if SSL enabled). valid values # are TLSv1 and SSLv23. SSLv2 and SSLv3 may be available on # some distributions. (string value) #kombu_ssl_version= # SSL key file (valid only if SSL enabled). (string value) #kombu_ssl_keyfile= # SSL cert file (valid only if SSL enabled). (string value) #kombu_ssl_certfile= # SSL certification authority file (valid only if SSL # enabled). (string value) #kombu_ssl_ca_certs= # How long to wait before reconnecting in response to an AMQP # consumer cancel notification. (floating point value) #kombu_reconnect_delay=1.0 # The RabbitMQ broker address where a single node is used. # (string value) #rabbit_host=localhost # The RabbitMQ broker port where a single node is used. # (integer value) #rabbit_port=5672 # RabbitMQ HA cluster host:port pairs. (list value) #rabbit_hosts=$rabbit_host:$rabbit_port # Connect over SSL for RabbitMQ. (boolean value) #rabbit_use_ssl=false # The RabbitMQ userid. (string value) #rabbit_userid=guest # The RabbitMQ password. (string value) #rabbit_password=guest # The RabbitMQ login method. (string value) #rabbit_login_method=AMQPLAIN # The RabbitMQ virtual host. (string value) #rabbit_virtual_host=/ # How frequently to retry connecting with RabbitMQ. (integer # value) #rabbit_retry_interval=1 # How long to backoff for between retries when connecting to # RabbitMQ. (integer value) #rabbit_retry_backoff=2 # Maximum number of RabbitMQ connection retries. Default is 0 # (infinite retry count). (integer value) #rabbit_max_retries=0 # Use HA queues in RabbitMQ (x-ha-policy: all). If you change # this option, you must wipe the RabbitMQ database. (boolean # value) #rabbit_ha_queues=false # Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake # (boolean value) #fake_rabbit=false # ZeroMQ bind address. Should be a wildcard (*), an ethernet # interface, or IP. The "host" option should point or resolve # to this address. (string value) #rpc_zmq_bind_address=* # MatchMaker driver. (string value) #rpc_zmq_matchmaker=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost # ZeroMQ receiver listening port. (integer value) #rpc_zmq_port=9501 # Number of ZeroMQ contexts, defaults to 1. (integer value) #rpc_zmq_contexts=1 # Maximum number of ingress messages to locally buffer per # topic. Default is unlimited. (integer value) #rpc_zmq_topic_backlog= # Directory for holding IPC sockets. (string value) #rpc_zmq_ipc_dir=/var/run/openstack # Name of this node. Must be a valid hostname, FQDN, or IP # address. Must match "host" option, if running Nova. (string # value) #rpc_zmq_host=cinder # Seconds to wait before a cast expires (TTL). Only supported # by impl_zmq. (integer value) #rpc_cast_timeout=30 # Heartbeat frequency. (integer value) #matchmaker_heartbeat_freq=300 # Heartbeat time-to-live. (integer value) #matchmaker_heartbeat_ttl=600 # Size of RPC greenthread pool. (integer value) #rpc_thread_pool_size=64 # Driver or drivers to handle sending notifications. (multi # valued) #notification_driver= # AMQP topic used for OpenStack notifications. (list value) # Deprecated group/name - [rpc_notifier2]/topics #notification_topics=notifications # Seconds to wait for a response from a call. (integer value) #rpc_response_timeout=60 # A URL representing the messaging driver to use and its full # configuration. If not set, we fall back to the rpc_backend # option and driver specific configuration. (string value) #transport_url= # The messaging driver to use, defaults to rabbit. Other # drivers include qpid and zmq. (string value) #rpc_backend=rabbit # The default exchange under which topics are scoped. May be # overridden by an exchange name specified in the # transport_url option. (string value) #control_exchange=openstack # # Options defined in cinder.exception # # make exception message format errors fatal (boolean value) #fatal_exception_format_errors=false # # Options defined in cinder.policy # # JSON file representing policy (string value) #policy_file=policy.json # Rule checked when requested rule is not found (string value) #policy_default_rule=default # # Options defined in cinder.quota # # number of volumes allowed per project (integer value) #quota_volumes=10 # number of volume snapshots allowed per project (integer # value) #quota_snapshots=10 # number of volume gigabytes (snapshots are also included) # allowed per project (integer value) #quota_gigabytes=1000 # number of seconds until a reservation expires (integer # value) #reservation_expire=86400 # count of reservations until usage is refreshed (integer # value) #until_refresh=0 # number of seconds between subsequent usage refreshes # (integer value) #max_age=0 # default driver to use for quota checks (string value) #quota_driver=cinder.quota.DbQuotaDriver # whether to use default quota class for default quota # (boolean value) #use_default_quota_class=true # # Options defined in cinder.service # # seconds between nodes reporting state to datastore (integer # value) #report_interval=10 # seconds between running periodic tasks (integer value) #periodic_interval=60 # range of seconds to randomly delay when starting the # periodic task scheduler to reduce stampeding. (Disable by # setting to 0) (integer value) #periodic_fuzzy_delay=60 # IP address for OpenStack Volume API to listen (string value) #osapi_volume_listen=0.0.0.0 # port for os volume api to listen (integer value) #osapi_volume_listen_port=8776 # Number of workers for OpenStack Volume API service (integer # value) #osapi_volume_workers= # # Options defined in cinder.test # # File name of clean sqlite db (string value) #sqlite_clean_db=clean.sqlite # # Options defined in cinder.wsgi # # Maximum line size of message headers to be accepted. # max_header_line may need to be increased when using large # tokens (typically those generated by the Keystone v3 API # with big service catalogs). (integer value) #max_header_line=16384 # If False, closes the client socket connection explicitly. # Setting it to True to maintain backward compatibility. # Recommended setting is set it to False. (boolean value) #wsgi_keep_alive=true # Sets the value of TCP_KEEPIDLE in seconds for each server # socket. Not supported on OS X. (integer value) #tcp_keepidle=600 # CA certificate file to use to verify connecting clients # (string value) #ssl_ca_file= # Certificate file to use when starting the server securely # (string value) #ssl_cert_file= # Private key file to use when starting the server securely # (string value) #ssl_key_file= # # Options defined in cinder.api.common # # the maximum number of items returned in a single response # from a collection resource (integer value) #osapi_max_limit=1000 # Base URL that will be presented to users in links to the # OpenStack Volume API (string value) # Deprecated group/name - [DEFAULT]/osapi_compute_link_prefix #osapi_volume_base_URL= # # Options defined in cinder.api.middleware.auth # # Treat X-Forwarded-For as the canonical remote address. Only # enable this if you have a sanitizing proxy. (boolean value) #use_forwarded_for=false # # Options defined in cinder.api.middleware.sizelimit # # Max size for body of a request (integer value) #osapi_max_request_body_size=114688 # # Options defined in cinder.backup.driver # # Backup metadata version to be used when backing up volume # metadata. If this number is bumped, make sure the service # doing the restore supports the new version. (integer value) #backup_metadata_version=1 # # Options defined in cinder.backup.drivers.ceph # # Ceph configuration file to use. (string value) #backup_ceph_conf=/etc/ceph/ceph.conf # The Ceph user to connect with. Default here is to use the # same user as for Cinder volumes. If not using cephx this # should be set to None. (string value) #backup_ceph_user=cinder # The chunk size, in bytes, that a backup is broken into # before transfer to the Ceph object store. (integer value) #backup_ceph_chunk_size=134217728 # The Ceph pool where volume backups are stored. (string # value) #backup_ceph_pool=backups # RBD stripe unit to use when creating a backup image. # (integer value) #backup_ceph_stripe_unit=0 # RBD stripe count to use when creating a backup image. # (integer value) #backup_ceph_stripe_count=0 # If True, always discard excess bytes when restoring volumes # i.e. pad with zeroes. (boolean value) #restore_discard_excess_bytes=true # # Options defined in cinder.backup.drivers.swift # # The URL of the Swift endpoint (string value) #backup_swift_url=http://localhost:8080/v1/AUTH_ # Swift authentication mechanism (string value) #backup_swift_auth=per_user # Swift user name (string value) #backup_swift_user= # Swift key for authentication (string value) #backup_swift_key= # The default Swift container to use (string value) #backup_swift_container=volumebackups # The size in bytes of Swift backup objects (integer value) #backup_swift_object_size=52428800 # The number of retries to make for Swift operations (integer # value) #backup_swift_retry_attempts=3 # The backoff time in seconds between Swift retries (integer # value) #backup_swift_retry_backoff=2 # Compression algorithm (None to disable) (string value) #backup_compression_algorithm=zlib # # Options defined in cinder.backup.drivers.tsm # # Volume prefix for the backup id when backing up to TSM # (string value) #backup_tsm_volume_prefix=backup # TSM password for the running username (string value) #backup_tsm_password=password # Enable or Disable compression for backups (boolean value) #backup_tsm_compression=true # # Options defined in cinder.backup.manager # # Driver to use for backups. (string value) # Deprecated group/name - [DEFAULT]/backup_service #backup_driver=cinder.backup.drivers.swift # # Options defined in cinder.common.config # # File name for the paste.deploy config for cinder-api (string # value) #api_paste_config=api-paste.ini # Top-level directory for maintaining cinder's state (string # value) # Deprecated group/name - [DEFAULT]/pybasedir #state_path=/var/lib/cinder # ip address of this host (string value) #my_ip=10.0.0.1 # default glance hostname or ip (string value) #glance_host=$my_ip # default glance port (integer value) #glance_port=9292 # A list of the glance api servers available to cinder # ([hostname|ip]:port) (list value) #glance_api_servers=$glance_host:$glance_port # Version of the glance api to use (integer value) #glance_api_version=1 # Number retries when downloading an image from glance # (integer value) #glance_num_retries=0 # Allow to perform insecure SSL (https) requests to glance # (boolean value) #glance_api_insecure=false # Whether to attempt to negotiate SSL layer compression when # using SSL (https) requests. Set to False to disable SSL # layer compression. In some cases disabling this may improve # data throughput, eg when high network bandwidth is available # and you are using already compressed image formats such as # qcow2 . (boolean value) #glance_api_ssl_compression=false # http/https timeout value for glance operations. If no value # (None) is supplied here, the glanceclient default value is # used. (integer value) #glance_request_timeout= # the topic scheduler nodes listen on (string value) #scheduler_topic=cinder-scheduler # the topic volume nodes listen on (string value) #volume_topic=cinder-volume # the topic volume backup nodes listen on (string value) #backup_topic=cinder-backup # Deploy v1 of the Cinder API. (boolean value) #enable_v1_api=true # Deploy v2 of the Cinder API. (boolean value) #enable_v2_api=true # whether to rate limit the api (boolean value) #api_rate_limit=true # Specify list of extensions to load when using # osapi_volume_extension option with # cinder.api.contrib.select_extensions (list value) #osapi_volume_ext_list= # osapi volume extension to load (multi valued) #osapi_volume_extension=cinder.api.contrib.standard_extensions # full class name for the Manager for volume (string value) #volume_manager=cinder.volume.manager.VolumeManager # full class name for the Manager for volume backup (string # value) #backup_manager=cinder.backup.manager.BackupManager # full class name for the Manager for scheduler (string value) #scheduler_manager=cinder.scheduler.manager.SchedulerManager # Name of this node. This can be an opaque identifier. It is # not necessarily a hostname, FQDN, or IP address. (string # value) #host=cinder # availability zone of this node (string value) #storage_availability_zone=nova # default availability zone to use when creating a new volume. # If this is not set then we use the value from the # storage_availability_zone option as the default # availability_zone for new volumes. (string value) #default_availability_zone= # default volume type to use (string value) #default_volume_type= # time period to generate volume usages for. Time period must # be hour, day, month or year (string value) #volume_usage_audit_period=month # Path to the rootwrap configuration file to use for running # commands as root (string value) #rootwrap_config=/etc/cinder/rootwrap.conf # Enable monkey patching (boolean value) #monkey_patch=false # List of modules/decorators to monkey patch (list value) #monkey_patch_modules= # maximum time since last check-in for up service (integer # value) #service_down_time=60 # The full class name of the volume API class to use (string # value) #volume_api_class=cinder.volume.api.API # The full class name of the volume backup API class (string # value) #backup_api_class=cinder.backup.api.API # The strategy to use for auth. Supports noauth, keystone, and # deprecated. (string value) #auth_strategy=noauth # A list of backend names to use. These backend names should # be backed by a unique [CONFIG] group with its options (list # value) #enabled_backends= # Whether snapshots count against GigaByte quota (boolean # value) #no_snapshot_gb_quota=false # The full class name of the volume transfer API class (string # value) #transfer_api_class=cinder.transfer.api.API # # Options defined in cinder.compute # # The full class name of the compute API class to use (string # value) #compute_api_class=cinder.compute.nova.API # # Options defined in cinder.compute.nova # # Info to match when looking for nova in the service catalog. # Format is : separated values of the form: # :: (string value) #nova_catalog_info=compute:nova:publicURL # Same as nova_catalog_info, but for admin endpoint. (string # value) #nova_catalog_admin_info=compute:nova:adminURL # Override service catalog lookup with template for nova # endpoint e.g. http://localhost:8774/v2/%(project_id)s # (string value) #nova_endpoint_template= # Same as nova_endpoint_template, but for admin endpoint. # (string value) #nova_endpoint_admin_template= # region name of this node (string value) #os_region_name= # Location of ca certificates file to use for nova client # requests. (string value) #nova_ca_certificates_file= # Allow to perform insecure SSL requests to nova (boolean # value) #nova_api_insecure=false # # Options defined in cinder.db.api # # The backend to use for db (string value) #db_backend=sqlalchemy # Services to be added to the available pool on create # (boolean value) #enable_new_services=true # Template string to be used to generate volume names (string # value) #volume_name_template=volume-%s # Template string to be used to generate snapshot names # (string value) #snapshot_name_template=snapshot-%s # Template string to be used to generate backup names (string # value) #backup_name_template=backup-%s # # Options defined in cinder.db.base # # driver to use for database access (string value) #db_driver=cinder.db # # Options defined in cinder.image.glance # # A list of url schemes that can be downloaded directly via # the direct_url. Currently supported schemes: [file]. (list # value) #allowed_direct_url_schemes= # # Options defined in cinder.image.image_utils # # Directory used for temporary storage during image conversion # (string value) #image_conversion_dir=$state_path/conversion # # Options defined in cinder.openstack.common.db.sqlalchemy.session # # the filename to use with sqlite (string value) #sqlite_db=cinder.sqlite # If true, use synchronous mode for sqlite (boolean value) #sqlite_synchronous=true # # Options defined in cinder.openstack.common.eventlet_backdoor # # Enable eventlet backdoor. Acceptable values are 0, , # and :, where 0 results in listening on a random # tcp port number; results in listening on the # specified port number (and not enabling backdoor if that # port is in use); and : results in listening on # the smallest unused port number within the specified range # of port numbers. The chosen port is displayed in the # service's log file. (string value) #backdoor_port= # # Options defined in cinder.openstack.common.lockutils # # Whether to disable inter-process locks (boolean value) #disable_process_locking=false # Directory to use for lock files. Default to a temp directory # (string value) #lock_path= # # Options defined in cinder.openstack.common.log # # Print debugging output (set logging level to DEBUG instead # of default WARNING level). (boolean value) #debug=false # Print more verbose output (set logging level to INFO instead # of default WARNING level). (boolean value) #verbose=false # Log output to standard error (boolean value) #use_stderr=true # Format string to use for log messages with context (string # value) #logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s # Format string to use for log messages without context # (string value) #logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s # Data to append to log format when level is DEBUG (string # value) #logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d # Prefix each line of exception output with this format # (string value) #logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s # List of logger=LEVEL pairs (list value) #default_log_levels=amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN # Publish error events (boolean value) #publish_errors=false # Make deprecations fatal (boolean value) #fatal_deprecations=false # If an instance is passed with the log message, format it # like this (string value) #instance_format="[instance: %(uuid)s] " # If an instance UUID is passed with the log message, format # it like this (string value) #instance_uuid_format="[instance: %(uuid)s] " # The name of logging configuration file. It does not disable # existing loggers, but just appends specified logging # configuration to any other existing logging options. Please # see the Python logging module documentation for details on # logging configuration files. (string value) # Deprecated group/name - [DEFAULT]/log_config #log_config_append= # DEPRECATED. A logging.Formatter log message format string # which may use any of the available logging.LogRecord # attributes. This option is deprecated. Please use # logging_context_format_string and # logging_default_format_string instead. (string value) #log_format= # Format string for %%(asctime)s in log records. Default: # %(default)s (string value) #log_date_format=%Y-%m-%d %H:%M:%S # (Optional) Name of log file to output to. If no default is # set, logging will go to stdout. (string value) # Deprecated group/name - [DEFAULT]/logfile #log_file= # (Optional) The base directory used for relative --log-file # paths (string value) # Deprecated group/name - [DEFAULT]/logdir #log_dir= # Use syslog for logging. Existing syslog format is DEPRECATED # during I, and then will be changed in J to honor RFC5424 # (boolean value) #use_syslog=false # (Optional) Use syslog rfc5424 format for logging. If # enabled, will add APP-NAME (RFC5424) before the MSG part of # the syslog message. The old format without APP-NAME is # deprecated in I, and will be removed in J. (boolean value) #use_syslog_rfc_format=false # Syslog facility to receive log lines (string value) #syslog_log_facility=LOG_USER # # Options defined in cinder.openstack.common.periodic_task # # Some periodic tasks can be run in a separate process. Should # we run them here? (boolean value) #run_external_periodic_tasks=true # # Options defined in cinder.scheduler.driver # # The scheduler host manager class to use (string value) #scheduler_host_manager=cinder.scheduler.host_manager.HostManager # Maximum number of attempts to schedule an volume (integer # value) #scheduler_max_attempts=3 # # Options defined in cinder.scheduler.host_manager # # Which filter class names to use for filtering hosts when not # specified in the request. (list value) #scheduler_default_filters=AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter # Which weigher class names to use for weighing hosts. (list # value) #scheduler_default_weighers=CapacityWeigher # # Options defined in cinder.scheduler.manager # # Default scheduler driver to use (string value) #scheduler_driver=cinder.scheduler.filter_scheduler.FilterScheduler # # Options defined in cinder.scheduler.scheduler_options # # Absolute path to scheduler configuration JSON file. (string # value) #scheduler_json_config_location= # # Options defined in cinder.scheduler.simple # # This configure option has been deprecated along with the # SimpleScheduler. New scheduler is able to gather capacity # information for each host, thus setting the maximum number # of volume gigabytes for host is no longer needed. It's safe # to remove this configure from cinder.conf. (integer value) #max_gigabytes=10000 # # Options defined in cinder.scheduler.weights.capacity # # Multiplier used for weighing volume capacity. Negative # numbers mean to stack vs spread. (floating point value) #capacity_weight_multiplier=1.0 # Multiplier used for weighing volume capacity. Negative # numbers mean to stack vs spread. (floating point value) #allocated_capacity_weight_multiplier=-1.0 # # Options defined in cinder.transfer.api # # The number of characters in the salt. (integer value) #volume_transfer_salt_length=8 # The number of characters in the autogenerated auth key. # (integer value) #volume_transfer_key_length=16 # # Options defined in cinder.volume.api # # Create volume from snapshot at the host where snapshot # resides (boolean value) #snapshot_same_host=true # Ensure that the new volumes are the same AZ as snapshot or # source volume (boolean value) #cloned_volume_same_az=true # # Options defined in cinder.volume.driver # # The maximum number of times to rescan iSER targetto find # volume (integer value) #num_iser_scan_tries=3 # The maximum number of iser target ids per host (integer # value) #iser_num_targets=100 # prefix for iser volumes (string value) #iser_target_prefix=iqn.2010-10.org.openstack: # The IP address that the iSER daemon is listening on (string # value) #iser_ip_address=$my_ip # The port that the iSER daemon is listening on (integer # value) #iser_port=3260 # iser target user-land tool to use (string value) #iser_helper=tgtadm # number of times to attempt to run flakey shell commands # (integer value) #num_shell_tries=3 # The percentage of backend capacity is reserved (integer # value) #reserved_percentage=0 # The maximum number of iscsi target ids per host (integer # value) #iscsi_num_targets=100 # prefix for iscsi volumes (string value) #iscsi_target_prefix=iqn.2010-10.org.openstack: # The IP address that the iSCSI daemon is listening on (string # value) #iscsi_ip_address=$my_ip # The port that the iSCSI daemon is listening on (integer # value) #iscsi_port=3260 # The maximum number of times to rescan targets to find volume # (integer value) # Deprecated group/name - [DEFAULT]/num_iscsi_scan_tries #num_volume_device_scan_tries=3 # The backend name for a given driver implementation (string # value) #volume_backend_name= # Do we attach/detach volumes in cinder using multipath for # volume to image and image to volume transfers? (boolean # value) #use_multipath_for_image_xfer=false # Method used to wipe old voumes (valid options are: none, # zero, shred) (string value) #volume_clear=zero # Size in MiB to wipe at start of old volumes. 0 => all # (integer value) #volume_clear_size=0 # The flag to pass to ionice to alter the i/o priority of the # process used to zero a volume after deletion, for example # "-c3" for idle only priority. (string value) #volume_clear_ionice= # iscsi target user-land tool to use (string value) #iscsi_helper=tgtadm # Volume configuration file storage directory (string value) #volumes_dir=$state_path/volumes # IET configuration file (string value) #iet_conf=/etc/iet/ietd.conf # Comma-separated list of initiator IQNs allowed to connect to # the iSCSI target. (From Nova compute nodes.) (string value) #lio_initiator_iqns= # Sets the behavior of the iSCSI target to either perform # blockio or fileio optionally, auto can be set and Cinder # will autodetect type of backing device (string value) #iscsi_iotype=fileio # The default block size used when copying/clearing volumes # (string value) #volume_dd_blocksize=1M # # Options defined in cinder.volume.drivers.block_device # # List of all available devices (list value) #available_devices= # # Options defined in cinder.volume.drivers.coraid # # IP address of Coraid ESM (string value) #coraid_esm_address= # User name to connect to Coraid ESM (string value) #coraid_user=admin # Name of group on Coraid ESM to which coraid_user belongs # (must have admin privilege) (string value) #coraid_group=admin # Password to connect to Coraid ESM (string value) #coraid_password=password # Volume Type key name to store ESM Repository Name (string # value) #coraid_repository_key=coraid_repository # # Options defined in cinder.volume.drivers.emc.emc_smis_common # # use this file for cinder emc plugin config data (string # value) #cinder_emc_config_file=/etc/cinder/cinder_emc_config.xml # # Options defined in cinder.volume.drivers.emc.emc_vnx_cli # # Naviseccli Path (string value) #naviseccli_path= # ISCSI pool name (string value) #storage_vnx_pool_name= # Default Time Out For CLI operations in minutes (integer # value) #default_timeout=20 # Default max number of LUNs in a storage group (integer # value) #max_luns_per_storage_group=256 # # Options defined in cinder.volume.drivers.eqlx # # Group name to use for creating volumes (string value) #eqlx_group_name=group-0 # Timeout for the Group Manager cli command execution (integer # value) #eqlx_cli_timeout=30 # Maximum retry count for reconnection (integer value) #eqlx_cli_max_retries=5 # Use CHAP authentication for targets? (boolean value) #eqlx_use_chap=false # Existing CHAP account name (string value) #eqlx_chap_login=admin # Password for specified CHAP account name (string value) #eqlx_chap_password=password # Pool in which volumes will be created (string value) #eqlx_pool=default # # Options defined in cinder.volume.drivers.glusterfs # # File with the list of available gluster shares (string # value) #glusterfs_shares_config=/etc/cinder/glusterfs_shares # Create volumes as sparsed files which take no space.If set # to False volume is created as regular file.In such case # volume creation takes a lot of time. (boolean value) #glusterfs_sparsed_volumes=true # Create volumes as QCOW2 files rather than raw files. # (boolean value) #glusterfs_qcow2_volumes=false # Base dir containing mount points for gluster shares. (string # value) #glusterfs_mount_point_base=$state_path/mnt # # Options defined in cinder.volume.drivers.hds.hds # # configuration file for HDS cinder plugin for HUS (string # value) #hds_cinder_config_file=/opt/hds/hus/cinder_hus_conf.xml # # Options defined in cinder.volume.drivers.huawei # # config data for cinder huawei plugin (string value) #cinder_huawei_conf_file=/etc/cinder/cinder_huawei_conf.xml # # Options defined in cinder.volume.drivers.ibm.gpfs # # Specifies the path of the GPFS directory where Block Storage # volume and snapshot files are stored. (string value) #gpfs_mount_point_base= # Specifies the path of the Image service repository in GPFS. # Leave undefined if not storing images in GPFS. (string # value) #gpfs_images_dir= # Specifies the type of image copy to be used. Set this when # the Image service repository also uses GPFS so that image # files can be transferred efficiently from the Image service # to the Block Storage service. There are two valid values: # "copy" specifies that a full copy of the image is made; # "copy_on_write" specifies that copy-on-write optimization # strategy is used and unmodified blocks of the image file are # shared efficiently. (string value) #gpfs_images_share_mode= # Specifies an upper limit on the number of indirections # required to reach a specific block due to snapshots or # clones. A lengthy chain of copy-on-write snapshots or # clones can have a negative impact on performance, but # improves space utilization. 0 indicates unlimited clone # depth. (integer value) #gpfs_max_clone_depth=0 # Specifies that volumes are created as sparse files which # initially consume no space. If set to False, the volume is # created as a fully allocated file, in which case, creation # may take a significantly longer time. (boolean value) #gpfs_sparse_volumes=true # Specifies the storage pool that volumes are assigned to. By # default, the system storage pool is used. (string value) #gpfs_storage_pool= # # Options defined in cinder.volume.drivers.ibm.storwize_svc # # Storage system storage pool for volumes (string value) #storwize_svc_volpool_name=volpool # Storage system space-efficiency parameter for volumes # (percentage) (integer value) #storwize_svc_vol_rsize=2 # Storage system threshold for volume capacity warnings # (percentage) (integer value) #storwize_svc_vol_warning=0 # Storage system autoexpand parameter for volumes (True/False) # (boolean value) #storwize_svc_vol_autoexpand=true # Storage system grain size parameter for volumes # (32/64/128/256) (integer value) #storwize_svc_vol_grainsize=256 # Storage system compression option for volumes (boolean # value) #storwize_svc_vol_compression=false # Enable Easy Tier for volumes (boolean value) #storwize_svc_vol_easytier=true # The I/O group in which to allocate volumes (integer value) #storwize_svc_vol_iogrp=0 # Maximum number of seconds to wait for FlashCopy to be # prepared. Maximum value is 600 seconds (10 minutes) (integer # value) #storwize_svc_flashcopy_timeout=120 # Connection protocol (iSCSI/FC) (string value) #storwize_svc_connection_protocol=iSCSI # Configure CHAP authentication for iSCSI connections # (Default: Enabled) (boolean value) #storwize_svc_iscsi_chap_enabled=true # Connect with multipath (FC only; iSCSI multipath is # controlled by Nova) (boolean value) #storwize_svc_multipath_enabled=false # Allows vdisk to multi host mapping (boolean value) #storwize_svc_multihostmap_enabled=true # # Options defined in cinder.volume.drivers.ibm.xiv_ds8k # # Proxy driver that connects to the IBM Storage Array (string # value) #xiv_ds8k_proxy=xiv_ds8k_openstack.nova_proxy.XIVDS8KNovaProxy # Connection type to the IBM Storage Array # (fibre_channel|iscsi) (string value) #xiv_ds8k_connection_type=iscsi # CHAP authentication mode, effective only for iscsi # (disabled|enabled) (string value) #xiv_chap=disabled # # Options defined in cinder.volume.drivers.lvm # # Name for the VG that will contain exported volumes (string # value) #volume_group=cinder-volumes # If set, create lvms with multiple mirrors. Note that this # requires lvm_mirrors + 2 pvs with available space (integer # value) #lvm_mirrors=0 # Type of LVM volumes to deploy; (default or thin) (string # value) #lvm_type=default # # Options defined in cinder.volume.drivers.netapp.options # # The vFiler unit on which provisioning of block storage # volumes will be done. This option is only used by the driver # when connecting to an instance with a storage family of Data # ONTAP operating in 7-Mode. Only use this option when # utilizing the MultiStore feature on the NetApp storage # system. (string value) #netapp_vfiler= # Administrative user account name used to access the storage # system or proxy server. (string value) #netapp_login= # Password for the administrative user account specified in # the netapp_login option. (string value) #netapp_password= # This option specifies the virtual storage server (Vserver) # name on the storage cluster on which provisioning of block # storage volumes should occur. If using the NFS storage # protocol, this parameter is mandatory for storage service # catalog support (utilized by Cinder volume type extra_specs # support). If this option is specified, the exports belonging # to the Vserver will only be used for provisioning in the # future. Block storage volumes on exports not belonging to # the Vserver specified by this option will continue to # function normally. (string value) #netapp_vserver= # The hostname (or IP address) for the storage system or proxy # server. (string value) #netapp_server_hostname= # The TCP port to use for communication with the storage # system or proxy server. Traditionally, port 80 is used for # HTTP and port 443 is used for HTTPS; however, this value # should be changed if an alternate port has been configured # on the storage system or proxy server. (integer value) #netapp_server_port=80 # This option is used to specify the path to the E-Series # proxy application on a proxy server. The value is combined # with the value of the netapp_transport_type, # netapp_server_hostname, and netapp_server_port options to # create the URL used by the driver to connect to the proxy # application. (string value) #netapp_webservice_path=/devmgr/v2 # This option is only utilized when the storage family is # configured to eseries. This option is used to restrict # provisioning to the specified controllers. Specify the value # of this option to be a comma separated list of controller # hostnames or IP addresses to be used for provisioning. # (string value) #netapp_controller_ips= # Password for the NetApp E-Series storage array. (string # value) #netapp_sa_password= # This option is used to restrict provisioning to the # specified storage pools. Only dynamic disk pools are # currently supported. Specify the value of this option to be # a comma separated list of disk pool names to be used for # provisioning. (string value) #netapp_storage_pools= # This option is used to define how the controllers in the # E-Series storage array will work with the particular # operating system on the hosts that are connected to it. # (string value) #netapp_eseries_host_type=linux_dm_mp # If the percentage of available space for an NFS share has # dropped below the value specified by this option, the NFS # image cache will be cleaned. (integer value) #thres_avl_size_perc_start=20 # When the percentage of available space on an NFS share has # reached the percentage specified by this option, the driver # will stop clearing files from the NFS image cache that have # not been accessed in the last M minutes, where M is the # value of the expiry_thres_minutes configuration option. # (integer value) #thres_avl_size_perc_stop=60 # This option specifies the threshold for last access time for # images in the NFS image cache. When a cache cleaning cycle # begins, images in the cache that have not been accessed in # the last M minutes, where M is the value of this parameter, # will be deleted from the cache to create free space on the # NFS share. (integer value) #expiry_thres_minutes=720 # This option specifies the path of the NetApp copy offload # tool binary. Ensure that the binary has execute permissions # set which allow the effective user of the cinder-volume # process to execute the file. (string value) #netapp_copyoffload_tool_path= # The quantity to be multiplied by the requested volume size # to ensure enough space is available on the virtual storage # server (Vserver) to fulfill the volume creation request. # (floating point value) #netapp_size_multiplier=1.2 # This option is only utilized when the storage protocol is # configured to use iSCSI. This option is used to restrict # provisioning to the specified controller volumes. Specify # the value of this option to be a comma separated list of # NetApp controller volume names to be used for provisioning. # (string value) #netapp_volume_list= # The storage family type used on the storage system; valid # values are ontap_7mode for using Data ONTAP operating in # 7-Mode, ontap_cluster for using clustered Data ONTAP, or # eseries for using E-Series. (string value) #netapp_storage_family=ontap_cluster # The storage protocol to be used on the data path with the # storage system; valid values are iscsi or nfs. (string # value) #netapp_storage_protocol= # The transport protocol used when communicating with the # storage system or proxy server. Valid values are http or # https. (string value) #netapp_transport_type=http # # Options defined in cinder.volume.drivers.nexenta.options # # IP address of Nexenta SA (string value) #nexenta_host= # HTTP port to connect to Nexenta REST API server (integer # value) #nexenta_rest_port=2000 # Use http or https for REST connection (default auto) (string # value) #nexenta_rest_protocol=auto # User name to connect to Nexenta SA (string value) #nexenta_user=admin # Password to connect to Nexenta SA (string value) #nexenta_password=nexenta # Nexenta target portal port (integer value) #nexenta_iscsi_target_portal_port=3260 # pool on SA that will hold all volumes (string value) #nexenta_volume=cinder # IQN prefix for iSCSI targets (string value) #nexenta_target_prefix=iqn.1986-03.com.sun:02:cinder- # prefix for iSCSI target groups on SA (string value) #nexenta_target_group_prefix=cinder/ # File with the list of available nfs shares (string value) #nexenta_shares_config=/etc/cinder/nfs_shares # Base dir containing mount points for nfs shares (string # value) #nexenta_mount_point_base=$state_path/mnt # Create volumes as sparsed files which take no space.If set # to False volume is created as regular file.In such case # volume creation takes a lot of time. (boolean value) #nexenta_sparsed_volumes=true # Default compression value for new ZFS folders. (string # value) #nexenta_volume_compression=on # If set True cache NexentaStor appliance volroot option # value. (boolean value) #nexenta_nms_cache_volroot=true # Enable stream compression, level 1..9. 1 - gives best speed; # 9 - gives best compression. (integer value) #nexenta_rrmgr_compression=0 # TCP Buffer size in KiloBytes. (integer value) #nexenta_rrmgr_tcp_buf_size=4096 # Number of TCP connections. (integer value) #nexenta_rrmgr_connections=2 # block size for volumes (blank=default,8KB) (string value) #nexenta_blocksize= # flag to create sparse volumes (boolean value) #nexenta_sparse=false # # Options defined in cinder.volume.drivers.nfs # # IP address or Hostname of NAS system. (string value) #nas_ip= # User name to connect to NAS system. (string value) #nas_login=admin # Password to connect to NAS system. (string value) #nas_password= # SSH port to use to connect to NAS system. (integer value) #nas_ssh_port=22 # Filename of private key to use for SSH authentication. # (string value) #nas_private_key= # File with the list of available nfs shares (string value) #nfs_shares_config=/etc/cinder/nfs_shares # Create volumes as sparsed files which take no space.If set # to False volume is created as regular file.In such case # volume creation takes a lot of time. (boolean value) #nfs_sparsed_volumes=true # Percent of ACTUAL usage of the underlying volume before no # new volumes can be allocated to the volume destination. # (floating point value) #nfs_used_ratio=0.95 # This will compare the allocated to available space on the # volume destination. If the ratio exceeds this number, the # destination will no longer be valid. (floating point value) #nfs_oversub_ratio=1.0 # Base dir containing mount points for nfs shares. (string # value) #nfs_mount_point_base=$state_path/mnt # Mount options passed to the nfs client. See section of the # nfs man page for details. (string value) #nfs_mount_options= # # Options defined in cinder.volume.drivers.rbd # # the RADOS pool in which rbd volumes are stored (string # value) #rbd_pool=rbd # the RADOS client name for accessing rbd volumes - only set # when using cephx authentication (string value) #rbd_user= # path to the ceph configuration file to use (string value) #rbd_ceph_conf= # flatten volumes created from snapshots to remove dependency # (boolean value) #rbd_flatten_volume_from_snapshot=false # the libvirt uuid of the secret for the rbd_uservolumes # (string value) #rbd_secret_uuid= # where to store temporary image files if the volume driver # does not write them directly to the volume (string value) #volume_tmp_dir= # maximum number of nested clones that can be taken of a # volume before enforcing a flatten prior to next clone. A # value of zero disables cloning (integer value) #rbd_max_clone_depth=5 # Timeout value (in seconds) used when connecting to ceph # cluster. If value < 0, no timeout is set and default # librados value is used. (integer value) #rados_connect_timeout=-1 # # Options defined in cinder.volume.drivers.san.hp.hp_3par_common # # 3PAR WSAPI Server Url like https://<3par ip>:8080/api/v1 # (string value) #hp3par_api_url= # 3PAR Super user username (string value) #hp3par_username= # 3PAR Super user password (string value) #hp3par_password= # The CPG to use for volume creation (string value) #hp3par_cpg=OpenStack # The CPG to use for Snapshots for volumes. If empty # hp3par_cpg will be used (string value) #hp3par_cpg_snap= # The time in hours to retain a snapshot. You can't delete it # before this expires. (string value) #hp3par_snapshot_retention= # The time in hours when a snapshot expires and is deleted. # This must be larger than expiration (string value) #hp3par_snapshot_expiration= # Enable HTTP debugging to 3PAR (boolean value) #hp3par_debug=false # List of target iSCSI addresses to use. (list value) #hp3par_iscsi_ips= # # Options defined in cinder.volume.drivers.san.hp.hp_lefthand_rest_proxy # # HP LeftHand WSAPI Server Url like https://:8081/lhos (string value) #hplefthand_api_url= # HP LeftHand Super user username (string value) #hplefthand_username= # HP LeftHand Super user password (string value) #hplefthand_password= # HP LeftHand cluster name (string value) #hplefthand_clustername= # Configure CHAP authentication for iSCSI connections # (Default: Disabled) (boolean value) #hplefthand_iscsi_chap_enabled=false # Enable HTTP debugging to LeftHand (boolean value) #hplefthand_debug=false # # Options defined in cinder.volume.drivers.san.hp.hp_msa_common # # The VDisk to use for volume creation. (string value) #msa_vdisk=OpenStack # # Options defined in cinder.volume.drivers.san.san # # Use thin provisioning for SAN volumes? (boolean value) #san_thin_provision=true # IP address of SAN controller (string value) #san_ip= # Username for SAN controller (string value) #san_login=admin # Password for SAN controller (string value) #san_password= # Filename of private key to use for SSH authentication # (string value) #san_private_key= # Cluster name to use for creating volumes (string value) #san_clustername= # SSH port to use with SAN (integer value) #san_ssh_port=22 # Execute commands locally instead of over SSH; use if the # volume service is running on the SAN device (boolean value) #san_is_local=false # SSH connection timeout in seconds (integer value) #ssh_conn_timeout=30 # Minimum ssh connections in the pool (integer value) #ssh_min_pool_conn=1 # Maximum ssh connections in the pool (integer value) #ssh_max_pool_conn=5 # # Options defined in cinder.volume.drivers.san.solaris # # The ZFS path under which to create zvols for volumes. # (string value) #san_zfs_volume_base=rpool/ # # Options defined in cinder.volume.drivers.scality # # Path or URL to Scality SOFS configuration file (string # value) #scality_sofs_config= # Base dir where Scality SOFS shall be mounted (string value) #scality_sofs_mount_point=$state_path/scality # Path from Scality SOFS root to volume dir (string value) #scality_sofs_volume_dir=cinder/volumes # # Options defined in cinder.volume.drivers.solidfire # # Set 512 byte emulation on volume creation; (boolean value) #sf_emulate_512=true # Allow tenants to specify QOS on create (boolean value) #sf_allow_tenant_qos=false # Create SolidFire accounts with this prefix. Any string can # be used here, but the string "hostname" is special and will # create a prefix using the cinder node hostsname (previous # default behavior). The default is NO prefix. (string value) #sf_account_prefix= # SolidFire API port. Useful if the device api is behind a # proxy on a different port. (integer value) #sf_api_port=443 # # Options defined in cinder.volume.drivers.vmware.vmdk # # IP address for connecting to VMware ESX/VC server. (string # value) #vmware_host_ip= # Username for authenticating with VMware ESX/VC server. # (string value) #vmware_host_username= # Password for authenticating with VMware ESX/VC server. # (string value) #vmware_host_password= # Optional VIM service WSDL Location e.g # http:///vimService.wsdl. Optional over-ride to # default location for bug work-arounds. (string value) #vmware_wsdl_location= # Number of times VMware ESX/VC server API must be retried # upon connection related issues. (integer value) #vmware_api_retry_count=10 # The interval (in seconds) for polling remote tasks invoked # on VMware ESX/VC server. (integer value) #vmware_task_poll_interval=5 # Name for the folder in the VC datacenter that will contain # cinder volumes. (string value) #vmware_volume_folder=cinder-volumes # Timeout in seconds for VMDK volume transfer between Cinder # and Glance. (integer value) #vmware_image_transfer_timeout_secs=7200 # Max number of objects to be retrieved per batch. Query # results will be obtained in batches from the server and not # in one shot. Server may still limit the count to something # less than the configured value. (integer value) #vmware_max_objects_retrieval=100 # Optional string specifying the VMware VC server version. The # driver attempts to retrieve the version from VMware VC # server. Set this configuration only if you want to override # the VC server version. (string value) #vmware_host_version= # # Options defined in cinder.volume.drivers.windows.windows # # Path to store VHD backed volumes (string value) #windows_iscsi_lun_path=C:\iSCSIVirtualDisks # # Options defined in cinder.volume.drivers.xenapi.sm # # NFS server to be used by XenAPINFSDriver (string value) #xenapi_nfs_server= # Path of exported NFS, used by XenAPINFSDriver (string value) #xenapi_nfs_serverpath= # URL for XenAPI connection (string value) #xenapi_connection_url= # Username for XenAPI connection (string value) #xenapi_connection_username=root # Password for XenAPI connection (string value) #xenapi_connection_password= # Base path to the storage repository (string value) #xenapi_sr_base_path=/var/run/sr-mount # # Options defined in cinder.volume.drivers.zadara # # Management IP of Zadara VPSA (string value) #zadara_vpsa_ip= # Zadara VPSA port number (string value) #zadara_vpsa_port= # Use SSL connection (boolean value) #zadara_vpsa_use_ssl=false # User name for the VPSA (string value) #zadara_user= # Password for the VPSA (string value) #zadara_password= # Name of VPSA storage pool for volumes (string value) #zadara_vpsa_poolname= # Default thin provisioning policy for volumes (boolean value) #zadara_vol_thin=true # Default encryption policy for volumes (boolean value) #zadara_vol_encrypt=false # Default template for VPSA volume names (string value) #zadara_vol_name_template=OS_%s # Automatically detach from servers on volume delete (boolean # value) #zadara_vpsa_auto_detach_on_delete=true # Don't halt on deletion of non-existing volumes (boolean # value) #zadara_vpsa_allow_nonexistent_delete=true # # Options defined in cinder.volume.manager # # Driver to use for volume creation (string value) #volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver # Timeout for creating the volume to migrate to when # performing volume migration (seconds) (integer value) #migration_create_volume_timeout_secs=300 # Offload pending volume delete during volume service startup # (boolean value) #volume_service_inithost_offload=false # FC Zoning mode configured (string value) #zoning_mode=none # User defined capabilities, a JSON formatted string # specifying key/value pairs. (string value) #extra_capabilities={} [BRCD_FABRIC_EXAMPLE] # # Options defined in cinder.zonemanager.drivers.brocade.brcd_fabric_opts # # Management IP of fabric (string value) #fc_fabric_address= # Fabric user ID (string value) #fc_fabric_user= # Password for user (string value) #fc_fabric_password= # Connecting port (integer value) #fc_fabric_port=22 # overridden zoning policy (string value) #zoning_policy=initiator-target # overridden zoning activation state (boolean value) #zone_activate=true # overridden zone name prefix (string value) #zone_name_prefix= # Principal switch WWN of the fabric (string value) #principal_switch_wwn= [database] # # Options defined in cinder.openstack.common.db.api # # The backend to use for db (string value) # Deprecated group/name - [DEFAULT]/db_backend #backend=sqlalchemy # Enable the experimental use of thread pooling for all DB API # calls (boolean value) # Deprecated group/name - [DEFAULT]/dbapi_use_tpool #use_tpool=false # # Options defined in cinder.openstack.common.db.sqlalchemy.session # # The SQLAlchemy connection string used to connect to the # database (string value) # Deprecated group/name - [DEFAULT]/sql_connection #connection=sqlite:///$state_path/$sqlite_db # timeout before idle sql connections are reaped (integer # value) # Deprecated group/name - [DEFAULT]/sql_idle_timeout #idle_timeout=3600 # Minimum number of SQL connections to keep open in a pool # (integer value) # Deprecated group/name - [DEFAULT]/sql_min_pool_size #min_pool_size=1 # Maximum number of SQL connections to keep open in a pool # (integer value) # Deprecated group/name - [DEFAULT]/sql_max_pool_size #max_pool_size=5 # maximum db connection retries during startup. (setting -1 # implies an infinite retry count) (integer value) # Deprecated group/name - [DEFAULT]/sql_max_retries #max_retries=10 # interval between retries of opening a sql connection # (integer value) # Deprecated group/name - [DEFAULT]/sql_retry_interval #retry_interval=10 # If set, use this value for max_overflow with sqlalchemy # (integer value) # Deprecated group/name - [DEFAULT]/sql_max_overflow #max_overflow= # Verbosity of SQL debugging information. 0=None, # 100=Everything (integer value) # Deprecated group/name - [DEFAULT]/sql_connection_debug #connection_debug=0 # Add python stack traces to SQL as comment strings (boolean # value) # Deprecated group/name - [DEFAULT]/sql_connection_trace #connection_trace=false [fc-zone-manager] # # Options defined in cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver # # Southbound connector for zoning operation (string value) #brcd_sb_connector=cinder.zonemanager.drivers.brocade.brcd_fc_zone_client_cli.BrcdFCZoneClientCLI # # Options defined in cinder.zonemanager.fc_zone_manager # # FC Zone Driver responsible for zone management (string # value) #zone_driver=cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver # Zoning policy configured by user (string value) #zoning_policy=initiator-target # Comma separated list of fibre channel fabric names. This # list of names is used to retrieve other SAN credentials for # connecting to each SAN fabric (string value) #fc_fabric_names= # FC San Lookup Service (string value) #fc_san_lookup_service=cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService [keymgr] # # Options defined in cinder.keymgr # # The full class name of the key manager API class (string # value) #api_class=cinder.keymgr.conf_key_mgr.ConfKeyManager # # Options defined in cinder.keymgr.conf_key_mgr # # Fixed key returned by key manager, specified in hex (string # value) #fixed_key= [keystone_authtoken] # # Options defined in keystoneclient.middleware.auth_token # # Prefix to prepend at the beginning of the path. Deprecated, # use identity_uri. (string value) #auth_admin_prefix= # Host providing the admin Identity API endpoint. Deprecated, # use identity_uri. (string value) #auth_host=127.0.0.1 # Port of the admin Identity API endpoint. Deprecated, use # identity_uri. (integer value) #auth_port=35357 # Protocol of the admin Identity API endpoint (http or https). # Deprecated, use identity_uri. (string value) #auth_protocol=https # Complete public Identity API endpoint (string value) #auth_uri= # Complete admin Identity API endpoint. This should specify # the unversioned root endpoint e.g. https://localhost:35357/ # (string value) #identity_uri= # API version of the admin Identity API endpoint (string # value) #auth_version= # Do not handle authorization requests within the middleware, # but delegate the authorization decision to downstream WSGI # components (boolean value) #delay_auth_decision=false # Request timeout value for communicating with Identity API # server. (boolean value) #http_connect_timeout= # How many times are we trying to reconnect when communicating # with Identity API Server. (integer value) #http_request_max_retries=3 # This option is deprecated and may be removed in a future # release. Single shared secret with the Keystone # configuration used for bootstrapping a Keystone # installation, or otherwise bypassing the normal # authentication process. This option should not be used, use # `admin_user` and `admin_password` instead. (string value) #admin_token= # Keystone account username (string value) #admin_user= # Keystone account password (string value) #admin_password= # Keystone service account tenant name to validate user tokens # (string value) #admin_tenant_name=admin # Env key for the swift cache (string value) #cache= # Required if Keystone server requires client certificate # (string value) #certfile= # Required if Keystone server requires client certificate # (string value) #keyfile= # A PEM encoded Certificate Authority to use when verifying # HTTPs connections. Defaults to system CAs. (string value) #cafile= # Verify HTTPS connections. (boolean value) #insecure=false # Directory used to cache files related to PKI tokens (string # value) #signing_dir= # Optionally specify a list of memcached server(s) to use for # caching. If left undefined, tokens will instead be cached # in-process. (list value) # Deprecated group/name - [DEFAULT]/memcache_servers #memcached_servers= # In order to prevent excessive effort spent validating # tokens, the middleware caches previously-seen tokens for a # configurable duration (in seconds). Set to -1 to disable # caching completely. (integer value) #token_cache_time=300 # Determines the frequency at which the list of revoked tokens # is retrieved from the Identity service (in seconds). A high # number of revocation events combined with a low cache # duration may significantly reduce performance. (integer # value) #revocation_cache_time=10 # (optional) if defined, indicate whether token data should be # authenticated or authenticated and encrypted. Acceptable # values are MAC or ENCRYPT. If MAC, token data is # authenticated (with HMAC) in the cache. If ENCRYPT, token # data is encrypted and authenticated in the cache. If the # value is not one of these options or empty, auth_token will # raise an exception on initialization. (string value) #memcache_security_strategy= # (optional, mandatory if memcache_security_strategy is # defined) this string is used for key derivation. (string # value) #memcache_secret_key= # (optional) indicate whether to set the X-Service-Catalog # header. If False, middleware will not ask for service # catalog on token validation and will not set the X-Service- # Catalog header. (boolean value) #include_service_catalog=true # Used to control the use and type of token binding. Can be # set to: "disabled" to not check token binding. "permissive" # (default) to validate binding information if the bind type # is of a form known to the server and ignore it if not. # "strict" like "permissive" but if the bind type is unknown # the token will be rejected. "required" any form of token # binding is needed to be allowed. Finally the name of a # binding method that must be present in tokens. (string # value) #enforce_token_bind=permissive # If true, the revocation list will be checked for cached # tokens. This requires that PKI tokens are configured on the # Keystone server. (boolean value) #check_revocations_for_cached=false # Hash algorithms to use for hashing PKI tokens. This may be a # single algorithm or multiple. The algorithms are those # supported by Python standard hashlib.new(). The hashes will # be tried in the order given, so put the preferred one first # for performance. The result of the first hash will be stored # in the cache. This will typically be set to multiple values # only while migrating from a less secure algorithm to a more # secure one. Once all the old tokens are expired this option # should be set to a single value for better performance. # (list value) #hash_algorithms=md5 [matchmaker_redis] # # Options defined in oslo.messaging # # Host to locate redis. (string value) #host=127.0.0.1 # Use this port to connect to redis host. (integer value) #port=6379 # Password for Redis server (optional). (string value) #password= [matchmaker_ring] # # Options defined in oslo.messaging # # Matchmaker ring file (JSON). (string value) # Deprecated group/name - [DEFAULT]/matchmaker_ringfile #ringfile=/etc/oslo/matchmaker_ring.json [oslo_messaging_amqp] # # Options defined in oslo.messaging # # NOTE: Options in this group are supported when using oslo.messaging >=1.5.0. # address prefix used when sending to a specific server # (string value) #server_request_prefix=exclusive # address prefix used when broadcasting to all servers (string # value) #broadcast_prefix=broadcast # address prefix when sending to any server in group (string # value) #group_request_prefix=unicast # Name for the AMQP container (string value) #container_name= # Timeout for inactive connections (in seconds) (integer # value) #idle_timeout=0 # Debug: dump AMQP frames to stdout (boolean value) #trace=false # CA certificate PEM file for verifing server certificate # (string value) #ssl_ca_file= # Identifying certificate PEM file to present to clients # (string value) #ssl_cert_file= # Private key PEM file used to sign cert_file certificate # (string value) #ssl_key_file= # Password for decrypting ssl_key_file (if encrypted) (string # value) #ssl_key_password= # Accept clients using either SSL or plain TCP (boolean value) #allow_insecure_clients=false [profiler] # # Options defined in cinder.service # # If False fully disable profiling feature. (boolean value) #profiler_enabled=false # If False doesn't trace SQL requests. (boolean value) #trace_sqlalchemy=false [ssl] # # Options defined in cinder.openstack.common.sslutils # # CA certificate file to use to verify connecting clients # (string value) #ca_file= # Certificate file to use when starting the server securely # (string value) #cert_file= # Private key file to use when starting the server securely # (string value) #key_file= cinder-2014.1.5/etc/cinder/api-paste.ini0000664000567000056700000000326412540642606020765 0ustar jenkinsjenkins00000000000000############# # OpenStack # ############# [composite:osapi_volume] use = call:cinder.api:root_app_factory /: apiversions /v1: openstack_volume_api_v1 /v2: openstack_volume_api_v2 [composite:openstack_volume_api_v1] use = call:cinder.api.middleware.auth:pipeline_factory noauth = request_id faultwrap sizelimit noauth apiv1 keystone = request_id faultwrap sizelimit authtoken keystonecontext apiv1 keystone_nolimit = request_id faultwrap sizelimit authtoken keystonecontext apiv1 [composite:openstack_volume_api_v2] use = call:cinder.api.middleware.auth:pipeline_factory noauth = request_id faultwrap sizelimit noauth apiv2 keystone = request_id faultwrap sizelimit authtoken keystonecontext apiv2 keystone_nolimit = request_id faultwrap sizelimit authtoken keystonecontext apiv2 [filter:request_id] paste.filter_factory = cinder.openstack.common.middleware.request_id:RequestIdMiddleware.factory [filter:faultwrap] paste.filter_factory = cinder.api.middleware.fault:FaultWrapper.factory [filter:noauth] paste.filter_factory = cinder.api.middleware.auth:NoAuthMiddleware.factory [filter:sizelimit] paste.filter_factory = cinder.api.middleware.sizelimit:RequestBodySizeLimiter.factory [app:apiv1] paste.app_factory = cinder.api.v1.router:APIRouter.factory [app:apiv2] paste.app_factory = cinder.api.v2.router:APIRouter.factory [pipeline:apiversions] pipeline = faultwrap osvolumeversionapp [app:osvolumeversionapp] paste.app_factory = cinder.api.versions:Versions.factory ########## # Shared # ########## [filter:keystonecontext] paste.filter_factory = cinder.api.middleware.auth:CinderKeystoneContext.factory [filter:authtoken] paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory cinder-2014.1.5/etc/cinder/rootwrap.d/0000775000567000056700000000000012540643114020466 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/etc/cinder/rootwrap.d/volume.filters0000664000567000056700000001022412540642606023373 0ustar jenkinsjenkins00000000000000# cinder-rootwrap command filters for volume nodes # This file should be owned by (and only-writeable by) the root user [Filters] # cinder/volume/iscsi.py: iscsi_helper '--op' ... ietadm: CommandFilter, ietadm, root tgtadm: CommandFilter, tgtadm, root tgt-admin: CommandFilter, tgt-admin, root cinder-rtstool: CommandFilter, cinder-rtstool, root # LVM related show commands pvs: EnvFilter, env, root, LC_ALL=C, pvs vgs: EnvFilter, env, root, LC_ALL=C, vgs lvs: EnvFilter, env, root, LC_ALL=C, lvs lvdisplay: EnvFilter, env, root, LC_ALL=C, lvdisplay # cinder/volume/driver.py: 'lvcreate', '-L', sizestr, '-n', volume_name,.. # cinder/volume/driver.py: 'lvcreate', '-L', ... lvcreate: CommandFilter, lvcreate, root # cinder/volume/driver.py: 'dd', 'if=%s' % srcstr, 'of=%s' % deststr,... dd: CommandFilter, dd, root # cinder/volume/driver.py: 'lvremove', '-f', %s/%s % ... lvremove: CommandFilter, lvremove, root # cinder/volume/driver.py: 'lvrename', '%(vg)s', '%(orig)s' '(new)s'... lvrename: CommandFilter, lvrename, root # cinder/volume/driver.py: 'lvextend', '-L' '%(new_size)s', '%(lv_name)s' ... lvextend: CommandFilter, lvextend, root # cinder/brick/local_dev/lvm.py: 'lvchange -a y -K ' lvchange: CommandFilter, lvchange, root # cinder/volume/driver.py: 'iscsiadm', '-m', 'discovery', '-t',... # cinder/volume/driver.py: 'iscsiadm', '-m', 'node', '-T', ... iscsiadm: CommandFilter, iscsiadm, root # cinder/volume/drivers/lvm.py: 'shred', '-n3' # cinder/volume/drivers/lvm.py: 'shred', '-n0', '-z', '-s%dMiB' shred: CommandFilter, shred, root #cinder/volume/.py: utils.temporary_chown(path, 0), ... chown: CommandFilter, chown, root ionice_1: RegExpFilter, ionice, root, ionice, -c[0-3]( -n[0-7])?, dd, if=\S+, of=\S+, count=\d+, bs=\S+ ionice_2: RegExpFilter, ionice, root, ionice, -c[0-3]( -n[0-7])?, dd, if=\S+, of=\S+, count=\d+, bs=\S+, iflag=direct, oflag=direct ionice_3: RegExpFilter, ionice, root, ionice, -c[0-3]( -n[0-7])?, dd, if=\S+, of=\S+, count=\d+, bs=\S+, conv=fdatasync # cinder/volume/driver.py dmsetup: CommandFilter, dmsetup, root ln: CommandFilter, ln, root # cinder/image/image_utils.py qemu-img: EnvFilter, env, root, LC_ALL=C, qemu-img qemu-img_convert: CommandFilter, qemu-img, root udevadm: CommandFilter, udevadm, root # cinder/volume/driver.py: utils.read_file_as_root() cat: CommandFilter, cat, root # cinder/volume/nfs.py stat: CommandFilter, stat, root mount: CommandFilter, mount, root df: CommandFilter, df, root du: CommandFilter, du, root truncate: CommandFilter, truncate, root chmod: CommandFilter, chmod, root rm: CommandFilter, rm, root # cinder/volume/drivers/netapp/nfs.py: netapp_nfs_find: RegExpFilter, find, root, find, ^[/]*([^/\0]+(/+)?)*$, -maxdepth, \d+, -name, img-cache.*, -amin, \+\d+ # cinder/volume/drivers/glusterfs.py chgrp: CommandFilter, chgrp, root # cinder/volumes/drivers/hds/hds.py: hus-cmd: CommandFilter, hus-cmd, root hus-cmd_local: CommandFilter, /usr/local/bin/hus-cmd, root # cinder/brick/initiator/connector.py: ls: CommandFilter, ls, root tee: CommandFilter, tee, root multipath: CommandFilter, multipath, root systool: CommandFilter, systool, root # cinder/volume/drivers/block_device.py blockdev: CommandFilter, blockdev, root # cinder/volume/drivers/ibm/gpfs.py mv: CommandFilter, mv, root mmgetstate: CommandFilter, /usr/lpp/mmfs/bin/mmgetstate, root mmclone: CommandFilter, /usr/lpp/mmfs/bin/mmclone, root mmlsattr: CommandFilter, /usr/lpp/mmfs/bin/mmlsattr, root mmchattr: CommandFilter, /usr/lpp/mmfs/bin/mmchattr, root mmlsconfig: CommandFilter, /usr/lpp/mmfs/bin/mmlsconfig, root mmlsfs: CommandFilter, /usr/lpp/mmfs/bin/mmlsfs, root mmlspool: CommandFilter, /usr/lpp/mmfs/bin/mmlspool, root mkfs: CommandFilter, mkfs, root # cinder/volume/drivers/ibm/gpfs.py # cinder/volume/drivers/ibm/ibmnas.py find_maxdepth_inum: RegExpFilter, find, root, find, ^[/]*([^/\0]+(/+)?)*$, -maxdepth, \d+, -inum, \d+ # cinder/brick/initiator/connector.py: aoe-revalidate: CommandFilter, aoe-revalidate, root aoe-discover: CommandFilter, aoe-discover, root aoe-flush: CommandFilter, aoe-flush, root # cinder/brick/initiator/linuxscsi.py: sg_scan: CommandFilter, sg_scan, root #cinder/backup/services/tsm.py dsmc:CommandFilter,/usr/bin/dsmc,root cinder-2014.1.5/etc/cinder/logging_sample.conf0000664000567000056700000000251612540642606022236 0ustar jenkinsjenkins00000000000000[loggers] keys = root, cinder [handlers] keys = stderr, stdout, watchedfile, syslog, null [formatters] keys = context, default [logger_root] level = WARNING handlers = null [logger_cinder] level = INFO handlers = stderr qualname = cinder [logger_amqplib] level = WARNING handlers = stderr qualname = amqplib [logger_sqlalchemy] level = WARNING handlers = stderr qualname = sqlalchemy # "level = INFO" logs SQL queries. # "level = DEBUG" logs SQL queries and results. # "level = WARNING" logs neither. (Recommended for production systems.) [logger_boto] level = WARNING handlers = stderr qualname = boto [logger_suds] level = INFO handlers = stderr qualname = suds [logger_eventletwsgi] level = WARNING handlers = stderr qualname = eventlet.wsgi.server [handler_stderr] class = StreamHandler args = (sys.stderr,) formatter = context [handler_stdout] class = StreamHandler args = (sys.stdout,) formatter = context [handler_watchedfile] class = handlers.WatchedFileHandler args = ('cinder.log',) formatter = context [handler_syslog] class = handlers.SysLogHandler args = ('/dev/log', handlers.SysLogHandler.LOG_USER) formatter = context [handler_null] class = cinder.openstack.common.log.NullHandler formatter = default args = () [formatter_context] class = cinder.openstack.common.log.ContextFormatter [formatter_default] format = %(message)s cinder-2014.1.5/etc/cinder/rootwrap.conf0000664000567000056700000000165612540642606021130 0ustar jenkinsjenkins00000000000000# Configuration for cinder-rootwrap # This file should be owned by (and only-writeable by) the root user [DEFAULT] # List of directories to load filter definitions from (separated by ','). # These directories MUST all be only writeable by root ! filters_path=/etc/cinder/rootwrap.d,/usr/share/cinder/rootwrap # List of directories to search executables in, in case filters do not # explicitely specify a full path (separated by ',') # If not specified, defaults to system PATH environment variable. # These directories MUST all be only writeable by root ! exec_dirs=/sbin,/usr/sbin,/bin,/usr/bin # Enable logging to syslog # Default value is False use_syslog=False # Which syslog facility to use. # Valid values include auth, authpriv, syslog, local0, local1... # Default value is 'syslog' syslog_log_facility=syslog # Which messages to log. # INFO means log all usage # ERROR means only log unsuccessful attempts syslog_log_level=ERROR cinder-2014.1.5/etc/cinder/policy.json0000664000567000056700000000464212540642606020574 0ustar jenkinsjenkins00000000000000{ "context_is_admin": [["role:admin"]], "admin_or_owner": [["is_admin:True"], ["project_id:%(project_id)s"]], "default": [["rule:admin_or_owner"]], "admin_api": [["is_admin:True"]], "volume:create": [], "volume:get_all": [], "volume:get_volume_metadata": [], "volume:get_volume_admin_metadata": [["rule:admin_api"]], "volume:delete_volume_admin_metadata": [["rule:admin_api"]], "volume:update_volume_admin_metadata": [["rule:admin_api"]], "volume:get_snapshot": [], "volume:get_all_snapshots": [], "volume:extend": [], "volume:update_readonly_flag": [], "volume:retype": [], "volume_extension:types_manage": [["rule:admin_api"]], "volume_extension:types_extra_specs": [["rule:admin_api"]], "volume_extension:volume_type_encryption": [["rule:admin_api"]], "volume_extension:volume_encryption_metadata": [["rule:admin_or_owner"]], "volume_extension:extended_snapshot_attributes": [], "volume_extension:volume_image_metadata": [], "volume_extension:quotas:show": [], "volume_extension:quotas:update": [["rule:admin_api"]], "volume_extension:quota_classes": [], "volume_extension:volume_admin_actions:reset_status": [["rule:admin_api"]], "volume_extension:snapshot_admin_actions:reset_status": [["rule:admin_api"]], "volume_extension:volume_admin_actions:force_delete": [["rule:admin_api"]], "volume_extension:snapshot_admin_actions:force_delete": [["rule:admin_api"]], "volume_extension:volume_admin_actions:migrate_volume": [["rule:admin_api"]], "volume_extension:volume_admin_actions:migrate_volume_completion": [["rule:admin_api"]], "volume_extension:volume_host_attribute": [["rule:admin_api"]], "volume_extension:volume_tenant_attribute": [["rule:admin_or_owner"]], "volume_extension:volume_mig_status_attribute": [["rule:admin_api"]], "volume_extension:hosts": [["rule:admin_api"]], "volume_extension:services": [["rule:admin_api"]], "volume:services": [["rule:admin_api"]], "volume:create_transfer": [], "volume:accept_transfer": [], "volume:delete_transfer": [], "volume:get_all_transfers": [], "backup:create" : [], "backup:delete": [], "backup:get": [], "backup:get_all": [], "backup:restore": [], "backup:backup-import": [["rule:admin_api"]], "backup:backup-export": [["rule:admin_api"]], "snapshot_extension:snapshot_actions:update_snapshot_status": [] } cinder-2014.1.5/test-requirements.txt0000664000567000056700000000063412540642606020621 0ustar jenkinsjenkins00000000000000# Install bounded pep8/pyflakes first, then let flake8 install hacking>=0.8.0,<0.9 coverage>=3.6,<=3.7.1 discover<=0.4.0 fixtures>=0.3.14,<=1.0.0 hp3parclient>=3.0,<4.0 hplefthandclient>=1.0.0,<2.0.0 mock>=1.0,<=1.0.1 mox>=0.5.3,<=0.5.3 MySQL-python<=1.2.5 psycopg2 sphinx>=1.1.2,<1.1.999 python-subunit>=0.0.18,<=1.1.0 testtools>=0.9.34,!=1.2.0,!=1.4.0,<=1.7.1 testrepository>=0.0.18,<=0.0.20 oslosphinx<=2.5.0 cinder-2014.1.5/doc/0000775000567000056700000000000012540643114015115 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/Makefile0000664000567000056700000000637212540642603016567 0ustar jenkinsjenkins00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXSOURCE = source PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SPHINXSOURCE) .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest .DEFAULT_GOAL = html help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* -rm -rf cinder.sqlite if [ -f .autogenerated ] ; then \ cat .autogenerated | xargs rm ; \ rm .autogenerated ; \ fi html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/cinder.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/cinder.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." cinder-2014.1.5/doc/ext/0000775000567000056700000000000012540643114015715 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/ext/cinder_todo.py0000664000567000056700000000643612540642606020576 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # This is a hack of the builtin todo extension, to make the todo_list # more user friendly from sphinx.ext.todo import * import re def _(s): return s def process_todo_nodes(app, doctree, fromdocname): if not app.config['todo_include_todos']: for node in doctree.traverse(todo_node): node.parent.remove(node) # Replace all todolist nodes with a list of the collected todos. # Augment each todo with a backlink to the original location. env = app.builder.env if not hasattr(env, 'todo_all_todos'): env.todo_all_todos = [] # remove the item that was added in the constructor, since I'm tired of # reading through docutils for the proper way to construct an empty list lists = [] for i in xrange(5): lists.append(nodes.bullet_list("", nodes.Text('', ''))) lists[i].remove(lists[i][0]) lists[i]['classes'].append('todo_list') for node in doctree.traverse(todolist): if not app.config['todo_include_todos']: node.replace_self([]) continue for todo_info in env.todo_all_todos: para = nodes.paragraph() filename = env.doc2path(todo_info['docname'], base=None) # Create a reference newnode = nodes.reference('', '') line_info = todo_info['lineno'] link = _('%(filename)s, line %(line_info)d') % locals() innernode = nodes.emphasis(link, link) newnode['refdocname'] = todo_info['docname'] try: newnode['refuri'] = app.builder.get_relative_uri( fromdocname, todo_info['docname']) newnode['refuri'] += '#' + todo_info['target']['refid'] except NoUri: # ignore if no URI can be determined, e.g. for LaTeX output pass newnode.append(innernode) para += newnode para['classes'].append('todo_link') todo_entry = todo_info['todo'] env.resolve_references(todo_entry, todo_info['docname'], app.builder) item = nodes.list_item('', para) todo_entry[1]['classes'].append('details') comment = todo_entry[1] m = re.match(r"^P(\d)", comment.astext()) priority = 5 if m: priority = int(m.group(1)) if priority < 0: priority = 1 if priority > 5: priority = 5 item['classes'].append('todo_p' + str(priority)) todo_entry['classes'].append('todo_p' + str(priority)) item.append(comment) lists[priority - 1].insert(0, item) node.replace_self(lists) def setup(app): app.add_config_value('todo_include_todos', False, False) app.add_node(todolist) app.add_node(todo_node, html=(visit_todo_node, depart_todo_node), latex=(visit_todo_node, depart_todo_node), text=(visit_todo_node, depart_todo_node)) app.add_directive('todo', Todo) app.add_directive('todolist', TodoList) app.connect('doctree-read', process_todos) app.connect('doctree-resolved', process_todo_nodes) app.connect('env-purge-doc', purge_todos) cinder-2014.1.5/doc/ext/cinder_autodoc.py0000664000567000056700000000042612540642603021255 0ustar jenkinsjenkins00000000000000from __future__ import print_function import gettext import os gettext.install('cinder') from cinder import utils def setup(app): print("**Autodocumenting from %s" % os.path.abspath(os.curdir)) rv = utils.execute('./doc/generate_autodoc_index.sh') print(rv[0]) cinder-2014.1.5/doc/ext/__init__.py0000664000567000056700000000000012540642603020016 0ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/README.rst0000664000567000056700000000164612540642606016620 0ustar jenkinsjenkins00000000000000================= Building the docs ================= Dependencies ============ Sphinx_ You'll need sphinx (the python one) and if you are using the virtualenv you'll need to install it in the virtualenv specifically so that it can load the cinder modules. :: pip install Sphinx Graphviz_ Some of the diagrams are generated using the ``dot`` language from Graphviz. :: sudo apt-get install graphviz .. _Sphinx: http://sphinx.pocoo.org .. _Graphviz: http://www.graphviz.org/ Use `make` ========== Just type make:: % make Look in the Makefile for more targets. Manually ======== 1. Generate the code.rst file so that Sphinx will pull in our docstrings:: % ./generate_autodoc_index.sh > source/code.rst 2. Run `sphinx_build`:: % sphinx-build -b html source build/html The docs have been built ======================== Check out the `build` directory to find them. Yay! cinder-2014.1.5/doc/find_autodoc_modules.sh0000775000567000056700000000072512540642603021650 0ustar jenkinsjenkins00000000000000#!/bin/bash CINDER_DIR='cinder/' # include trailing slash DOCS_DIR='source' modules='' for x in `find ${CINDER_DIR} -name '*.py' | grep -v cinder/tests`; do if [ `basename ${x} .py` == "__init__" ] ; then continue fi relative=cinder.`echo ${x} | sed -e 's$^'${CINDER_DIR}'$$' -e 's/.py$//' -e 's$/$.$g'` modules="${modules} ${relative}" done for mod in ${modules} ; do if [ ! -f "${DOCS_DIR}/${mod}.rst" ]; then echo ${mod} fi done cinder-2014.1.5/doc/source/0000775000567000056700000000000012540643114016415 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/source/_ga/0000775000567000056700000000000012540643114017143 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/source/_ga/layout.html0000664000567000056700000000105512540642603021351 0ustar jenkinsjenkins00000000000000{% extends "!layout.html" %} {% block footer %} {{ super() }} {% endblock %} cinder-2014.1.5/doc/source/conf.py0000664000567000056700000001755712540642606017740 0ustar jenkinsjenkins00000000000000# -*- coding: utf-8 -*- # # cinder documentation build configuration file, created by # sphinx-quickstart on Sat May 1 15:17:47 2010. # # This file is execfile()d with the current directory set # to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys import os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../../')) sys.path.insert(0, os.path.abspath('../')) sys.path.insert(0, os.path.abspath('./')) # -- General configuration ---------------------------------------------------- # Add any Sphinx extension module names here, as strings. # They can be extensions coming with Sphinx (named 'sphinx.ext.*') # or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'ext.cinder_todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig', 'sphinx.ext.graphviz', 'oslosphinx', ] # autodoc generation is a bit aggressive and a nuisance # when doing heavy text edit cycles. Execute "export SPHINX_DEBUG=1" # in your terminal to disable if not os.getenv('SPHINX_DEBUG'): extensions += ['ext.cinder_autodoc'] todo_include_todos = True # Add any paths that contain templates here, relative to this directory. # Changing the path so that the Hudson build output contains GA code # and the source docs do not contain the code so local, offline sphinx builds # are "clean." templates_path = [] if os.getenv('HUDSON_PUBLISH_DOCS'): templates_path = ['_ga', '_templates'] else: templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'cinder' copyright = u'2010-present, OpenStack Foundation' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # from cinder.version import version_info # The full version, including alpha/beta/rc tags. release = version_info.release_string() # The short X.Y version. version = version_info.version_string() # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. unused_docs = [ 'api_ext/rst_extension_template', 'installer', ] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use # for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). add_module_names = False # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. modindex_common_prefix = ['cinder.'] # -- Options for man page output ---------------------------------------------- # Grouping the document tree for man pages. # List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual' man_pages = [ ('man/cinder-manage', 'cinder-manage', u'Cloud controller fabric', [u'OpenStack'], 1) ] # -- Options for HTML output -------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. # html_theme_path = ["."] # html_theme = '_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' git_cmd = "git log --pretty=format:'%ad, commit %h' --date=local -n1" html_last_updated_fmt = os.popen(git_cmd).read() # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'cinderdoc' # -- Options for LaTeX output ------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass # [howto/manual]). latex_documents = [ ('index', 'Cinder.tex', u'Cinder Documentation', u'Anso Labs, LLC', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'python': ('http://docs.python.org/', None), 'swift': ('http://swift.openstack.org', None)} cinder-2014.1.5/doc/source/images/0000775000567000056700000000000012540643114017662 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/source/images/rpc/0000775000567000056700000000000012540643114020446 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/source/images/rpc/flow2.png0000664000567000056700000007367212540642603022226 0ustar jenkinsjenkins00000000000000PNG  IHDRWcsRGBgAMA a cHRMz&u0`:pQ< pHYs&?w#IDATx^ $E!CfoA@<("Ȣ0(=,.l31 #8 ( "*SdVFUeUETu]y9OƲj|PPPPPPPPPPPPPPPPPPPPPPPP`p ,v۩fϞ}Zkuc6 `fͺqbbҩ}+(((+ h=rbo1cpЋyq'.3o64l ?8 3>?%l-~~|xu{Ofzq(((c y|!/`eClF;X+ˆX, dfMܿWF c60~6pg*}xkfdۢQp@@@U9*oxv m݀GY:wqΜq-m3@@@3g/y٢ݿx^lmn)6xӥ8 h*~]ț?n<;6 ܳb-|ێfK] d̙kj_+v>_z /3w]6EV!T2o[[_7wW\3MiPJa^[džM45C`["MNmFܒݖoo]hGIPP 3"?&pU2^U̞=mHHADǵ)Ǖ|%l`«ޓ@.(0j 8@6 `M;P/`epD`q1@+6帒 `@u`q1@$`q8l`6p+[bK.B_>eWDw6K<;Ц`؁>r\ P Xe5b{>Q۬Yw޹6;Xtݍ6ڨX*n`ATz7lT7޸2lb酗<;AvM; } @ Š[3޶N*N9"+V&9sԦS#8XhQTZ%dMe˖Ew/tg}.Dh!f# =>D(xCPIͰOWl5 =>D(,3(:mk,a"gm"o@Woh!&l(Xvn`d*SNCB @& G |;X6fqP`XvPOA-XW0|l(XvZϞ`+5ڳE |i^m`siTΑأYRn!.ndV}_p@w0ox Ālˠ @ 0o9~vizɔbw(M`;NA>~i#y Mj`1j (Q?tC1 Q"# {{[+[AW`, _σ*|~jš{rקl,pѯ|-X6نp8{=-|t7cGTZ}ݏC0T!v8ݰ*HP<,uX #rm 0Hi*ES} VitLii=,<]y8*$}g6ƶX4}.Xi9vݔS|'6nU;@`w4zv  6]lٸ:`:;zQ) Kl0u+.UX%iS6_{hR3,X`'EءLg,s[ه5xVj ֑lj4UZyO|譥O-i >5ԒO VJE`>Nv@!r]/G寫y]\+SVOՌ,6DN,XF 2gDOڎcT 5gt`l`V`ʩ}3U.#f*^XEPe~MGbYlp/KZ >`dׇK< [_:]" l]\w;gyYl1yl)lhXucRk)  *{3ܾmU* .mvetF`#}#P  o,60@`a1ljeC4f-a @gm0|Ɇy_Y__Ua=XϏ8relv8߉-i މ(#ƪO]NX`bor;Ϻ*VXQ/̙SN 8bѢEQihM6)-[^u zCGߨ}*)\ݡGXk?y+vgT+Cl6/n[~<#?O[m3=度iS66v"O}vD`31 ;>u=;`؁l҆d6&NYD`g}WݾG֛= y}F.^Hw^*kƆz^5 9`}ē Mz+ !ύ!{ݒ73fhu=jm 1֡`N1u뢬ZNb\ډޯ둼Z7Thk]8QH$j `OVTl5~Xv /)nA \\sbM7?ˮX 2uescu[cWv*j==-|* ^}i+ՑM܂{s&ٲ`pb= XtMSN)f͚:xU' `XV, `Zu w/mU6JuȡizI|_]wÖS?:`&s-?ox+_9 4-GpL, ڄwv{n: ejaw(惮޹уtLinU_oDQ^_5-?-|[9²*d xfLquQl,.LaVVk;裋}{ŏ~MKt(:k;W\}]_LO lmY9&?un7Si xRZ㣎YJ ,|yj1;m:_u;SkJcmʧ!6>.2/7MDqmʍ\@FN̄]xw,?qvy9ldzK dI^u,H{&lD@A`؝X(4X] X]5A _@qܪ,~&Uy4 ;@PXo C w]3(~t?(N8UǪ;φn`XV)0[ 9}cfl_R׺[:=_wN5 8y= k9{a$?y[|[-Y5. -HK`ս7˲U.U9eY䶮 q-:\ Gݟ`XVAjۮ?_owvֳv߳[f~#i, ^6\VﶺI..mX$O!]+['[ [x;v$;IKZ~F\6`]x֬Pjos9f31,;j-iW2:;16&Mc,݊V۹#Jg+t g6ەIw[w>vu`;4l=j-r _ַg۴ϛ鷿t, ¶,Vhg ~Վ2q:ơ3[uuMOs4I6ѓ/6 qjIOwQp~s;NvVBu Ewu #29t v ^9`#ql{yu5,N??6Nôjqn*_~%}tܺ+?c!6Dޮue~[K^奁mMR3q`;؛okE.6+z;W}g:G, {ۺ6wtϷa=ٓ8 b|"1cF.vdIe][@VbӪ}86ŕFF&J`bwܾ/ ܟԧ7߼ws[v gS`o[o-.]W{zhh㪼ہ>;5fW݌>w:*>6t}0n~~T|h97Yy>bw.MnZ;׿6Eciv)lT&1nxcxWF{+/8*]e^9,ԁ`h`HiIoV݄} {&8뮻Z׼5nşgGyd_z.myyqt`_ [#f]M>[B\fH&%wp1wpM:Iu`6*@m6p0vHť`08䠃M]zqM&&JV3^[<.絢oiO<5.VewM9/n'ظT,+SB<*k]czΚv݇u}v `È߭8URe)Yzأr9:sTj{^Z?я[ne񖷼noۡlńoA,ASN| mM`؞V]dqf7Ty1]ݬdW`4~bw,ji:E`؎i'vbm`⁑Qn|[Zu+V(4_l%\2pXmFm`7Z1q`v~;wSq*]jbNj徏w1Vi3 ,>ZV3 c`-??}<i2gIfoWn۟r-a⧻gf`w~_nyI4ֺ[V{}?я ->/_PT>C5\Ӛ-,5՚_-|H`q¿wSC>lt3}KMȿk~gdK'm#n}®7tf# ft/v[-zscƦfaB(5X,˷*mlo`WU/V3^tgr$C'>Qlu!=_M^xÑG7Z\V]xӟ]vYV[{xxG_mV|K_j;ëM` 6on2`iy`Ѥˇ-O E[ [@:}mKj4$t7usbx zEakF9uM'`<a-[FcXΗ&)m=Z:lc^׬FH?m s=7`?ϊw-G>҂^7{ō7ؚL (E~tS}AD`}o+v;mfޝ-?uX]}n1񲚨hǝvx٘u`ΟJ1B:V5+sY8d}v!>؊r!Ů/fʕ+[}kl"cx=}_p*?|i]vݭ}㗶)ʩ:"׹گs۵_O۵_ ԔʢoS:uR2~,04- k`6b|MdZ |/6hbxn:[r@;Z6 `52:6LGfwON27*vi? MOj!7Dl}ۏ WL;QA F-iw4 @:fI+[WS׳4VVQY<5+_K n{ylt; FKE¾&=rɋݶ,mE'fo3`:viy:hV_vQIEF{ꢐݼC2wⷯ=-;8̍ύu[o-^W/]sU^VVbeV}of ifWu[3+2f{!ROG>kp((RTZT p-@Wf8.BoOgye SNFlT$QbwUGqr>9+M|x57UvBO}W<د녺oS,,;lE{f3gƝF`Ս8t" .lu"<#ٍMu'7`Bܐ558֚+/d ^ Bu{EOSVSN9xH O(:vZ˖-ku+^hQUXU:E^SX?~KwQHgPhm|G7?ܰp6lsvFlT$D6 t@OL|;GL$, d.jfb-7)JNU׬XM5]-RuוºunVd_6m/6[o?>;;wnZU)f~>ǭ 1U&cy i5]ֈ tnl8fVleyB>jRzXur:ֆ>sXո;Vڰe0)ϘtLdlWI?mMk9_\wKtI'x`5{Y)Q*žzVf$ֶ/(]}n<7tbDhS2k[+8 x ǜ*u-MdyҔN_WQ\g]O׳Q_>JdTMR nhHԲ9ro[D '|r曯 o^Ʀn]sܶk 2<lOy`&Nr`vmw `nbqد~n@ws7Io|cq}Cnp X߾Jt6VE[n&J6R+-IcqT;G"oݷ2/cݖ_x-) 2:ͷgfVa7Q ֻzm.== UV?(x`uYlf42`nߟ uS Xt~O8a.7u\<\o\lRnO&UeA0Vp&4QS]v#A㨕l~cٸ~\'25 ZgncnW]y{c]S\W`Ea7sT= 4r a57֕=5=96S+2NX=~Գ;I .ݒRU`$V0qT9yw6??:BtڧS0ky:}]YMj]>lpۉS^+_Jk)+~-=(~mwn|yrJCه)uh5~]_?k6lzl DIiTR'lt; FKEBWXBlQXQi`} yj_Z 뀳 >R^{)Y`m?]ϋ\4nWp@kb[dϫ9ն&X[sun8[ Q>Ѿ- k8'IPl"6X &(*Hֵp AuÞA6|بνVպoU]vokp*nU Vwviuk_Z+n,PPWU Ѯ%ڼ$Dj+dQbJԠ]Vk]` f{6;1لu`5A&qRv1JǻtT5Qԗ_k'ԧ*elu댓-l=?;J^6*`Җu 2,4е_E`mlٌ51P9k]٦b +n//|akYR?<ȖEQ_ᆱj&6ؠַ؛nmw AZ+Z{7^{m/}>WlF;HG]{Zcy]UohF|;M(P$Zw`fIlV&`R:jZ:LON4udPY-}Cn=\w`EJ7qcZ"׺I5לؽ]w^qnҪf0~'":GalK` LTomm&G`󵁑XE誺m&`עekhׅ؟MX{[ɚ`zs=*vw^zn?U]˺ھ<;ZGV3 ˶Tv酗T.ޠQ'|;M(kYl,Yv=m׭^"^Lbtl0[;TMU `b+UXiok.g} `5V٪m]Y@+zЋ^RVv1c8mW\}ݦz)l49 4 vr> ;y>~,"\=8j&}[u.Nq9裋]mXgDQU۠Wo^w->ymvs6s95|;M(kB8.J=l}[dAt>v[kVagQ?kt^wZ=uZ_lٲnÚIsλ4ŽM7%;Qxvp7WB))aS`؂lO(9^wuŖ믿J`8@aZ{v밺 enmM'yҾ7߼&W׿^̝95{~vk__r1Tw5Io}G݂rb"\NFYWO6>åNMBVllPޙZL t\7uccWz3ֈdKW@VݎMTvL{5״R\v~g5ɷ*`ϟl"uC9>4WݹM/^?);U|A]Sk]WnV@V/| {\p \WGث;j7 lZ1ȺkѮ- k`D|'`Bzg `o𗽬x/1~Ӌ\%X8)I&\vL{UW~{ M>Yp-6`"! 1 ;.`iMZFon*馛9._ܚj;5i-^vemӆy`Fl_ZݘΗֹ6ڨ5C0˺ASN| vhHblciG-e%aݠz;\xqq׷V2}+635U*iVmt\u39G AgU>+U w +l:uhע pW;-[ &}BFmCyM %m\D`_Yubu7I@v]7~Oo~X`떷{k2'U>E{]K`nD`Qqnɛ9s>N*e={[ D*2ΜnY^O?[O84/u?uMU/:4 >c\g`~O,t奁mMB0۝3K 4vaf![5<Κ՚xG|}nkwL `?϶Ƶv1nA`_M'yl .q>m lMQœ6U%o = `\N`sW]uUkv[^gZ `/B0/~>Gz6 2+<.J Mnʌն9e y.!S Fba:1c,[G]h X7qYkPsNum^}]mx`q콐7`N67xwxXY87am'a4[Mx FA>[o}&umOkNjcER;ݎ=BKLklq. cy4lQ\!Tk&rР튫+ g>Ph9q(*pXZ|WFoZvivQ]`t,5 ,&pZ؄+'â@;XM̤H⨣j-6E]T\q_nZgT0`X6C!"' ߼kEqWn*nFڟsF-6@%ՏRPu|`${Vk= 1C:3U,;Gw=*jYV阺+w?VaEzu[´lOB WNE`dN4jN;q{_~yk[ti{NfK/${L͙dyXkHYUn~b~}JouUzKc)w/`|Q*o,ls_Fmb#"߀O|-/~X'!؄+'âl6wy&`Rbm/vK̝;zYZ)7ڔ` |rlتqTE[ `n:n`X6`Um V0 fړa}' :0v, &dx۴ H ƥPFO`kK^V;m.X;[3'SPP`krlFS鸓Fb;GFnn;.^]uםUX6__̙36qE'&˖-۽SuZ?g4Nfp۩lm5XـN͝7w{{'C?v|p_4>˝``ky׊kmQo^xI60RDKx\qK_(S"1}ф^Ko`pnPAV GyvAk9. r)lQ[\yُ&J> ҅XA} ]k`O]sT\'| ,׺wڅ`8Ku $N` j0#@V [#$cepgt^x*?k)NAVٹo}ؾ `>Uÿ0ϪkuU~G>ƏVՃPVŮ>l&`~`ؑmHnևW]u /8GfIoM&dzk-2}n TemP; /mU`Ď۠ EkX#mZٷq5*.ku҅Xl۷ozƿײzu5xViUvl~`5  d +m/k]15 NP +bM*  2 |4ТzR??5>)x;Tf+lS:ǠJe+Ҕu!6k*]̵bGAu>CmοgrڏUꃿiaew; CgI6g*-Pr>XFw&zԤ|mIaQCȮe=бAaYuOv_M i 2gG=IOŽiT`k]2'aΠz;ԢeN5дb}K;ԶVUCiPH(E VW~i`)q>{`17y}ز/|t;~({MُC˗.kFjPaztY]~|,M>r/ ZwRWo3`bB`AߘAY;X ZUECMFۢcPU^NʉkʁPՏd???mwV^Н-(, 8$XlDmMLv=n,nXo`^?vZ U >M}*'a4[6 E-c%"a~4vzviҮZN" Eu~8 l *Ch?xCbC?~@<o?l?`ӪK&x^#@ ?.Fp.l\8~ +ˢ\-I_m4c[5 %5'F:f~:'x`˟:2wu{X{&h#P$v*1[`XcѶ^#l6&,_hCX4~7ܘ?35e͵? v_VkUVUׅαz`.V^~7eHit`؄|Q)J_"6PSIMh?HcN"zYuQ׻.ģ`~ZW? ҇il=аQjf1,kFlLmx{W~LVk5y9az+[/@?tB` (E; t`gRu@~-nz s{z6Yc˺c`;pO#ilT$PQ:"XcT4L>X6m&Ig `.g^1#c7=| g' ׉gج{ {Όq q:*N]e2rf]H3RX6y&U `Vl΁Nz =xgY)jȩ]STf^YI:̓W`b`ؑ&R>܍Clb~s+ 10w 3:ͨ2(* WA6\k` |Aq|^>lۋwnz~wL o6p j36(0dXc<.q8RC]`5qCn.l$,{0R Y2dCy @ pZ3ywu4R,Q[|H[.-ǁv6mҿ 6;suBJ(hk*}MS~GP̎#_H.^XlYԶ_|qmڳ:M~^{V7p3ΈJީQ:-Oq&>{כ=|ZZX)56 H)0{9w֥su|Ӡ n酗g[m>s7 oYN~…SJ哷*vQ7|tYW\}]6",P<`.6n֦Ȭ"8:ǠN\EJu҇cG혎oWޚ!tct]+gg]}6&Tcڴ . я QP(8 paw[1HU_ȭR4-s$ʣtSl׷%G4lYذˮҰ۱`1P*EU}ؕ"ԇ)lyX޺2PZֆݬ꒺l`%߄]AhP]Ɯ[ !$[ Sӵ+U?6 p elt loB6ߺ +>~2g #uk -16 btk?ln'm#֋z3尽]g`|]%Wt>Nq* g!dʢÏj Nu S12 %+SԺmCz ]`]&vެYn9s iPu||o};w-a&qH>eXyjMo$Q~e'n~7L!iL??S31TY{yfMh=?{beh  GZ+-;،+/k\""-'3)1GflE;met옮<:gxGX~2:ue}O)_Rs k7ۏ@gGyT}6U6FgѩI ,s&(M4%RS57XBiCgvX6U&ӧrp^t `5X{Lo'6Q`<6ɰh,J0Y8u 짳ډvkAup|կInQ fe}vnLԢ3*Iܰ;-{T6]콡rW/ ܦ )hdz fQ`A6ɰh,;AV`Թq퇓XgSe*sqֺǺ]m4'Ͷ=sַƆzaxn\DMΦ6a^mMe`݆6cߧ6Bg#ȹ+&\l•aXvHK?:ol8qA'󗪒f7F-YgYb7}ʹU+ʆTMtoTpv #ȹ+&\l•aXESsG<6X89} d2-k" #Uaڰ|׆ȾVm06C"@`oO=Ɂ, @lecam~7\ְpWl8N $Y}r 4 C`gP؄MMr2, /}:w6 -Yڃut* ' `OD`Iʺ{? fqPdl)w'8l 2:u<:#}$q>+E^Vllb#wjkα ,kYT\U?) ֵíRqf@3 ;p/kEz%K k@je4ialB y~fkww6ͱZ~~gX:P5.3lxzd*{^tj@l֡GR`>K 4elĵ^UKTuNUxS?i:N֕]^M^M`.3|PW^}ΟG`Xl 1nƃZW9MA `)6Z*(b"(0& , ZiFiU_k.F{QlT$`@), `@6F;YlT$`@)p*2<%¹)6 h5 3!f(0> 8rt. - QPPS=(Nl`X6FlT$D@@qo {u5l -`] 6Z* 6 h(3\яϷT.iE/&Q6 m=- Q _滢a(Р,r2e~lnhH*[wեNMBV@;@i*Y/ 96-gm-+&\yl•aX5 dΎ7em#ȹ+&\l•aX`lh ="l5&\9 `q\v\^BC4 ="l5&\9 `Xm#ȹ+&\l•aXǵa5' nlE]6` , `@6fQ`A6ɰh,ڰJa6F{D)I`6ɰh, 6 4llGtK9/:5 QZ6aC~Ghy)8 ;G(?Olw`.3|PW^3?ُ, 6 4ll#FKEXLDqmq%z{ 0w`(6Z* `Xla`,6Z* X )0s:޶nܣ(H 6 tclwFKEr'P PF''sl(6}`"! x 86 `MbRPPXLe>bRPPX>8MEpȇh 6 .- Q _&\ȷT.:86 flt[FKEBWz 4LyIl _`h6Z*@ %OX6_G'lnhH*[w)\)Slh5 &l"l•aъ ܗ":86 fltS FKE㓨lkة`qSs)6 kl[tK9#:5 QZ6a` ,R:6 4llE]6` 8 ;DQw]S6fQ`A6ɰh, 6 4llE]6` 8 ;MEpȇh 6 zD9w؄kMr2, ,6 ` GDsWM؄+'â,kÎ+Q|fuה zD9w؄kMr2, ,6 ` GDsWM؄+'â,kÎkS! klG4/:% Ql&\9 `Xmr)A^`{UOUA|P XǵaǕYQ3ꎺkhe b(N`Xl6`"aD`1Xǵaǵ 6ڋ`"! H`Xl6`"! H1f\ۖߍװG)uGa]RF}(c۽v6 jlFKEB@@`qqlhh(((e.6 h(((qm*C>D|mv1hH*0ኾ4SrHS(Sw6 m=- Q _滢a(Р,pj0&|mnhH*[wD|mvhHb(g3gm9lmvhHb(R`S7Al.hHX TB@QN<$6 - QPPSQɧl 5`] 6Z* 8ԜF`@ 6FlT$D@@el`lFKEBW W->%G4 1Q6;F(]AhPv4FR6`"! oQ`qzSpz)v >- Q _|.ŒbQ&v4FR6%`"aVL*2-w`qzSpz)v 4- kXOR iK`j zlvEKEB6_`K,ч%4Rp) ]4 M؄+'â, b6а zD9w؄kMr2, 6^ >`3(r pdX4`Xl6C"p  WNE`X׆T"@h$60<`3(r pdX4`Xl6C"p  WNE`X׆W^Ëz=ڧblE]6` , `@6F{D)I`6ɰh,ڰJrglG¥ozUU>?mnk6_e*`Xla`=a]W巶_9^MF[ SJt6^Qga=E3yw5^ ѮN}YK/C5}((0: spF@@HRzhglM=B@zJvW60j6 ((0,Nw6ω"B\#?XQsl PbP *Zt=lQv yrk\ P`$`qǴ~il`x6&Ѵm\P= ˂4>v r@UVSq{!og%#o\Š|reg`d=6 # ݊~j+eiTlT `OFouG6|9h>֥€X?_kܣmRz][ūAH%+zhgl*!U]TS;Ǣa[j+ >762,)_23.4J wa _ayv^av{q spFرs-kA,ł$,jc>~1x<}P1cǮaU2E t=p/{X(塏;Em-=O *@`lMo,j(U~da@kUBǂ/CJgk t ?+Շb[&M+)ڋ@5XZʻW;eׂؕ2\nVtp̬e%%;M7K$@is |~tR Ee_0M@^CVŁ5;F}xZ^f蛆KD3ކ<-~WfS"6Gvx6•QP9z8h `fl3msRգ/ z*Wt{6uXa6FL " @[XQsl ct(Yz >ۯway>`T93LKul͓G)fMLu8|sl`Tl)A@@9s؇pGŁ>el`x6S"@@5?%Çh `b8H>((((7pЋl yZkpZ+2F@@@[oJ8|60*6pu?eE@&ݭ a6н lrB[@@Q@ XUwª@ M:R`a7C;lgm݅!P0A_t '?Y>>9&+[]rBVT־cؿ?]4?JcW3ohƬYg{@l̘1M Kdռl*(چލ=t(eЧ_d^,UWS1u_9:麖Fy?je4q5&_5 v{p޺s ݰl`\m@_gF-'[}nq*~oY ܉Q4Y) '?xE#vUH~A_re+*i #5:a7 `@6:qoC&&TO@h`%(0{Ծگsѷ҄ gst;u$P!K^,UXh'k%å `>zX(=9ݩY)p-}bl>rE3gu5fq r (h60>/zr@>o|_Wi /-;ς;~9]ߘon `~ G=P;׺ۋ?K#g6k֬/Bt@34qq*'dO@P)Pϕ#*>\Tn:CW Au!u` EqrĸWxœrk'քQr {VE&gVrW/u2<^~9{DRbi]oAu/Gk;"?ֺI H ÞN;v!w l wa޼ ַ f>5ȞXom `AZ(Pu~[7a_pv'u$Y{u=<&FS`bb6b.U@,clso>G8g-j"h+R >6螀6/ZY4պ6QAm,-fX$@(, tjz0zUVČՃ]"GSmgϞ}Q#6 `g[̚xx?k4p.{*Njd0:[ClKP镶]/&ݧV\6l?z䍍-ln6Ef=s:akq^ D +GFva@.6pGO͞Vrkۄ}(i'`0,CO ,rփ&<ձ0O|529ul FO͝q+PS(ؼl79y+pZ᭷vMǝTh{;=`3V6 `y#^{[{u~"wxϻ٢S~3zukw=SwͲj_y(( * :-vߓlh `@v6`%SuG2zϞMS6LWA5PPPPPFu޴~WON.a&/k=? G3=AJsf2|PPPPPP` N­Bi=miXtLZBB+L^`*AYݢ~(n;qjoaܮAꤓ:V9PPPPPd Mĺ{X^Gi5T ([*u<:VIaewv F5A@@@@h\XEa=40w/~RFR ؘA,oyZDW=2Vb(((((zeQH[UUs= NFi@Ri>eZ:++#ۃqr* @^ vq:WA}WMQ(F+#k{:Yqm:f+ʤtK*ZG]ں!D|UNXi2_YX=>Wi.~:LU#0QPPPPW `}5ˢ|u  ,iװ|>U3UZ2{SY>v~̤Nu?Wj`rZ^~ުVki.u _QPPPPPT*U,<c?!G] ȧcS+'^VkyYe,Y>e[$Q_O!l[}?B\hGM&&E@@@@@U0@3X#ief@,i08a@Vآ&V)ӲX,[qP76.jݮ1 t@ZӪe윲n"M>`}.ezuQ=\~t8N].' ehv5u1FԕE"{ʫ@cN@[ǫ`} jϱ"޷p|o: q(((((+PUi죁:+P궚 J8+Ֆ rݏEЯ: ӖMskPPPPPPU[5VҺѵnWuޕ]4xentK;QU7]vV_X+lB\C@@@@@(PXժbl/j5*j]ҲTU*w6҄P\UUePz®nY]lvi/Fa];yY]@PPPPPLv[Yl7pXc(\ZzKmUe͇*ѪL++ge5mMTf@Դ@418!DZM[іQ xPPPPPPQ.d>뎪og0vXAct MYwU,bە߇[rVu:Oԅ״y*+}+:gj̮3YQ5u:_*CcUzv6tW:+WF:ڪ4`UnHxkn((((((*Gہa\((((((c@UW1E@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1Pߎő>7IENDB`cinder-2014.1.5/doc/source/images/rpc/arch.png0000664000567000056700000006410212540642603022076 0ustar jenkinsjenkins00000000000000PNG  IHDRp HsRGB@} pHYs+tEXtSoftwareMicrosoft Office5qgIDATx \gy9g3q[j[ Xhq()X)ϴ~=:3mVqhV9xTy2^)Ea| #p)SK43:v Y9KH0wo{[?sU}~~o@vT \*!9 Ge#qUm, q }}ΛgtwY׽o@XɖF.ʶ[s+n^-;uWnhxbV>Mk6u9' N@ל7lt̗-'e#p鶹J!p&py\[n nWv} Z_+e+ufzC p \kdӆDo2 3K`N|7ls8FuI{+7nSx^9[k~@#p5뮹~n>KDޥ%iUӿy˹m̻eV p~pL[$Nn p p@ΥYuT>bs屺)7xJ^K[Usuݪ{_* n w9nI LMU@U_"U&V'dZ`KBDdE 7ɀҎLiI'p@'peI+bg[mGs@% \'py ѼymZR*N˜@8f89 W+rfDlۦZuͤwv\xWp2U蜛ULĭ2 nl\~p0ǁ&˾yt+pGۛ}g?W̞<8@8@=j-Q:ArU?Շ[g p T}"CT^(z~  p@յ@1_[ p{@-zV1UL"ކ#pR%ai8 pRU'a zi.S8@*:^}z p A7˻i p7WΛ6c#ru 1ۙ p{muM6, p}K;-o~7Ьey(]y啟߼yM6u#MlܸBaEٲe˅e{݈e?VN @zg۫_պ|辞Y۽5eNc{ ԓߖ^#Cx6}fVk>}K'}ǚA-2(/N$\2"m"[ܿ7i]DD$:vׯ4?~y8Ν;|'Zrk׮g4z'4 "6rOiYN4+p"\d_\+%Ѭ_8vX+5 /Id[oȨDgff>&QEN&f;ԗZr8yԏOY^ "q"t C{qD٤?Y$n?Vx3g&Bڽ$xѦD/YEf9`ed5|aJ4<ۥitff{ed+++S!mq,,ѹ 6|5$i8?9+^ \L 5"p i$VH&Qϛm 5u"pC8)#3%ږihfƍ;33+t0i'DD,Ҭj3 pC8I*#He$|#- LӼn!mذᖫ&e鸼$m۶F"w.pMdJR4m8҈ pm.˽okv…|gɈLKRK'y_G;xky,p~G$Ft2G~kuLC:8 oSO=o^'"^{G-4'9 C qeQ%pRtΝߑ/p"k?pGuz;8oh2 \;KIKS9an@`lN*(IxE^D>O~Z%J"`"Pmּ뮻ɖlKǮ#O8(p|'}{ُ/p;ɶ*~տΗemn$d*iFC8)%B'5$tiN|}INEeEt/>*hNoX񿇼~NU>w_]W?틧ø(\q!p C^L8۔ (Ӵ Q#=&LY_"W*p?X+ UwwmfڿIh]Y}I9WnýkEnx厛>!T0q*]`dw{m& )P,$PYKfm3 *E| nq/I["0'&IM@8nLNRsܟ>ſ ?Kj^s5gu4 NrW|;Y6 ZT&oe]F>ڪv?ML.#?wDDeLC8Pꫯڇ>u}x%ͪ"pqA^w[n&&pZo>ڣVn|9:"HVd2Mee85]G  mтvK]F~|}wҮ~+eV#۶mDZ^2[ٴiol (p*T6zr F+оty.9m7q7odPXo\o/i.ݵk׳ҿ0{*pފȑ/V>2ҸmHPB?,GD佢Q9v@&Ñe˖;\YY^裏6_>i&붏  pU"cڟL3-IGT"/mIA86;;333ۿ.ٳڦS+|Y8ی*BMPjI?7`#A'E?!Y@Ñ㒈]c=6u9IA6I0= gY1d-fNѮpFʺ2@͛(͆RjRs{= ]tыGI`"Niis BF V"pMj\m:YF[v/!p=TvHmOU*J:{MqܹL[#G{KXS}D̀)Q.jd<4iδD4凊.7wkojeIKyt^~/ wC:{lNSqGDHF "K0^ܫ|i %.97rH~ 8bO+5,8@Oщ%AIK/ȔE#y"ocƍ?KsE{pߋDDbǢ pT \*;I*8ynZ}^t[lމV%W>o[},[G88Fi81Ras2VM Y[u(鲡&T'sx{ߗiYÅW`Qp \vC8@{INiڌUEyiщޢ׬}hBE8@`.ois(N'%h?~NnW$:"0U'$r$B*aÎ Ҳˋ2)(F%mwF88@C@*@88fd~^@18M+h=AU/IL#7-' F88^ $ -KWy!-B8@"oEɼ4d CN^͗VOV lKk2)VkW~J}8,,F^!pPNu ҈H/,cבZ|^dL[ѓ:WvlQ{ݞJLSe}9D8Pi\ؠͬPDOh//u:WHTL5Gnr p-^ɰSe5jהvg?/+g*zU|c+p*AI͇$ p p8mT4Gr"EVO~6XN4=lDC8  p pS#p[_~ |7{CC8mx)y%N<98@88@8@8@C8@8Bo} rȮ/8@8@ƙNn]E`[:Z0wח8#(E4.(`Q]Ku[K>!\X͸9'ry..nl!7n+=3\}N͵uwmo+v'!p#*޴~>(镈^Q7h{wuf*!v?>ќT~;"q~,>r躪F!p.VMs9#m }IXAY uULd~FT("p!pOv_Y$nNVąXK/яrG:9بX}YIeY[nL)y*&bWw&C8@5ڇc/ymjΛVH#p'oU|ZUrQ5g}e'e8õMWqb`6ֽ抁\4mO/Bt p7>ק^hom>_|8w$>TupYv?7ѷ{ K&nIB94}@%#y(UmjU~o6@%.%`=0m]Wn14mޔܳL{?g!p I{aLCk˵'8Oa+plN8K2_85B^@D$fT^!p!p@q-H!p7zH Vd62CR6(%&&ͨڔ*5!p_5nڌM2}%/\&ӉQ]G%ǹ #8C\jMYVݘ*unN.H3"}ߤG8CF=D`YĹ*SN ,WbޫĐY_$ \`4\s/P8@8.k0ebaJej U3F :u]}As w'7绻kG߿3_U/I+z!p-vFiIX%_gmfJeB hVtpe?3rkK7\>/V`5w GW%&Q7i: !pHwвYm/H['` ߤ>pKȽُf^Pm:#pZ'ͧ0ivg=0=5mЭMAETڤߛD$H/8@8?\޳\ 0NW4P .p \ tX'pF?\M/:^ZJKGф!p7뀤0^n 93d"knE~]n[Ծmf=1^moe+__ovN8@xy>CC\*.iK0_u@E|gZN7%))8i T7K?88nn2'TL9MsUf7ɼ38[ӑ&TCv 6%z@FμnM/j8#y p\ّؗQ!p]cΘݫyNw|g4ij?MK=d9"9N1 ppz8M#"zM!pgvlnv pЗKӈhTȀ!pK$n;%pZUp*s!p\q-Aj'HN襤ŞD8TN"nkŞg 8HEN8s78kځ=KG9NJC8SH  Bഘ ͨA !pd }K2 p!pC^@`(gn!p\Qqn8&#Ry!pK{ p0pc*!p\_4I{ B C8NqN8; C8|&i/ p0XKMQ2 8@8 K{s8@8I{Cːg( p\F!peH(-pg+#=} :#i/ pq'ه'#CǾt_s۫_N}7qGs.wi I{C8h{-Y&&BҒ8_"p.iiJfϱ&??Z}0M"u<[o ܑ2'p$m/,w&m#ozs)?ҝw4Y8;-&Gܴ)5Ko=i굛e~/} 8䤥TYri~"y{ byڟ9w'#{N8NxC8DZG&VtsS|'DN?=KGA8!q8‰O Y8^$E8!q8 騒s(!pC#pS!prHڋ!pC#S!p6sBw<8=7'ed@Zfڐ4 Z 3fg7~~מ"25.ud8!q8m*6o/$GG8!űMexMC^/BhNI-g>B\wHdE4q> 8|AhN4x=\+Y&!pAn*eM)ZEc/&GN8c!pm\nZ"p pMn`By ceEhB 5q|p؄:M%85Mj}m$pc/ѵ2=)g^U=T\)amho{8ܚ/`~6v8;cn"cZbIͮyzqY֗8%)C$uȴ<385UEl3vG'Ix;=w FT-є5^3sQysЭSX0f4%?Jcs}]G?xg=pxi}w.E!p5iuhSmNS;7kg?7>֍S+h.$#p]nx˭."nP~tQ \hQ^q+ѫLkȱ1;:Y+\c]tAC8n v/nJ?ZOG|نVY}mC b6`f`ќJf;%nzNj%Jq;n|9^Cw'|I~w>̍{K$`c-p˧N)Rg+ _DRJF&T=4ݧD⒍m٨8]?TTM]7 ,8[0 70ȼ<.pI&{ jXϻ>:&C*IQ~pi' =v3MxY~EX_ܠFZyMV\Ɋ ڞ~TtZ{j.i7d>[i+/yilBO/6 7QgC=HRG$1lG.t3& K8˻6Q9<5MoH4 kO'?hD'.  _)/˽{6&hGM 9!\j 7Z4{sSFɛ]= \^ q֎1Vgf#֎#)'&vΗa$$=$ä"8}3FB{l4=_CWX~ŏN?\wMUݼm:Pň2.cCCAͺi$mGNE"JO}j2/&%M[KZ5Z 'fIzh]j%)6{.kIe_n˖󣽡h} @F"pClBuIMX>OBQ4tqY"նoM9% 5}jGAH \:ǹ8:Bk7W;6@/^ky5t}k.A4Ku¯Gg`;%pk"PRӈu칦sPkz[)ϵӈlٲiW2^JV K7ȒY!p}( T;SqM~"P h}ŴSd/5o{sE71d_I()AJ!}#ceͩr~K42Y;6mܱ{MȡLIe\ۚ^Y1 M |nu lbP\oB6RPs?tNjtzct?Cǰ} i)Nsv 3gW$p"#p f "p_#6!*~Iuա=iKLisD- F[?+NEfԁK78/I2)O85߱=)GD$č"Ljw؅dI>rX:(AaN4!$R p4C 鹥N8ӇͥX^lr(>oR)PscoSih6srIlS$5}gG&vJ8V=?A/pXz/t"ycr!p pCS4 дM 1G*IC NK)-=*Eo~6 &ˮ:{ pU3i^$%ErmʵzٶowF`h7L[1{@H oC:9^{j@7h:$NqcMu.n8 bP#!p9j"uE".x!p p,KsRk IjlWN /͸}u"pMY?IBe۽J*<8='p˒,4'[^#wv]nٚ~6N$p~~^j(#pC#pc)p:9%2Vp9SJZ4T*Uv%+O~Ύ:Wi ?G+lY>zqc!p)˵'v]ۋ%7qv'+Ez!t_!S1Gk%#8!q8PG)pK!p{=^{ٗ8'#G8X rT5P;=^.'\rT-&tϒi3h鶚K\ŕq:^8%7M1gRO :+TCٗ3iZ}8!q8QS*[n"NQ;}٬iH:8+uݗ?AL/<8=7K}Hj8/89.]M`:˝+nn :x9(J4"pKrjϱf&dt_qPrILkx厛>>G? :? C8sx87 .'ܹI.p}}GNm_<OC8w&ۑ]F/t"V.p:y9םǞB8[NCk{%/ pMMpҜ!p/ps+.!( pH{ght5nj7*;}͋.!i2%-U4=ѽ,i e{ρIõ~C 86߄1g 7ZK?C8J8;\; -< p7'ͫړT~er!p!p!pA'H!p!p8y3C8@;OʨT8CC#p˒C8@+pC8@\\]=!5R8@8C8.+TqC8C2"p.'ܹI(p!pMh+p85_C8! RmGtΞᜁn8C8=#"y!p .;wPR9oC8oeDNJNI+ppB󩧞 !p%Eͻo^}#p!pIݵؗs8n$6^dC8k{p!p7=\;"p!p\FN[99C*pZ5=!p@q8}}ӟnEgy4"!p2wv z<97Tѧ|>8qC8D^*pBN8@ DBR!puY[y78CpKy|8nh8|8C>Sι7pm/7Ji!pu}/G<7p MIE97pӺ6&B8n=G|I88Cz:q> \$&i*!p=.'9  E%?%'Є!p|4  p.r3S!psiIy!p p8)%8C"p2Uj5C8.5;9 7ț: "tRJ C8~,b? p@ΎFѧ"sA8󼾻wr -@ ܉'V+3ڨ!p6 pܘ DDz-99kG/@TN1< b@8K9'7 3w00o* RZ>!p@nF#\y啟߼yM6>7} Š[7oٲ傿e]l_9cZNFJ7k]}G8Cz>ˈT1ȬEK 1331.K/G*[z{m>-8}@Ξ?}A'?'ᵯ}"yߎNFl4/8}1 C8.\ 2!p"<lr/ȚҭGoٳǏ_kwDJ'El C8K 8`,E܈}O<^+++wnݺLC!p p-p.'9iN圃\.{[ltN:gle~ ۔biH⾙ Cos˜smذo{yE[iwĉ־5tƿ뮻n:yIF$C8@_$ᜃTNFJn߾z]gO&#'m-MgH[GyH@&_9ZrAj'?|TNNOSaבmؔv<ɲ2]~R%?]]_hX7F@88)%8 ^۶lrxR􏋋hYђyϙ|yt;S>%MLҧMiTqWfY8i%S%M"1Q#v?>coMm''$p{h(N% FgDb(jh+Kj%}6mWc+RC , \*x3{jie 9[ ,X'LW[_"^ *0i Q]UHJ6v"p=x0Μ9TMkN埡Y{GDÊXGT#i Uqϲ^rބۄڍ٨,/͠@麡"~tivW۾vJc*M4\or=5] ~2M8nNkA%L{5o:UmTt_ĹfčZA,C8FFo'H mSdsѰ_>|ͫ LTn"p pFj;$3gaBb?\J΍lU}fN#p  `@90l[pѪbH.h{BWksfCN _!_7=?҃!pr= ]CZyLҊʵrwm$o8䄻M0VpQ p!p^""z~0d!L~.jC&V91|Y?si=lʀWJ`F8`:سT=\} ps*޴F(Ȁ_BC&õ=!p8|V>0ꕽ*xӋ*1)s#{cwߪI[rIx~ {[hBOyh pc#p/_eN8n:PKF*Fƴ"&-!V4/M;Vn(8}yߵn=,7~\B%D:#D$!pEom#I m.gWer~=++yR;MpKѵsC%m!Q*y͐K WFLkAD81vSInzMkZ-f]ҡSw1Aw(֯k-W?p,K^85r$2eU쳑$On[ŀ)cdۊr@?!p*)&S`}7iF iM )@qC8 #p]CCFD8 #-vDKЈPzaK`3"r.an +g3]Mo. W\knre?ݚ'?݇08D~E}`:@Q;,׎uMpq ܺT^z7 foa/Fz\ Y i{>x& :¢W̾`*鶶iTCuL%[!nX~KKtT~tэLjɖ`k{w/מ@.gZ px=$'u*qO⋝\ޥյ*L\;" p\ZWtѰ7=Xʦ1T;9 Y p\KrM!p!,j{׊dõ=!p@V%7 pA2Hu@[팮.oI _҆ pxmCzKRvWf9+.j48 #@^#`TimTVk2_3mƑɢM\|?8I@*2*p~Ky侥?Mi_I؛ E\ݒWdWLbޒMŅ&u˗#u?*脳A_k_D3;ŗ]/BCG{Cs۫_7qGDN[/qU'Fk}"勞^qrXtSWt4B\g;|>O4b !}l}UZR'dµ,C\ƒF#_dɫaZJhYhKhUJlǟ^ @,r ܧ!pܿ/Vd̓eykeBӺn'l3MJjy'K5} g=fڼ[?ׅ8@ 8 .Y(֏?[)e5z=ѓn :VBr& :_ewM]'\ ڢ67秊=yf'oz͛gE p0Q{j" șHO͎"jg<=0]F$LI5g?vN'-#h4yr6gϘռFE7dRZylgA G͈)tU/O4O}="4"d6Y i+.2$Z:Me+6jnNӁz]ƒ\ p@H8'oʏw'=*IF▵"'k.VDԴ֧iM.{Y2U[G p}kxN%ITZn?}s}FΏMGFJ1˭ۏC#|kh<jB{8~MqҴګte pN/מ |(uNH>[)ҦJګUrfQ$gbuVNu`0HI8DoXJ *V*Gqԋv/2HU3q۝h9̴I b@8N%=1WRDlXR34CJ3O+qq42'ےmE |Yn(.~IJ,֢Il|ش !pɸ (sD(B7d)o=]+Y3yBhrUL~K[{ V ~t݊Nfy}ُ-gߨ/ p\ % 1 RrL%Z*:TwjEtb pyj-_ "QrHڤ91t*p1 杘j4ڊ%]\y>%BǤ~?`k/>k1.Egͩ +yNi m Hu"p%;xҴlL4[ݿ0B}5eUL_ӄ`G2&CElM8y:?:'1{~f+ !pU#ju#ꁁeoz$팋pi$oeJ&4[>4ɵ-?biHFMAI71|-xK5@:,l3Utb4I!& p5aOqvZd7qkJJV?h7 >.޼Ri[ެIDͭR;"LCH`puN;)iSMC/[\̀B׶|ݦFBQ=]&TP/0x봫ڍ:uH8_hqDGʶ{T.3f _i^nG>ډ b%UY22M뚪 ٮz}::O+Ifa{j?_ه~^ !p0T\(b'pzz>|R3 0Xay9SJZ%R:aD"pON#zf[XvL6]ͯw7.^\ oFv҄$I%WnIQ? $z%BBbASw&Y ^n'q~t7oƔG}tpM YHiz3{w#pzMvK=~H^ezopnuΛy @I[:r[ v8?YlWgж6ӆEF`0I8'_NuМqOC畴ļyjKbed6nW^[6Yy.|v"76: Ok'\IT V8$È!p0D1M1 BR^e.N~bM5P՝-[>k (SkQ8JfE%]].onFnjqi8mF$e!Tl׍:3#78mfИ^"%/WrQ ̳ͯ"pWiCҬ ^TfXJ ;D"K''"[}N viWN89I7o_ p7eyC`JGp uy]0rVItZ=$Q&lnޭS67om5 FmE3h\#p7ßo?zAo$y:\/oRm7'_e7Nk-SԨٶOW4Ӌ^@z"^*p!pϧrd@Ϧe +.!p%`G|٬2b.=8C`*k%HR?=Ȱ*# p&&[\i|hٸ}pQ7< KM3kn%ifeVs+*2O-*P!pW}*3׈@r7DElNmZC5MUdyM)mO_8`M FTD$7+y5:~mC8ۦSur\HMp~'lZFLK,BԡO-:ge04MZp5F+^\[k/_pڥ bѽ1ZRKrA \R=A]._wQI>! pᇌVTh fS[0^-Y#\gHe\-SCb(Ҥ5-4 p\zurȪi(pu͆)VG|Yo{fl 'pYH6Nde4MQ$ FIW4Q8/Z{[#gG+FCj_9mJ@Cĩt "j2 >P!Sl:*U0.JRu=:;@%ai12`͇:1+(`Gq$^>j~j6Tt 5"78>pc+0xٲ#OYx}+r!Ls8@8ٰeȹ A!p0 pTY~ e+njޤh/+Y4B)O}l#f+es-俜K9 ^b.꼙em-ՆB'gJ}/󾧢"NEWaQmO@8 [:n~/mTU'V4-}?w1f%JDI܂}rZU.H p(J[ɫP7Fl5-YjxߣNO %\MHa@8)._54ڧ%/JsM߹$R\U/ -m.e2=+RX=n0h ̜rk.ЯnMG4& N5Iӯ|'ܢ,8`XXz6Ħ_˙A%AOt|zW5uui~\L/@8Q \tL@lsZ[i޴Jq9,|@8 \3v) px0 8@@^BS$q$p;D`d<8IQSi3IENDB`cinder-2014.1.5/doc/source/images/rpc/flow2.svg0000664000567000056700000005775012540642603022240 0ustar jenkinsjenkins00000000000000 Page-1 Rounded rectangle ATM switch name: control_exchange (type: topic) Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 name: control_exchange(type: topic) Sheet.9 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.17 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.25 Sheet.26 key: topic key: topic Sheet.27 key: topic.host key: topic.host Sheet.28 Rectangle Topic Consumer Topic Consumer Rectangle.30 Topic Consumer Topic Consumer Sheet.31 Sheet.32 Sheet.33 Rectangle.34 Sheet.36 Worker (e.g. compute) Worker(e.g. compute) Rectangle.57 Sheet.57 Invoker (e.g. api) Invoker(e.g. api) Rectangle.55 Topic Publisher Topic Publisher Sheet.59 Sheet.61 RabbitMQ Node RabbitMQ Node Sheet.62 Sheet.63 rpc.cast(topic) rpc.cast(topic) Sheet.64 Sheet.65 cinder-2014.1.5/doc/source/images/rpc/rabt.svg0000664000567000056700000010200712540642603022121 0ustar jenkinsjenkins00000000000000 Page-1 Rounded rectangle ATM switch name: control_exchange (type: topic) Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 name: control_exchange(type: topic) Sheet.17 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.9 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.25 Sheet.27 key: topic key: topic Sheet.28 key: topic.host key: topic.host Sheet.26 Rectangle Topic Consumer Topic Consumer Rectangle.30 Topic Consumer Topic Consumer Sheet.31 Sheet.32 Sheet.33 Rectangle.34 Rectangle.35 Direct Publisher DirectPublisher Sheet.36 Worker (e.g. compute) Worker(e.g. compute) ATM switch.37 name: msg_id (type: direct) Sheet.38 Sheet.39 Sheet.40 Sheet.41 Sheet.42 Sheet.43 name: msg_id(type: direct) Sheet.44 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.52 key: msg_id key: msg_id Sheet.53 Sheet.54 Rectangle.57 Rectangle.58 Direct Consumer DirectConsumer Sheet.59 Invoker (e.g. api) Invoker(e.g. api) Rectangle.55 Topic Publisher Topic Publisher Sheet.56 Sheet.60 Sheet.62 RabbitMQ Node (single virtual host context) RabbitMQ Node(single virtual host context) cinder-2014.1.5/doc/source/images/rpc/arch.svg0000664000567000056700000004405012540642603022111 0ustar jenkinsjenkins00000000000000 Page-1 Box.8 Compute Compute Box.2 Volume Storage VolumeStorage Box Auth Manager Auth Manager Box.4 Cloud Controller CloudController Box.3 API Server API Server Box.6 Object Store ObjectStore Box.7 Node Controller NodeController Dynamic connector Dynamic connector.11 Dynamic connector.12 http http Circle Cinder-Manage Cinder-Manage Circle.15 Euca2ools Euca2ools Dynamic connector.16 Dynamic connector.17 Sheet.15 Project User Role Network VPN ProjectUserRoleNetworkVPN Sheet.16 VM instance Security group Volume Snapshot VM image IP address... VM instanceSecurity groupVolumeSnapshotVM imageIP addressSSH keyAvailability zone Box.20 Network Controller Network Controller Box.5 Storage Controller Storage Controller Dot & arrow Dot & arrow.14 Dynamic connector.13 Sheet.22 AMQP AMQP Sheet.23 AMQP AMQP Sheet.24 AMQP AMQP Sheet.25 REST REST Sheet.26 local method local method Sheet.27 local method local method Sheet.28 local method local method cinder-2014.1.5/doc/source/images/rpc/flow1.svg0000664000567000056700000010610212540642603022221 0ustar jenkinsjenkins00000000000000 Page-1 Rounded rectangle ATM switch name: control_exchange (type: topic) Sheet.3 Sheet.4 Sheet.5 Sheet.6 Sheet.7 Sheet.8 name: control_exchange(type: topic) Sheet.9 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.17 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.25 Sheet.26 key: topic key: topic Sheet.27 key: topic.host key: topic.host Sheet.28 Rectangle Topic Consumer Topic Consumer Rectangle.30 Topic Consumer Topic Consumer Sheet.31 Sheet.32 Sheet.33 Rectangle.34 Rectangle.35 Direct Publisher DirectPublisher Sheet.36 Worker (e.g. compute) Worker(e.g. compute) ATM switch.37 name: msg_id (type: direct) Sheet.38 Sheet.39 Sheet.40 Sheet.41 Sheet.42 Sheet.43 name: msg_id(type: direct) Sheet.44 Rectangle Rectangle.10 Rectangle.11 Rectangle.12 Rectangle.13 Rectangle.14 Rectangle.15 Sheet.52 key: msg_id key: msg_id Sheet.53 Sheet.54 Rectangle.57 Rectangle.56 Direct Consumer DirectConsumer Sheet.57 Invoker (e.g. api) Invoker(e.g. api) Rectangle.55 Topic Publisher Topic Publisher Sheet.59 Sheet.60 Sheet.61 RabbitMQ Node RabbitMQ Node Sheet.62 Sheet.64 rpc.call (topic.host) rpc.call(topic.host) Sheet.63 Sheet.66 Sheet.67 Sheet.68 cinder-2014.1.5/doc/source/images/rpc/flow1.png0000664000567000056700000012002612540642603022207 0ustar jenkinsjenkins00000000000000PNG  IHDRYiásRGBgAMA a cHRMz&u0`:pQ< pHYs&?IDATx^ ?pEPWJHb"nqGçDTB *"ʧĨ QED%cHL&1Im=3=<̽oWw_SU P*@T P*@T P*@T P*@T P*@T P*@T g}N۷oFm3Q̶xn+[)G!{84T P* mm}馛}|?1r;Z5e @v7Q^=ˇy7h555QCe\< *@PdžnD1WKW>  <6o~;wf 7VzMxT P*@@eP-|166P zٹ|Դv5T P*@@;v\cF Zllllh+WG;v9ϝ ύ P*@Ȏ=6d?~`6666.ḩb鮭1;kJT MMѥ-ו!llllͷM4bf |T dCF6Gh6666.]RU&]Ґ-gWebӿoZ8+C[m:.6666 r;O|VUOl ^,2fMNj0NȓC1X.&7S| _ ŹeI&fT P*Z'4<h}Fw33~*+@e T P*V7^8e N"iRmQ`.yT T@۶>XtE$FKoY=@lllnnMuhYLړrdTfW?}4m0 L9[mFKjXT P*@,W @dmQ=aKT P hhM'mmQ=]u.%?T $@> CғњGT `llllDlϮ=OQ1eOZK.grDe*@@h磾O`Nx# jyE!F"ˠT  `u ( kdlvEl F@> `"md ,V8z`x4*@@F =2DyxjX^ u{(A@ 6666i :u9N9 Ϩ^DQ6;eP*P4r)DѱKߵ[=աCL뮻s#)_9/QF5L= N/`25휅8 %YW SF$}Pkk/]w\>ǏWs{E]䔿K.jΜ9Ny0uSܦ͜g5֩'` N 3Q*@Z+)Pf>B@K&+ ` X> U(@e66H ` ^lp)JoXa&&I,6,` l޻5uVmm 6@%ֹK |`vW>T dBD פ==<lkXl&z*I%`x$*@r(@"mKQũ`Ū\zj~΢k>;>v!euh%&G lb}|/-_#a(@"mKc'Z9`[n%!X Ib/e=8B)r8hօa>C9U&_Y"GM{QxoXlnXl;ĄG+)i3g{ `3FG\_LwNG9KYiC u A CJ,oll,Pk`y[=a/+y&b?nf7JVs`zX,(˶g/׏KB`c!OSS oL}77*E9/P AN{@lj/ +R᥽aONNXl̨O)2Eaq)@KYK7y x Xv(edzYhzQj^as"'Ӌm⽕j6{" `pX*@GD׎e$K8'B&$N,!L4<#9ݳiEVU"*ٸSz# ɉ‰qd\ d ` 97pl,@ R:N{B'b+ rK[!¶E(|}ӌ~YS T " m/ 66H `F&²(1+[ <6USF` Kا=\XP: .ix^,>TV!mvnցrecK Ј1kk7m#*eZQ&ʐ|?VQlJ#̱ $0Ɉ NW>y|',[x/ {Y7yX7 4'X*W9A@,ʇAl/^&pF{PyL$ vɉ`vǝv"U_W>װ?`5g&&2[[ "l(pP~0><sHX,; vQCd=@Գ>I! !NJLµ|靧1B\h.8[Bm20dX.~/VC&sL@_^?")OnMuܹsziV%c5l Xly`^X+}b?٬+Kk/_'Qs6b{YbЉ2n:_f5Gƽ^BlN |f9~^W_Z.L 0H%zt.%p}?|RZ`4hP)OϭVSΈ^Y̋PO,Ao"jVg_y]_{냊 Wypd?˟^K^foCHfyvR/y>\]|W(,-7So}OX)C`cMyx] JPڵkWuM7zl{U޽K eYVWГK%֧e,<GVB!M@yڰ}k2-+Ʒ*;h&c.s\,ݲu+6N!,:KSz_:tu/{7Ϩ,k3:6g!<6 J^Q `voB_%E߉Gɱfn VR|ئ7ooг> S]` -mn=hQ8W,#کS'u 7իWGLݾ8~5$IL]u&` 9E?,Ҍv9cccc`mlgYs|,l[ظDf]}!`kj@ݙ@Xޠ8#F7xC^5Gj|숑VYr,Ko2E4+<ƕ:GOP9Sc3ks=!K؄*!:ֆ ^Wm~{Yj˱#fh8fxxe^!,:d,s;ҋ/=Xc|lguf jKKZyd`Ye#|a2k^ g dR&.Z֞1uAqƈVhpFaÖ EA5 ` Q.eCYW6lO'xBׯ@` oT;w.,r|l4,_NMMMS'L㐠8`j6o|7~CB6M<[>Kyr2eNuvkypw&e(?ͺ0-028i9,h}G1z~59c&o=8;Z $` X,Ee <럸\uH6QQ9@Lo@10ȋQvC2E7)PjzPy emB|^f} ,Va"(,G?zմin<@Ϫ?uMX?~SuMx,˞8J0 pg{FB|@s9$m(6Ӌ[ 4weJXt%- 8f5!=>SG/H\pBˠ6c)t^NH]pZh0aѣ6lZjU]!=sLէOj)Y, ` 6a_`ˁOMϪYF_ޠyoxXMFJ%vvi'/aaE(gl_ji9ۗS%وfmƎ>裺qƵ{ҩUz\QD%`s֓t6nJքz,f*L!)komӠR]v)o7=ǥL S0zY_ kN%X?)i{+;6'NrYM(A:czV2i V~McA~G{,pPE<&@+chM>+p6]l6M+B,8_Bul^}ݞVZt:=k_׺_޹Ոd٢l{k`c ?|?8qBh&7L m*Ui}>W{fcmw rqb@(<+~V&C۱ iXl-RvK{G=?\}]۶׿ZmV\,XShNX l~(seHHr%؉[US$Ne#ٳgP_)Mjv*+xq;?\T|I]ɠDXg紟 6fVZGuO\+C3^a3Vj>GGqSj-(XLd{LBًLdzq,n֘{Kl{'ڴU+Z1;0v[O<PI,E6fgHu FDѮ(^BӜI[/azZ,,$N2iI1&b(Ij'OP͜;B"c`1h=uu oxٳ:KCM:U}駉>LV?O?.Rl (le=f[Y2 Nv{>)[`3i륇x4.vj,.e`ᕑL)3 與՜^F.Ky8n~XoȌwy%胔rP1Ly*q#ۥI]r%&q1B,X,f&~ bR(f ?k^Ń>H `+[l}bAUk5x| )clSk6h S4@Sk ԬԼhaRX3,Nt CSR͚+[miُ[sT@dW]oT2lX`1 6mxa]ӏ5vpCue)BZz>}ݻ:՛oQ%_y['pLM'zȞQ=.oGNGc+@@v4b,jf?26.2`Y6PȎ! p^s5j 6 v9 ;n8oJX?O>PW]uٳ3fn,B}MqG^x {I 7<Փ|؉nYróJasGʳ}69?֩&:L `M`v\xmLM,Ʊ9 8R+m'zrFS%mYaEK#;!wɘ+Iخ`-ZcȧB|g-,oHou6 @f><.k{c]|X'S$39* `fyϣv"9x6lvI9! p9?mzBWP R gV:&w}j;=&MZ}քZl^HJ]ClcKmaQB<^rG km7l!xTk{zD0Dy_]#bRW=.5%wXFtjTsϩoQ=%,}: /r `}% 7:l0Ld/\O>K%BI7ݦ `ǃYW h.Ab;|E8&62W`su9~2mSH\xM]#t11BI{uPA,p}ꩧu1qSW\qE}#lP t uh:I{EݫJ8!IB o~ҞY<[wʖ !~]wݥ0$,cilKՏVڴ|=Iױǝ:q&K-7U+-3 ^Z$OUM+9~vjY!ZR9x~ͬ?fEVj`]ղN=Ƿf`1#0f6w3br0h E~|W_uޝ[~s`TuI{@8kv;YDL{:PCnnԬY2q輪.eK,\PaJXĉ` ̩ |ro+&YXշ~[]ry-e= u 7WꤣVWn-z"\x^7*[D8`zi>a귖jr^(/x~/d+o_Wc`csqw眣~zjwb‹uy]?6xaO<(;h5iXz<_l /&r lNeoNBXmN@"+0o9H"#)a~+!dIʖr\lC9&dC sT'z`. ZWj/j,ׄ}/}%@I~!P`'( aHXJ `S٧  cõSl6 T  d`1k5& ʨ: 96hmT*`cK 1ʕ+ը#=//'NPC[MK:~D߫N;[>yd V`|Me,,a  P/ꕵ6@fT d@,`PBY]֞؄Jke,$-C1#>*`c^ucZW{3'ք׫/l-{ԀexPuܸq(V1v"v;o,6.ǡ%`'% d`-&0(o VJPl{Rs0m/ z'[Y1<:ýz=X@묣~{UWy XK8&f ɘAy޼y^3^r= ɢ v@dwM 41@ DK:hq\mu_y&lnze+ȏ0`^w9AXWgl.2KXQu`_"bҦFH0†ixⷻᄏٓĽvU=kR`Xjc`W ^I[Hx)ݧErA2> `V,Ac`1v/`++kڳ'BmsgKXV:D&:L `T6,KƸժ !~%/:u^a}hu\U.S/f̘+ 0+/y`A)\/sZ½D6U];Lu : lX,[-RE0rh=t=>o_o&cdXٰc1GP \Cu\"D&:L `T6,KƐ,wq5g!;ݛmsgϮ'N&r_x)`Lt]j ܧ5$:X'QPF%` _c[;"P8eo A`u]^X,V\.o̘1jСjN.`"zT\>`l"<6,K0F :먣:J=c>sjᄏ6hyI{_&zgJK<}-D,Bh"ZTL>׏X'K:2m׮/G1eOQ9j="K%Vkxbc?d{b %KZ,ւuI#>[ >'O5ar.ӳ uM`v?lzEkn׎dFMMMSӭ}IN & 6 #,c.Z#`[&kvt-UW d{s56hmVs;kޚ=&[nEmmCLX3&lz lzE <Յd%`Cy?s`a'% DFAmQ Ɣ! pj0%m2O VсN:Cm.%Wbvߠ5Yz"P=O#}xc|kBMu5^H[/Ν;7t"`ueOMj{Z\"φn赕]o K6m8CYaA,֩s< I\JuW2JgDlo'~gtJ~V<4uV؇5 n>NQ=PݻP.D1%go ]tS~9s>vs᭭@~d-lgd$FMRmh d(Hz?~Ho\,:F=gyt7zc`` 7n,`#|Pa2(oϽD"R##a$x'&kJ`wd$FMRmh \bL:В7vM7U^{4N_.אq~4G?<$XeKM!`-ZW`jP>lF=K'S{>%; 1t\zm"4rԩjžiҤIb9z)-:vTM Ξ=[U>1mOd;HH{ ` 삣TKmma)9d}hS`U,ŀF$@$BnMB{O~ /԰ ̘FpҩgK\yN%`Gb'% `Sr!rR l IpI(,vv:rHhѢRz衇=T] E%lw@: dVXlj;O=JXO?* >LX;s/Ǟc|~H%`jBDZ9QuWp+ !:q-c3KYi/&Fq ΪVTKM=ar]wۣ| kΟ?K;m4/r-jРAxj< ٝxkqݻW/cܔ' vE͙3ǩh0uS{0ԠO;UhW=E[|X~;C(„G7 ӳ{SRVJ%AXlf ALԱc|jƌva "ZtjQk2si4(=HQZ $bx_x,`+Ʒa/+y6p N 3Q+@%f .Tc۴i*+\GH.Xl6v V?Pe,[Z?~fr#QH `3҉b#:vUzt^&))!m!` Y-[%xXl߬9TK4aR=[n{52}.iˤC%`sh]?%X{<+æU6'r2&[yG\O\=oAKHm\C%` ɛihXCXթGG="VEd D/PI֐E>7'63<#9ՠ)WK%`Xl򖂦%I7H)X ե@<+$Q,'t,"ٳrb˕W uyh*!غK:O'Ym XlV ~av%_f! u<+[McOTMiއ[;/C6 x|+p>=+5&6p ` ~kyeWk& i:6Qq 6.?)Q$%W"hiDv%ʎeep!` a˵WvmX+∣쁕tE޻͐{ĥBǥ.-X,@mK~۶m} yy>6ɲjT[ܝ TP^玘gT>)l6V}s٩.Cs?^)/2.]9s8 a6Ե}GB`szE]̉ -ey3؟`k`{myfW^:"최cfdĒZ41/]wA 1k-t~_tHtqM'l&|1t`R(ס [XdQXg#} l=`kR;6U˼؄'ݢ7mC؆e;;%lΩeCg/vcer,f~۰eoX,n..f9ucP-ͲN;_ٯ^(H6#z߾aa ?,]gu`hhKCP=IpTlI}&W= s`/6;jO$[l Ap.+0[I󵽺c;ز]gMn ݐl uu ZkOkz!c 3ܳ(9r|Am/7kn󋜲˗')yUR>g-l\~R6%"'@ ?_(;?fg 5y3T:U̐S@]FGǬ ?`K^U RtGlkQ F*aQ@K&ZONvq ն4\sáܾ.לyJ` JQ n zI6/4 `!*/ZK.04엲Ug_AHC4\ԁh1;ZVe9:yclϘ҉TW4e˸]s*3#|MPm28xq,bs68$`iģ@oB' z,x`74J$,4$sOTlB~@3ʸF|WX 5={fDž}e ~G2UfD.!ɘYׄF\(KB]rm85˖I!eH'.0.,Vf/tRGݾ9I$L`^fX˯ I_]Ji)ZJ`LrQ6fXVū߄Dk8ZZ~%dva6K9fÝέs˭Ejau~E9] F=>7:(:Ko3%%cP+"\p#{d#P)@%:r"`g;$ű`\Tnrbx[t%`sfOz:Xbu\1Hok.@~${"'&Ƕqc>R&kdt=Fܟ C,67KJuZ` 032gaBSCŒT ` XF#$B[k<}78Yɤ`ՇP*X,F@a_ux%.x<<*X,F@#` ʤ`3uϲTn ` 9K$݁xŞL#ueM%֭O Xd@ `[,f11@YTZ>hnO?T&yYK=uz^$Z8@IMX4st#G}~_%ݡO?vX`;wD͙3'0~j뭷'eW577;tM"ϥa}3w ` Q,l[ظDf]Ϊj?_*Ph!`Kr xw}4 3X{q^Sw+0ͷU;찓S{mvmwoS>#Lw=(+A%F htqnd2`љG)26X4bsf}#7ܷ9N: vxlXR&'6zV*V xl@%`nlf"fPk~cNMw/W3$Ya%`i2 0WYGʳё~-y9),i1YtuL1ј \j:9ԒqˀϢma)9d}hS|@6wQq/}&q\sj~͸K6/\t`MR`ibP /%.yd:+!1CMϤ{Z ͨ^:q@cO0Y;Y=H$ʶL6U~qQ>c}<灜,F>\ruvꀲ$ïiX,*@^JUIxuV4`Ő4biR?㽖o1 ^-QmUvh]Q"yt%4CʳNj#(7^W.+k2K=L Ica_9>`O֖{qKϢ䥔]5^]WK-9-F.O04=koڍ 6RX{oԣ\x1 6_Au[!ߘSR=96/H.HƫC%`Mxq= ^Q3$_/h3Q,3x|À[,7vHzuʥR¤;ӝr2VQ9xA;#` oXۀ@WՄVs `즷Ƌ0»k$n[ףv'<X'[j5)'3Q`K%>ZDȃY,#$i$X" !MViV_ tۃtl}7@lS(@MϵCM&@ hh*xƷt\/"ꫯzU3g]ۭ[w5GAW `[_@p1pq,X6C4Yg^{5oWLSNU{.l>+U˸ΛqKϢ䥔]5^]WKJhg`Xu=|b\a;*][nXa fRby)eW$e$!` /qypX.=0&`b؃7!I'Kw}j*u:@NTeRjrɌTjL]WKqJe@9JfS 0}Yzʕ+= 6C,„;d&*y)XDs$*wF%^2/UY3_2Jչ&%p=蠃ŋ{epbJ(ǁ>qyQdK Թ8d&*y)XDs4Mkt8s^6<":L `T6=ȠqnC]:aʤwkA#`ix^n{`:u}<Л?[sN뙐Ȝ`LQLe3Pbʮ4:,KeHi0駟V .T\sѣ+\5g;73$c)L<_,Z!:L `T6؅{vS45Ël,4kQi<=묳fmƎ>裺yۯݺuWnӖ)֩ `4х.DTtmrj13`#1uE.Ԋ+26[mm 5m>sjܹꨣb5k5UmŸ]}WfNzCu#Xm`tav [N-L+]h'zЪf;k5 ^-YD=jwVV/_Rt7頃Ju#'uFf(Ѡ}KuenZL%!<$ڞra ,H0Bq6 /Zl0a|~3[o?n kՎ=ZuС=ղ9Ku"ا Ff(Ѡqz`aFNhY0NM,ߝ gXԘeԅ#Gag=20uOv;1/gaPIjX@ !~ǔ,b|,@kbq7|Svi%mll"MDu2Ψ F NS[<Zn6D'LQm߷袋7tQC 'ekN ><0_|(wwT{vʋaZ_S~8~66P `^_1V3g_Z>CJ ۩&jk#+@` l[}L؂XBSAFcgm{ɓ'do[#SO;ep jСNy)L]s"to7tF>|~3^O4D+WT/~;?p[5=j/=~{iso` n`f"'zސr1 _0PrĕXxQキj?MJ' W_}kVu]v'|RkظKKX~[ptd6786{BLK%L9sǏ~aQb<[n^L:T&y"ڟeMtZiYF8eol?` Q֞|VXlZcZO:HuzyW}wۭbx`o7… ՠAڣh"駟ƞx'|R͘1|#`26߷'K'` )5{ yT]!K\s52ط~[&@;{ァ>0ٳլYc.K- 5סɞyG;)PCc;Sc1[cShhvN1]w.zj/+TݺuSƍSΨqߘkV ) 0ŘvKH\pA Vy7|qEhzTK,=9PnB h$NmUuNKXz&"ƼV DOzիzƪV>s\.>uXXlKCm ({x^ u<*#bO?_(õ^(z`遭g+{`yu 7Uf!~)Z|~ k9XLGycbw_o,_sp>Zdzg }w|YfLsFl;L!Ee3fFKI٢# osuJSƍᑕ Dxb<|)o.6K(a|4郺`c Klj<}SCetnf_/-YX\=?ϥY{F>80A(!/"^2:ۭ O3¾])+v[+մcAasǩ<lrI=THm-7xL rcFv#첪ڇmõ^(z`遭g㱃=X,fuZUӞX٦1|x(|wG,^dL淀+f2Lflٻ ۙXۙ;4ɨ?ؾvWÖKM>Ǒ LxEZm6 n{ W\qECѬSsL,=@%s=Տ=2:V&x /k^577:,^]V,b -f6&/;EulM{`ќ? U28[8kL`0Űe~, $lk޸>lN |Zv{ pXz`xl7,bM^xA-[[FcFbxa%wNo&sXYFǜ * [wL t"\?BXn{Υ'ծE@?TVV6Ӌ+b3c;I^8`kki߻kߜ.+y!9'qj}`遥<sO5.IJp[l `NА -JmW[4̚:^D, IO$? %)tOʀVs.:>qi5oݶ>B}skghK߄hbtv=MiF='% 4znB6?G)iڕP▥qZ2dp l|XlF}[jNag)lg>Fcam G(cB죈j8>V{m{oo~*/#J'tTD: lqEt&͂ծcLضE$oYuZ]{e>,FkBME7 m4zc^g=:va)ST{n OcoyeBrwV#< >"D\`1YӱǝzO']ho:c8#0-}K.JqXLi̩v( uYF{TwrK 53ACpe{`Q@<*D5 %KI5V@cnO}Z/E慓& 8&hv]A G՞W=#ӽf7\P0!$f͊ev{ Hf~@_xD;oك%Nb Vxִ` +Mg7X؟~a?w`+٥vbNJV&?=Ys~Z34ﭔyCg־pӸae4es;i_]+C'`[Ծ}o pBi έ^y$NǏW[n:g!AŋYzꙇpS6gĉLĘ燂XXx\`ًὝ={5k1cׯ"%e=Qwbf' v 0'rǹXN䚑vx1% RM\,l[ظDL`1 )7,b? ! ~RDʉ` )~P b,{+.\P=3 PxUWJ+c#9D;K0]OtO:نyF3&rI!xW A@ .kqgf9@+ٹ)!ftvmL /EB[b$D0Wj%DA7Frùx`˅d70|(țrӘgKm,!K,=yqԱ%/G=iU<2:AK4^1 0 5L%` IXaksTMY`a,6ٹoRzL6^JX\$Vbm+Ltxk"dr,}mLcr>oܲy RcӻE,=l<ݕSR bs9`L^vB,to[{cefG}v}`j!WQb} SnY\z`km?sT/qޠ3\።z;3xL픩37t->{챪I-K&[`m]tZ+a'qbX~*}4I8U ٕhC`ـل%"obs GtɜX %M}o V2$|юAWܟK,=9pɘ+Ucz~Ue=Sp^Y%whƛ]WmoW]Lb|]?c0K 3 lP Dl#eiQȋy[f16㶷 ڷu/QנZ`W6yU78O tKlP`oi-[2'yj;vl(y晪^J:dNgFe|9ڸ5XFyD%`T>6V6` --Sy(FXlLjHcRXV[mtRc~U 0/h;Hy=M\66dLgIl3s%tgX,{G` !fq&oWuةw=$O.aHWRƬY<;wnD͓%`uoܐ S+݇Cc3iFɢبˋרgb|l3֎x8u^;b`u]>j&Ϙ1A}rbKUsF3hYg@!?yRKrF!u`(z1>vq7V]wK$N:g)ƾXC m5'k2s!` R9,K%`+}A]!Cr bCwqGջwoή9uF}矌UYS|w dqw} kVJ&b6>#S}Ob3gz Om5IVÄ|X'CK%:*D%` S#FrJ?>'jOG8E5յl׼g ?['冩kpNUNxF}=&tС~xb$o;,Vnu_zKM%`ng"` بdoŋj|j.z=.:Z_kƮu"$q+m` n,td3S/]AVKmiC{C*8q-Ԥ̬zz2Y3/]7[nnP-*kj&?b9t饗M7ݴt!8ݰϣ':Y Xl 6.?)QYףYؔU0! [lYXMs`u˞y?X҆'^i3g{7H>}7cq<X$~_]v٥t c\n֩'`XFL)@- 2:ɵlpU%C{;`asakU۶m=\GzQGy橅 iӦyr K`r7N;+n^4p%:؂۷)9"عbʦ' sX~e6ئ6Šk{I%8K.D-X`t{~SOm5#/X'"R}_Wn)CN-2@Tۨa0eR5nȲ L`4Cf# a=0.CAn P/c6'.ƴBlp)yin-UW db u7~ f8מ={= m|IՍdD td9[-LlN)@c5V`RP&y„F:3hWO F H3 ]2R/9:<:u2^q<(Ko1ҠvS%w-^{ ϟ?_M:X#M4Il06W N}xIdtd994bZ~r6g*ht ~0} 7r[ hխE& ˱2BM/pjlݬ,o3KzmڴQ'|2ed;cK\gϘqlyV P:(@5h0cʱ /H.HƫCm} si)7=W*2Cih+PNJ]q%pXewv1,rΙ]㵋 `3n)YT ` BLa2Қ3%']p6P6@͸gQRʮ/H.HƫC%~F4o+Xs-3)'YW`^NuuN9 +@^ ( ʝ` ,Bl1:Hc`)wr,μf :Ru9N9 +@^ (CnHSX'3$39*@u*lMIʵX,֘6mm 6@uN21XG dQ,Ke`HUu{t*(#:GX'QPF*5Jeѓ666&G:`swIzBغσSx ` d `5P:ؔ]> Z: ~P sF=L0a&z-c&/m嫔:[vx)]ʽΩ6$g7kac P:YeYi<\!N&F/Giװ*Q60 P*v +cy'ּAmIaʼnn)=?tw'a'e|Mx8'*uR''`e ^*6 ]*Hȧ;%xZNOx-\͹s*{~cebxi!T7X/a_%| r̝uǐmm,)rpa_M;2D&v"ʅ}o!#яaP*PAj7\M `0@,XM煰RLXuugoːh9[xd v9AфvDo=&'8,d3IW@5+q02nլ<0dxQ y@`{zz`ۇKe``` `g DPcQS  ՜c QeWʰ!:SgT TP/A`|$ DEB 1`"5Z荠Gmmmm[ ,%RPwt4Zֶmq~\jjp#rOT P)9(jcxmmm5asFgc;)ed ъ%iU&]1<|t.y&0cԕֻ ء7nTo12~Z(cN~cBfI0;1Ca=rN86cHPWoy|f⑮5 s| 6IBRh]0#QNj,5a9;hf#n3Gō$J(׬ B5Ȣ79K Ģa% It9{$@&x@E{醲r^ԡ>2q<_<6aĊ l/}>(+M}ӡ Ûd,Va^Sl͡t0ZU)KhfJ'8 85!֮jY lOL^s"ۀx#]`v:c[KYI{ҩ>С=HPA] V+`2ZE%I|J]cx6OaS˛3, רa-;fWUv_2txzA{v",&J7ؠßuXUĝR\$gGuŎ =,;,E 3F}ze(f<8Dx-iFFN%F+I~KC&bpxH(`M[ۨT_$V }f>^|^J(5GnfWZ?M{fE7جH;E.Cx(@ `Qaإ=-"uOM;a|6l70m\q,F7AkB,SA y`f|['Vn80BM&aĵ< ޱc/ḩi1X| ++@~~]vd+Z< M"=S#foa`gͺӨ vʝK8Gi㧍YI[hwUNnP;ҩc yÌY{ 9aT9?wh⍓E3?&%%@mQ;l5ss6ӛ +6XIJy~}.1:[5+ǐ}Źoh2=4bsbxX&+_2y Y$jM1dB͘YWd\1qƝ:=rɧsL,'|B8hI8cH \s?cI1ܜ0Eډw]רQ f 7n@y[d{tÔ)y,n^?Tmvxd̕0l#7@=u#?2k:\-|1{| =T> 4gd JԞ v;V Gyrؖ@,uَ`˹͖lf8/V43Vǽ³ A`ޤaD #j˱7IvFzZWa΃ym^ml\Z!?S}zcD 2\кm.GƳ LaQdHoaʌ+ohŸ(˥T D@S 8E'.`, P*P'z6:UY*VsfcEwC[1ݧ {ъ^1GT P*@Q L;X!axLbn$?8TǢT P*@T P*@T P*@T P*@T P*@T P*@T P*@T P*@T P*@T P*@fĬXi\ẏSODT P*@@)%,uy֟eO ([9 ,>AL,K1d|rJ'\ʋݨT P*@FF@+jKj!ؕM]SΥ`fQOW~f+=ʍ. o, P*@T P0=Â7@(ҮJ+N~y ƒP,M^m 6]rKuQyT P*@ȼBvb]O$EpXxŻX),X~}P%@#1`d*@T P*@@%d Wp B~h,N~gy`_6 8Ts8=h@.QGW(:+?`ECeV5BrQ~pHnT P*@T +P `l(ȘN'߆#6!$^H? 3cL˘ScHMhϻ̺PNyhtuL5.Wwk?Zü[`%4Zݢ{1AT P*@T P_,\+J .M57˒ c?+k1pi?J1 jX_{WlzM-5?~!2|u2CŇ%T P*@TYs s< RBfz<()Pm' c6t1ߣXYmmv9WW>B)c'Ow:.۠\Q*@T P*@JKRUni9L`]ARH3+^a36 m ٨6hvg?5V4)w [ m% njT P*@T Psd9,V/i{* r". e{/XZ a~\",`yZG8f {рl5CT P*@(M$ڢ شZ[ !A;JwY:*E9rΑ۩T P*@ Txx[.&,03VF偅h8o$ X5k^.;78@2O /Pgc%5F@ J=b3]onkkyubM P*@T P(UZRԘ=gSpr8rk"O]}ʕe ǖ8T>?D~ۧYSO @>i}mӇGA!m ۶lm+mnlMClfĶ16ц~F n}]ښ6,Žn&vAEF>li&>ͬ[K[ne }?|L}(sk39?t)Fxy?5l94zXeƴMF[ShtmoM?]3&QF(׍Y=w75#oEWgzq׮kk3<bX~wĘ>V+v5v#)cߎ]~յvوkvW{vW+lg]z%]xrve.(οȱ.Dٹ);*;sΣNy|tg*;ؓNcN(4dh{CC [ـ!{*?x07h(ͱ>PgAzۍH Pֵҫ?uWY}u֛g$X.=]؍`%*kݮZDtTֲMjQҞSyyλAW[ԝu҃5ӓӫ 6Di?knko=iX{>VB/tǾRàvrv0C>tңÏ>^ݢyvv '+;S{ҩܾc'5p{⩧ٞIɧ)[3)ʞy9f-*5Xfs9~.Ɩ?ٚu ΠV)+[3aZ;ͱ l]ʷ>6!l&1ߔ3Glme]ک)isOEソn.Zkt+\ά^N /q@R4T-`{ X*0^wF]u3l,0z,8`nY6 q46F>&00GmHk +lVA9W1.`R%W_ye^@ K'=L:3踓j"=/=8@ `MW ^w 뀕/ll~>₋ o" E m۩gLCV,̈́l@pIL Ӱ?1^d b`A[3vi f۵9×MW5/ tx1x+*@JZxF`]{3p={z1 \Bl{Сt^ ߃x yv G27ߢv>SlO+s [I_q% QyhGծϷk' 淚lٶNr#]o8~]}̏iʶmqh=Z5V'}ッ 8CswPC{-\7$V32] `U@s <6}k9~R~'Z~ʣ $6;ȴ18Fz;[|twn]÷f nM&F0dzǀM6@:Y_v`}5]^3ep籷{.Cs3q˰==ۣr'/eؚb'BV{/6'뇬b kzړ5AkBV{ jS ,ɺ^dK2,@M{a- 7j.gUQു5aukl5p;<^Xt=]Cw@.]7 .`k][ׁ [m^oe֬/TVgD^|޼Neﲭf{;i Z I6muwMϜI}wmx.Z˶lﲽŶ%t^C<W^}fd`;c `OkM@ [GkMk\V+yw;﹏~1{ࡌ[v}RÏ w?^Ox{)nRvݞƃ @X(dNcn875B8o_zT<~C{ O'qs<[!cj"dgÓY+T Ț&dŚ.=(ȶC-ȓ(u@ 0nlüX&tnkCtyvY{ 5ˀ^!f xݟY0*/k E}hcK|豥[lڒe1mK,[qr λtڋiOdٲ'd?DvM<8Ц =ԣiջlouzm5mw mw4}Ǯ > <M8J~eςl6u}]}Xz-c -c ʂm:*4T?<$֭bxa7r^*3w}>L?=8~=$?q2=2qJ0l{x$Jb=2#pax~<`zp/lӃsf0hO-| 9ƜE,.sp=l5lp37cY.dMXnXXd="dֆDzs6l[sf1?f,ȳ5iGk ޸ڰyۤsIA fw3$e ݘ]g^+^t t1\3&)rZtB .p۶;Л|?%pl&MAN${M9 \Ņ)i^-|` Țs6dMldh1?Bքo۳pM64at7jqUetܤsnfN3UxܨTAfhYCrETвb.7h>!e հ}i*ze&ΊQdע|MmҔ|-eiNVDvO|Ӧ@^;Sg /;ߏ_zmk+V]w1ue6;l,/ul]D]N:=xYg:흑[lo6zmյKȷTLҾ=`P2vT mпW^yƎufx&W/&3*xQFbu-,{$ٜf=1r1jY1m6C6>9 h),>{<~,kx;gϟ ~pD^U>۝X<2V-c2V>q̉l0Ze06zu1FdBldl`moVV\iz [ӫ5C札 %yUYBDVM CZlyA lo7B*żnkjOW /eXl*ؾlqO=۱qCCDm"ClyI' # sAϰ7x5<2=‹t!{{ӳ9V\y>|pe1b8Ui5W;޵u|{-]Y{չ=k>V߾uyk#Σl/t"lޚ1Օ=5WkZju\رd¶nC' Є,B],XX"ڳEwa ߣm>BB[ѱ|gT]_@} R{mle(tc"T Of" yn;45wER7|:ldZ17 U Y6+u؅ 0ȚaQa m H6(t5ʞ. [Y <ݠ&t5p|oXhٞ5P[^eضiA-TN}̓imX s/3oE0`9SO?CaVݻ}klT0_~Q1]{LCO]tgؖ=Yg Ul]r֥g;lﱽ ZkN^jeg*{v+I/B۳lO1:{apl5hYh1g. ڛwyG>O/]2{ D&sinKQ,2uoKQkLan wscs͞ac7q7xhg7<^\| »=a{1ǫQTs&kX2b9 jV-fM/Vd]bKhhL}miA6 -PBO ,g؞g{%n~sc9_ag[nm %GyQEv4_{6mr+ijMͳY e-kz;W=.V-Re?+ m{M3+H?\AvMsyknʏ{V92]~:Y"sv@lx71¦uCM%3h/e::m E{c:#ɼp *e=2:osEH^/>`coO66ŚmȚՐfMzgyۈ Zu Z:6XosLf[{mV 9)lu)ŭ`V!*l/mB̼p~]&3W.csXr ]rIYD6CIkS핗~*5`Dx2{P%j>Aאg|[LGvtỐAK$UA7?lŋ@iVz[+zmBV4mی-gK׳-ٜjNK{7ؖ=>7ۘTiXG/rg؞b[ƶw-UD{9Zhj4m"ۄ驫/Ailuv$, Ѕ>ز bjN,¹$'_2q;v=4/St΃ Ychٞ Ai)/Y%ʳ~f؞})[ʞ2Y{ ~HׄZF_23QiTr1 öm;ݓ#M{ll3O+: 4dE+6ۅQ r+]H 駟 s0Y!vMh{zh|bX1ì,l3z^nAKe}[Slٞg{0'wN8/Yؖ-\ػ%݊.iZ6g c =} [^yAk5zBvj0$gu@810C{Y:YfٓF:6|Yc1 ߇i8Cw Zt!{8=]{ҹsw=`˞xȁ-cH/a(/yA+D=Ʃigxι3i԰?mϡ{?^{vֽ|tjB&^Oןv'Mvfo>s)O\,zLa%=AŶ-zK!=Jy{{{:i*S5]0}wЄh4m ی:Ah.|ElKg{rpzvp{znH{zqH;p\~9&vt xq/0=-g{fHzmh "w9lfHSwHS&={Õ4h[ Z@@V-?(*HM7:l7\s<9dIcp:!}q'!cǟOLȿOƚf϶8'mv&ٛՇ`VWo϶p^h gAϲ=ۋ>q>}t/c{mkOϟ϶m1w}hLlSٖaGh[:CyZg1ӣ^-Gye 3y3psryr^χ-{R~_x ~:ۇ}x\e4 c˿܇<"Ǘ7<,* xj~x<}Jә|L2lG!| j!` 4 Nɏ Ex#';٣ݽ`f'|6mJVے*gwkpgóN^KNqQ|GP@ ~\@Ffb52rќlUݍS-P@X!kjj!i.~A Z X_ ڪm]mu@[Bo^5W-AUAs|ўϵ3Q \ˀ-l'M Loئw#Eiǜ|wNŽ)X#]N<:vi񚛉4g=iji|z ε~a]ď;v;2fm=2FvhF&?HJ3f6*v0ZؑCi)lO3=fp± V۴}[ ӏÖ;DSO5-f[t0Z6=t ;jz[iX]*[s~lǦk" lu4v<<@v*%`oOx鰱.5z02sJ:QI k/|2sa2NYg^4@׆nzAۀ] r `7*հl"${q.raruC̺PVV*-U:|5QU tJt<^x | @rb3xwi S6õs.<h_,m/Hed: /Wz c#"~ܵ0]cQ&MM#3'ܓylOҢSؖ=~ҳlϟy0p9˰sW\{om8UJE,gJٞa{Ciibz8 ?kJ9Amc<=]XX3q2onCW#c ]yNY}O I='t&@ a:@f8 Uyz 醂g!j{Y億ϺO/rW'z1ەHuX;' Ggw`F*3`O*:U{xVm2:T;=\G5؝Fw@v4exrhЈ-?ziU*$~BIBXUkyqY1B!9!#UEC8 #Z\$P\X.ٚ>6Ɓ ɅBZBY■lH6aq;[Tls]'5ݠ4f!{P|nV!"y-tY]3@ι+3`<7ܵ||+a$%*:c +y?uTvYv1KE]:vU7rͬX@7TfҢNEL"-DzɋN}'֓腋O='˗H.;^eo\~i[|?ˮ5~+NWV^Οɉv-w?uI vi e.ͼU]T70Eh5l*csձ.ȃ\w57I[*k %߮` bEnb١i:«d=w3M9gq$؞z#o9x;xOA9gU^'oQɾe@ {5[zyWx SPrVϻLwLOf*oN96cKC=ƞ;FO.؀\j[J_˫٫ŖdR9Z\uQ  -W{ _a$VQb{@kʚ{eò=%ʢ̼l[%к^NkBH%lmjO׮kg V&c\8->vC<ݨUne U +JM?^]bG<4~);/[ {-Zߖ>\ڞ⿟i0ǖ,{1\AjǞx֞ۓ|ߵǟ\ΎQ=ŏSמ[n߽mz%zszл3{hl6lf׶mmdzl.?`[l]w@kg6w-6ƍQ J [f^Nla(hN6h5i6'JjrJw;LGHnu(^V>M%}So5 Y~R 'HgoN--mQZQ[Z1Z1].%t\Wnmm]@'3 xz ǟq\tlvtL׶t4QlGv*#:-ճ=bZ \4nh5tV6(rl1.'y[7[0`=\qaS6R.: Hȣy0ާK 0zD7j@esK8ͼɘC^W/?2ICv\HQwVqޮ^,m=6r伮 [7 t3j tc"tѷZ-%0kF T\^Qz_0$9Syiʰ`0LJ! #r٪l' {mCm2sh[amiH1k*%1$ iAVLz&hMFC5#-Wy7ߢLmw xd`¾Pdebery%0ib4Y&G<0(ETu=N]ORaH24501Z΅afZUVGqym*|ԯEEZ^uPhXo9 ^SNixAV^T@/2Kus Tfa ݪеAcaЭpߪN mcj~*ǮzJ{7 7UV8s;@[rP ȣ.cp!Ze gc̹b`hn|]ʋP> .<Q^.<\n[f l/q[U{ ]DG3\</N(垜Ш< 7 ;3V+m=m|2im|ln1GYtA T Rs0 H`&V;t ]zjlW2+Չ(k='U^թǝgO- &P{8՝! Cjo֞)Ak9$#hyq T 2AFӞ͚ݥ)Cq!CuHݠ𲙍L6$U@٧]aa^nQ^nU<\xu!l h&1l ,O.x^ĐhΜ.6;'x.o|3aR W'0CAsI\3l{GI3ܸyܠ2`[a$!e&Wsڦa#jm_$Y ۠[ ] 8=^/8 _ /x|ks=@<BաT iouz$8a?9[2eS d/4X{mDE l"8]^'+ag ;E-YP@q O@!v-DRp^ ,vbpbTрEc4d{m=.dmІA^K\N8+qxYI0W)NV>lޓ[Eky|vٞ^Dce2knJ*,&,l`{$^VNg?hy-y:4Q8|e[f+oðO[J{%ezA {K={a^xQrop~aO/~ֱYɧUpqlRT-.| !C*r s#S^WdrmU*ϲQ^m2s-E (s0&ajy)js2LciV׈q9ӲWs2ma{&}qƋGY+}꾻@߆dn#6_Myw Az='`/6Gm=DC?DT6Er?!}i.c])_}e||y~^Sk+{E&4 o_}1 V0+kvXآy=5nZ$&m  D @$@V˔ DuS/o~~g/>nM_~~vm\y¶w [MHg& *4ak/ J`[% DuSin6lXq,.M4  TNN[lV ܼmi9X±2OFX2(/܎e+|VV4 CUb{M^-(VTPYw0+4lU(@'}}V-ڣ&jq{|=^[ ZaU?jD9ɮs{ݪklZ6#AgTl*ʩ4a|Jzg5ϋ{5- "$Wt\ IuՎI?ykjC9poCZ 괏addX mY2l?kPo68CW^6nM﫴\_K}|f<)Yﱎ Q[އ7.7?xG' #wzbგxU"{#|~J7H.+Ѿ)/uh#_!G;TaOBJ(,0e<Bm_5\Wk7})}cT?%w(bk@۫W,[Lr}~/|:agOH|_B=Os^5y [/|lymf;tlOUL;:v̅|ls>3{@c \*9ʌ8 NfTn?o@Nq|q AB?AOh1^8m=7': Ʀ^جVu<[;2' n3χ۞x"7קW}vo|<տ?:?$j]zMl5hKJJhvN;8>~[N{5g o]FD[{҄U0a-B_}I:ΔpöP؆7ƴ _噃Vվ8v{7A `w{y|Dog^gk3}sοm%NW[ vѡJFqtwxis׮>Ta+m\6+^w`Q AfJ {>tK3W*h4vvX5o>OKҾU=O wqПl b0JpNlu990rgƄBMYO| mپЕ"*sЪ{q4'5՟H~%/PRo^ՃWl#o2C3YaʠOھ~y1 A}yaH&d'i k$_ק , >'*`/@LOr|\s1GؚFvl͂l?grt S>Ysil)tA9R,픬jEjxr?I`۸2-JW+Eڿ^2KIǬ^ǴH{V=Ju~ = lJG㬿Yν{@~kfa{ϫwʺي[r~ 6(M QتNKV3ad҉EрhH Ͽ}E >\V% lEUO# % ۳ϻnjd*MYRgcDU@ZE)sO>ϽYleTc.(, s/8"FC0_٪8TG/יJrщᚬ1[S.Pr>|RBlQK. .L‚l>TF#E 7JG! m sϿek`뀶*5;UN=ͨ<ðzIU -R3RN\25! ҄0F7 ^ti`GvaiǫZO3 իճtrJθv O_!j -ؾel_1_=[3|'W=S4c0rlCAիi%):e%y^4"; [=_ fKռ-lI-9۠y XO3-آIh!ΐ0)LuP&u!j Wul0l8nْ, l{LROJ k׫P*hי"W"'9yMyH}@Z]tEy]Y`BkxpIA&W'0iJN4rӰ=ZԲulEh@4PH /q)Ub$`f<[ #K96bG$ ԮRUn@VR϶vOt>iрh@4P3H ZS _ХW\E.p2l*lE5#tigigрh65lᤂ`9[W%WPad7Yy ez*-рh@4H pR5KS_ p򫮡F\MFY~ZrB y|9 ԾR-;'X- W\u+IWXI+TTP9?y3*{*25/^5+r9T#}AIs  5:lqe'/l׌$W*;p+5VՇUpQu f*'$hUeVY>LC}|_1^[^umSoUK/ jSiܼFun7Mf^h@4  d4l_c؎!Q0˯ wF4F8ڳs[6I/ D` n^op0l΄qcil7Qoq)emRW' ҄ eʄ-4cxo-?RG4  ҂q,W_lk=6Iۘ[ͷJ'+NVh#t=u*`[=L` F+]ٛo lEh@4P4lMP7g5~'~]lųV4  ҂[M| #ڝ|{'jtdum.+^h } [8KQa-~nsw'l2Ih@4PH f7-{莻UVγ!kCwD`<*2WLyC,f=ۄb3ǹ^xqpdvY>鈅y R{)4S5a;ݯlkmֳuNtg믗R6r/;g/+dtr~ Siv5;s8wg;=qX Ԏ҂-[VF?-% ҂~D2?Pŝ˞%l-}[8} VtZqϛ$_&Z$=?;9/@Zx2(qgǟ|iZƷKx>'[9.EI:C> K75E`1;K1C=>E?3_i؈qSV= R4Tjrb/\K'L2ߋxqg[ՁB*F<9Fۭѝ4 a~)+3k#H]4 ȥ҂Iu4=ɷO2S|瞧gÞSO?ͻz^nd hly+¨z^^c# P`-z>̲UjP0KVn b0 IzmV.pgEiJ<=ru ˯°}i/({|mԳB[ -`׻u:Md]c­}>^,l|B/B9b5lqCa/;/V}wla OпeМ߳N6 VGB $8\w|Dii -I}4Kg+啯K/rl*/m(l0a[o֚ #d!vj{ ,Vϫsq~g J4 (P [8+^ZI+^v \7|g+*{y+>\9/1dѕlŝW_{^yuzUkŗ~ئP5[6u9\_'9K b~Kߙ0o^-z7ߤW_ꫜzuM >RW.uf@Z˯ `wxm|^gꫯs4G>C:h@4  ` '+ 3-;[oޡ7پm.HCr  EiN*c;wWl|#-!h@4 @je'2(x|}=~يg+[D@k -~N0d]\d {l5CoJ'+N&}D`7:Nk`` ;tB鄢рh5l9"p\c[vZn5l}}^zm1\g,;c9Ǣ@H rDxuc`Z{^[l2I- * ND}V>Գ*SʴLKRisNsZ0Cu(_R dhĵ#銫M2 V/ nD=[ʱS 麻zwcɪ}u dP" ҂UҥW^MF\x z?#ci^{lW6ʳg3NGW5^@?lSɅOΑh@4`k -[ ٓ6t/f龴3ŝ{07h(7<|gۘD+AVyۼ ɅT.@e5l[@쮬nCOlAP3p͝hճ m|=[tv@yhF4P?4lS~Q ]nK l|-` Ж;͂mB ~[K[JD0 ] [npٺzXb5VU*7Գ˅O4  Ҁm]vܝڏZsBYU!d v]r |i`9рh@4&l[wmOj٦{2׶f¦r&\y"nh@4  ҀmQ4m֣ԪloԢa #7RnQMG^!V: le9~/ϗ(!P Ҁm}=+[ l[p|m+j[DSg+;_94llܜK͋{PV]Nnֺ#vc&ņW3hÄ؊g'޽h@4 HMДiYK,{Zu u}ݤ`ۺ}Z3eζLF2 ҀmiԙԤE{jܢ ߶|nL=[,MְEY{/}@4P4 lIS+ڼXYlآ,B JHzрh@4PO4ls.\GYV VٰEYa4#TЩvP&+]b&UB/6S#2縞|UןQk9ע@*mZD&Md-3adlUe-` !86#UƮ窀k&⏬7['B:h@4 (\ ۿ6nAm҂vjڂaۂ֮ ltZ [O6MiY_Y' NTYf%% D9@:mΞk"mQluA:ޱU^.lXF;Rs+V4 Ha=f{jq9[F6K0$Uq jr{>jEрh l5p aˏ[{6Q=لa`Y!z9hणyE@j MejlEd+29rnE`ɔjV#!_.Hрh056lwܵYgS5 l SPr* 5&lwܥ)sFF(V<[E@}@ڰa @j6/n>5VЈD4a *u RjGdrAs- w n(lZtK  ?n֬ l5hGdrAs- w Ŝx{Ǔ/}@4P4+[H%iDрh5 A4  rmXBE+T$[ηh@4Z$1I4  ' lųh@4  X5 [I(#4*z ҂ ZB֖لʅH4   [[ұKǒ)Z L 8l%P.Bрhi m鯍 RV:[}l{EYG`[E'9@}@` 64]쳕V:^Ѽh~k@`Uw/_4 jVD'рh@4P5 V2LjD@5 q'u/+VPyzN"  lSmYE9V3\\W S-sUt@JJ4 ȵ ><=꾂Y=@7HZ ߀mzs?'ʳU-/g~t\w|јh@4+ lix>ju=X.Ϋ5a!ޫ -?X|[-@i ->21SGl F'򼰪^0d4)l|)G_g+]s[ZZ4_`4úګ䷋w# G zUrg[аߚ4 , A lmبZӂ=ېz^Vyen0*,>/^˨>z7E`;y*I 5gmMF4ڇ;B-`~_TY^mvY`+¾+@öYvFl`A+-рh@4PHzE2[g~YmaG.rE@2 (ljK0fjdleQh@4  Ԓ҄NM[Nw|-!}׸-2(= ,*ߞff@qf)y٪\Zč@!K>6+V/*q6{|}L`w1Xd}I_WۧVE/-}N҂- uLe6˳ؖUwwV:p pAh fw瓴_mq%/}T;&9$A^ps?G5 [7qfÝȱgNueF~8՛'6<皩S*f<s-3f`|Lcz {+t%"XGI:ޣeǞs~;R'H.+ѾQt|mm êx6TJQP6ώ,vCD?cOlTRoVivWL˺u2"y2LC׆|_wȸzq;pV [s!1ޯk{ʥTjt:|ywhqg{ύo6KVjq0%X|l"?AOh2C|zqwG~t~qBMc/9z5!1خa…D^U6,tWo6yrI`u#quVl>?-B?{P'gΚpP,➯6l"B7_p<ϟ7A I6qP{PX-$x|Wzӑ7Qk@l77yQs!ZwV:|\yƟ[{ǿlsaϪG[:iE=[4COx u8Z`ƭk?Ō&`#MW/IE1:7a]s]h5p l:\ X8pƇKמ~kzrrl4(ݹ[g[G`&Z#rSگr%JͳMviFg+}Q9s  ҆mSTs,M=>21`gk / nK I#_(]hS\OF{ij @mֺ5y[x,V`+MSY'рhhFaFމ| 0tQ8E@u4P mV$J D@ ֟]أm<&Z8 lUJ&`1יPr{et- ҂3yq{j޺=b۰QFlQ'h#R|*'O8*|fwR#9 Dta-v%cbu&%4atjZ:1lNa9NSO3sb/1me;߭SuJϯ/C·hf5lhYTTܑێ Z@#W`um{.N&Nɰ-I [-DUQ |%lju~yf;h4*lK:S[bvanmmǰm.;`M2hlU _.IQ 7Po3zO^t֢@:mljѦ+[7jٶ;lד6lL 6oo{ҮE=غ.EԼeHfb=ʹ`E_CA-z!9 [^PFBM[&r[Bdz:\ӌ$&z=[uf]]ƽ_."5}͉5l4l0hQqAԦjuO퇴v [Ynp[IK*m/AD`;m\h*mm?ڸ#v;*6/DM[x#guaUVuFz@:mEfsڡԮ>ԡǁi ۝L³mHjYĦsbE@h -Ngض;GlFB͊ERWK[t>L{]΅ рh4lٖtİa佨C9 ϖjd,^m/j=AI-j!{D@4l[ry.t6Jދa.rnyʣUI-8Ԅ35J' D@m̫jj" @v8mc΍<-Am5|tBрh@4 ȕҁ-'Pl{QkNhQ[J: R# k+RUԹqqDрh 4 l jlũ 83UZ;viA;pm[_=ۄ%j?q r DU@:-t8/r׺*߸a˅Sv]n?܌OL)6I!\1(OtU/"Wh } [kQ҉:ߝ?(v{;7ul9Ϊ'rzDWA7{N *+3N֋S)Յ|UT"Sc,/+ UNKBl=$kGJ/7+m*m*;H]϶\i[T6l:eoզ<ۦVt@d߬^tޠ4P=q (4plt7諯 (׮JW_ Cݹ0ȹs%HWցl nxg[N0&\ k!06km^"N-`M.>ou]:l_u_:oWSS4Pw4 ph9h¤u Js`Qa+ ,׷Zpa(؆_zk0+:4Mra;9WrDjV`W$ r}r´|~_e~6ݎ*))7MlǗ-[/ riVLNNрh } l%Md%/ҦҦkFa}YjzV{AIKDl lųV4  rmXFx2 DVFрh@4c lQzf!>*=RVFiI>K$Y lkk.SH=ۚr1 @6jPF3pL=V/iQƫk|?]?~Lic԰NNh@g+:N-#Z zIņzqUkܼYyJ>:7~)ەz׉&D4 @vzK"{ml#$]܁_U5(^v\nEBν{@5 q֐"zsҶI[D5mO|\lD@i@`+рh@4c ls2rh@4 leD+ D9ր6 ,9.D@i@`+h@4  X5۵MZxem͍d*m- jWJfj^t0@U4w5vVz"rT\KhTA*2 3znd}^ŘzTOUNG:h@4 o l2w3@hCͺS"fپ$b\A~Ks-\P%'r9?U@uma|ڲAxx(计mS`~,{Lrr=E@~k֪&lەBΏрh QԴ"9۳ W딣Ӟgdل5=Ux<^Uap8ir1 DuKy[ǮW ,RRϛc] rgbyb!z2'sрhi `њԋ[#\jA>[  ԤRYԲm'jѦ#tP~Fڦa#jmZąså^t\K>[% DiV`LR RE. R:h@4 _܉ vDрh QܬJ϶~d/[4 l1o ˚JgϝM~_4P5P+B)DMC7rq79rI[ Eрh QҼ5Prڞ]#'{Ue c@Ҍ|$~Ȩ66   lq² T{S!}i} u'ؤoz竾\wf*QUVS7k=_^ml[~46o`; Fǫ줳4scKR7+Cg(  6X ջڟgkכEج FNROC-(4rvY^Y8kP <6hP]zBT"9rn ][&NferƇt#ayy`eҬ$zJR63цZ,zp=+5Oq6E[4 G l-a$nȉV{!9n^/$m~벅v99Couׅ%(~рh HyLYl|X}7ݨnj>fH7ެ@h/mwko~|ml&i5յq IޯkCU\"& U lj#qK^8D H^1NjeF!W!Dmx,Rmr j x5r%ފdl#/ j@`+T DkV`IS[dt$DmG3Ngs%J4 ȕjMZmlӯZXls% \8Dx  lqӯ9HdZV:D|66 rԳue#&g qgEG4  Գ5r Wtt:h@4jo 4^,l?|'^>O.&рh4g~ԳoZ\4  jM[%"9ȳzNY<ۚm^Z4  lS7clcDǐDij `ϒ" Dm䋘8& 5P+ż-lrjdU4   O[leh@4  X5 fۑ^,md4.T4  AY`+Q:h@4 6ǡ(*r1 D~ l2W# D9@fPEsET]F2 D e[.+dGK"fD@vFj^ܞ")۳[ˍt8QPt^Rϓ.-w"㫧zzHG(HΑh57@ed׷Fz-`lV <L}E|U\!1<ެYDί_@2 l} 8!5FsCU `DSA2 DB@Z6cjיZD-tT#4lD MCZF֞m(lM0F̃FbK o7E:pj oDU@)jdaۀiy 5=P1< e/n2<_][J̪t4y\E[y[sAQsտ)`,R-ަ ̭?+'_οh~j o`+.]4 Hm9[m7n #ׇ(рh@4P4*lR[Yрh@4 04*lų59 DH7RH4  ? ]6'V<' h9 Dl{=Zd M2%˦Níi/k?@` tQTAHM>7+?"xIIDQ-@W__짟~#}7g}NoK*6֞mxJ'K0VBрh@4Pl'Mo~W_/f~A3ӆ7ަMЄ ##g#nNs-kIdn a\K/8,а՞͠W׿~'?>~v+o*6"gΖ=[6}4ܖ)tA%SqnʦϜM͊Z> cwE^4 M _@?GB[|H6l5k6oG[![Ocnk{kl6ڎ6nL]P;eiԼUqJX^ ۰zծ+,m-m- Ҁm-hTܙN]=۰3H5ږ4v{ڸy uu5YsS5$ ;rv9mvksd%-#{рh@4P;H-Z9ԦGn73p[6mz Fn((jӾf`Tn%FV%JXoW^;Bvv jSiiV4c\jׇzQlϴyg>{נ=}t1TMXo6O|\lD@h 6/)Y SA ummܺm=`mV8 ݏWټ.lu)U}*gFgF*'Nvv ԼҀmQ4{Bא96}O`?`;`Ra+h P)rj2𸐼JjzL$#Gŭ/na V&⋯BmW#Ԟ*,EtvӀ=b;PK`+'ȱE@5`hС4s#={,ضґ<*ݗm?ۗ6!m~gjVJ'6 D ^pT1{6=䓞˴z@ض։>q9o{ۿ0lysnCg +JS4   ZildGnuH `gHjdrA YF?s$>k 0lXeBʞg֟C>ngbjݶ@@ėDuXi[v@s=F=އzh;ho^ !m#/jԢ=bJjѲ (V@k 0rhc >2P!Fkܴy+u3(BƢV%"Xb lH? #7oۆf=:vߍ6m}N!-ԱG?U>4 BINWU#mey\Q=*5Ҟ@logʕ\gCjf4sY嚶]#;V`+ Ҁmcz9qkQVQ4Tw]ضlۉ`Sx"!Kb\ٸ{^lWwp\Jy&wOshlsc~u6 \r- m]^h76eΜEw8FضnEAEʦNgm. o]wߗ^s&5Nm>? zq߬z=o<<3 $2Qg?O`^' hk 6WaDӊ[[lU|~0Xc>Qya'L %'^,x N\?U#¶mت02^TV_zN #jzea'K@ KӳE d ?IV}+K`+؊ XlC`Il0rg Ƅa´zN1yY= " -I[5՟ߘɎ߿HInXs!Z[>؊h64`5lW?~{U u6{ﭥ7zVzo '~`^ad-`!&߂98ilD+x5$ hhU4믿enQ`}۫ߢW D-W l!dE2K)鷩\MEyv…W_ѯJ~ʻ??>oV.޳{4|س,r`@ki#͛ZƂ-R1 '5~mIǮI-8,Zl B#[GވC.r Dh &#k*M1;;V`+ D4`FN0m:#&yJ;D@gy- r~D@Yت{]TA4.UB"t+)) E (lv \ԵdԳmҬfœ$,рh@4P5P3:{7m]{S=3f-e!xрh@4P-? 5u46lmڼ:@Rn}hԬEn`Ѩ?9@-@۷o_ԩ]{A\p7NA8fy="hiV0u;ٍ:@̧V%[ъD@Ak ʳ=謳΢QFԌVR lCa-[?ރ^RGEqۂn4FD2 Du[as:|ҢE@LR>϶S'iG^р=CUbjզVFрh@4Pа|)“]dAEPni9{0 @h X ,Ѻ='O4 HC?ʁ 4K5 BFO;>oGѰ!*.XJxm?D>C:h@4  4l0@gmrWku ܣi G{p|m9.鸢рh@44l,X X6g(4xRR(MDgA4  4lÀ1 K[#qБh톑ų^D׀mLO[@jѠjUN"w-F΍hf4a hVbHm}|HOxO!?'MƯ׷v> e%tP[qǂSݢ55-jM6iBxnܴ +XӢV 1w?|F+zj31iрh@4 5p ']h?q:k=a*EC .L=y h4k|YmͪLg[~^?Sm}ߋp ~Y*a1cONϚl cQV1f*2M>L6&O irMl ?cL#M16aTMB {N&NGblWe֦Sy]v|Go. ԃ+u]5o[BmV{-JÆV9~Mq~--=num:Ryq{j֎ִU[&-ېi[PZTLҼ5EZm;5mIq&-ȴ4.8qTYafg޹)USmgg~tyyњҷJoA`]‚|<ߒ~P?N}/%7A}%f?I'*zX5mav? OP_ҿP4[tljܤ)APYou  ;T R`m:u15^t>6@M43fBV54.J mٶ k Y-r ZZynħ6=۫\CՃ-h-{ϏΧÎ:+" U@ k@"̫}!3 TM]tJN`0h0]\,\b*Tر$&" @ąɹmXXW6N0:3imTYآ/ա\MlZ6 `m`g͡޳f. @M2:qU_7M/*}șa]Fv lvs?sne +|ml*@@@J+tJ+'9_z{/l6Y\ykV]uo## `66[OwG +jk|ȏ~wXh?N76 `؀o;=5*GC`~МGl@6p#n׽2;,WÄQ~{'ˆȂ( $6y WslhВpZ׼4PP[e}͑ BAl`l`:!yo5OPPS/?w?@qs<l/M\eئ(((0 ?<8=qN:6 `aZO9~4IIW@ ,W^`yl`(m '>\uH`7؆^+@E٨a;606e4*@`t5h T89`6P9xWl;(0 GZԏ e, v՛Y7)}q5> n7M*l_a`9+ RRmVU~UWn3aC$ 0?0O<֒ t z[uUc_ٳg)SDh~\/n޸fx׻nA|tzӒoP! ,kcVHלl>9s8CKb4G2~} 6%S`zRU?5|0\{/ǕW-T O=;s_pTiӦnɝ}nݾF/iMӪu],[w-CT|) n7{xv;(; pp쬊).BS%̹7y: .M?;0o׷.ziU^:`X:,.Km{)[Y?rV4akֵr<i5cm[Qv7OSCE3 B-*8>ә?{׻5zݑ3q.~* ;X-VLLJR7*?"8#*UV{xcοR7[ەG)#_ByL dԵ@c6Y-qڧj{PX;70V;_,ɏ`Î3r{{gUW]z2&igD=p;i;g'j l-;d.++jXEXP!8'UbEfW}6.xZ몬w=׭mJMmqX~ץunVNu< U`ql1G&aǹnnpկJ}knҤI 5qq\=vP, ؂CvXA--bdw. jnVjbVGPUL+cpmuYR  leŃ_[) z[1MSY\~awGeYf˲;Cޥ`bleNED=AM9a *3ܦE|cV.Jk( ufYjuQH~`Ǎ3+IbN쏱&YsGRyGŋg}Ҵ`{RW2>V3k;v ]X-v?99} :Tɚq'z6݌.1]3zlݡc|u`%eVdj>ZĐi'RY%*Q-x 5&Y1vӧOww{纚.b֫5q^_ ZO`leRE'w= `ET~bAm]Mgkd(`֜<`yVwvpr98MdfsOf 1xc~ǝݍCҵ`ble~F+x Oj݃f*N돉MB![bOei~ ;WQFP[C蘴zÉXs[Nϱ^|U vhKll1G'G{UVi⪫9O^xQw'O 7ڸ'n<(s ,[wt L)vTW/6ߴ#slde`#`;6=ݡYg/Q+~g'>1Lid͘\r:N5`X}F: !kT,)LƤ1On`9:"_W>G?rozVF-ɌP/Z& e2/`K`XJ|r`9:1;|ww;mܣ>~5*]nʔ)L>̠;*5`X= V*li`ӟ/<3Ug?ӀleR"{]w uk;[oT:j?QY3+W Uչjl ->}f=[c,UB[ovmJˬ}E`+{p*-{?^׻|;_lTz'̙3nj41٘Zgόb6ݏz [o}ckSN9e еh|:\u^p}l? `;(,6.Ċw}wsql;C/FA.sm(Ns%8}m7|IgqK~򪼢sᇻ78MEME9zklm` usW~3~]F]V謺ݎ}@~ۧϣJYӶ=1[]S7=[kܩ?6.|n„ [vw-Xj&foOq;6J`167oϯrvS&oxct$7xjScN9M`5eMmFrUm`V&4@4UF7c) Zv`}+;kX؇~)R;cƌVD+tѨ㏻~v4ԩ`;U}6YSoQ"lYXEDZXu/#\?낫nFIYvvz޼QB;& neq'pB*zǜy{VF%iƌeٝj'm5S^me tjrqymVPv 63MS v޼y$bk^K^0%7{r"OOg}nTַ56̹`;m6ӭ.D` -F`($S`L9*F(h8c[ ._#p#}=[^ v~OQooh7 `jlYc`yc`:1]*a w˝Rȫ"XŋSO=4AN~򓟸Y/??}7v,l3K75eVsF5,U`f_u 'cRuX,XHCusjewi lW} `;wҺns>&c`?k]};<[{'kؗ^z}ݭ|`Ts}3'Ы h`ZuI/m՛^$ t!:8C"K-ԍU>[n'\VDžj)l٭2>8`v6mydE`\~y[fg!I~+sϹ:˭ڭ߀_| .׿oG?Tlg /^[1X>`+C&&%.[R6 i5تmTl6S) vnAlW_=<7+դN'reN}O?>O 7]veNYu2pUwaD>H/[bek#li"ۧ)߱ۨ60luDž^p!leRRP] lش:3ßYs=+nYmwfƬCu;KYt, b-ۿ23hM9m $}| Wy Nm'l8V)z8[A_Vmm!@Tum:^AS`k ^VIIA( 6W  `/H7[ɎH*hS#Xnn9Gs.pmove;Fg!3g"[EaՕ(o¤YMyM6q?Zլ$pGg5 Kt ׫WNr] f ~0) KD[ ԮyX}/n;5 *?Z-k6 vNuk`\lTdAIli5y+J*jWYj~&2"Vss4_IօVKwK^\1=, 뮻m?׿R=eVr9kO^ nMpsM CPմhQ"El# `6ܞ5a楃PLJ @in=]B<+1|%>9 ЅgϷ@ēN-Cy{=C_\0f/M_B~z{+b6wۚku5VWa?-x<O=b+B[v]V.9"DW44Sd3**p?cUWܢq^Bg2W LJ @(T$ai$ɭkU*7H7Vsϔ-}Qm"mtubV"i5ցtM~ j=guV4tŭɔ` YMn+GWCUa.[> <~>2T^O(E҅;9&sǿS=et> >㏻6޸>*ɚQ=s[?Y;[oeb9?dkl}݌ګnl{`+*P {>QS'cq!/86:U"/@Uweଲ p'X+S[0Zx["Ν*sΘ5ӓg$*{T!>?w?.ܘ|žs9j+XMKZGmx衇ZhsAo7~뮻57 =<&a 'b<|P  , |P,,*"yȫpb16u-6Ej<Ϫ`{{;\UwъYf̤MXE^ ^H@v{p5BEa-i 4!Ԏ]R `m`fU 2:>E*iKt 6V6`:l ꏱXK~6]ƖVuה+XE/^ ~|Aett(+{r0Uz=UDu7q x7:Fp߶ŋ&s;^O` W `Umnx̚؟ *` :k]  jl۹Õ̜VL"\7ovfEO=XEc7JgΞ:ooTR?v!2HZW20[AU(PMqi4)d6{+ykWegc ږQY~TyOOQa;Ͻa5Qǻt 'L/'|m2ՄNZSVsm~C8+ jYO:ia*1 qv<9c7W RYwfCZ\NdPk@),<~],MiPo]`# ;p!{mtXdGbTr4a2ɢieذMlS9Wdh_ZbǯVKc`N,xlNkMN_j݀#r_K"}XT0qj߾{>EO~Ҋ>mSS_"gҤRբD`;a![i ; U@e<2f=vz%`;wB=]* 8P$bkzH2v~Z3x≎ֆ6^șr7j?i}\{ CC"CzD;mǍ`;wBk -ksHY=_%u '-s„Qx=)9vV[fVM_cWۍk}rK `y jmYszʶQ0KWXθá![?Q l)`{yU8i8QXomn…|u;(^c{[K쬝@ dw*7/5`r#Ofswedҙvv tUE/ [21)iNeQ Ԡ 5hUWAsg7 `%I$v5pW_}ܔd Uex6r<@k_kMXMn7܊j4쬱D`c leźII++PXF s/kN>:k t >͓I`8yV[}ݣ_ynqۮK Ә.7[`ͮ|u׵h$T}{νpPЫsϪltӮ)5`+,ʤ`Xz,XX-GկvR,UUo׶0%["Io],Y tMf)I8K/=] leN[T,$̺`;wԲVݭ(m9`7yw(DOLn=k_Kf͚4@W+}{oT`;^Aۿ׮W63y1leRRP Mg.M4+1X%>9 ;V,+ Or8'p,ĚTdM%pdg@7cn7Xil.x?=] le[T fN*lw[E;j7zwƐjǍ1ZvK-x*r$w)<_jml`;^۟׭BB\V,(uwՌlG7g;;nܹcV /LG`yo}[nɜ4+7X+Cm c۹mn`;v"-U4~DԤdj>7'$pZk3eK`;wvNW%vm-X{'ft\ph"Z6Y+V3+ ;)鎬oiYPl+(-> 188a t!.A,q\7v檫Nzi"i5XկKerAQ㫪=Xhتr9Ze7qd'$3tI-UwauZؑGcً5Q {cʘ&nUWmՕV_ߊ |$: 56'6rCQY>%$O4VV) vhL(VPigItؽ op}\uX'Fd78]tEe`L"~qhj:85D`ÆMS2W =cߏ؟#Hߒ8K*|yd_jd:xmS޵^yJl}vkOYkÎt;sT~vMʫ2/s7ol]tWˮ,vjUF: XoD`r۩ 9}3>}o+2Zb@v$.X͓w `e]뷕29} g$%u+-Z6NƻǶh~[;A26^1lu~xH>Ul`{%0mFAvsG'h)ik5Ubu5r4nUXM"U6";`]GcWMͯr!SLmRkB*1s`#d+ 2Iw @`#{(9 +2 믿; Af!V qvZoѕMlm%dX(Nթ (^u 8`#mmh|cd2ҵ;쮺*wwm7h F dW9 B;I6 f!nSluG: 6YBHߧJ+`TjQ`zR Ol1GȏqZf5 J@tƌ[.\ `uxd<컦MsZՎ1]'.s{+)|9W,[`*lYD'زr PStͽz8 hiIG}Úk;oC{x(ܦ=ߴ_-}0w9 V|P l1G?EW};`ۯTޱo 9s渝vi8#g4h[ [`XؽV#U"nK[g98mjyMԏ>y{ح/(UHybN??hp\k`lÐ XUY LqX1`|O `͚(Pll1GD ~H!?;T>3Nr;Zp'V~Mn}l FWl1Gq) ~H!?[ZAͿ1 - {`X} F: :IC,;s6>c`#1[Ы6l)6a)b`8ϝ*`|k st 4 ,[7tU!vybNiגetۀϭV]uh~\ٳg)SDh~\9s8(C~ևoa}79_6@ϰ>,=y;tz7+|~l>/n5,|-d_XIipkߋj8/)}dP5U鸓m`#//;/֛aIyMkO'Ҵc]r \V _&~|[IFj&OѣjoWn>(ȫ>6mJpAyrͿ,]#dU`bQ|97_Vo 4A6*z0[AeͺU]W)~]X6a lPOMj'iHu,蔵Ɂs`b O'GMpFtm5P68Zt<+82X*x`˚`b? 4P.u8ݾVq۷"íϴOIHU:VyE4G#G-[y/^1]vn{Y)+OWS;Vm QI+-lWYUv>vLzk;ZK?_Otva'kb?Eg.Yc[D`쟴dbКZV=#[Ѥg ς߯}%P:QCX(=0Pҏ`P "zog0npp]ʷvXUiPC4hdD*G49(lN_ڦ:^ Ͽ F*OUP2iH~meZyt W=>N@ nZIwQ9a8.w\Q[!y sK%Ex6V`? u4bWI zBPAy  6i~\( X3PkAV,2@+S[C- :mR@hD0صs#jsxja~0:c|K!эwr:`l^ygKϠg2np2`*3fu[[:ҶOoվ:m}HPY hVd~-|aTYHgvQ, nkiE#,4xjږuJ{=tGdW럧{ܐ l|Kڌ=#%ې%늬m>K[+6*|Y4eX%ް~àzL`# @AjXb(`+ FCS՛_!kcpp986F:VLxu`XĤY_ y/ד={e{>c~$4`{fÉV+ga(?ígz 0+$+Ut Ml^vSV6`BBdaN7-*:"k!6@ KkgҔ;`XϺI+yN3%|akz{ļ\ {v aOzf+IWlwš +$ 4UD`j61gq YD2|V6`}nNcl`Nb $ۛ_ [jpx]C 6ζ]u|XvyQN`XM"ÅbVeY6[k޷AoޱlWM GRIkRߺv:և:+;i?En>?ipipo]Ah8Em5+Xp[ڟ!l= cu'/3u]®u{ZP`X>Ll+Rƴb5P=*ǯ#X/+wl;H#YƖ j\3k̨a6ɢWGtL(ZSO`-ZW4sÞ#ip8 ~xU]۽W]gY$y؏5)0+GOCN'0vy"uONQyQVy`XnQ_=,gtZ.U /3VZ>Z^VmɵɝT oT,NwyJlr$o3VYgJɸWSJ{,k9iCГp6 l@S|_T蘴zGacTn/fs9< XPll3.аkw\ `H\X~{+*rQ(Pll~yP=6P ,&cH]/As tG6RW-(tXte`8j`#'N85 Al, w8 Z stXte`XܽQ(pk `x,[xE"w5-.ot: `H\6`;D`kQ7K˔!I=Ui~e΁ Yvʔ)={+r̜9s1'Og l`8zFeNeR tU"ِC\/&E8~D^ iuN0QRtZjWEUE=9ԑÎ,66H!?$ 嘥; } 2l`mT7XmJM}5}8H(/6F: ITWn>(ȫf;r9:n oYAc8Ӻ> .{Mw׎ #H;aY-뗫\EdlЛl,[f$v!օneq(FH &k M ®Ƃ:ZY֝V 4Vx[F}ǛZ9Y#eO[d,mЪUVZ0kqEA63`ill,[ زq\Ԭ'G6`& J+8 ZC8A^15߰I|NsڧrԾ"MC.ayc\^6 46U`ز:59м)~hl#~$3tvFj{Yc] os6\i݊<~1p'`@7mmsJX vU^ G(;YKdM ljuMV~?qX"B^x/**u;ܺF@/+B"3 4C6~ l)i w'B6cʬx[+.6n291`7u $[%gBDS' t? *M.OzjNdT5VU?n&vjkVTl4,VT5d`\Jgb@N ݛuou卣󩢽l@+ţë`IlI4P5NΕE! .ѱHԍ_`.ѓ6ɱ>i G٘p4) ngif(.~@r-6 B `+"Pnl h׭7ʁLX|E@TvΤOmiW_iݪcl@VዯN)L^%;nۋ.BH_ U-ǕvM `mWjZ>) ڂo+Seile[Tӓ2f):TeF!YN wQ>h͈mk3iy=2Һ[ `pDǪ fZL$Iu=ء<Ir'`y톶Ql'LG@`mo%HԒ"@ ]4ov@=M~WkVJ4x`# kgҶ-$:C[l^.>a]AZltӏfu !`MXn:.l]~>(*9+,i@)F^N^Aol{6`$U&R5ӘkTy!Ԫ,"! ӺEt!ni_u#lxwMOl5`L8Al:HvԆp^[)-kc`K4c+еq9Z+h7p__$bΌNӮv$NC~66_#rԧ[Tllus4u#a4j]ӖQ9f!ƂFVݟXkcy?߀7mc.vmȯ_ߦ4}flÐ ׈)֧55U)$ 4͙=dY熓9 e%`Fk>#`}W6/ǏZ7mU]H[(m[ɖ*J[c6OC~66_#rԧ[Tl,PH}\m \fat>`#`aw^9l)#lt>`#`{4Nh 49n*+o{lÐ ׈)֧55U)$<z؝I:mtMLܜ(Pl-2SI j8u:ԅa@ltȆ@ۀ 4A6*8Ms&i6 `u0 K(rkȫ ((R `M6a  l]/Z(0}$!F,dӜIڃMb@6*@*059CΌlBG*((R `M MB`kjPJXɦ9:mҫ,/^Z 8u:ԅa@l!BUkϙ,dӜIڃMb@6CQCp,b"uaofs'ݰ?/[11)iNeQ Ԡ[TU+`Fly Zf &:SϽ96 VY(jPAd@`DN{l`IX7}}ǀ{6`mV[͝u@lC ̳`+RKiA ` :uƀf}ln„ yf[w ,[SV&%ե[$W4v?~(n /tO?t/2te|llU`+*P`zRr<_ʔD7zz瘣}tך̶ s9gMrcjw/JleRRP HȝT @iL6RJ"q t4p]{ٳݯ~ctx0g`5"G} iMM)F  pݰmēNu"&Mr'p[x{g;J*GYٛm<\_g6akDح\Q_ *F}y[{:r8G|IsU}QwGeYf=zPlt>P +kv)D[lm`΅8EB-**vÍ6v_z% [DOlÐ ׈)֧55U)$6I^iWw?яo~FuQc֛-,d;Y6akD`Ӛ*R&o01c[c5ܧ?8/B#OS}LÎ`|l F: |Q[ƍIC7>ll; `կo}l9soƤ+M2śyc|l9[`#llFO6 :h\*i6RL4606ϟ﮽Z]vzw]c7M6g}C~IĝP';MWtwqi5uZ/*_>O;-d#C%t` , `M* @CmG! wl-[Z(vrk @;sOk\_zw'Ig1cymlQϡ LLX%ih4zӒ +6ު%`[ DJJ|@+p/bcfOfmƌ=s_pO=" l 硆C47ޘX s*4-(pK;=(CtqxEi2wb?4&{cNf|l*t|}?7pёUIJͳn"lX.lD6ޱ |( ~o[y駟v~_;nحl뮽aؑh,L^~}Q ގQW2qg>N;GmW_wm]|W{&Nt$3s}ZN1{'>~aO}gqƤܽ3>v>2>6خ P, F,M9ƓY};i k*_9FtrT4Sٳg 蠌8;F|E]Zw]7UjM>hv[m?5&m;(.3~| y|,$䕶l lwZu~ŋ]GpYS4.r&YuUT4 .z?>V"wt˻ɽk =SꫯvSNuz׻C=P:~GvHV;`+v,**`+2,[ǝVqlc /gK r!~ss믴;}֨b'p/g_}~u _Q`+s,&&%U6  Vfm `X;:8`تfʋ)7n\O>>^{mw/=M_ֵ`*~cq&'`تl]9, qU\Dl E}qf:o~MI `z{oK'?qYkz饗vvR;,[kXY1RSf몎a%`d(/ޫ[1n‹^L~2\Bg.>>3WkI[p+vש]{uB\{H= CJq2`L9]ؙO8'`)ꋻ7) `V\ѽA;+[nqN,>swzp I'?8u:)*pڴwq馛Xo*V*pH)NO,{vuebcјK AS槁ne_J V[̚,[5(Q^o5Oet4 MWt+~'I&KT}#i[`߸n̙nM6q]vJ">h ^mk{le .IJs'Jjzu!@j`y;nSUleRsX6|w/5],UwMWY=72 60)b>n-,/~-Zk/{x#8WM$@O.֋vr`Rl8XsVyE1.rL/=8J9,t}qrNY+뷢ߨ-;lS>{`Ѕ.nY"28?':֌PoTȪ.ĭY#_A-srX6|w/5]<n<}~޿+#Y(q va7=LJjVݙX-C2 8zKS 6) %t ,H5ձ0x˜]v؆i. 3,'4-(`m:xѾ{9O ,hu!u`F (UW]8W?]q-{'ƺn FtNl.i`32+Oízr*rh CULe)جR@f7 <`MQ3p0o|l-(ƍ`^KM)`5)f Vz$عs3L;n緿=u}nu`0g#pHؕ7 2pjZoK`ZM0B2I]F'߬ 1z7< {%jXl9=,t}qrN?ywH2KևDcN_=䓭O?{gZR9'4͙3=i6s܍78fX\`_6aklͣ#Zq0 ɴYp8X xװkf&y`Eohl&q"t3l?^jN{v_ߚXi˱&waMdۓ1&-# #-gle^llЧ3l8!eD``t7P{BϢ~x?*+.kڊXX6&Z&6`ئ틻t`~a{>k-raӦ^5^֒'MrIO؞wyg4V-[\IIVI Z>Pz?nr0Yc`>zl2#,"D`0~H,$<5}#ہ7k lթm9З-sxX6|w/5]NVW\]vYO}j pq ~I#YEf6A`[_ذ1qDZMlaهz9 ha%~[U7a.'` +Dz8`^Ծ9^┺qΝ$ԇպ'Nt>hk 췓hwXDb'IVC}_ó҂SK[gtvfz+aoLlHX-B6Ӱe8iw.V 4Mn)) l7`2P85Tfeƻr$H%Q`9(>iw-VYŽAIÇzgZZU@)͟?5& [ܦHl~o̬>Ԇ&cubz\j~ڞIּN.~ «~bn:6`*2< `~~ǝ݉'n[4VՒnXmlfkيZ?(YVK~cJ VӒ`k֩UCMtw'nrZs{y_waG?] `oJS>4ϺϥkZ%C~Uy~O6Ρ`تfʋtXf7pH]{üB0U :]1%0{^2+{&\"m7&q,=+UVC^U/m[>Rʯn iG6ʰXԍ&]1yP:nܳ#X`GIZ7rt5X5q/Χr|WEфjtWEJ+qI6&FbRAoL7<[}o[}׊pg?s>,r8ց-]K9]R˛&qzܸ/<<4OM q6 v\w(Hs/~1;mD@6&5`w˾uXa7« VuGS Rۥ:&qzvSwuRHzSz `E{#0U:.oʸq9o4Oʃ?qn) `ӢGZFG>æk]آ%:ޫ {z_k[dzRkXuSJZzdv+ӂb #9C/U γJ}مXF"y!#1Cq_(wm֛˧aWdڮr|hqͯ'{cfEfkKu]:Nos¶uƻUVHlSmQi[ITEXLmwv%pjzTi=dօ1jIk *-<@n`>\XEmk3so6ƸdOݍ̸}c.ȂLIm3hQ(4pRmKoz_A)Oگm*˺Lox87Oћ9ZO6`~tisn'u;ݷѱ[f7!I X&~reG^4idccNf~馛ZyiL qN@Gs{nPV{`+3 `ȦE}ƈɓkC l@LFi@6?<FoVWo Exa4эrS(-r<[كTAl ygE`oI"I8}pK u$/#cmR3fMWܵ5b3]hIlyv2zD=1}?To}^.?2~'tNaO_6oGE`J,9]Sgz;nO{olZ" aY7rCݏpYC,r[=SMCSVcYSuq63l`/`/V֟+t;o-Y";3ۂʴفoF7yd⣒ΛI8{.3&`zK7ÝA|ߐȾ!K}!~ HYP^i=?TY~Pcɩ"~}ʬ_ 1VUFaƣrt!. v34B\:9)\ q6/F;;v…(jwOtw,gq[1 RAM6iɞ6Hf2`XPش^El[;3Ap+36;qT'>ֱlYmvolҥP0z7#3ó7 ~;Xzԃp҅8?K6Ζf'ƍ7؝}٭%o4V([C}sђ7'tR+L_WUw}wt`|Xc~#1p' {m+&`m VVNhe%w%.N/oT\9l ^ܽ2,:unWٵ^{kllt9,_j jD5~XM&U&tMNK=sk']> %N4u5K<l`rVXK/= o~[{e7%@֢GS[nT`^S~HVl}pK.QO,ꖨW|s7wHq6NIcx^d|Ig}{ĉ< bOO"h9\sM `uI, vhS+,\ y8l>qNsm7d>ڱEMd<,7pC?N&)BmKuX& ui9, x+igV^yd79s渻;*mF; b2:j ؗmر8ȔlwZuqNmny]ҫ_|VRIز[VkMF_5/6=f-royt!Nho4xtșǸWo}[_ >jyE_Їw1`$]|NcvJ+ ;۔΃q{f9 ==06]DU^Q,cqI6=Fci~N:f|2:Z'- `$@˻7߼5[+lE`e}ahE~HV,[e%K;:ph?v6pWu_(0&SOM½.?|%uh={_.-{Mwͪ9Cm3[)ܯ!jiy|_GUuնSկo"r&ʗ6VTgǨ qEf:>4r( ӜYZۧ6% ScjOUKlFtWtsUW~~5]yDQFmC~Jv$.d&V(GnyEbɌSsp4_?lhہeFhU":΢VZykt8!Z?1l-Fw gs[׿͚5=tzʶNCatUU2XC&)F^ cQİk ч\ߏpg]8eV ~ 5^U6i9 `CX`Z `k񱂬^z4"?aD\K.QF: |Ql}ZSSE B_H~wa`$Er8)F+!Zqi6-fk1g4]3>vpIpt>`#`9$N6Iuni3a*hL^EA5f.ayy2-Ӵ(.c`p^Y6^b' 0g`5"G} iMM)F s~et6yVPiqx3Ӵ樖Zڤ[Mڤr-8!ZdSN x`#llFO>"H!x'G **@󣗊k"Ӣayiδe(!XDmipE:~[M(6d?B/lz`#llFO>"H!ꝡ( ƔY6=Yup\o ȷ6akD`Ӛ*Rwn Hn7-ӺZg-Yx67v Ԛ9ydoәÓ<@#`qhDH&v.TF˱`ͱzmtȆ@۫Z6:J8 `@ltȆ@N@]o-yf9R8\l6a  l]/Z(0}$!Fl)zc6,`qP` աygF6O!@`Hr=li6ڤ21]^[l5)$4ՠ@ 8E=c3؀&tK9K+ڀfVמ;`*( KE8LNlh (\S(Џ l7tY9'=1"g>x4lEw6P-4tn ou߰m5StQzZ}V-irl[VVvֹ 6&OpSOZ(PlygcJ~kM}䈙NTJߏjm<_tOu18c i_nx=_<[ePV}nCqY'( a~+bM:ԁ((C]`A_l>0pɄ!|k#AS&v "'-qgSg l6``UvL+ׇTw+׏>}PC}7}LCrG@@:`scEqMr6 i|} (PH\dX[N!b[uۀ͟WoxQ}#0ni.lA[FGyնp=oEd:16˲AͻN?WϟY՞Prom<0iܔll#e7!0jD2bҩIQ)P#COt},šVX+W7}6?ڦK琶LhI;ElZj\f"A6le.Š$[=-O3`ºt~! `Nʀm)h <i TujeZ;غ%(`uܰll@{3ݚ.ƊZd6 kҘ6ʟPj@ d=rC~\jw{ .}PaXArVt5m x/%o ɹa@6 Uw_n̶̎`ֶ M` (U/ T'-H ,, bqY&C CtY|my@,aFb}F5! B-[~ V0ya+606tU_?mFufaP*V+|zMoZln*P`}6Enu!#~u, :v `6 T )`2U %g4_>-7}60‚߳X34lYiՅXMi݊n.[AǨm&oC}=mk5jYA'̆[c]~O4-xdG Hj{-F-c Hֈ&>doUB1og-].e`qb؆KfZ& 3jGJG:^ـ` ix)]3T[liUyCUg@RSX`닗aD7,ۢ*dQ``Aæd뭿{hImkjڼJkJײ68v枚! +*P2P &>p#41=6;H-E B˦iMݨKtWYe~#4 PPP`KU{CF\OlVҏTۭ g Vٴq~7Y*{Ë"Cueu,] ڡV鐥v.0M8a@@@>P`Vx,SĹ&//6`jpi[ x!*Ϗ1MꯒU>BiWhuvn~bMOU;i, :oCDZ;\x[inG6MD@@Xy-%gaۀ`,:u5aTpçAOI58w֧V( / 4`UO[emh9B܏]4?Sr-5<@@@>P`+_{9Ѕ.60P6`p.^| !ASDg9 D6@LJ0kX#G[>4PPP Q`OD?5 >XF- `|lu7v5iZ]g+oo(FobT<@SS^5Ŷև0{_/r606ۅXiMռl^43沠 f}ȓne0>9g@T@k( TfWGpE }Q08XǟuHvi,3I kc` f/mcHjXwf^Ӵ6뱵V2ӗN;í &r"{s)r*e?~g;/ 9^6`6^˰?q 8#uXeڌ!̽;IFƝZYUi+˖Q9~j[Vȟ9 7Mp~n̳c4 BZoV)U ]rSԎ)zmǥuoTKqӶ17/ߩ+U:!h"jKɜ}Lij1Im֡2~mWڕ!VYvNa{*29US-p'N? r+(lh.SdVIfiхcWoD72}>_# SeH!nAl(jYfc3 O\=NtY3w^=w+ 0<:Y-8HC0{ .aRӇGƬɐ"O+pou -h_OhYT+ڧn[(,˩`؀u.xRETc-zVw; rZ?% $m8RowX/P9w+Rc.pS7lzE4¥tK5R}p9VN.3yJx> 7[I1[5z5vb],Xf]3M>h_v3}ԆAGui^3\_Lߠڱu3ѥEvNV[TUF*ol׾ct(6 `ՋqϺ[I}P 4m(`?g*_umJ ;CȠiӼ|LشYOSQi|v-xFiŰLJݼ12Lu|,ݝZꪓO^8ԉS `6- Zmⳗ6u0teUӱ]sgi-YŏԆ+X7c7s줭R:6 X4+CLZЀޒ0(-bc-'rqPlE^ߺ~k~yٜшaSY=CùflioO+#wYuL6l$*҂tlo˴'v2DXq&`ONg"f~7F۲?Pzn[qi{t3.gzp̱lh ,\H<҆]aj³6tMHC?SVC woMM+cV:Z]3ea\GY^3lUŶ~ւd8v /4&aպ+s- m &Zflk3u:`6o[uҤgVC O&ZD:N?3p8C擫>}:u!qVIM6Z/BP A?7ʪ1MOVT9G|rmɋ"8QN6 `W<ۭj/N8=qӜaжav0d+)Y-Xծ/oijpgeZy~WN_ZS ֵڇh) @]G<vf!- ^"MhԺ b,}8VaSW^y{Xc?~șq, `6PO8//_p4yp{g跇˾KP>oj@kvk3 P~Lruc#i5?3\/GF̎umq *c4՝#\1vۑꍌ9)Iq 9 ows?snvl6`=sv:Ə_)<Mf};_qr-{9@@@@@X>)GEn_Tt2kФE?lB:h=BW/5츲8+K[t~e{ɋ(((((0 &YIQBXK?. ԥAky;gvv_yŜ{<l r< @KXA4m 1S'vEt v1GR"WTo)Xдv|1W<(((((Sذq^l0TENm't,>Eu!NXt&1݆4PPPPP Fvu~Eo"vݍCTF'-ke+Ϗ8eGcifg2&im^<4λiۂE۵ʻ1L@@@@@V `Ɍ|P ZwP6*Auv]~V7+ kQSՍZ2mjV9k;k_uUNkw]fZ~Ktژ`ٕ_Kyɩ X+ XZɴҢMб>M^P~g &X #ifAFuOx]Z4S~0rx6TyO(l 1~lY^]GficZ鬺 ,× iv⃯-¬sL%;@@@@@h)``֭VpQfЬm*fz> U )+j],=L7^K:㳺 !녅I>67k4]eQPPPP\?2h]j53P6oW+ˠ&EL>٘6mتtg>6"t6i^0OLd9\Hk ۖG@@@@T @;5 R$UaFqCP[+*X#UldNֵ8'eq-pM!=9]@@@@@_]OТ(((((}mσr]G6 _ce{U10N+W/j† @* pM8v%#x ۮV_nj. YPcF ڭYݙ^aLC;6jjf9_BMUF Ĵ!.Tڷ3ߞAu>mZ:ԝ(((((mH*smR%e߾ U *Q!ژU}Y3qaQW>JjYGtvܬˡsY9w V~pib6L.Ŵ!.o߀6\Z&,˺lG@@@@P@PNdvx3yT`Ӡ %BX lڸ߬(i AݱX@^0&FK6(iFѭ6X=ۆłoi܇UE#n 4Am18оp,mI!LBuv3e bISUWeHkC<]p[xiggڤ`^;cڐVFڶMɿo:<6Mա (((((PR0;ƕX Ni|Ӝ Ӗ`U+tlܱ̃S]> 9 PPPPU!OF% %`Mjp)pI2 ` " D?cam 1]v.YjB _b!ͮm>Q~Ft=qj?XV3 qv@@@@l_|Jn3kG- -QP^nYT"t?Vg8mW.;,2=m[x}ٙv/\{}YHp;_}^b#u#,_ٔl(C|V&(ە& duLZT-pF[ՙ,_EwϬxڢ㲎-]^Ӯm;߼6䝃owl[ Ŷ|((((( P mңe3}hNA4PPPPPPP4T~7>wFꖜ PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP KEmWIENDB`cinder-2014.1.5/doc/source/devref/0000775000567000056700000000000012540643114017670 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/source/devref/api.rst0000664000567000056700000000713212540642603021200 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. API Endpoint ============ Cinder has a system for managing multiple APIs on different subdomains. Currently there is support for the OpenStack API, as well as the Amazon EC2 API. Common Components ----------------- The :mod:`cinder.api` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.api.cloud` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api.cloud :noindex: :members: :undoc-members: :show-inheritance: OpenStack API ------------- The :mod:`openstack` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api.openstack :noindex: :members: :undoc-members: :show-inheritance: The :mod:`auth` Module ~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api.openstack.auth :noindex: :members: :undoc-members: :show-inheritance: EC2 API ------- The :mod:`cinder.api.ec2` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api.ec2 :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cloud` Module ~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api.ec2.cloud :noindex: :members: :undoc-members: :show-inheritance: The :mod:`metadatarequesthandler` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.api.ec2.metadatarequesthandler :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`api_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`api_integration` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api_integration :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cloud_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.cloud_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`api.fakes` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api.fakes :noindex: :members: :undoc-members: :show-inheritance: The :mod:`api.test_wsgi` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api.test_wsgi :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_api` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api.openstack.test_api :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_auth` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api.openstack.test_auth :noindex: :members: :undoc-members: :show-inheritance: The :mod:`test_faults` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.api.openstack.test_faults :noindex: :members: :undoc-members: :show-inheritance: cinder-2014.1.5/doc/source/devref/gerrit.rst0000664000567000056700000000125212540642606021723 0ustar jenkinsjenkins00000000000000Code Reviews with Gerrit ======================== Cinder uses the `Gerrit`_ tool to review proposed code changes. The review site is http://review.openstack.org. Gerrit is a complete replacement for Github pull requests. `All Github pull requests to the Cinder repository will be ignored`. See `Gerrit Workflow Quick Reference`_ for information about how to get started using Gerrit. See `Gerrit, Jenkins and Github`_ for more detailed documentation on how to work with Gerrit. .. _Gerrit: http://code.google.com/p/gerrit .. _Gerrit, Jenkins and Github: http://wiki.openstack.org/GerritJenkinsGithub .. _Gerrit Workflow Quick Reference: http://wiki.openstack.org/GerritWorkflow cinder-2014.1.5/doc/source/devref/jenkins.rst0000664000567000056700000000273612540642603022075 0ustar jenkinsjenkins00000000000000Continuous Integration with Jenkins =================================== Cinder uses a `Jenkins`_ server to automate development tasks. The Jenkins front-end is at http://jenkins.openstack.org. You must have an account on `Launchpad`_ to be able to access the OpenStack Jenkins site. Jenkins performs tasks such as: `gate-cinder-unittests`_ Run unit tests on proposed code changes that have been reviewed. `gate-cinder-pep8`_ Run PEP8 checks on proposed code changes that have been reviewed. `gate-cinder-merge`_ Merge reviewed code into the git repository. `cinder-coverage`_ Calculate test coverage metrics. `cinder-docs`_ Build this documentation and push it to http://cinder.openstack.org. `cinder-tarball`_ Do ``python setup.py sdist`` to create a tarball of the cinder code and upload it to http://cinder.openstack.org/tarballs .. _Jenkins: http://jenkins-ci.org .. _Launchpad: http://launchpad.net .. _gate-cinder-merge: https://jenkins.openstack.org/view/Cinder/job/gate-cinder-merge .. _gate-cinder-pep8: https://jenkins.openstack.org/view/Cinder/job/gate-cinder-pep8 .. _gate-cinder-unittests: https://jenkins.openstack.org/view/Cinder/job/gate-cinder-unittests .. _cinder-coverage: https://jenkins.openstack.org/view/Cinder/job/cinder-coverage .. _cinder-docs: https://jenkins.openstack.org/view/Cinder/job/cinder-docs .. _cinder-pylint: https://jenkins.openstack.org/job/cinder-pylint .. _cinder-tarball: https://jenkins.openstack.org/job/cinder-tarball cinder-2014.1.5/doc/source/devref/services.rst0000664000567000056700000000457112540642603022256 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. .. _service_manager_driver: Services, Managers and Drivers ============================== The responsibilities of Services, Managers, and Drivers, can be a bit confusing to people that are new to cinder. This document attempts to outline the division of responsibilities to make understanding the system a little bit easier. Currently, Managers and Drivers are specified by flags and loaded using utils.load_object(). This method allows for them to be implemented as singletons, classes, modules or objects. As long as the path specified by the flag leads to an object (or a callable that returns an object) that responds to getattr, it should work as a manager or driver. The :mod:`cinder.service` Module -------------------------------- .. automodule:: cinder.service :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.manager` Module -------------------------------- .. automodule:: cinder.manager :noindex: :members: :undoc-members: :show-inheritance: Implementation-Specific Drivers ------------------------------- A manager will generally load a driver for some of its tasks. The driver is responsible for specific implementation details. Anything running shell commands on a host, or dealing with other non-python code should probably be happening in a driver. Drivers should minimize touching the database, although it is currently acceptable for implementation specific data. This may be reconsidered at some point. It usually makes sense to define an Abstract Base Class for the specific driver (i.e. VolumeDriver), to define the methods that a different driver would need to implement. cinder-2014.1.5/doc/source/devref/auth.rst0000664000567000056700000002014512540642603021367 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. .. _auth: Authentication and Authorization ================================ The :mod:`cinder.quota` Module ------------------------------ .. automodule:: cinder.quota :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.auth.signer` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.auth.signer :noindex: :members: :undoc-members: :show-inheritance: Auth Manager ------------ The :mod:`cinder.auth.manager` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.auth.manager :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`auth_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.auth_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`access_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.access_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`quota_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.quota_unittest :noindex: :members: :undoc-members: :show-inheritance: Legacy Docs ----------- Cinder provides RBAC (Role-based access control) of the AWS-type APIs. We define the following roles: Roles-Based Access Control of AWS-style APIs using SAML Assertions “Achieving FIPS 199 Moderate certification of a hybrid cloud environment using CloudAudit and declarative C.I.A. classifications” Introduction ------------ We will investigate one method for integrating an AWS-style API with US eAuthentication-compatible federated authentication systems, to achieve access controls and limits based on traditional operational roles. Additionally, we will look at how combining this approach, with an implementation of the CloudAudit APIs, will allow us to achieve a certification under FIPS 199 Moderate classification for a hybrid cloud environment. Relationship of US eAuth to RBAC -------------------------------- Typical implementations of US eAuth authentication systems are structured as follows:: [ MS Active Directory or other federated LDAP user store ] --> backends to… [ SUN Identity Manager or other SAML Policy Controller ] --> maps URLs to groups… [ Apache Policy Agent in front of eAuth-secured Web Application ] In more ideal implementations, the remainder of the application-specific account information is stored either in extended schema on the LDAP server itself, via the use of a translucent LDAP proxy, or in an independent datastore keyed off of the UID provided via SAML assertion. .. _auth_roles: Roles ----- AWS API calls are traditionally secured via Access and Secret Keys, which are used to sign API calls, along with traditional timestamps to prevent replay attacks. The APIs can be logically grouped into sets that align with five typical roles: * Base User * System Administrator/Developer (currently have the same permissions) * Network Administrator * Project Manager * Cloud Administrator/IT-Security (currently have the same permissions) There is an additional, conceptual end-user that may or may not have API access: * (EXTERNAL) End-user / Third-party User Basic operations are available to any : * Describe Instances * Describe Images * Describe Volumes * Describe Keypairs * Create Keypair * Delete Keypair * Create, Upload, Delete: Buckets and Keys (Object Store) System Administrators/Developers/Project Manager: * Create, Attach, Delete Volume (Block Store) * Launch, Reboot, Terminate Instance * Register/Unregister Machine Image (project-wide) * Request / Review CloudAudit Scans Project Manager: * Add and remove other users (currently no api) * Set roles (currently no api) Network Administrator: * Change Machine Image properties (public / private) * Change Firewall Rules, define Security Groups * Allocate, Associate, Deassociate Public IP addresses Cloud Administrator/IT-Security: * All permissions Enhancements ------------ * SAML Token passing * REST interfaces * SOAP interfaces Wrapping the SAML token into the API calls. Then store the UID (fetched via backchannel) into the instance metadata, providing end-to-end auditability of ownership and responsibility, without PII. CloudAudit APIs --------------- * Request formats * Response formats * Stateless asynchronous queries CloudAudit queries may spawn long-running processes (similar to launching instances, etc.) They need to return a ReservationId in the same fashion, which can be returned in further queries for updates. RBAC of CloudAudit API calls is critical, since detailed system information is a system vulnerability. Type declarations ----------------- * Data declarations – Volumes and Objects * System declarations – Instances Existing API calls to launch instances specific a single, combined “type” flag. We propose to extend this with three additional type declarations, mapping to the “Confidentiality, Integrity, Availability” classifications of FIPS 199. An example API call would look like:: RunInstances type=m1.large number=1 secgroup=default key=mykey confidentiality=low integrity=low availability=low These additional parameters would also apply to creation of block storage volumes (along with the existing parameter of ‘size’), and creation of object storage ‘buckets’. (C.I.A. classifications on a bucket would be inherited by the keys within this bucket.) Request Brokering ----------------- * Cloud Interop * IMF Registration / PubSub * Digital C&A Establishing declarative semantics for individual API calls will allow the cloud environment to seamlessly proxy these API calls to external, third-party vendors – when the requested CIA levels match. See related work within the Infrastructure 2.0 working group for more information on how the IMF Metadata specification could be utilized to manage registration of these vendors and their C&A credentials. Dirty Cloud - Hybrid Data Centers --------------------------------- * CloudAudit bridge interfaces * Anything in the ARP table A hybrid cloud environment provides dedicated, potentially co-located physical hardware with a network interconnect to the project or users’ cloud virtual network. This interconnect is typically a bridged VPN connection. Any machines that can be bridged into a hybrid environment in this fashion (at Layer 2) must implement a minimum version of the CloudAudit spec, such that they can be queried to provide a complete picture of the IT-sec runtime environment. Network discovery protocols (ARP, CDP) can be applied in this case, and existing protocols (SNMP location data, DNS LOC records) overloaded to provide CloudAudit information. The Details ----------- * Preliminary Roles Definitions * Categorization of available API calls * SAML assertion vocabulary System limits ------------- The following limits need to be defined and enforced: * Total number of instances allowed (user / project) * Total number of instances, per instance type (user / project) * Total number of volumes (user / project) * Maximum size of volume * Cumulative size of all volumes * Total use of object storage (GB) * Total number of Public IPs Further Challenges ------------------ * Prioritization of users / jobs in shared computing environments * Incident response planning * Limit launch of instances to specific security groups based on AMI * Store AMIs in LDAP for added property control cinder-2014.1.5/doc/source/devref/database.rst0000664000567000056700000000330012540642603022164 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. The Database Layer ================== The :mod:`cinder.db.api` Module ------------------------------- .. automodule:: cinder.db.api :noindex: :members: :undoc-members: :show-inheritance: The Sqlalchemy Driver --------------------- The :mod:`cinder.db.sqlalchemy.api` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.db.sqlalchemy.api :noindex: The :mod:`cinder.db.sqlalchemy.models` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.db.sqlalchemy.models :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.db.sqlalchemy.session` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.db.sqlalchemy.session :noindex: :members: :undoc-members: :show-inheritance: Tests ----- Tests are lacking for the db api layer and for the sqlalchemy driver. Failures in the drivers would be detected in other test cases, though. cinder-2014.1.5/doc/source/devref/addmethod.openstackapi.rst0000664000567000056700000000536112540642603025042 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 OpenStack Foundation All Rights Reserved. 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. Adding a Method to the OpenStack API ==================================== The interface is a mostly RESTful API. REST stands for Representational State Transfer and provides an architecture "style" for distributed systems using HTTP for transport. Figure out a way to express your request and response in terms of resources that are being created, modified, read, or destroyed. Routing ------- To map URLs to controllers+actions, OpenStack uses the Routes package, a clone of Rails routes for Python implementations. See http://routes.groovie.org/ for more information. URLs are mapped to "action" methods on "controller" classes in ``cinder/api/openstack/__init__/ApiRouter.__init__`` . See http://routes.groovie.org/manual.html for all syntax, but you'll probably just need these two: - mapper.connect() lets you map a single URL to a single action on a controller. - mapper.resource() connects many standard URLs to actions on a controller. Controllers and actions ----------------------- Controllers live in ``cinder/api/openstack``, and inherit from cinder.wsgi.Controller. See ``cinder/api/openstack/servers.py`` for an example. Action methods take parameters that are sucked out of the URL by mapper.connect() or .resource(). The first two parameters are self and the WebOb request, from which you can get the req.environ, req.body, req.headers, etc. Serialization ------------- Actions return a dictionary, and wsgi.Controller serializes that to JSON or XML based on the request's content-type. If you define a new controller, you'll need to define a ``_serialization_metadata`` attribute on the class, to tell wsgi.Controller how to convert your dictionary to XML. It needs to know the singular form of any list tag (e.g. ```` list contains ```` tags) and which dictionary keys are to be XML attributes as opposed to subtags (e.g. ```` instead of ``4``). See `cinder/api/openstack/servers.py` for an example. Faults ------ If you need to return a non-200, you should return faults.Fault(webob.exc.HTTPNotFound()) replacing the exception as appropriate. cinder-2014.1.5/doc/source/devref/threading.rst0000664000567000056700000000435612540642603022401 0ustar jenkinsjenkins00000000000000Threading model =============== All OpenStack services use *green thread* model of threading, implemented through using the Python `eventlet `_ and `greenlet `_ libraries. Green threads use a cooperative model of threading: thread context switches can only occur when specific eventlet or greenlet library calls are made (e.g., sleep, certain I/O calls). From the operating system's point of view, each OpenStack service runs in a single thread. The use of green threads reduces the likelihood of race conditions, but does not completely eliminate them. In some cases, you may need to use the ``@utils.synchronized(...)`` decorator to avoid races. In addition, since there is only one operating system thread, a call that blocks that main thread will block the entire process. Yielding the thread in long-running tasks ----------------------------------------- If a code path takes a long time to execute and does not contain any methods that trigger an eventlet context switch, the long-running thread will block any pending threads. This scenario can be avoided by adding calls to the eventlet sleep method in the long-running code path. The sleep call will trigger a context switch if there are pending threads, and using an argument of 0 will avoid introducing delays in the case that there is only a single green thread:: from eventlet import greenthread ... greenthread.sleep(0) MySQL access and eventlet ------------------------- Queries to the MySQL database will block the main thread of a service. This is because OpenStack services use an external C library for accessing the MySQL database. Since eventlet cannot use monkey-patching to intercept blocking calls in a C library, the resulting database query blocks the thread. The Diablo release contained a thread-pooling implementation that did not block, but this implementation resulted in a `bug`_ and was removed. See this `mailing list thread`_ for a discussion of this issue, including a discussion of the `impact on performance`_. .. _bug: https://bugs.launchpad.net/cinder/+bug/838581 .. _mailing list thread: https://lists.launchpad.net/openstack/msg08118.html .. _impact on performance: https://lists.launchpad.net/openstack/msg08217.html cinder-2014.1.5/doc/source/devref/scheduler.rst0000664000567000056700000000310212540642603022376 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Scheduler ========= The :mod:`cinder.scheduler.manager` Module ------------------------------------------ .. automodule:: cinder.scheduler.manager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.scheduler.driver` Module ----------------------------------------- .. automodule:: cinder.scheduler.driver :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.scheduler.filter_scheduler` Driver ----------------------------------------- .. automodule:: cinder.scheduler.filter_scheduler :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`scheduler_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.scheduler_unittest :noindex: :members: :undoc-members: :show-inheritance: cinder-2014.1.5/doc/source/devref/launchpad.rst0000664000567000056700000000316412540642603022367 0ustar jenkinsjenkins00000000000000Project hosting with Launchpad ============================== `Launchpad`_ hosts the Cinder project. The Cinder project homepage on Launchpad is http://launchpad.net/cinder. Launchpad credentials --------------------- Creating a login on Launchpad is important even if you don't use the Launchpad site itself, since Launchpad credentials are used for logging in on several OpenStack-related sites. These sites include: * `Wiki`_ * Gerrit (see :doc:`gerrit`) * Jenkins (see :doc:`jenkins`) Mailing list ------------ The mailing list email is ``openstack@lists.openstack.org``. This is a common mailing list across the OpenStack projects. To participate in the mailing list: #. Subscribe to the list at http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack The mailing list archives are at http://lists.openstack.org/pipermail/openstack/. Bug tracking ------------ Report Cinder bugs at https://bugs.launchpad.net/cinder Feature requests (Blueprints) ----------------------------- Cinder uses Launchpad Blueprints to track feature requests. Blueprints are at https://blueprints.launchpad.net/cinder. Technical support (Answers) --------------------------- Cinder uses Launchpad Answers to track Cinder technical support questions. The Cinder Answers page is at https://answers.launchpad.net/cinder. Note that `Ask OpenStack`_ (which is not hosted on Launchpad) can also be used for technical support requests. .. _Launchpad: http://launchpad.net .. _Wiki: http://wiki.openstack.org .. _Cinder Team: https://launchpad.net/~cinder .. _OpenStack Team: https://launchpad.net/~openstack .. _Ask OpenStack: http://ask.openstack.org cinder-2014.1.5/doc/source/devref/architecture.rst0000664000567000056700000000506012540642603023107 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Cinder System Architecture ========================== The Cinder Block Storage Service is intended to be ran on one or more nodes. Cinder uses a sql-based central database that is shared by all Cinder services in the system. The amount and depth of the data fits into a sql database quite well. For small deployments this seems like an optimal solution. For larger deployments, and especially if security is a concern, cinder will be moving towards multiple data stores with some kind of aggregation system. Components ---------- Below you will a brief explanation of the different components. :: /- ( LDAP ) [ Auth Manager ] --- | \- ( DB ) | | cinderclient | / \ | [ Web Dashboard ]- -[ api ] -- < AMQP > -- [ scheduler ] -- [ volume ] -- ( iSCSI ) \ / | novaclient | | | | < REST > * DB: sql database for data storage. Used by all components (LINKS NOT SHOWN) * Web Dashboard: potential external component that talks to the api * api: component that receives http requests, converts commands and communicates with other components via the queue or http * Auth Manager: component responsible for users/projects/and roles. Can backend to DB or LDAP. This is not a separate binary, but rather a python class that is used by most components in the system. * scheduler: decides which host gets each volume * volume: manages dynamically attachable block devices. cinder-2014.1.5/doc/source/devref/development.environment.rst0000664000567000056700000001210612540642606025314 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Setting Up a Development Environment ==================================== This page describes how to setup a working Python development environment that can be used in developing cinder on Ubuntu, Fedora or Mac OS X. These instructions assume you're already familiar with git. Refer to GettingTheCode_ for additional information. .. _GettingTheCode: http://wiki.openstack.org/GettingTheCode Following these instructions will allow you to run the cinder unit tests. If you want to be able to run cinder (i.e., launch VM instances), you will also need to install libvirt and at least one of the `supported hypervisors`_. Running cinder is currently only supported on Linux, although you can run the unit tests on Mac OS X. See :doc:`../quickstart` for how to get a working version of OpenStack Compute running as quickly as possible. .. _supported hypervisors: http://wiki.openstack.org/HypervisorSupportMatrix Virtual environments -------------------- Cinder development uses `virtualenv `__ to track and manage Python dependencies while in development and testing. This allows you to install all of the Python package dependencies in a virtual environment or "virtualenv" (a special subdirectory of your cinder directory), instead of installing the packages at the system level. .. note:: Virtualenv is useful for running the unit tests, but is not typically used for full integration testing or production usage. Linux Systems ------------- .. note:: This section is tested for Cinder on Ubuntu (12.04-64) and Fedora-based (RHEL 6.1) distributions. Feel free to add notes and change according to your experiences or operating system. Install the prerequisite packages. On Ubuntu:: sudo apt-get install python-dev libssl-dev python-pip git-core libmysqlclient-dev libpq-dev libffi-dev On Fedora-based distributions (e.g., Fedora/RHEL/CentOS/Scientific Linux):: sudo yum install python-devel openssl-devel python-pip git libmysqlclient-dev libqp-dev Mac OS X Systems ---------------- Install virtualenv:: sudo easy_install virtualenv Check the version of OpenSSL you have installed:: openssl version If you have installed OpenSSL 1.0.0a, which can happen when installing a MacPorts package for OpenSSL, you will see an error when running ``cinder.tests.auth_unittest.AuthTestCase.test_209_can_generate_x509``. The stock version of OpenSSL that ships with Mac OS X 10.6 (OpenSSL 0.9.8l) or Mac OS X 10.7 (OpenSSL 0.9.8r) works fine with cinder. Getting the code ---------------- Grab the code from GitHub:: git clone https://github.com/openstack/cinder.git cd cinder Running unit tests ------------------ The unit tests will run by default inside a virtualenv in the ``.venv`` directory. Run the unit tests by doing:: ./run_tests.sh The first time you run them, you will be asked if you want to create a virtual environment (hit "y"):: No virtual environment found...create one? (Y/n) See :doc:`unit_tests` for more details. .. _virtualenv: Manually installing and using the virtualenv -------------------------------------------- You can manually install the virtual environment instead of having ``run_tests.sh`` do it for you:: python tools/install_venv.py This will install all of the Python packages listed in the ``requirements.txt`` file into your virtualenv. There will also be some additional packages (pip, setuptools) that are installed by the ``tools/install_venv.py`` file into the virutalenv. If all goes well, you should get a message something like this:: Cinder development environment setup is complete. To activate the Cinder virtualenv for the extent of your current shell session you can run:: $ source .venv/bin/activate Or, if you prefer, you can run commands in the virtualenv on a case by case basis by running:: $ tools/with_venv.sh Contributing Your Work ---------------------- Once your work is complete you may wish to contribute it to the project. Add your name and email address to the ``Authors`` file, and also to the ``.mailmap`` file if you use multiple email addresses. Your contributions can not be merged into trunk unless you are listed in the Authors file. Cinder uses the Gerrit code review system. For information on how to submit your branch to Gerrit, see GerritWorkflow_. .. _GerritWorkflow: http://wiki.openstack.org/GerritWorkflow cinder-2014.1.5/doc/source/devref/volume.rst0000664000567000056700000000353212540642603021736 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Storage Volumes, Disks ====================== .. todo:: rework after iSCSI merge (see 'Old Docs') (todd or vish) The :mod:`cinder.volume.manager` Module --------------------------------------- .. automodule:: cinder.volume.manager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.volume.driver` Module -------------------------------------- .. automodule:: cinder.volume.driver :noindex: :members: :undoc-members: :show-inheritance: :exclude-members: FakeAOEDriver Tests ----- The :mod:`volume_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.volume_unittest :noindex: :members: :undoc-members: :show-inheritance: Old Docs -------- Cinder uses iSCSI to export storage volumes from multiple storage nodes. These iSCSI exports are attached (using libvirt) directly to running instances. Cinder volumes are exported over the primary system VLAN (usually VLAN 1), and not over individual VLANs. The underlying volumes by default are LVM logical volumes, created on demand within a single large volume group. cinder-2014.1.5/doc/source/devref/unit_tests.rst0000664000567000056700000001303412540642606022631 0ustar jenkinsjenkins00000000000000Unit Tests ========== Cinder contains a suite of unit tests, in the cinder/tests directory. Any proposed code change will be automatically rejected by the OpenStack Jenkins server [#f1]_ if the change causes unit test failures. Running the tests ----------------- Run the unit tests by doing:: ./run_tests.sh This script is a wrapper around the `nose`_ testrunner and the `pep8`_ checker. .. _nose: http://code.google.com/p/python-nose/ .. _pep8: https://github.com/jcrocholl/pep8 Flags ----- The ``run_tests.sh`` script supports several flags. You can view a list of flags by doing:: run_tests.sh -h This will show the following help information:: Usage: ./run_tests.sh [OPTION]... Run Cinder's test suite(s) -V, --virtual-env Always use virtualenv. Install automatically if not present -N, --no-virtual-env Don't use virtualenv. Run tests in local environment -s, --no-site-packages Isolate the virtualenv from the global Python environment -r, --recreate-db Recreate the test database (deprecated, as this is now the default). -n, --no-recreate-db Don't recreate the test database. -x, --stop Stop running tests after the first error or failure. -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added. -p, --pep8 Just run pep8 -P, --no-pep8 Don't run pep8 -c, --coverage Generate coverage report -h, --help Print this usage message --hide-elapsed Don't print the elapsed time for each test along with slow test list Because ``run_tests.sh`` is a wrapper around nose, it also accepts the same flags as nosetests. See the `nose options documentation`_ for details about these additional flags. .. _nose options documentation: http://readthedocs.org/docs/nose/en/latest/usage.html#options Running a subset of tests ------------------------- Instead of running all tests, you can specify an individual directory, file, class, or method that contains test code. To run the tests in the ``cinder/tests/scheduler`` directory:: ./run_tests.sh scheduler To run the tests in the ``cinder/tests/test_libvirt.py`` file:: ./run_tests.sh test_libvirt To run the tests in the `HostStateTestCase` class in ``cinder/tests/test_libvirt.py``:: ./run_tests.sh test_libvirt:HostStateTestCase To run the `ToPrimitiveTestCase.test_dict` test method in ``cinder/tests/test_utils.py``:: ./run_tests.sh test_utils:ToPrimitiveTestCase.test_dict Suppressing logging output when tests fail ------------------------------------------ By default, when one or more unit test fails, all of the data sent to the logger during the failed tests will appear on standard output, which typically consists of many lines of texts. The logging output can make it difficult to identify which specific tests have failed, unless your terminal has a large scrollback buffer or you have redirected output to a file. You can suppress the logging output by calling ``run_tests.sh`` with the nose flag:: --nologcapture Virtualenv ---------- By default, the tests use the Python packages installed inside a virtualenv [#f2]_. (This is equivalent to using the ``-V, --virtualenv`` flag). If the virtualenv does not exist, it will be created the first time the tests are run. If you wish to recreate the virtualenv, call ``run_tests.sh`` with the flag:: -f, --force Recreating the virtualenv is useful if the package dependencies have changed since the virtualenv was last created. If the ``requirements.txt`` or ``tools/install_venv.py`` files have changed, it's a good idea to recreate the virtualenv. By default, the unit tests will see both the packages in the virtualenv and the packages that have been installed in the Python global environment. In some cases, the packages in the Python global environment may cause a conflict with the packages in the virtualenv. If this occurs, you can isolate the virtualenv from the global environment by using the flag:: -s, --no-site packages If you do not wish to use a virtualenv at all, use the flag:: -N, --no-virtual-env Database -------- Some of the unit tests make queries against an sqlite database [#f3]_. By default, the test database (``tests.sqlite``) is deleted and recreated each time ``run_tests.sh`` is invoked (This is equivalent to using the ``-r, --recreate-db`` flag). To reduce testing time if a database already exists it can be reused by using the flag:: -n, --no-recreate-db Reusing an existing database may cause tests to fail if the schema has changed. If any files in the ``cinder/db/sqlalchemy`` have changed, it's a good idea to recreate the test database. Gotchas ------- **Running Tests from Shared Folders** If you are running the unit tests from a shared folder, you may see tests start to fail or stop completely as a result of Python lockfile issues [#f4]_. You can get around this by manually setting or updating the following line in ``cinder/tests/conf_fixture.py``:: CONF['lock_path'].SetDefault('/tmp') Note that you may use any location (not just ``/tmp``!) as long as it is not a shared folder. .. rubric:: Footnotes .. [#f1] See :doc:`jenkins`. .. [#f2] See :doc:`development.environment` for more details about the use of virtualenv. .. [#f3] There is an effort underway to use a fake DB implementation for the unit tests. See https://lists.launchpad.net/openstack/msg05604.html .. [#f4] See Vish's comment in this bug report: https://bugs.launchpad.net/cinder/+bug/882933 cinder-2014.1.5/doc/source/devref/index.rst0000664000567000056700000000311112540642606021532 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Developer Guide =============== In this section you will find information on Cinder's lower level programming APIs. Programming HowTos and Tutorials -------------------------------- .. toctree:: :maxdepth: 3 development.environment unit_tests addmethod.openstackapi drivers Background Concepts for Cinder ------------------------------ .. toctree:: :maxdepth: 3 architecture threading il8n rpc Other Resources --------------- .. toctree:: :maxdepth: 3 launchpad gerrit jenkins API Reference ------------- .. toctree:: :maxdepth: 3 ../api/autoindex Module Reference ---------------- .. toctree:: :maxdepth: 3 services database volume auth api scheduler fakes cinder Indices and tables ------------------ * :ref:`genindex` * :ref:`modindex` * :ref:`search` cinder-2014.1.5/doc/source/devref/drivers.rst0000664000567000056700000000360412540642603022105 0ustar jenkinsjenkins00000000000000.. Copyright (c) 2013 OpenStack Foundation All Rights Reserved. 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. Drivers ======= Cinder exposes an API to users to interact with different storage backend solutions. The following are standards across all drivers for Cinder services to properly interact with a driver. Minimum Features ---------------- Minimum features are enforced to avoid having a grid of what features are supported by which drivers and which releases. Cinder Core requires that all drivers implement the following minimum features. Havana ------ * Volume Create/Delete * Volume Attach/Detach * Snapshot Create/Delete * Create Volume from Snapshot * Get Volume Stats * Copy Image to Volume * Copy Volume to Image * Clone Volume Icehouse -------- * All of the above plus * Extend Volume Volume Stats ------------ Volume stats are used by the different schedulers for the drivers to provide a report on their current state of the backend. The following should be provided by a driver. * driver_version * free_capacity_gb * reserved_percentage * storage_protocol * total_capacity_gb * vendor_name * volume_backend_name **NOTE:** If the driver is unable to provide a value for free_capacity_gb or total_capacity_gb, keywords can be provided instead. Please use 'unknown' if the array cannot report the value or 'infinite' if the array has no upper limit. cinder-2014.1.5/doc/source/devref/cinder.rst0000664000567000056700000000746212540642603021701 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Common and Misc Libraries ========================= Libraries common throughout Cinder or just ones that haven't been categorized very well yet. The :mod:`cinder.adminclient` Module ------------------------------------ .. automodule:: cinder.adminclient :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.context` Module -------------------------------- .. automodule:: cinder.context :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.exception` Module ---------------------------------- .. automodule:: cinder.exception :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.common.config` Module ------------------------------ .. automodule:: cinder.common.config :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.process` Module -------------------------------- .. automodule:: cinder.process :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.rpc` Module ---------------------------- .. automodule:: cinder.rpc :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.server` Module ------------------------------- .. automodule:: cinder.server :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.test` Module ----------------------------- .. automodule:: cinder.test :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.utils` Module ------------------------------ .. automodule:: cinder.utils :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.validate` Module --------------------------------- .. automodule:: cinder.validate :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.wsgi` Module ----------------------------- .. automodule:: cinder.wsgi :noindex: :members: :undoc-members: :show-inheritance: Tests ----- The :mod:`declare_conf` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.declare_conf :noindex: :members: :undoc-members: :show-inheritance: The :mod:`conf_fixture` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.conf_fixture :noindex: :members: :undoc-members: :show-inheritance: The :mod:`process_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.process_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`rpc_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.rpc_unittest :noindex: :members: :undoc-members: :show-inheritance: The :mod:`runtime_conf` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.runtime_conf :noindex: :members: :undoc-members: :show-inheritance: The :mod:`validator_unittest` Module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: cinder.tests.validator_unittest :noindex: :members: :undoc-members: :show-inheritance: cinder-2014.1.5/doc/source/devref/rpc.rst0000664000567000056700000003212712540642606021220 0ustar jenkinsjenkins00000000000000.. Copyright (c) 2010 Citrix Systems, Inc. All Rights Reserved. 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. AMQP and Cinder =============== AMQP is the messaging technology chosen by the OpenStack cloud. The AMQP broker, either RabbitMQ or Qpid, sits between any two Cinder components and allows them to communicate in a loosely coupled fashion. More precisely, Cinder components (the compute fabric of OpenStack) use Remote Procedure Calls (RPC hereinafter) to communicate to one another; however such a paradigm is built atop the publish/subscribe paradigm so that the following benefits can be achieved: * Decoupling between client and servant (such as the client does not need to know where the servant's reference is). * Full a-synchronism between client and servant (such as the client does not need the servant to run at the same time of the remote call). * Random balancing of remote calls (such as if more servants are up and running, one-way calls are transparently dispatched to the first available servant). Cinder uses direct, fanout, and topic-based exchanges. The architecture looks like the one depicted in the figure below: .. image:: /images/rpc/arch.png :width: 60% .. Cinder implements RPC (both request+response, and one-way, respectively nicknamed 'rpc.call' and 'rpc.cast') over AMQP by providing an adapter class which take cares of marshaling and unmarshaling of messages into function calls. Each Cinder service (for example Compute, Volume, etc.) create two queues at the initialization time, one which accepts messages with routing keys 'NODE-TYPE.NODE-ID' (for example compute.hostname) and another, which accepts messages with routing keys as generic 'NODE-TYPE' (for example compute). The former is used specifically when Cinder-API needs to redirect commands to a specific node like 'euca-terminate instance'. In this case, only the compute node whose host's hypervisor is running the virtual machine can kill the instance. The API acts as a consumer when RPC calls are request/response, otherwise is acts as publisher only. Cinder RPC Mappings ------------------- The figure below shows the internals of a message broker node (referred to as a RabbitMQ node in the diagrams) when a single instance is deployed and shared in an OpenStack cloud. Every Cinder component connects to the message broker and, depending on its personality (for example a compute node or a network node), may use the queue either as an Invoker (such as API or Scheduler) or a Worker (such as Compute, Volume or Network). Invokers and Workers do not actually exist in the Cinder object model, but we are going to use them as an abstraction for sake of clarity. An Invoker is a component that sends messages in the queuing system via two operations: 1) rpc.call and ii) rpc.cast; a Worker is a component that receives messages from the queuing system and reply accordingly to rcp.call operations. Figure 2 shows the following internal elements: * Topic Publisher: a Topic Publisher comes to life when an rpc.call or an rpc.cast operation is executed; this object is instantiated and used to push a message to the queuing system. Every publisher connects always to the same topic-based exchange; its life-cycle is limited to the message delivery. * Direct Consumer: a Direct Consumer comes to life if (an only if) a rpc.call operation is executed; this object is instantiated and used to receive a response message from the queuing system; Every consumer connects to a unique direct-based exchange via a unique exclusive queue; its life-cycle is limited to the message delivery; the exchange and queue identifiers are determined by a UUID generator, and are marshaled in the message sent by the Topic Publisher (only rpc.call operations). * Topic Consumer: a Topic Consumer comes to life as soon as a Worker is instantiated and exists throughout its life-cycle; this object is used to receive messages from the queue and it invokes the appropriate action as defined by the Worker role. A Topic Consumer connects to the same topic-based exchange either via a shared queue or via a unique exclusive queue. Every Worker has two topic consumers, one that is addressed only during rpc.cast operations (and it connects to a shared queue whose exchange key is 'topic') and the other that is addressed only during rpc.call operations (and it connects to a unique queue whose exchange key is 'topic.host'). * Direct Publisher: a Direct Publisher comes to life only during rpc.call operations and it is instantiated to return the message required by the request/response operation. The object connects to a direct-based exchange whose identity is dictated by the incoming message. * Topic Exchange: The Exchange is a routing table that exists in the context of a virtual host (the multi-tenancy mechanism provided by Qpid or RabbitMQ); its type (such as topic vs. direct) determines the routing policy; a message broker node will have only one topic-based exchange for every topic in Cinder. * Direct Exchange: this is a routing table that is created during rpc.call operations; there are many instances of this kind of exchange throughout the life-cycle of a message broker node, one for each rpc.call invoked. * Queue Element: A Queue is a message bucket. Messages are kept in the queue until a Consumer (either Topic or Direct Consumer) connects to the queue and fetch it. Queues can be shared or can be exclusive. Queues whose routing key is 'topic' are shared amongst Workers of the same personality. .. image:: /images/rpc/rabt.png :width: 60% .. RPC Calls --------- The diagram below shows the message flow during an rp.call operation: 1. a Topic Publisher is instantiated to send the message request to the queuing system; immediately before the publishing operation, a Direct Consumer is instantiated to wait for the response message. 2. once the message is dispatched by the exchange, it is fetched by the Topic Consumer dictated by the routing key (such as 'topic.host') and passed to the Worker in charge of the task. 3. once the task is completed, a Direct Publisher is allocated to send the response message to the queuing system. 4. once the message is dispatched by the exchange, it is fetched by the Direct Consumer dictated by the routing key (such as 'msg_id') and passed to the Invoker. .. image:: /images/rpc/flow1.png :width: 60% .. RPC Casts --------- The diagram below the message flow during an rp.cast operation: 1. A Topic Publisher is instantiated to send the message request to the queuing system. 2. Once the message is dispatched by the exchange, it is fetched by the Topic Consumer dictated by the routing key (such as 'topic') and passed to the Worker in charge of the task. .. image:: /images/rpc/flow2.png :width: 60% .. AMQP Broker Load ---------------- At any given time the load of a message broker node running either Qpid or RabbitMQ is function of the following parameters: * Throughput of API calls: the number of API calls (more precisely rpc.call ops) being served by the OpenStack cloud dictates the number of direct-based exchanges, related queues and direct consumers connected to them. * Number of Workers: there is one queue shared amongst workers with the same personality; however there are as many exclusive queues as the number of workers; the number of workers dictates also the number of routing keys within the topic-based exchange, which is shared amongst all workers. The figure below shows the status of a RabbitMQ node after Cinder components' bootstrap in a test environment. Exchanges and queues being created by Cinder components are: * Exchanges 1. cinder (topic exchange) * Queues 1. compute.phantom (phantom is hostname) 2. compute 3. network.phantom (phantom is hostname) 4. network 5. volume.phantom (phantom is hostname) 6. volume 7. scheduler.phantom (phantom is hostname) 8. scheduler .. image:: /images/rpc/state.png :width: 60% .. RabbitMQ Gotchas ---------------- Cinder uses Kombu to connect to the RabbitMQ environment. Kombu is a Python library that in turn uses AMQPLib, a library that implements the standard AMQP 0.8 at the time of writing. When using Kombu, Invokers and Workers need the following parameters in order to instantiate a Connection object that connects to the RabbitMQ server (please note that most of the following material can be also found in the Kombu documentation; it has been summarized and revised here for sake of clarity): * Hostname: The hostname to the AMQP server. * Userid: A valid username used to authenticate to the server. * Password: The password used to authenticate to the server. * Virtual_host: The name of the virtual host to work with. This virtual host must exist on the server, and the user must have access to it. Default is "/". * Port: The port of the AMQP server. Default is 5672 (amqp). The following parameters are default: * Insist: insist on connecting to a server. In a configuration with multiple load-sharing servers, the Insist option tells the server that the client is insisting on a connection to the specified server. Default is False. * Connect_timeout: the timeout in seconds before the client gives up connecting to the server. The default is no timeout. * SSL: use SSL to connect to the server. The default is False. More precisely Consumers need the following parameters: * Connection: the above mentioned Connection object. * Queue: name of the queue. * Exchange: name of the exchange the queue binds to. * Routing_key: the interpretation of the routing key depends on the value of the exchange_type attribute. * Direct exchange: if the routing key property of the message and the routing_key attribute of the queue are identical, then the message is forwarded to the queue. * Fanout exchange: messages are forwarded to the queues bound the exchange, even if the binding does not have a key. * Topic exchange: if the routing key property of the message matches the routing key of the key according to a primitive pattern matching scheme, then the message is forwarded to the queue. The message routing key then consists of words separated by dots (".", like domain names), and two special characters are available; star ("") and hash ("#"). The star matches any word, and the hash matches zero or more words. For example ".stock.#" matches the routing keys "usd.stock" and "eur.stock.db" but not "stock.nasdaq". * Durable: this flag determines the durability of both exchanges and queues; durable exchanges and queues remain active when a RabbitMQ server restarts. Non-durable exchanges/queues (transient exchanges/queues) are purged when a server restarts. It is worth noting that AMQP specifies that durable queues cannot bind to transient exchanges. Default is True. * Auto_delete: if set, the exchange is deleted when all queues have finished using it. Default is False. * Exclusive: exclusive queues (such as non-shared) may only be consumed from by the current connection. When exclusive is on, this also implies auto_delete. Default is False. * Exchange_type: AMQP defines several default exchange types (routing algorithms) that covers most of the common messaging use cases. * Auto_ack: acknowledgement is handled automatically once messages are received. By default auto_ack is set to False, and the receiver is required to manually handle acknowledgment. * No_ack: it disable acknowledgement on the server-side. This is different from auto_ack in that acknowledgement is turned off altogether. This functionality increases performance but at the cost of reliability. Messages can get lost if a client dies before it can deliver them to the application. * Auto_declare: if this is True and the exchange name is set, the exchange will be automatically declared at instantiation. Auto declare is on by default. Publishers specify most the parameters of Consumers (such as they do not specify a queue name), but they can also specify the following: * Delivery_mode: the default delivery mode used for messages. The value is an integer. The following delivery modes are supported by RabbitMQ: * 1 or "transient": the message is transient. Which means it is stored in memory only, and is lost if the server dies or restarts. * 2 or "persistent": the message is persistent. Which means the message is stored both in-memory, and on disk, and therefore preserved if the server dies or restarts. The default value is 2 (persistent). During a send operation, Publishers can override the delivery mode of messages so that, for example, transient messages can be sent over a durable queue. cinder-2014.1.5/doc/source/devref/il8n.rst0000664000567000056700000000241012540642606021276 0ustar jenkinsjenkins00000000000000Internationalization ==================== cinder uses `gettext `_ so that user-facing strings such as log messages appear in the appropriate language in different locales. To use gettext, make sure that the strings passed to the logger are wrapped in a ``_()`` function call. For example:: LOG.debug(_("block_device_mapping %s"), block_device_mapping) If you have multiple arguments, the convention is to use named parameters. It's common to use the ``locals()`` dict (which contains the names and values of the local variables in the current scope) to do the string interpolation. For example:: label = ... sr_ref = ... LOG.debug(_('Introduced %(label)s as %(sr_ref)s.') % locals()) If you do not follow the project conventions, your code may cause the LocalizationTestCase.test_multiple_positional_format_placeholders test to fail in cinder/tests/test_localization.py. The ``_()`` function is brought into the global scope by doing:: from cinder.openstack.common import gettextutils gettextutils.install("cinder") These lines are needed in any toplevel script before any cinder modules are imported. If this code is missing, it may result in an error that looks like:: NameError: name '_' is not defined cinder-2014.1.5/doc/source/devref/fakes.rst0000664000567000056700000000433212540642603021517 0ustar jenkinsjenkins00000000000000.. Copyright 2010-2011 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. 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. Fake Drivers ============ .. todo:: document general info about fakes When the real thing isn't available and you have some development to do these fake implementations of various drivers let you get on with your day. The :mod:`cinder.virt.fake` Module ---------------------------------- .. automodule:: cinder.virt.fake :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.auth.fakeldap` Module -------------------------------------- .. automodule:: cinder.auth.fakeldap :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.testing.fake.rabbit` Module -------------------------------------------- .. automodule:: cinder.testing.fake.rabbit :noindex: :members: :undoc-members: :show-inheritance: The :class:`cinder.volume.driver.FakeAOEDriver` Class ----------------------------------------------------- .. autoclass:: cinder.volume.driver.FakeAOEDriver :noindex: :members: :undoc-members: :show-inheritance: The :class:`cinder.tests.service_unittest.FakeManager` Class ------------------------------------------------------------ .. autoclass:: cinder.tests.service_unittest.FakeManager :noindex: :members: :undoc-members: :show-inheritance: The :mod:`cinder.tests.api.openstack.fakes` Module -------------------------------------------------- .. automodule:: cinder.tests.api.openstack.fakes :noindex: :members: :undoc-members: :show-inheritance: cinder-2014.1.5/doc/source/man/0000775000567000056700000000000012540643114017170 5ustar jenkinsjenkins00000000000000cinder-2014.1.5/doc/source/man/cinder-manage.rst0000664000567000056700000001115112540642606022420 0ustar jenkinsjenkins00000000000000============= cinder-manage ============= ------------------------------------------------------ Control and manage OpenStack block storage ------------------------------------------------------ :Author: openstack@lists.openstack.org :Date: 2013-05-30 :Copyright: OpenStack Foundation :Version: 2013.2 :Manual section: 1 :Manual group: cloud computing SYNOPSIS ======== cinder-manage [] DESCRIPTION =========== cinder-manage provides control of cinder database migration, and provides an interface to get information about the current state of cinder. More information about OpenStack Cinder is available at http://cinder.openstack.org. OPTIONS ======= The standard pattern for executing a cinder-manage command is: ``cinder-manage []`` For example, to obtain a list of the cinder services currently running: ``cinder-manage service list`` Run without arguments to see a list of available command categories: ``cinder-manage`` Categories are shell, logs, migrate, db, volume, host, service, backup, version, sm and config. Detailed descriptions are below. You can also run with a category argument such as 'db' to see a list of all commands in that category: ``cinder-manage db`` These sections describe the available categories and arguments for cinder-manage. Cinder Db ~~~~~~~~~ ``cinder-manage db version`` Print the current database version. ``cinder-manage db sync`` Sync the database up to the most recent version. This is the standard way to create the db as well. Cinder Logs ~~~~~~~~~~~ ``cinder-manage logs errors`` Displays cinder errors from log files. ``cinder-manage logs syslog []`` Displays cinder the most recent entries from syslog. The optional number argument specifies the number of entries to display (default 10). Cinder Shell ~~~~~~~~~~~~ ``cinder-manage shell bpython`` Starts a new bpython shell. ``cinder-manage shell ipython`` Starts a new ipython shell. ``cinder-manage shell python`` Starts a new python shell. ``cinder-manage shell run`` Starts a new shell using python. ``cinder-manage shell script `` Runs the named script from the specified path with flags set. Cinder Volume ~~~~~~~~~~~~~ ``cinder-manage volume reattach `` Re-attach a volume that has previously been attached to an instance. ``cinder-manage volume delete `` Delete a volume without first checking that the volume is available. Cinder Host ~~~~~~~~~~~ ``cinder-manage host list []`` Displays a list of all physical hosts and their zone. The optional zone argument allows the list to be filtered on the requested zone. Cinder Service ~~~~~~~~~~~~~~ ``cinder-manage service list`` Displays a list of all cinder services and their host, zone, status, state and when the information was last updated. Cinder Backup ~~~~~~~~~~~~~ ``cinder-manage backup list`` Displays a list of all backups (including ones in progress) and the host on which the backup operation is running. Cinder Version ~~~~~~~~~~~~~~ ``cinder-manage version list`` Displays the codebase version cinder is running upon. Cinder Storage Management ~~~~~~~~~~~~~~~~~~~~~~~~~ ``cinder-manage sm flavor_create